Ly8gQW5ub3RhdGVkIEZsYXRidWZmZXIgQmluYXJ5Ci8vCi8vIFNjaGVtYSBmaWxlOiAuLi9yZWZsZWN0aW9uL3JlZmxlY3Rpb24uZmJzCi8vIEJpbmFyeSBmaWxlOiBtb25zdGVyX3Rlc3QuYmZicwoKaGVhZGVyOgogICsweDAwMDAgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4MDAxQyAgICAgICB8IG9mZnNldCB0byByb290IHRhYmxlIGByZWZsZWN0aW9uLlNjaGVtYWAKICArMHgwMDA0IHwgNDIgNDYgNDIgNTMgICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IEJGQlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWxlIElkZW50aWZpZXIKCnZ0YWJsZSAocmVmbGVjdGlvbi5TY2hlbWEpOgogICsweDAwMDggfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgwMDBBIHwgMjAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyMCAoMzIpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDAwMEMgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2JqZWN0c2AgKGlkOiAwKQogICsweDAwMEUgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZW51bXNgIChpZDogMSkKICArMHgwMDEwIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpbGVfaWRlbnRgIChpZDogMikKICArMHgwMDEyIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpbGVfZXh0YCAoaWQ6IDMpCiAgKzB4MDAxNCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGByb290X3RhYmxlYCAoaWQ6IDQpCiAgKzB4MDAxNiB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBzZXJ2aWNlc2AgKGlkOiA1KQogICsweDAwMTggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYWR2YW5jZWRfZmVhdHVyZXNgIChpZDogNikgPGRlZmF1bHRzIHRvIDA+IChVTG9uZykKICArMHgwMDFBIHwgMUMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZic19maWxlc2AgKGlkOiA3KQoKcm9vdF90YWJsZSAocmVmbGVjdGlvbi5TY2hlbWEpOgogICsweDAwMUMgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDAwOCAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwMDIwIHwgNTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTggKDg4KSBMb2M6ICsweDAwNzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9iamVjdHNgICh2ZWN0b3IpCiAgKzB4MDAyNCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgwMDU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBlbnVtc2AgKHZlY3RvcikKICArMHgwMDI4IHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDAwNEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpbGVfaWRlbnRgIChzdHJpbmcpCiAgKzB4MDAyQyB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgwMDQ0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWxlX2V4dGAgKHN0cmluZykKICArMHgwMDMwIHwgQTAgMEUgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDBFQTAgKDM3NDQpIExvYzogKzB4MEVEMCAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJvb3RfdGFibGVgICh0YWJsZSkKICArMHgwMDM0IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MDAzQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHNlcnZpY2VzYCAodmVjdG9yKQogICsweDAwMzggfCA4MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA4MCAoMTI4KSBMb2M6ICsweDAwQjggICAgICB8IG9mZnNldCB0byBmaWVsZCBgZmJzX2ZpbGVzYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLlNjaGVtYS5zZXJ2aWNlcyk6CiAgKzB4MDAzQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgwMDQwIHwgREMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwREMgKDIyMCkgTG9jOiArMHgwMTFDICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnN0cmluZyAocmVmbGVjdGlvbi5TY2hlbWEuZmlsZV9leHQpOgogICsweDAwNDQgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMDQ4IHwgNkQgNkYgNkUgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IG1vbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAwNEIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uU2NoZW1hLmZpbGVfaWRlbnQpOgogICsweDAwNEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMDUwIHwgNEQgNEYgNEUgNTMgICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IE1PTlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAwNTQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDAwNTUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5TY2hlbWEuZW51bXMpOgogICsweDAwNTggfCAwNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNyAoNykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MDA1QyB8IDRDIDA1IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwNTRDICgxMzU2KSBMb2M6ICsweDA1QTggICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MDA2MCB8IEI4IDAyIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMkI4ICg2OTYpIExvYzogKzB4MDMxOCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCiAgKzB4MDA2NCB8IEY4IDAzIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwM0Y4ICgxMDE2KSBMb2M6ICsweDA0NUMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzJdCiAgKzB4MDA2OCB8IDA0IDA5IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwOTA0ICgyMzA4KSBMb2M6ICsweDA5NkMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzNdCiAgKzB4MDA2QyB8IDkwIDA2IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwNjkwICgxNjgwKSBMb2M6ICsweDA2RkMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzRdCiAgKzB4MDA3MCB8IEJDIDA3IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwN0JDICgxOTgwKSBMb2M6ICsweDA4MkMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzVdCiAgKzB4MDA3NCB8IEVDIDBBIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwQUVDICgyNzk2KSBMb2M6ICsweDBCNjAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzZdCgp2ZWN0b3IgKHJlZmxlY3Rpb24uU2NoZW1hLm9iamVjdHMpOgogICsweDAwNzggfCAwRiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwRiAoMTUpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MDA3QyB8IDlDIDMxIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzMTlDICgxMjcwMCkgTG9jOiArMHgzMjE4ICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MDA4MCB8IDUwIDBFIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwRTUwICgzNjY0KSBMb2M6ICsweDBFRDAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCiAgKzB4MDA4NCB8IEU4IDJEIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAyREU4ICgxMTc1MikgTG9jOiArMHgyRTZDICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzJdCiAgKzB4MDA4OCB8IEM0IDJFIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAyRUM0ICgxMTk3MikgTG9jOiArMHgyRjRDICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzNdCiAgKzB4MDA4QyB8IDY0IDMwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzMDY0ICgxMjM4OCkgTG9jOiArMHgzMEYwICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzRdCiAgKzB4MDA5MCB8IEQ4IDJGIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAyRkQ4ICgxMjI0OCkgTG9jOiArMHgzMDY4ICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzVdCiAgKzB4MDA5NCB8IEEwIDM1IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzNUEwICgxMzcyOCkgTG9jOiArMHgzNjM0ICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzZdCiAgKzB4MDA5OCB8IDgwIDM0IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzNDgwICgxMzQ0MCkgTG9jOiArMHgzNTE4ICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzddCiAgKzB4MDA5QyB8IDcwIDBCIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwQjcwICgyOTI4KSBMb2M6ICsweDBDMEMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzhdCiAgKzB4MDBBMCB8IDc4IDMyIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzMjc4ICgxMjkyMCkgTG9jOiArMHgzMzE4ICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzldCiAgKzB4MDBBNCB8IDY4IDM2IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzNjY4ICgxMzkyOCkgTG9jOiArMHgzNzBDICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzEwXQogICsweDAwQTggfCBBMCAzNiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMzZBMCAoMTM5ODQpIExvYzogKzB4Mzc0OCAgICB8IG9mZnNldCB0byB0YWJsZVsxMV0KICArMHgwMEFDIHwgOTAgMzcgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDM3OTAgKDE0MjI0KSBMb2M6ICsweDM4M0MgICAgfCBvZmZzZXQgdG8gdGFibGVbMTJdCiAgKzB4MDBCMCB8IDQ0IDM4IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzODQ0ICgxNDQwNCkgTG9jOiArMHgzOEY0ICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzEzXQogICsweDAwQjQgfCBFQyAzNiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMzZFQyAoMTQwNjApIExvYzogKzB4MzdBMCAgICB8IG9mZnNldCB0byB0YWJsZVsxNF0KCnZlY3RvciAocmVmbGVjdGlvbi5TY2hlbWEuZmJzX2ZpbGVzKToKICArMHgwMEI4IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDAwQkMgfCAzOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzOCAoNTYpIExvYzogKzB4MDBGNCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDAwQzAgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4MDBEQyAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDAwQzQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMEM4ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQoKdGFibGUgKHJlZmxlY3Rpb24uU2NoZW1hRmlsZSk6CiAgKzB4MDBDOCB8IDY0IENCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDQjY0ICgtMTM0NjgpIExvYzogKzB4MzU2NCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAwQ0MgfCA5NCAzNiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMzY5NCAoMTM5NzIpIExvYzogKzB4Mzc2MCAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDAwRDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMEQ0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uU2NoZW1hRmlsZS52YWx1ZSk6CiAgKzB4MDBENCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDAwRDggfCBFMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwg4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDBEOSB8IDM2ICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDM2ICg1NCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MDBEQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uU2NoZW1hRmlsZSk6CiAgKzB4MDBEQyB8IDc4IENCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDQjc4ICgtMTM0NDgpIExvYzogKzB4MzU2NCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAwRTAgfCAzNCAzOCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMzgzNCAoMTQzODgpIExvYzogKzB4MzkxNCAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDAwRTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMEU4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uU2NoZW1hRmlsZS52YWx1ZSk6CiAgKzB4MDBFOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDAwRUMgfCBDQyAzNiAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgzDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDBFRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnVua25vd24gKG5vIGtub3duIHJlZmVyZW5jZXMpOgogICsweDAwRUYgfCAwMCAyNCAzOCAwMCAwMCAgICAgICAgICB8ID91aW50OF90WzVdIHwgLiQ4Li4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFdBUk46IGNvdWxkIGJlIGNvcnJ1cHRlZCBwYWRkaW5nIHJlZ2lvbi4KCnRhYmxlIChyZWZsZWN0aW9uLlNjaGVtYUZpbGUpOgogICsweDAwRjQgfCA5MCBDQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0I5MCAoLTEzNDI0KSBMb2M6ICsweDM1NjQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwMEY4IHwgQzAgMzYgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDM2QzAgKDE0MDE2KSBMb2M6ICsweDM3QjggICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgwMEZDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MDEwMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLlNjaGVtYUZpbGUudmFsdWUpOgogICsweDAxMDAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMTA0IHwgQjQgMzYgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8ILQ2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAxMDYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp1bmtub3duIChubyBrbm93biByZWZlcmVuY2VzKToKICArMHgwMTA3IHwgMDAgMEMgMzggMDAgMDAgMDAgMDAgICAgfCA/dWludDhfdFs3XSB8IC4uOC4uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBXQVJOOiBjb3VsZCBiZSBjb3JydXB0ZWQgcGFkZGluZyByZWdpb24uCgp2dGFibGUgKHJlZmxlY3Rpb24uU2VydmljZSk6CiAgKzB4MDEwRSB8IDBFIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDAxMTAgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MDExMiB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MDExNCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBjYWxsc2AgKGlkOiAxKQogICsweDAxMTYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiAyKSA8bnVsbD4gKFZlY3RvcikKICArMHgwMTE4IHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogMykKICArMHgwMTFBIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChpZDogNCkKCnRhYmxlIChyZWZsZWN0aW9uLlNlcnZpY2UpOgogICsweDAxMUMgfCAwRSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAwRSAoMTQpIExvYzogKzB4MDEwRSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwMTIwIHwgMjggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjggKDQwKSBMb2M6ICsweDAxNDggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDEyNCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgwMTM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBjYWxsc2AgKHZlY3RvcikKICArMHgwMTI4IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MDEzMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MDEyQyB8IDM0IDM2IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzNjM0ICgxMzg3NikgTG9jOiArMHgzNzYwICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKdmVjdG9yIChyZWZsZWN0aW9uLlNlcnZpY2UuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDEzMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5TZXJ2aWNlLmNhbGxzKToKICArMHgwMTM0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDAxMzggfCA4OCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDE4OCAoMzkyKSBMb2M6ICsweDAyQzAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDAxM0MgfCBGNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBGNCAoMjQ0KSBMb2M6ICsweDAyMzAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDAxNDAgfCA5MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA5MCAoMTQ0KSBMb2M6ICsweDAxRDAgICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQogICsweDAxNDQgfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MDE2QyAgICAgICB8IG9mZnNldCB0byB0YWJsZVszXQoKc3RyaW5nIChyZWZsZWN0aW9uLlNlcnZpY2UubmFtZSk6CiAgKzB4MDE0OCB8IDFEIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDFEICgyOSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDAxNEMgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMjldICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDE1NCB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDREIHwgICAgICAgICAgICAgfCB4YW1wbGUuTQogICsweDAxNUMgfCA2RiA2RSA3MyA3NCA2NSA3MiA1MyA3NCB8ICAgICAgICAgICAgIHwgb25zdGVyU3QKICArMHgwMTY0IHwgNkYgNzIgNjEgNjcgNjUgICAgICAgICAgfCAgICAgICAgICAgICB8IG9yYWdlCiAgKzB4MDE2OSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MDE2QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uUlBDQ2FsbCk6CiAgKzB4MDE2QyB8IEJBIEZFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRUJBICgtMzI2KSBMb2M6ICsweDAyQjIgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAxNzAgfCA0OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0OCAoNzIpIExvYzogKzB4MDFCOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwMTc0IHwgNUMgMEQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDBENUMgKDM0MjApIExvYzogKzB4MEVEMCAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVlc3RgICh0YWJsZSkKICArMHgwMTc4IHwgRDQgMkQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDJERDQgKDExNzMyKSBMb2M6ICsweDJGNEMgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlc3BvbnNlYCAodGFibGUpCiAgKzB4MDE3QyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwMTg4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDAxODAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMTg0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5SUENDYWxsLmRvY3VtZW50YXRpb24pOgogICsweDAxODQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uUlBDQ2FsbC5hdHRyaWJ1dGVzKToKICArMHgwMTg4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDAxOEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMTkwICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDAxOTAgfCAyQyBDQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0MyQyAoLTEzMjY4KSBMb2M6ICsweDM1NjQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwMTk0IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDAxQTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgwMTk4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MDE5QyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgwMTlDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDFBMCB8IDYyIDY5IDY0IDY5ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBiaWRpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwMUE0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwMUE1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgwMUE4IHwgMDkgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDFBQyB8IDczIDc0IDcyIDY1IDYxIDZEIDY5IDZFIHwgY2hhcls5XSAgICAgfCBzdHJlYW1pbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwMUI0IHwgNjcgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGcKICArMHgwMUI1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwMUI2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uUlBDQ2FsbC5uYW1lKToKICArMHgwMUI4IHwgMTIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTIgKDE4KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDFCQyB8IDQ3IDY1IDc0IDREIDY5IDZFIDREIDYxIHwgY2hhclsxOF0gICAgfCBHZXRNaW5NYSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwMUM0IHwgNzggNDggNjkgNzQgNTAgNkYgNjkgNkUgfCAgICAgICAgICAgICB8IHhIaXRQb2luCiAgKzB4MDFDQyB8IDc0IDczICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB0cwogICsweDAxQ0UgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5SUENDYWxsKToKICArMHgwMUQwIHwgMUUgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGMUUgKC0yMjYpIExvYzogKzB4MDJCMiAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDFENCB8IDQ4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQ4ICg3MikgTG9jOiArMHgwMjFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDAxRDggfCBGOCAwQyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMENGOCAoMzMyMCkgTG9jOiArMHgwRUQwICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWVzdGAgKHRhYmxlKQogICsweDAxREMgfCA3MCAyRCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMkQ3MCAoMTE2MzIpIExvYzogKzB4MkY0QyAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVzcG9uc2VgICh0YWJsZSkKICArMHgwMUUwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDAxRUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MDFFNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDAxRTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLlJQQ0NhbGwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDFFOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5SUENDYWxsLmF0dHJpYnV0ZXMpOgogICsweDAxRUMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MDFGMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDAxRjQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MDFGNCB8IDkwIENDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDQzkwICgtMTMxNjgpIExvYzogKzB4MzU2NCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAxRjggfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDIwQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDAxRkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMjAwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDAyMDAgfCAwNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNiAoNikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMjA0IHwgNjMgNkMgNjkgNjUgNkUgNzQgICAgICAgfCBjaGFyWzZdICAgICB8IGNsaWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAyMEEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgwMjBDIHwgMDkgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDIxMCB8IDczIDc0IDcyIDY1IDYxIDZEIDY5IDZFIHwgY2hhcls5XSAgICAgfCBzdHJlYW1pbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwMjE4IHwgNjcgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGcKICArMHgwMjE5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwMjFBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uUlBDQ2FsbC5uYW1lKToKICArMHgwMjFDIHwgMEUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEUgKDE0KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDIyMCB8IDQ3IDY1IDc0IDREIDYxIDc4IDQ4IDY5IHwgY2hhclsxNF0gICAgfCBHZXRNYXhIaSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwMjI4IHwgNzQgNTAgNkYgNjkgNkUgNzQgICAgICAgfCAgICAgICAgICAgICB8IHRQb2ludAogICsweDAyMkUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5SUENDYWxsKToKICArMHgwMjMwIHwgN0UgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGN0UgKC0xMzApIExvYzogKzB4MDJCMiAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDIzNCB8IDcwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDcwICgxMTIpIExvYzogKzB4MDJBNCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDAyMzggfCAxNCAyRCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMkQxNCAoMTE1NDApIExvYzogKzB4MkY0QyAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWVzdGAgKHRhYmxlKQogICsweDAyM0MgfCA5NCAwQyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMEM5NCAoMzIyMCkgTG9jOiArMHgwRUQwICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVzcG9uc2VgICh0YWJsZSkKICArMHgwMjQwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDAyNEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MDI0NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDAyNDggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLlJQQ0NhbGwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDI0OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5SUENDYWxsLmF0dHJpYnV0ZXMpOgogICsweDAyNEMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MDI1MCB8IDMwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDMwICg0OCkgTG9jOiArMHgwMjgwICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MDI1NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDAyNTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MDI1OCB8IEY0IENDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDQ0Y0ICgtMTMwNjgpIExvYzogKzB4MzU2NCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAyNUMgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDI3MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDAyNjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMjY0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDAyNjQgfCAwNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNiAoNikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMjY4IHwgNzMgNjUgNzIgNzYgNjUgNzIgICAgICAgfCBjaGFyWzZdICAgICB8IHNlcnZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAyNkUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgwMjcwIHwgMDkgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDI3NCB8IDczIDc0IDcyIDY1IDYxIDZEIDY5IDZFIHwgY2hhcls5XSAgICAgfCBzdHJlYW1pbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwMjdDIHwgNjcgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGcKICArMHgwMjdEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwMjdFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MDI4MCB8IDFDIENEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDRDFDICgtMTMwMjgpIExvYzogKzB4MzU2NCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAyODQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDI5NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDAyODggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMjhDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDAyOEMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMjkwIHwgMzAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAyOTEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDAyOTIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDAyOTQgfCAwQSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQSAoMTApICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMjk4IHwgNjkgNjQgNjUgNkQgNzAgNkYgNzQgNjUgfCBjaGFyWzEwXSAgICB8IGlkZW1wb3RlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAyQTAgfCA2RSA3NCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgbnQKICArMHgwMkEyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLlJQQ0NhbGwubmFtZSk6CiAgKzB4MDJBNCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDAyQTggfCA1MiA2NSA3NCA3MiA2OSA2NSA3NiA2NSB8IGNoYXJbOF0gICAgIHwgUmV0cmlldmUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDJCMCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5SUENDYWxsKToKICArMHgwMkIyIHwgMEUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MDJCNCB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgwMkI2IHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgwMkI4IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVlc3RgIChpZDogMSkKICArMHgwMkJBIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlc3BvbnNlYCAoaWQ6IDIpCiAgKzB4MDJCQyB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDMpCiAgKzB4MDJCRSB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDQpCgp0YWJsZSAocmVmbGVjdGlvbi5SUENDYWxsKToKICArMHgwMkMwIHwgMEUgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEUgKDE0KSBMb2M6ICsweDAyQjIgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDJDNCB8IDQ4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQ4ICg3MikgTG9jOiArMHgwMzBDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDAyQzggfCAwOCAwQyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMEMwOCAoMzA4MCkgTG9jOiArMHgwRUQwICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWVzdGAgKHRhYmxlKQogICsweDAyQ0MgfCA4MCAyQyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMkM4MCAoMTEzOTIpIExvYzogKzB4MkY0QyAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVzcG9uc2VgICh0YWJsZSkKICArMHgwMkQwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDAyREMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MDJENCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDAyRDggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLlJQQ0NhbGwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDJEOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5SUENDYWxsLmF0dHJpYnV0ZXMpOgogICsweDAyREMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MDJFMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDAyRTQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MDJFNCB8IDgwIENEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDRDgwICgtMTI5MjgpIExvYzogKzB4MzU2NCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDAyRTggfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDJGQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDAyRUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwMkYwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDAyRjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMkY0IHwgNkUgNkYgNkUgNjUgICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAyRjggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDAyRjkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDAyRkMgfCAwOSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOSAoOSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMzAwIHwgNzMgNzQgNzIgNjUgNjEgNkQgNjkgNkUgfCBjaGFyWzldICAgICB8IHN0cmVhbWluICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAzMDggfCA2NyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgZwogICsweDAzMDkgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDAzMEEgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5SUENDYWxsLm5hbWUpOgogICsweDAzMEMgfCAwNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwMzEwIHwgNTMgNzQgNkYgNzIgNjUgICAgICAgICAgfCBjaGFyWzVdICAgICB8IFN0b3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAzMTUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDAzMTYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkVudW0pOgogICsweDAzMTggfCA4MiBGRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkQ4MiAoLTYzOCkgTG9jOiArMHgwNTk2ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwMzFDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDMxRiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlzX3VuaW9uYCAoQm9vbCkKICArMHgwMzIwIHwgNDAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDAgKDY0KSBMb2M6ICsweDAzNjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDMyNCB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwMzRDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZXNgICh2ZWN0b3IpCiAgKzB4MDMyOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgwMzM4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmRlcmx5aW5nX3R5cGVgICh0YWJsZSkKICArMHgwMzJDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MDMzNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MDMzMCB8IDMwIDM0IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAzNDMwICgxMzM2MCkgTG9jOiArMHgzNzYwICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW0uZG9jdW1lbnRhdGlvbik6CiAgKzB4MDMzNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDAzMzggfCAzNCBDRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0QzNCAoLTEzMDA0KSBMb2M6ICsweDM2MDQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwMzNDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDMzRiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MDM0MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDAzNDQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDAzNDggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW0udmFsdWVzKToKICArMHgwMzRDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDAzNTAgfCBFMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBFMCAoMjI0KSBMb2M6ICsweDA0MzAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDAzNTQgfCBBNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBBNCAoMTY0KSBMb2M6ICsweDAzRjggICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDAzNTggfCA2OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA2OCAoMTA0KSBMb2M6ICsweDAzQzAgICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQogICsweDAzNUMgfCAyQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyQyAoNDQpIExvYzogKzB4MDM4OCAgICAgICB8IG9mZnNldCB0byB0YWJsZVszXQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW0ubmFtZSk6CiAgKzB4MDM2MCB8IDIyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDIyICgzNCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDAzNjQgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMzRdICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDM2QyB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDQxIHwgICAgICAgICAgICAgfCB4YW1wbGUuQQogICsweDAzNzQgfCA2RSA3OSA0MSA2RCA2MiA2OSA2NyA3NSB8ICAgICAgICAgICAgIHwgbnlBbWJpZ3UKICArMHgwMzdDIHwgNkYgNzUgNzMgNDEgNkMgNjkgNjEgNzMgfCAgICAgICAgICAgICB8IG91c0FsaWFzCiAgKzB4MDM4NCB8IDY1IDczICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBlcwogICsweDAzODYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwMzg4IHwgN0UgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4N0UgKC0xOTIyKSBMb2M6ICsweDBCMEEgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDM4QyB8IDJDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDJDICg0NCkgTG9jOiArMHgwM0I4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDAzOTAgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MDNBOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDAzOTQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDNBNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwMzk4IHwgMDMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMyAoMykgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDAzQTAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDAzQTQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwM0E4IHwgRjAgQ0EgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkNBRjAgKC0xMzU4NCkgTG9jOiArMHgzOEI4ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDNBQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDAzQUYgfCAwRiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRiAoMTUpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDAzQjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwM0I0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDAzQjggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwM0JDIHwgNEQgMzMgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IE0zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAzQkUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwM0MwIHwgQjYgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4QjYgKC0xODY2KSBMb2M6ICsweDBCMEEgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDNDNCB8IDJDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDJDICg0NCkgTG9jOiArMHgwM0YwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDAzQzggfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MDNFMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDAzQ0MgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDNEQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwM0QwIHwgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMiAoMikgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDAzRDggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDAzREMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwM0UwIHwgMjggQ0IgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkNCMjggKC0xMzUyOCkgTG9jOiArMHgzOEI4ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDNFNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDAzRTcgfCAwRiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRiAoMTUpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDAzRTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwM0VDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDAzRjAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwM0Y0IHwgNEQgMzIgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IE0yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDAzRjYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwM0Y4IHwgRUUgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4RUUgKC0xODEwKSBMb2M6ICsweDBCMEEgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDNGQyB8IDJDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDJDICg0NCkgTG9jOiArMHgwNDI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA0MDAgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MDQxOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA0MDQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDQxNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwNDA4IHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMSAoMSkgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDA0MTAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDA0MTQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwNDE4IHwgNjAgQ0IgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkNCNjAgKC0xMzQ3MikgTG9jOiArMHgzOEI4ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDQxQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDA0MUYgfCAwRiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRiAoMTUpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDA0MjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwNDI0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDA0MjggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwNDJDIHwgNEQgMzEgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IE0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA0MkUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwNDMwIHwgNzIgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4NzIgKC0xOTM0KSBMb2M6ICsweDBCQkUgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDQzNCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgwNDUwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA0MzggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDQ0NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA0M0MgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwNDQwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDA0NDAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwNDQ0IHwgNjQgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4NjQgKC0xOTQ4KSBMb2M6ICsweDBCRTAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDQ0OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MDQ0QyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwNDUwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDQ1NCB8IDRFIDRGIDRFIDQ1ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBOT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwNDU4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwNDU5IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtKToKICArMHgwNDVDIHwgQzYgRkUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZFQzYgKC0zMTQpIExvYzogKzB4MDU5NiAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDQ2MCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDA0NjMgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc191bmlvbmAgKEJvb2wpCiAgKzB4MDQ2NCB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgwNEE0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA0NjggfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MDQ5MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVzYCAodmVjdG9yKQogICsweDA0NkMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDQ3QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5kZXJseWluZ190eXBlYCAodGFibGUpCiAgKzB4MDQ3MCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA4ICg4KSBMb2M6ICsweDA0NzggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA0NzQgfCBFQyAzMiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMzJFQyAoMTMwMzYpIExvYzogKzB4Mzc2MCAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKHN0cmluZykKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLmRvY3VtZW50YXRpb24pOgogICsweDA0NzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwNDdDIHwgNzggQ0UgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkNFNzggKC0xMjY4MCkgTG9jOiArMHgzNjA0ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDQ4MCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDA0ODMgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDA0ODQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwNDg4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwNDhDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLnZhbHVlcyk6CiAgKzB4MDQ5MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgwNDk0IHwgRDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwRDggKDIxNikgTG9jOiArMHgwNTZDICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgwNDk4IHwgQTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQTAgKDE2MCkgTG9jOiArMHgwNTM4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgwNDlDIHwgNjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNjQgKDEwMCkgTG9jOiArMHgwNTAwICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KICArMHgwNEEwIHwgMjggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjggKDQwKSBMb2M6ICsweDA0QzggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbM10KCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtLm5hbWUpOgogICsweDA0QTQgfCAxRiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxRiAoMzEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwNEE4IHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzMxXSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA0QjAgfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA0MSB8ICAgICAgICAgICAgIHwgeGFtcGxlLkEKICArMHgwNEI4IHwgNkUgNzkgNTUgNkUgNjkgNzEgNzUgNjUgfCAgICAgICAgICAgICB8IG55VW5pcXVlCiAgKzB4MDRDMCB8IDQxIDZDIDY5IDYxIDczIDY1IDczICAgIHwgICAgICAgICAgICAgfCBBbGlhc2VzCiAgKzB4MDRDNyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA0QzggfCBCRSBGOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjlCRSAoLTE2MDIpIExvYzogKzB4MEIwQSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNENDIHwgMkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMkMgKDQ0KSBMb2M6ICsweDA0RjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDREMCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgwNEU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MDRENCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgwNEU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA0RDggfCAwMyAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDAzICgzKSAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGB2YWx1ZWAgKExvbmcpCiAgKzB4MDRFMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDhfdFs0XSAgfCAuLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDRFNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA0RTggfCAzMCBDQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0MzMCAoLTEzMjY0KSBMb2M6ICsweDM4QjggICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNEVDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDRFRiB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MDRGMCB8IDBBIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDA0RjQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDRGOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA0RkMgfCA0RCAzMiAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgTTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDRGRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA1MDAgfCBGNiBGOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjlGNiAoLTE1NDYpIExvYzogKzB4MEIwQSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNTA0IHwgMkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMkMgKDQ0KSBMb2M6ICsweDA1MzAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDUwOCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgwNTIwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MDUwQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgwNTFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA1MTAgfCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDAyICgyKSAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGB2YWx1ZWAgKExvbmcpCiAgKzB4MDUxOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDhfdFs0XSAgfCAuLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDUxQyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA1MjAgfCA2OCBDQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0M2OCAoLTEzMjA4KSBMb2M6ICsweDM4QjggICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNTI0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDUyNyB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MDUyOCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDA1MkMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDUzMCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA1MzQgfCA1NCA1MyAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDUzNiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA1MzggfCAxRSBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkMxRSAoLTk5NCkgTG9jOiArMHgwOTFBICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNTNDIHwgMjggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjggKDQwKSBMb2M6ICsweDA1NjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDU0MCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgwNTU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MDU0NCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwNTUwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA1NDggfCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDAxICgxKSAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGB2YWx1ZWAgKExvbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bVZhbC5kb2N1bWVudGF0aW9uKToKICArMHgwNTUwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MDU1NCB8IDlDIENDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDQzlDICgtMTMxNTYpIExvYzogKzB4MzhCOCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDA1NTggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwNTVCIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgwNTVDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MDU2MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwNTY0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDU2OCB8IDREICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwNTY5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwNTZBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwNTZDIHwgQUUgRjkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY5QUUgKC0xNjE4KSBMb2M6ICsweDBCQkUgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDU3MCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgwNThDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA1NzQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDU4MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA1NzggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwNTdDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDA1N0MgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwNTgwIHwgQTAgRjkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY5QTAgKC0xNjMyKSBMb2M6ICsweDBCRTAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDU4NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MDU4OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwNThDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDU5MCB8IDRFIDRGIDRFIDQ1ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBOT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwNTk0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdnRhYmxlIChyZWZsZWN0aW9uLkVudW0pOgogICsweDA1OTYgfCAxMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDEyICgxOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgwNTk4IHwgMUMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDA1OUEgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDA1OUMgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVzYCAoaWQ6IDEpCiAgKzB4MDU5RSB8IDA3IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDcgKDcpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpc191bmlvbmAgKGlkOiAyKQogICsweDA1QTAgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5kZXJseWluZ190eXBlYCAoaWQ6IDMpCiAgKzB4MDVBMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDQpIDxudWxsPiAoVmVjdG9yKQogICsweDA1QTQgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiA1KQogICsweDA1QTYgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKGlkOiA2KQoKdGFibGUgKHJlZmxlY3Rpb24uRW51bSk6CiAgKzB4MDVBOCB8IDEyIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDEyICgxOCkgTG9jOiArMHgwNTk2ICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDA1QUMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwNUFGIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaXNfdW5pb25gIChCb29sKQogICsweDA1QjAgfCA0MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0MCAoNjQpIExvYzogKzB4MDVGMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwNUI0IHwgMjggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjggKDQwKSBMb2M6ICsweDA1REMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlc2AgKHZlY3RvcikKICArMHgwNUI4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDA1QzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHVuZGVybHlpbmdfdHlwZWAgKHRhYmxlKQogICsweDA1QkMgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgwNUM0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwNUMwIHwgQTAgMzEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDMxQTAgKDEyNzA0KSBMb2M6ICsweDM3NjAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bS5kb2N1bWVudGF0aW9uKToKICArMHgwNUM0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MDVDOCB8IEM0IENGIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZDRkM0ICgtMTIzNDgpIExvYzogKzB4MzYwNCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDA1Q0MgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwNUNGIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgwNUQwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MDVENCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MDVEOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bS52YWx1ZXMpOgogICsweDA1REMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MDVFMCB8IEYwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEYwICgyNDApIExvYzogKzB4MDZEMCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MDVFNCB8IEI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEI0ICgxODApIExvYzogKzB4MDY5OCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCiAgKzB4MDVFOCB8IDY4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDY4ICgxMDQpIExvYzogKzB4MDY1MCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzJdCiAgKzB4MDVFQyB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgwNjA4ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzNdCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bS5uYW1lKToKICArMHgwNUYwIHwgMTIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTIgKDE4KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDVGNCB8IDREIDc5IDQ3IDYxIDZEIDY1IDJFIDQ1IHwgY2hhclsxOF0gICAgfCBNeUdhbWUuRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwNUZDIHwgNzggNjEgNkQgNzAgNkMgNjUgMkUgNDEgfCAgICAgICAgICAgICB8IHhhbXBsZS5BCiAgKzB4MDYwNCB8IDZFIDc5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBueQogICsweDA2MDYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwNjA4IHwgRUUgRkMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZDRUUgKC03ODYpIExvYzogKzB4MDkxQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDYwQyB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwNjM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA2MTAgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDYyNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA2MTQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDYyMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwNjE4IHwgMDMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMyAoMykgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDYyMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA2MjQgfCA2QyBDRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0Q2QyAoLTEyOTQ4KSBMb2M6ICsweDM4QjggICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNjI4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDYyQiB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MDYyQyB8IDBBIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDA2MzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDYzNCB8IDE3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE3ICgyMykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA2MzggfCA0RCA3OSA0NyA2MSA2RCA2NSA1RiA0NSB8IGNoYXJbMjNdICAgIHwgTXlHYW1lX0UgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDY0MCB8IDc4IDYxIDZEIDcwIDZDIDY1IDMyIDVGIHwgICAgICAgICAgICAgfCB4YW1wbGUyXwogICsweDA2NDggfCA0RCA2RiA2RSA3MyA3NCA2NSA3MiAgICB8ICAgICAgICAgICAgIHwgTW9uc3RlcgogICsweDA2NEYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwNjUwIHwgMzYgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEMzYgKC03MTQpIExvYzogKzB4MDkxQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDY1NCB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwNjdDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA2NTggfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDY2QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA2NUMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDY2OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwNjYwIHwgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMiAoMikgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDY2OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA2NkMgfCBCNCBDRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0RCNCAoLTEyODc2KSBMb2M6ICsweDM4QjggICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNjcwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDY3MyB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MDY3NCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDA2NzggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDY3QyB8IDE3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE3ICgyMykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA2ODAgfCA1NCA2NSA3MyA3NCA1MyA2OSA2RCA3MCB8IGNoYXJbMjNdICAgIHwgVGVzdFNpbXAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDY4OCB8IDZDIDY1IDU0IDYxIDYyIDZDIDY1IDU3IHwgICAgICAgICAgICAgfCBsZVRhYmxlVwogICsweDA2OTAgfCA2OSA3NCA2OCA0NSA2RSA3NSA2RCAgICB8ICAgICAgICAgICAgIHwgaXRoRW51bQogICsweDA2OTcgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwNjk4IHwgN0UgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEN0UgKC02NDIpIExvYzogKzB4MDkxQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDY5QyB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwNkM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA2QTAgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDZCNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA2QTQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDZCMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwNkE4IHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMSAoMSkgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDZCMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA2QjQgfCBGQyBDRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGQ0RGQyAoLTEyODA0KSBMb2M6ICsweDM4QjggICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNkI4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MDZCQiB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MDZCQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDA2QzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDZDNCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA2QzggfCA0RCA2RiA2RSA3MyA3NCA2NSA3MiAgICB8IGNoYXJbN10gICAgIHwgTW9uc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDZDRiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA2RDAgfCAxMiBGQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkIxMiAoLTEyNjIpIExvYzogKzB4MEJCRSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNkQ0IHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDA2RjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDZEOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwNkU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MDZEQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDA2RTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDZFMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA2RTQgfCAwNCBGQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkIwNCAoLTEyNzYpIExvYzogKzB4MEJFMCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNkU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwNkVDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDA2RjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwNkY0IHwgNEUgNEYgNEUgNDUgICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IE5PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA2RjggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDA2RjkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkVudW0pOgogICsweDA2RkMgfCBBMiBGRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkRBMiAoLTYwNikgTG9jOiArMHgwOTVBICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNzAwIHwgNkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNkMgKDEwOCkgTG9jOiArMHgwNzZDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDcwNCB8IDU4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDU4ICg4OCkgTG9jOiArMHgwNzVDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZXNgICh2ZWN0b3IpCiAgKzB4MDcwOCB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgwNzQ4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmRlcmx5aW5nX3R5cGVgICh0YWJsZSkKICArMHgwNzBDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDA3MUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MDcxMCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA4ICg4KSBMb2M6ICsweDA3MTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA3MTQgfCA0QyAzMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMzA0QyAoMTIzNjQpIExvYzogKzB4Mzc2MCAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKHN0cmluZykKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLmRvY3VtZW50YXRpb24pOgogICsweDA3MTggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bS5hdHRyaWJ1dGVzKToKICArMHgwNzFDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDA3MjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwNzI0ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDA3MjQgfCBDMCBEMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDFDMCAoLTExODQwKSBMb2M6ICsweDM1NjQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwNzI4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDA3MzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgwNzJDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MDczMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgwNzMwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDczNCB8IDMwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwNzM1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwNzM2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgwNzM4IHwgMDkgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDczQyB8IDYyIDY5IDc0IDVGIDY2IDZDIDYxIDY3IHwgY2hhcls5XSAgICAgfCBiaXRfZmxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwNzQ0IHwgNzMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHMKICArMHgwNzQ1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwNzQ2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwNzQ4IHwgNDQgRDEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQxNDQgKC0xMTk2NCkgTG9jOiArMHgzNjA0ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDc0QyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDA3NEYgfCAwQSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDA3NTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwNzU0IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwNzU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLnZhbHVlcyk6CiAgKzB4MDc1QyB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgwNzYwIHwgOTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwOTggKDE1MikgTG9jOiArMHgwN0Y4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgwNzY0IHwgNUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNUMgKDkyKSBMb2M6ICsweDA3QzAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgwNzY4IHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDA3ODggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtLm5hbWUpOgogICsweDA3NkMgfCAxNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNyAoMjMpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwNzcwIHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzIzXSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA3NzggfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA0QyB8ICAgICAgICAgICAgIHwgeGFtcGxlLkwKICArMHgwNzgwIHwgNkYgNkUgNjcgNDUgNkUgNzUgNkQgICAgfCAgICAgICAgICAgICB8IG9uZ0VudW0KICArMHgwNzg3IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRW51bVZhbCk6CiAgKzB4MDc4OCB8IDdFIEZDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGQzdFICgtODk4KSBMb2M6ICsweDBCMEEgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDA3OEMgfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MDdCNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwNzkwIHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDA3QTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHVuaW9uX3R5cGVgICh0YWJsZSkKICArMHgwNzk0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDA3QTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MDc5OCB8IDAwIDAwIDAwIDAwIDAwIDAxIDAwIDAwIHwgaW50NjRfdCAgICAgfCAweDAwMDAwMTAwMDAwMDAwMDAgKDEwOTk1MTE2Mjc3NzYpIHwgdGFibGUgZmllbGQgYHZhbHVlYCAoTG9uZykKICArMHgwN0EwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50OF90WzRdICB8IC4uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bVZhbC5kb2N1bWVudGF0aW9uKToKICArMHgwN0E0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MDdBOCB8IEM4IEZCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGQkM4ICgtMTA4MCkgTG9jOiArMHgwQkUwICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDA3QUMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDA3QjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDdCNCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA3QjggfCA0QyA2RiA2RSA2NyA0MiA2OSA2NyAgICB8IGNoYXJbN10gICAgIHwgTG9uZ0JpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDdCRiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA3QzAgfCBCNiBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkNCNiAoLTg0MikgTG9jOiArMHgwQjBBICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwN0M0IHwgMjggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjggKDQwKSBMb2M6ICsweDA3RUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDdDOCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgwN0UwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MDdDQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgwN0RDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA3RDAgfCAwNCAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDA0ICg0KSAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGB2YWx1ZWAgKExvbmcpCiAgKzB4MDdEOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDhfdFs0XSAgfCAuLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDdEQyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA3RTAgfCAwMCBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkMwMCAoLTEwMjQpIExvYzogKzB4MEJFMCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwN0U0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwN0U4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDA3RUMgfCAwNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNyAoNykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwN0YwIHwgNEMgNkYgNkUgNjcgNTQgNzcgNkYgICAgfCBjaGFyWzddICAgICB8IExvbmdUd28gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA3RjcgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwN0Y4IHwgREUgRkUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZFREUgKC0yOTApIExvYzogKzB4MDkxQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDdGQyB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgwODIwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA4MDAgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDgxNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA4MDQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDgxMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwODA4IHwgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMiAoMikgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDgxMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA4MTQgfCAzNCBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkMzNCAoLTk3MikgTG9jOiArMHgwQkUwICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwODE4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwODFDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDA4MjAgfCAwNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNyAoNykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwODI0IHwgNEMgNkYgNkUgNjcgNEYgNkUgNjUgICAgfCBjaGFyWzddICAgICB8IExvbmdPbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA4MkIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtKToKICArMHgwODJDIHwgREUgRkMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZDREUgKC04MDIpIExvYzogKzB4MEI0RSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDgzMCB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgwODcwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA4MzQgfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MDg1QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVzYCAodmVjdG9yKQogICsweDA4MzggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDg0OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5kZXJseWluZ190eXBlYCAodGFibGUpCiAgKzB4MDgzQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA4ICg4KSBMb2M6ICsweDA4NDQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA4NDAgfCAyMCAyRiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMkYyMCAoMTIwNjQpIExvYzogKzB4Mzc2MCAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKHN0cmluZykKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLmRvY3VtZW50YXRpb24pOgogICsweDA4NDQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwODQ4IHwgNDQgRDIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQyNDQgKC0xMTcwOCkgTG9jOiArMHgzNjA0ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDg0QyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDA4NEYgfCAwMyAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMyAoMykgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDA4NTAgfCAwNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwODU0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwODU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLnZhbHVlcyk6CiAgKzB4MDg1QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgwODYwIHwgQzggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQzggKDIwMCkgTG9jOiArMHgwOTI4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgwODY0IHwgOEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwOEMgKDE0MCkgTG9jOiArMHgwOEYwICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgwODY4IHwgNTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTAgKDgwKSBMb2M6ICsweDA4QjggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KICArMHgwODZDIHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDA4ODggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbM10KCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtLm5hbWUpOgogICsweDA4NzAgfCAxMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxMyAoMTkpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwODc0IHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzE5XSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA4N0MgfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA1MiB8ICAgICAgICAgICAgIHwgeGFtcGxlLlIKICArMHgwODg0IHwgNjEgNjMgNjUgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGFjZQogICsweDA4ODcgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwODg4IHwgNkUgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGNkUgKC0xNDYpIExvYzogKzB4MDkxQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDg4QyB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgwOEIwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA4OTAgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MDhBNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA4OTQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDhBMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwODk4IHwgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMiAoMikgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MDhBMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDA4QTQgfCBDNCBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkNDNCAoLTgyOCkgTG9jOiArMHgwQkUwICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwOEE4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwOEFDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLm5hbWUpOgogICsweDA4QjAgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwOEI0IHwgNDUgNkMgNjYgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IEVsZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA4QjcgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwOEI4IHwgQUUgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEQUUgKC01OTQpIExvYzogKzB4MEIwQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDhCQyB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwOEU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA4QzAgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MDhEOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA4QzQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MDhENCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwOEM4IHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMSAoMSkgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDA4RDAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDA4RDQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwOEQ4IHwgRjggRkMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZDRjggKC03NzYpIExvYzogKzB4MEJFMCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDhEQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MDhFMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwOEU0IHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDhFOCB8IDQ0IDc3IDYxIDcyIDY2ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBEd2FyZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwOEVEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwOEVFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwOEYwIHwgMzIgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEMzIgKC03MTgpIExvYzogKzB4MEJCRSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDhGNCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgwOTEwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA4RjggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MDkwNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDA4RkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwOTAwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDA5MDAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwOTA0IHwgMjQgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEMjQgKC03MzIpIExvYzogKzB4MEJFMCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDkwOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MDkwQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwOTEwIHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDkxNCB8IDQ4IDc1IDZEIDYxIDZFICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBIdW1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwOTE5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA5MUEgfCAwRSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgwOTFDIHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDA5MUUgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDA5MjAgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChpZDogMSkKICArMHgwOTIyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9iamVjdGAgKGlkOiAyKSA8bnVsbD4gKE9iaikKICArMHgwOTI0IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHVuaW9uX3R5cGVgIChpZDogMykKICArMHgwOTI2IHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogNCkKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDA5MjggfCAwRSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAwRSAoMTQpIExvYzogKzB4MDkxQSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwOTJDIHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDA5NTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MDkzMCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgwOTQ0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MDkzNCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwOTQwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDA5MzggfCBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiB8IGludDY0X3QgICAgIHwgMHhGRkZGRkZGRkZGRkZGRkZGICgtMSkgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGB2YWx1ZWAgKExvbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bVZhbC5kb2N1bWVudGF0aW9uKToKICArMHgwOTQwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MDk0NCB8IDY0IEZEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRDY0ICgtNjY4KSBMb2M6ICsweDBCRTAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDA5NDggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDA5NEMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MDk1MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDA5NTQgfCA0RSA2RiA2RSA2NSAgICAgICAgICAgICB8IGNoYXJbNF0gICAgIHwgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MDk1OCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5FbnVtKToKICArMHgwOTVBIHwgMTIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMiAoMTgpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MDk1QyB8IDFDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgwOTVFIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgwOTYwIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlc2AgKGlkOiAxKQogICsweDA5NjIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaXNfdW5pb25gIChpZDogMikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDA5NjQgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5kZXJseWluZ190eXBlYCAoaWQ6IDMpCiAgKzB4MDk2NiB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDQpCiAgKzB4MDk2OCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDUpCiAgKzB4MDk2QSB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoaWQ6IDYpCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtKToKICArMHgwOTZDIHwgMTIgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTIgKDE4KSBMb2M6ICsweDA5NUEgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDk3MCB8IDlDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDlDICgxNTYpIExvYzogKzB4MEEwQyAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDA5NzQgfCA4OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA4OCAoMTM2KSBMb2M6ICsweDA5RkMgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVzYCAodmVjdG9yKQogICsweDA5NzggfCA3MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA3MCAoMTEyKSBMb2M6ICsweDA5RTggICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5kZXJseWluZ190eXBlYCAodGFibGUpCiAgKzB4MDk3QyB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgwOUJDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDA5ODAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgwOTg4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwOTg0IHwgREMgMkQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDJEREMgKDExNzQwKSBMb2M6ICsweDM3NjAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bS5kb2N1bWVudGF0aW9uKToKICArMHgwOTg4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDA5OEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwOTkwICAgICAgICB8IG9mZnNldCB0byBzdHJpbmdbMF0KCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtLmRvY3VtZW50YXRpb24pOgogICsweDA5OTAgfCAyNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAyNyAoMzkpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwOTk0IHwgMjAgNDMgNkYgNkQgNzAgNkYgNzMgNjkgfCBjaGFyWzM5XSAgICB8ICBDb21wb3NpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDA5OUMgfCA3NCA2NSAyMCA2MyA2RiA2RCA3MCA2RiB8ICAgICAgICAgICAgIHwgdGUgY29tcG8KICArMHgwOUE0IHwgNkUgNjUgNkUgNzQgNzMgMjAgNkYgNjYgfCAgICAgICAgICAgICB8IG5lbnRzIG9mCiAgKzB4MDlBQyB8IDIwIDREIDZGIDZFIDczIDc0IDY1IDcyIHwgICAgICAgICAgICAgfCAgTW9uc3RlcgogICsweDA5QjQgfCAyMCA2MyA2RiA2QyA2RiA3MiAyRSAgICB8ICAgICAgICAgICAgIHwgIGNvbG9yLgogICsweDA5QkIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRW51bS5hdHRyaWJ1dGVzKToKICArMHgwOUJDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDA5QzAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwOUM0ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDA5QzQgfCA2MCBENCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDQ2MCAoLTExMTY4KSBMb2M6ICsweDM1NjQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwOUM4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDA5RDggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgwOUNDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MDlEMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgwOUQwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDlENCB8IDMwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwOUQ1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwOUQ2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgwOUQ4IHwgMDkgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MDlEQyB8IDYyIDY5IDc0IDVGIDY2IDZDIDYxIDY3IHwgY2hhcls5XSAgICAgfCBiaXRfZmxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwOUU0IHwgNzMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHMKICArMHgwOUU1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwOUU2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwOUU4IHwgRTQgRDMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQzRTQgKC0xMTI5MikgTG9jOiArMHgzNjA0ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MDlFQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDA5RUYgfCAwNCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDA5RjAgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgwOUY0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwOUY4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtLnZhbHVlcyk6CiAgKzB4MDlGQyB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgwQTAwIHwgMTggMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxMTggKDI4MCkgTG9jOiArMHgwQjE4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgwQTA0IHwgODQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODQgKDEzMikgTG9jOiArMHgwQTg4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgwQTA4IHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDBBMjggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtLm5hbWUpOgogICsweDBBMEMgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNCAoMjApICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwQTEwIHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzIwXSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBBMTggfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA0MyB8ICAgICAgICAgICAgIHwgeGFtcGxlLkMKICArMHgwQTIwIHwgNkYgNkMgNkYgNzIgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IG9sb3IKICArMHgwQTI0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwQTI1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwQTI4IHwgMUUgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGMUUgKC0yMjYpIExvYzogKzB4MEIwQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEEyQyB8IDUwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDUwICg4MCkgTG9jOiArMHgwQTdDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBBMzAgfCA0MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0MCAoNjQpIExvYzogKzB4MEE3MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDBBMzQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MEE0NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwQTM4IHwgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwOCAoOCkgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDBBNDAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDBBNDQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MEE0OCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBBNEMgICAgICAgIHwgb2Zmc2V0IHRvIHN0cmluZ1swXQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEE0QyB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBBNTAgfCAyMCA1QyA2MiA3MiA2OSA2NSA2NiAyMCB8IGNoYXJbMjhdICAgIHwgIFxicmllZiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MEE1OCB8IDYzIDZGIDZDIDZGIDcyIDIwIDQyIDZDIHwgICAgICAgICAgICAgfCBjb2xvciBCbAogICsweDBBNjAgfCA3NSA2NSAyMCAyOCAzMSA3NSAyMCAzQyB8ICAgICAgICAgICAgIHwgdWUgKDF1IDwKICArMHgwQTY4IHwgM0MgMjAgMzMgMjkgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IDwgMykKICArMHgwQTZDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwQTZEIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwQTcwIHwgOTAgRkUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZFOTAgKC0zNjgpIExvYzogKzB4MEJFMCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEE3NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MEE3OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwQTdDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEE4MCB8IDQyIDZDIDc1IDY1ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBCbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwQTg0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwQTg1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwQTg4IHwgN0UgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGN0UgKC0xMzApIExvYzogKzB4MEIwQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEE4QyB8IDc0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDc0ICgxMTYpIExvYzogKzB4MEIwMCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBBOTAgfCA2NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA2NCAoMTAwKSBMb2M6ICsweDBBRjQgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDBBOTQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MEFBNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwQTk4IHwgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMiAoMikgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDBBQTAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDBBQTQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MEFBOCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgwQURDICAgICAgIHwgb2Zmc2V0IHRvIHN0cmluZ1swXQogICsweDBBQUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwQUIwICAgICAgICB8IG9mZnNldCB0byBzdHJpbmdbMV0KCnN0cmluZyAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDBBQjAgfCAyNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAyNyAoMzkpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwQUI0IHwgMjAgNDcgNzIgNjUgNjUgNkUgMjAgNjkgfCBjaGFyWzM5XSAgICB8ICBHcmVlbiBpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBBQkMgfCA3MyAyMCA2MiA2OSA3NCA1RiA2NiA2QyB8ICAgICAgICAgICAgIHwgcyBiaXRfZmwKICArMHgwQUM0IHwgNjEgNjcgMjAgNzcgNjkgNzQgNjggMjAgfCAgICAgICAgICAgICB8IGFnIHdpdGggCiAgKzB4MEFDQyB8IDc2IDYxIDZDIDc1IDY1IDIwIDI4IDMxIHwgICAgICAgICAgICAgfCB2YWx1ZSAoMQogICsweDBBRDQgfCA3NSAyMCAzQyAzQyAyMCAzMSAyOSAgICB8ICAgICAgICAgICAgIHwgdSA8PCAxKQogICsweDBBREIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5kb2N1bWVudGF0aW9uKToKICArMHgwQURDIHwgMTMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTMgKDE5KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEFFMCB8IDIwIDVDIDYyIDcyIDY5IDY1IDY2IDIwIHwgY2hhclsxOV0gICAgfCAgXGJyaWVmICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwQUU4IHwgNjMgNkYgNkMgNkYgNzIgMjAgNDcgNzIgfCAgICAgICAgICAgICB8IGNvbG9yIEdyCiAgKzB4MEFGMCB8IDY1IDY1IDZFICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBlZW4KICArMHgwQUYzIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MEFGNCB8IDE0IEZGIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRjE0ICgtMjM2KSBMb2M6ICsweDBCRTAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBBRjggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDBBRkMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW1WYWwubmFtZSk6CiAgKzB4MEIwMCB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBCMDQgfCA0NyA3MiA2NSA2NSA2RSAgICAgICAgICB8IGNoYXJbNV0gICAgIHwgR3JlZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MEIwOSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwQjBBIHwgMEUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MEIwQyB8IDFDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgwQjBFIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgwQjEwIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoaWQ6IDEpCiAgKzB4MEIxMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvYmplY3RgIChpZDogMikgPG51bGw+IChPYmopCiAgKzB4MEIxNCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAoaWQ6IDMpCiAgKzB4MEIxNiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDQpCgp0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwQjE4IHwgMEUgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEUgKDE0KSBMb2M6ICsweDBCMEEgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEIxQyB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwQjQ0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBCMjAgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MEIzOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdW5pb25fdHlwZWAgKHRhYmxlKQogICsweDBCMjQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MEIzNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwQjI4IHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMSAoMSkgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgdmFsdWVgIChMb25nKQogICsweDBCMzAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5FbnVtVmFsLmRvY3VtZW50YXRpb24pOgogICsweDBCMzQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwQjM4IHwgNTggRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGNTggKC0xNjgpIExvYzogKzB4MEJFMCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEIzQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MEI0MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwQjQ0IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEI0OCB8IDUyIDY1IDY0ICAgICAgICAgICAgICAgIHwgY2hhclszXSAgICAgfCBSZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwQjRCIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgwQjRDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2dGFibGUgKHJlZmxlY3Rpb24uRW51bSk6CiAgKzB4MEI0RSB8IDEyIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTIgKDE4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDBCNTAgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MEI1MiB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MEI1NCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZXNgIChpZDogMSkKICArMHgwQjU2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlzX3VuaW9uYCAoaWQ6IDIpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgwQjU4IHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHVuZGVybHlpbmdfdHlwZWAgKGlkOiAzKQogICsweDBCNUEgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA0KSA8bnVsbD4gKFZlY3RvcikKICArMHgwQjVDIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogNSkKICArMHgwQjVFIHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChpZDogNikKCnRhYmxlIChyZWZsZWN0aW9uLkVudW0pOgogICsweDBCNjAgfCAxMiAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMiAoMTgpIExvYzogKzB4MEI0RSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwQjY0IHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDBCOTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MEI2OCB8IDI4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI4ICg0MCkgTG9jOiArMHgwQjkwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZXNgICh2ZWN0b3IpCiAgKzB4MEI2QyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgwQjdDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmRlcmx5aW5nX3R5cGVgICh0YWJsZSkKICArMHgwQjcwIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MEI3OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MEI3NCB8IEEwIDJEIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAyREEwICgxMTY4MCkgTG9jOiArMHgzOTE0ICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW0uZG9jdW1lbnRhdGlvbik6CiAgKzB4MEI3OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDBCN0MgfCA3OCBENSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDU3OCAoLTEwODg4KSBMb2M6ICsweDM2MDQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwQjgwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MEI4MyB8IDA5ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA5ICg5KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MEI4NCB8IDA2IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDBCODggfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDBCOEMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW0udmFsdWVzKToKICArMHgwQjkwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDBCOTQgfCAzOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzOCAoNTYpIExvYzogKzB4MEJDQyAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKc3RyaW5nIChyZWZsZWN0aW9uLkVudW0ubmFtZSk6CiAgKzB4MEI5OCB8IDIxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDIxICgzMykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBCOUMgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0RiB8IGNoYXJbMzNdICAgIHwgTXlHYW1lLk8gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MEJBNCB8IDc0IDY4IDY1IDcyIDRFIDYxIDZEIDY1IHwgICAgICAgICAgICAgfCB0aGVyTmFtZQogICsweDBCQUMgfCA1MyA3MCA2MSA2MyA2NSAyRSA0NiA3MiB8ICAgICAgICAgICAgIHwgU3BhY2UuRnIKICArMHgwQkI0IHwgNkYgNkQgNDkgNkUgNjMgNkMgNzUgNjQgfCAgICAgICAgICAgICB8IG9tSW5jbHVkCiAgKzB4MEJCQyB8IDY1ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBlCiAgKzB4MEJCRCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5FbnVtVmFsKToKICArMHgwQkJFIHwgMEUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MEJDMCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgwQkMyIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgwQkM0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoaWQ6IDEpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgwQkM2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9iamVjdGAgKGlkOiAyKSA8bnVsbD4gKE9iaikKICArMHgwQkM4IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHVuaW9uX3R5cGVgIChpZDogMykKICArMHgwQkNBIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogNCkKCnRhYmxlIChyZWZsZWN0aW9uLkVudW1WYWwpOgogICsweDBCQ0MgfCAwRSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAwRSAoMTQpIExvYzogKzB4MEJCRSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwQkQwIHwgMkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMkMgKDQ0KSBMb2M6ICsweDBCRkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MEJENCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgwQkYwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB1bmlvbl90eXBlYCAodGFibGUpCiAgKzB4MEJEOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBCREMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkVudW1WYWwuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEJEQyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZ0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwQkUwIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MEJFMiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgwQkU0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJhc2VfdHlwZWAgKGlkOiAwKSA8ZGVmYXVsdHMgdG8gMD4gKEJ5dGUpCiAgKzB4MEJFNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBlbGVtZW50YCAoaWQ6IDEpIDxkZWZhdWx0cyB0byAwPiAoQnl0ZSkKICArMHgwQkU4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGluZGV4YCAoaWQ6IDIpIDxkZWZhdWx0cyB0byAtMT4gKEludCkKICArMHgwQkVBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpeGVkX2xlbmd0aGAgKGlkOiAzKSA8ZGVmYXVsdHMgdG8gMD4gKFVTaG9ydCkKICArMHgwQkVDIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJhc2Vfc2l6ZWAgKGlkOiA0KQogICsweDBCRUUgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZWxlbWVudF9zaXplYCAoaWQ6IDUpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwQkYwIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDBCRTAgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEJGNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MEJGOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRW51bVZhbC5uYW1lKToKICArMHgwQkZDIHwgMEEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEEgKDEwKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEMwMCB8IDQ5IDZFIDYzIDZDIDc1IDY0IDY1IDU2IHwgY2hhclsxMF0gICAgfCBJbmNsdWRlViAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwQzA4IHwgNjEgNkMgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGFsCiAgKzB4MEMwQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLk9iamVjdCk6CiAgKzB4MEMwQyB8IEU0IEQzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEM0U0ICgtMTEyOTIpIExvYzogKzB4MzgyOCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBDMTAgfCA0QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0QyAoNzYpIExvYzogKzB4MEM1QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwQzE0IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDBDMjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgwQzE4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MEMxQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA4ICg4KSBMb2M6ICsweDBDMjQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDBDMjAgfCA0MCAyQiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMkI0MCAoMTEwNzIpIExvYzogKzB4Mzc2MCAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKHN0cmluZykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEMyNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZmllbGRzKToKICArMHgwQzI4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDBDMkMgfCBFNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBFNCAoMjI4KSBMb2M6ICsweDBEMTAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDBDMzAgfCBCMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBCMCAoMTc2KSBMb2M6ICsweDBDRTAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDBDMzQgfCBGMCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDFGMCAoNDk2KSBMb2M6ICsweDBFMjQgICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQogICsweDBDMzggfCA5MCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDE5MCAoNDAwKSBMb2M6ICsweDBEQzggICAgICB8IG9mZnNldCB0byB0YWJsZVszXQogICsweDBDM0MgfCAzMCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDEzMCAoMzA0KSBMb2M6ICsweDBENkMgICAgICB8IG9mZnNldCB0byB0YWJsZVs0XQogICsweDBDNDAgfCA2MCAwMiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDI2MCAoNjA4KSBMb2M6ICsweDBFQTAgICAgICB8IG9mZnNldCB0byB0YWJsZVs1XQogICsweDBDNDQgfCBCMCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDFCMCAoNDMyKSBMb2M6ICsweDBERjQgICAgICB8IG9mZnNldCB0byB0YWJsZVs2XQogICsweDBDNDggfCA1NCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDE1NCAoMzQwKSBMb2M6ICsweDBEOUMgICAgICB8IG9mZnNldCB0byB0YWJsZVs3XQogICsweDBDNEMgfCBGMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBGMCAoMjQwKSBMb2M6ICsweDBEM0MgICAgICB8IG9mZnNldCB0byB0YWJsZVs4XQogICsweDBDNTAgfCAwNCAwMiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDIwNCAoNTE2KSBMb2M6ICsweDBFNTQgICAgICB8IG9mZnNldCB0byB0YWJsZVs5XQogICsweDBDNTQgfCA1QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1QyAoOTIpIExvYzogKzB4MENCMCAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxMF0KICArMHgwQzU4IHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDBDN0MgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMTFdCgpzdHJpbmcgKHJlZmxlY3Rpb24uT2JqZWN0Lm5hbWUpOgogICsweDBDNUMgfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwQzYwIHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzI2XSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBDNjggfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA1NCB8ICAgICAgICAgICAgIHwgeGFtcGxlLlQKICArMHgwQzcwIHwgNzkgNzAgNjUgNDEgNkMgNjkgNjEgNzMgfCAgICAgICAgICAgICB8IHlwZUFsaWFzCiAgKzB4MEM3OCB8IDY1IDczICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBlcwogICsweDBDN0EgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MEM3QyB8IDAwIERCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEQjAwICgtOTQ3MikgTG9jOiArMHgzMTdDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBDODAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwQzgzIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDBDODQgfCAwQiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBCICgxMSkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgwQzg2IHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDBDODggfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4MENBNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwQzhDIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDBDOTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgwQzkwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MEM5NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEM5NCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDBDOTggfCAxNCBFMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTExNCAoLTc5MTYpIExvYzogKzB4MkI4NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwQzlDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MEM5RSB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MEM5RiB8IDBDICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDBDQTAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDBDQTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwQ0E4IHwgNzYgNjYgMzYgMzQgICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IHZmNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBDQUMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDBDQUQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgwQ0IwIHwgMzQgREIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRCMzQgKC05NDIwKSBMb2M6ICsweDMxN0MgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MENCNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDBDQjcgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvcHRpb25hbGAgKEJvb2wpCiAgKzB4MENCOCB8IDBBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEEgKDEwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDBDQkEgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MENCQyB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgwQ0Q4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBDQzAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MENDQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDBDQzQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwQ0M4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgwQ0M4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MENDQyB8IDQ4IEUxIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMTQ4ICgtNzg2NCkgTG9jOiArMHgyQjg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBDRDAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwQ0QyIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgwQ0QzIHwgMDMgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDMgKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MENENCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MENEOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBDREMgfCA3NiAzOCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgdjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MENERSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgwQ0UwIHwgNEEgRDggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ4NEEgKC0xMDE2NikgTG9jOiArMHgzNDk2ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MENFNCB8IDA5IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDBDRTYgfCAxNiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE2ICgyMikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MENFOCB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgwRDA4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBDRUMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MENGOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDBDRjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwQ0Y0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgwQ0Y0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MENGOCB8IDE0IEQ2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZENjE0ICgtMTA3MzIpIExvYzogKzB4MzZFNCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBDRkMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwQ0ZGIHwgMEMgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgwRDAwIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwRDA0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgwRDA4IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEQwQyB8IDY2IDM2IDM0ICAgICAgICAgICAgICAgIHwgY2hhclszXSAgICAgfCBmNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwRDBGIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDBEMTAgfCA3QSBEOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDg3QSAoLTEwMTE4KSBMb2M6ICsweDM0OTYgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwRDE0IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MEQxNiB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgwRDE4IHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDBEMzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MEQxQyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwRDI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MEQyMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBEMjQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDBEMjQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwRDI4IHwgOEMgRDMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQzOEMgKC0xMTM4MCkgTG9jOiArMHgzOTlDICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEQyQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDBEMkYgfCAwQiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQiAoMTEpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDBEMzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDBEMzQgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwRDM4IHwgNjYgMzMgMzIgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IGYzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBEM0IgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MEQzQyB8IEE2IEQ4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEOEE2ICgtMTAwNzQpIExvYzogKzB4MzQ5NiAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBENDAgfCAwNyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgwRDQyIHwgMTIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMiAoMTgpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDBENDQgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MEQ2NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwRDQ4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDBENTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgwRDRDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MEQ1MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEQ1MCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDBENTQgfCA3MCBENiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDY3MCAoLTEwNjQwKSBMb2M6ICsweDM2RTQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwRDU4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MEQ1QiB8IDBBICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MEQ1QyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MEQ2MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MEQ2NCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBENjggfCA3NSAzNiAzNCAgICAgICAgICAgICAgICB8IGNoYXJbM10gICAgIHwgdTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MEQ2QiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgwRDZDIHwgRDYgRDggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ4RDYgKC0xMDAyNikgTG9jOiArMHgzNDk2ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEQ3MCB8IDA2IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDBENzIgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MEQ3NCB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgwRDk0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBENzggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MEQ4NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDBEN0MgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwRDgwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgwRDgwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MEQ4NCB8IEEwIEQ2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZENkEwICgtMTA1OTIpIExvYzogKzB4MzZFNCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBEODggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwRDhCIHwgMDkgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDkgKDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgwRDhDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwRDkwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgwRDk0IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEQ5OCB8IDY5IDM2IDM0ICAgICAgICAgICAgICAgIHwgY2hhclszXSAgICAgfCBpNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwRDlCIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDBEOUMgfCAwNiBEOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDkwNiAoLTk5NzgpIExvYzogKzB4MzQ5NiAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwREEwIHwgMDUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MERBMiB8IDBFIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgwREE0IHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDBEQzAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MERBOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwREI0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MERBQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBEQjAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDBEQjAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwREI0IHwgMTggRDQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ0MTggKC0xMTI0MCkgTG9jOiArMHgzOTlDICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MERCOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDBEQkIgfCAwOCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDBEQkMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDBEQzAgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwREM0IHwgNzUgMzMgMzIgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBEQzcgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MERDOCB8IDMyIEQ5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEOTMyICgtOTkzNCkgTG9jOiArMHgzNDk2ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBEQ0MgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgwRENFIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDBERDAgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4MERFQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwREQ0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDBERTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgwREQ4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MEREQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEREQyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDBERTAgfCA0NCBENCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDQ0NCAoLTExMTk2KSBMb2M6ICsweDM5OUMgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwREU0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MERFNyB8IDA3ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MERFOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MERFQyB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBERjAgfCA2OSAzMyAzMiAgICAgICAgICAgICAgICB8IGNoYXJbM10gICAgIHwgaTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MERGMyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgwREY0IHwgNUUgRDkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ5NUUgKC05ODkwKSBMb2M6ICsweDM0OTYgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MERGOCB8IDAzIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDBERkEgfCAwQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MERGQyB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgwRTFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDBFMDAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MEUwQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDBFMDQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgwRTA4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgwRTA4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MEUwQyB8IDI4IEQ3IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZENzI4ICgtMTA0NTYpIExvYzogKzB4MzZFNCAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBFMTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgwRTEzIHwgMDYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDYgKDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgwRTE0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgwRTE4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgwRTFDIHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEUyMCB8IDc1IDMxIDM2ICAgICAgICAgICAgICAgIHwgY2hhclszXSAgICAgfCB1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwRTIzIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDBFMjQgfCA4RSBEOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDk4RSAoLTk4NDIpIExvYzogKzB4MzQ5NiAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwRTI4IHwgMDIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwMiAoMikgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MEUyQSB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgwRTJDIHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDBFNEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MEUzMCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwRTNDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MEUzNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBFMzggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDBFMzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwRTNDIHwgNTggRDcgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ3NTggKC0xMDQwOCkgTG9jOiArMHgzNkU0ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEU0MCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDBFNDMgfCAwNSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwNSAoNSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDBFNDQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDBFNDggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDBFNEMgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwRTUwIHwgNjkgMzEgMzYgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IGkxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBFNTMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MEU1NCB8IEJFIEQ5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEOUJFICgtOTc5NCkgTG9jOiArMHgzNDk2ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDBFNTggfCAwMSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgwRTVBIHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDBFNUMgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MEU3QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgwRTYwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDBFNkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgwRTY0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MEU2OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MEU2OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDBFNkMgfCA4OCBENyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDc4OCAoLTEwMzYwKSBMb2M6ICsweDM2RTQgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwRTcwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MEU3MyB8IDA0ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MEU3NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MEU3OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MEU3QyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDBFODAgfCA3NSAzOCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MEU4MiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MEU4MyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgwRTg2IHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MEU4OCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgwRThBIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgwRThDIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgIChpZDogMSkKICArMHgwRThFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlkYCAoaWQ6IDIpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDBFOTAgfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MEU5MiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChMb25nKQogICsweDBFOTQgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoaWQ6IDUpIDxkZWZhdWx0cyB0byAwLjAwMDAwMD4gKERvdWJsZSkKICArMHgwRTk2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlcHJlY2F0ZWRgIChpZDogNikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDBFOTggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWlyZWRgIChpZDogNykgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDBFOUEgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoaWQ6IDgpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgwRTlDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgIChpZDogOSkgPG51bGw+IChWZWN0b3IpCiAgKzB4MEU5RSB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDBFQTAgfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4MEU4NiAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwRUE0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MEVBNiB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgwRUE4IHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDBFQzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MEVBQyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgwRUI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MEVCMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBFQjQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDBFQjQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgwRUI4IHwgRDQgRDcgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ3RDQgKC0xMDI4NCkgTG9jOiArMHgzNkU0ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MEVCQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDBFQkYgfCAwMyAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMyAoMykgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDBFQzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDBFQzQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDBFQzggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgwRUNDIHwgNjkgMzggICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDBFQ0UgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5PYmplY3QpOgogICsweDBFRDAgfCBBOCBENiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRDZBOCAoLTEwNTg0KSBMb2M6ICsweDM4MjggICB8IG9mZnNldCB0byB2dGFibGUKICArMHgwRUQ0IHwgMzAgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxMzAgKDMwNCkgTG9jOiArMHgxMDA0ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MEVEOCB8IDUwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDUwICg4MCkgTG9jOiArMHgwRjI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWVsZHNgICh2ZWN0b3IpCiAgKzB4MEVEQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG1pbmFsaWduYCAoSW50KQogICsweDBFRTAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgwRUU4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgwRUU0IHwgN0MgMjggMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDI4N0MgKDEwMzY0KSBMb2M6ICsweDM3NjAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDBFRTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MEVFQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDBFRjAgICAgICAgIHwgb2Zmc2V0IHRvIHN0cmluZ1swXQoKc3RyaW5nIChyZWZsZWN0aW9uLk9iamVjdC5kb2N1bWVudGF0aW9uKToKICArMHgwRUYwIHwgMzMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMzMgKDUxKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MEVGNCB8IDIwIDYxIDZFIDIwIDY1IDc4IDYxIDZEIHwgY2hhcls1MV0gICAgfCAgYW4gZXhhbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgwRUZDIHwgNzAgNkMgNjUgMjAgNjQgNkYgNjMgNzUgfCAgICAgICAgICAgICB8IHBsZSBkb2N1CiAgKzB4MEYwNCB8IDZEIDY1IDZFIDc0IDYxIDc0IDY5IDZGIHwgICAgICAgICAgICAgfCBtZW50YXRpbwogICsweDBGMEMgfCA2RSAyMCA2MyA2RiA2RCA2RCA2NSA2RSB8ICAgICAgICAgICAgIHwgbiBjb21tZW4KICArMHgwRjE0IHwgNzQgM0EgMjAgMjIgNkQgNkYgNkUgNzMgfCAgICAgICAgICAgICB8IHQ6ICJtb25zCiAgKzB4MEYxQyB8IDc0IDY1IDcyIDIwIDZGIDYyIDZBIDY1IHwgICAgICAgICAgICAgfCB0ZXIgb2JqZQogICsweDBGMjQgfCA2MyA3NCAyMiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgY3QiCiAgKzB4MEYyNyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZmllbGRzKToKICArMHgwRjI4IHwgMzYgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMzYgKDU0KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDBGMkMgfCA4MCAwNCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDQ4MCAoMTE1MikgTG9jOiArMHgxM0FDICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDBGMzAgfCBFNCAwNCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDRFNCAoMTI1MikgTG9jOiArMHgxNDE0ICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDBGMzQgfCA0QyAwNSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDU0QyAoMTM1NikgTG9jOiArMHgxNDgwICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQogICsweDBGMzggfCBBQyAwNSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDVBQyAoMTQ1MikgTG9jOiArMHgxNEU0ICAgICB8IG9mZnNldCB0byB0YWJsZVszXQogICsweDBGM0MgfCBBOCAwOSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDlBOCAoMjQ3MikgTG9jOiArMHgxOEU0ICAgICB8IG9mZnNldCB0byB0YWJsZVs0XQogICsweDBGNDAgfCA3OCAxQiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMUI3OCAoNzAzMikgTG9jOiArMHgyQUI4ICAgICB8IG9mZnNldCB0byB0YWJsZVs1XQogICsweDBGNDQgfCA4OCAxOCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTg4OCAoNjI4MCkgTG9jOiArMHgyN0NDICAgICB8IG9mZnNldCB0byB0YWJsZVs2XQogICsweDBGNDggfCA0NCAwRiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMEY0NCAoMzkwOCkgTG9jOiArMHgxRThDICAgICB8IG9mZnNldCB0byB0YWJsZVs3XQogICsweDBGNEMgfCA3QyAxQyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMUM3QyAoNzI5MikgTG9jOiArMHgyQkM4ICAgICB8IG9mZnNldCB0byB0YWJsZVs4XQogICsweDBGNTAgfCBDMCAxRCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMURDMCAoNzYxNikgTG9jOiArMHgyRDEwICAgICB8IG9mZnNldCB0byB0YWJsZVs5XQogICsweDBGNTQgfCBFQyAxQiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMUJFQyAoNzE0OCkgTG9jOiArMHgyQjQwICAgICB8IG9mZnNldCB0byB0YWJsZVsxMF0KICArMHgwRjU4IHwgNDQgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxNDQgKDMyNCkgTG9jOiArMHgxMDlDICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMTFdCiAgKzB4MEY1QyB8IEM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEM0ICgxOTYpIExvYzogKzB4MTAyMCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzEyXQogICsweDBGNjAgfCAzMCAxRSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMUUzMCAoNzcyOCkgTG9jOiArMHgyRDkwICAgICB8IG9mZnNldCB0byB0YWJsZVsxM10KICArMHgwRjY0IHwgMzAgMUQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDFEMzAgKDc0NzIpIExvYzogKzB4MkM5NCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMTRdCiAgKzB4MEY2OCB8IEE4IDAxIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMUE4ICg0MjQpIExvYzogKzB4MTExMCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzE1XQogICsweDBGNkMgfCAxMCAwNyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDcxMCAoMTgwOCkgTG9jOiArMHgxNjdDICAgICB8IG9mZnNldCB0byB0YWJsZVsxNl0KICArMHgwRjcwIHwgODAgMEQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDBEODAgKDM0NTYpIExvYzogKzB4MUNGMCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMTddCiAgKzB4MEY3NCB8IEEwIDFFIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAxRUEwICg3ODQwKSBMb2M6ICsweDJFMTQgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzE4XQogICsweDBGNzggfCAyQyAwMiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDIyQyAoNTU2KSBMb2M6ICsweDExQTQgICAgICB8IG9mZnNldCB0byB0YWJsZVsxOV0KICArMHgwRjdDIHwgNUMgMDMgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAzNUMgKDg2MCkgTG9jOiArMHgxMkQ4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMjBdCiAgKzB4MEY4MCB8IDA4IDBDIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwQzA4ICgzMDgwKSBMb2M6ICsweDFCODggICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzIxXQogICsweDBGODQgfCA1OCAxQSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMUE1OCAoNjc0NCkgTG9jOiArMHgyOURDICAgICB8IG9mZnNldCB0byB0YWJsZVsyMl0KICArMHgwRjg4IHwgRTQgMTkgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDE5RTQgKDY2MjgpIExvYzogKzB4Mjk2QyAgICAgfCBvZmZzZXQgdG8gdGFibGVbMjNdCiAgKzB4MEY4QyB8IEEwIDBFIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwRUEwICgzNzQ0KSBMb2M6ICsweDFFMkMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzI0XQogICsweDBGOTAgfCBDNCAxQSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMUFDNCAoNjg1MikgTG9jOiArMHgyQTU0ICAgICB8IG9mZnNldCB0byB0YWJsZVsyNV0KICArMHgwRjk0IHwgOTAgMTEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDExOTAgKDQ0OTYpIExvYzogKzB4MjEyNCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMjZdCiAgKzB4MEY5OCB8IDc4IDBGIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwRjc4ICgzOTYwKSBMb2M6ICsweDFGMTAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzI3XQogICsweDBGOUMgfCA2OCAxOSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTk2OCAoNjUwNCkgTG9jOiArMHgyOTA0ICAgICB8IG9mZnNldCB0byB0YWJsZVsyOF0KICArMHgwRkEwIHwgRTAgMEYgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDBGRTAgKDQwNjQpIExvYzogKzB4MUY4MCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMjldCiAgKzB4MEZBNCB8IDg4IDE4IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAxODg4ICg2MjgwKSBMb2M6ICsweDI4MkMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzMwXQogICsweDBGQTggfCBDMCAxNiAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTZDMCAoNTgyNCkgTG9jOiArMHgyNjY4ICAgICB8IG9mZnNldCB0byB0YWJsZVszMV0KICArMHgwRkFDIHwgMUMgMTcgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDE3MUMgKDU5MTYpIExvYzogKzB4MjZDOCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMzJdCiAgKzB4MEZCMCB8IDEwIDExIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAxMTEwICg0MzY4KSBMb2M6ICsweDIwQzAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzMzXQogICsweDBGQjQgfCA4QyAxMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTA4QyAoNDIzNikgTG9jOiArMHgyMDQwICAgICB8IG9mZnNldCB0byB0YWJsZVszNF0KICArMHgwRkI4IHwgMzAgMTAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDEwMzAgKDQxNDQpIExvYzogKzB4MUZFOCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMzVdCiAgKzB4MEZCQyB8IDIwIDE2IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAxNjIwICg1NjY0KSBMb2M6ICsweDI1REMgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzM2XQogICsweDBGQzAgfCBFMCAxMyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTNFMCAoNTA4OCkgTG9jOiArMHgyM0EwICAgICB8IG9mZnNldCB0byB0YWJsZVszN10KICArMHgwRkM0IHwgRkMgMTQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDE0RkMgKDUzNzIpIExvYzogKzB4MjRDMCAgICAgfCBvZmZzZXQgdG8gdGFibGVbMzhdCiAgKzB4MEZDOCB8IDU4IDEyIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAxMjU4ICg0Njk2KSBMb2M6ICsweDIyMjAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzM5XQogICsweDBGQ0MgfCA4NCAxNSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTU4NCAoNTUwOCkgTG9jOiArMHgyNTUwICAgICB8IG9mZnNldCB0byB0YWJsZVs0MF0KICArMHgwRkQwIHwgRTQgMTIgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDEyRTQgKDQ4MzYpIExvYzogKzB4MjJCNCAgICAgfCBvZmZzZXQgdG8gdGFibGVbNDFdCiAgKzB4MEZENCB8IDVDIDE0IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAxNDVDICg1MjEyKSBMb2M6ICsweDI0MzAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzQyXQogICsweDBGRDggfCBCNCAxMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMTFCNCAoNDUzMikgTG9jOiArMHgyMThDICAgICB8IG9mZnNldCB0byB0YWJsZVs0M10KICArMHgwRkRDIHwgNTAgMTcgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDE3NTAgKDU5NjgpIExvYzogKzB4MjcyQyAgICAgfCBvZmZzZXQgdG8gdGFibGVbNDRdCiAgKzB4MEZFMCB8IDM4IDAyIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMjM4ICg1NjgpIExvYzogKzB4MTIxOCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzQ1XQogICsweDBGRTQgfCBDMCAwNyAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDdDMCAoMTk4NCkgTG9jOiArMHgxN0E0ICAgICB8IG9mZnNldCB0byB0YWJsZVs0Nl0KICArMHgwRkU4IHwgNzggMEQgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDBENzggKDM0NDgpIExvYzogKzB4MUQ2MCAgICAgfCBvZmZzZXQgdG8gdGFibGVbNDddCiAgKzB4MEZFQyB8IDU4IDAzIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMzU4ICg4NTYpIExvYzogKzB4MTM0NCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzQ4XQogICsweDBGRjAgfCBEOCAwRCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMEREOCAoMzU0NCkgTG9jOiArMHgxREM4ICAgICB8IG9mZnNldCB0byB0YWJsZVs0OV0KICArMHgwRkY0IHwgNTggMDUgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDA1NTggKDEzNjgpIExvYzogKzB4MTU0QyAgICAgfCBvZmZzZXQgdG8gdGFibGVbNTBdCiAgKzB4MEZGOCB8IDg4IDBDIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwQzg4ICgzMjA4KSBMb2M6ICsweDFDODAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzUxXQogICsweDBGRkMgfCBEQyAwOSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDlEQyAoMjUyNCkgTG9jOiArMHgxOUQ4ICAgICB8IG9mZnNldCB0byB0YWJsZVs1Ml0KICArMHgxMDAwIHwgOEMgMEEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDBBOEMgKDI3MDApIExvYzogKzB4MUE4QyAgICAgfCBvZmZzZXQgdG8gdGFibGVbNTNdCgpzdHJpbmcgKHJlZmxlY3Rpb24uT2JqZWN0Lm5hbWUpOgogICsweDEwMDQgfCAxNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNiAoMjIpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMDA4IHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzIyXSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEwMTAgfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA0RCB8ICAgICAgICAgICAgIHwgeGFtcGxlLk0KICArMHgxMDE4IHwgNkYgNkUgNzMgNzQgNjUgNzIgICAgICAgfCAgICAgICAgICAgICB8IG9uc3RlcgogICsweDEwMUUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MTAyMCB8IDYyIEZEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRDYyICgtNjcwKSBMb2M6ICsweDEyQkUgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEwMjQgfCAzNSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDM1ICg1MykgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxMDI2IHwgNkUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA2RSAoMTEwKSAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDEwMjggfCA1NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1NCAoODQpIExvYzogKzB4MTA3QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxMDJDIHwgM0MgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwM0MgKDYwKSBMb2M6ICsweDEwNjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxMDMwIHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDEwNDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MTAzNCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxMDQwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDEwMzggfCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDAyICgyKSAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChMb25nKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDEwNDAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MTA0NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxMDQ4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTA0QyAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxMDRDIHwgRTggREEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRBRTggKC05NDk2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTA1MCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxMDYwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTA1NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDEwNTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTA1OCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDEwNUMgfCAzNSAzMyAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgNTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTA1RSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDEwNjAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMDY0IHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEwNjYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxMDY4IHwgNjQgREEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRBNjQgKC05NjI4KSBMb2M6ICsweDM2MDQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTA2QyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDEwNkYgfCAwQSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDEwNzAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgxMDc0IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgxMDc4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxMDdDIHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTA4MCB8IDZDIDZGIDZFIDY3IDVGIDY1IDZFIDc1IHwgY2hhclsyNF0gICAgfCBsb25nX2VudSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMDg4IHwgNkQgNUYgNkUgNkYgNzIgNkQgNjEgNkMgfCAgICAgICAgICAgICB8IG1fbm9ybWFsCiAgKzB4MTA5MCB8IDVGIDY0IDY1IDY2IDYxIDc1IDZDIDc0IHwgICAgICAgICAgICAgfCBfZGVmYXVsdAogICsweDEwOTggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDEwOTkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgxMDlDIHwgNjIgRTYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU2NjIgKC02NTU4KSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTBBMCB8IDM0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMzQgKDUyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDEwQTIgfCA2QyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDZDICgxMDgpICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MTBBNCB8IDRDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDRDICg3NikgTG9jOiArMHgxMEYwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDEwQTggfCAzNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzNCAoNTIpIExvYzogKzB4MTBEQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDEwQUMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MTBCOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgxMEIwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTBCNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MTBCNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgxMEI4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDEwQkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMEMwICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDEwQzAgfCA1QyBEQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGREI1QyAoLTkzODApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMEM0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDEwRDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxMEM4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTBDQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxMENDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTBEMCB8IDM1IDMyICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCA1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMEQyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTBENCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDEwRDggfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTBEQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDEwREMgfCBEOCBEQSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGREFEOCAoLTk1MTIpIExvYzogKzB4MzYwNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMEUwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTBFMyB8IDBBICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MTBFNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDEwRTggfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDEwRUMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDEwRjAgfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMEY0IHwgNkMgNkYgNkUgNjcgNUYgNjUgNkUgNzUgfCBjaGFyWzI2XSAgICB8IGxvbmdfZW51ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEwRkMgfCA2RCA1RiA2RSA2RiA2RSA1RiA2NSA2RSB8ICAgICAgICAgICAgIHwgbV9ub25fZW4KICArMHgxMTA0IHwgNzUgNkQgNUYgNjQgNjUgNjYgNjEgNzUgfCAgICAgICAgICAgICB8IHVtX2RlZmF1CiAgKzB4MTEwQyB8IDZDIDc0ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBsdAogICsweDExMEUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MTExMCB8IEVDIEU1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNUVDICgtNjY3NikgTG9jOiArMHgyQjI0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDExMTQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxMTE3IHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDExMTggfCAzMyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDMzICg1MSkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxMTFBIHwgNkEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA2QSAoMTA2KSAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDExMUMgfCA3NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA3NCAoMTE2KSBMb2M6ICsweDExOTAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxMTIwIHwgNjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNjAgKDk2KSBMb2M6ICsweDExODAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxMTI0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDExMzAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MTEyOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDExMkMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDExMkMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MTEzMCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxMTM0IHwgMzAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzAgKDQ4KSBMb2M6ICsweDExNjQgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgxMTM4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTEzQyAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxMTNDIHwgRDggREIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRCRDggKC05MjU2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTE0MCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxMTUwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTE0NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDExNDggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTE0OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDExNEMgfCAzMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTE0RCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTE0RSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTE1MCB8IDBEIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBEICgxMykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDExNTQgfCA2RSA2MSA3NCA2OSA3NiA2NSA1RiA2OSB8IGNoYXJbMTNdICAgIHwgbmF0aXZlX2kgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTE1QyB8IDZFIDZDIDY5IDZFIDY1ICAgICAgICAgIHwgICAgICAgICAgICAgfCBubGluZQogICsweDExNjEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDExNjIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxMTY0IHwgMDAgREMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRDMDAgKC05MjE2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTE2OCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxMTc4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTE2QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDExNzAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTE3MCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDExNzQgfCAzNSAzMSAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgNTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTE3NiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDExNzggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMTdDIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDExN0UgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxMTgwIHwgQzggRDggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkQ4QzggKC0xMDA0MCkgTG9jOiArMHgzOEI4ICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTE4NCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDExODcgfCAwRiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRiAoMTUpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDExODggfCAwNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNiAoNikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgxMThDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxMTkwIHwgMEQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEQgKDEzKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTE5NCB8IDZFIDYxIDc0IDY5IDc2IDY1IDVGIDY5IHwgY2hhclsxM10gICAgfCBuYXRpdmVfaSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMTlDIHwgNkUgNkMgNjkgNkUgNjUgICAgICAgICAgfCAgICAgICAgICAgICB8IG5saW5lCiAgKzB4MTFBMSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTFBMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDExQTQgfCA4MCBFNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTY4MCAoLTY1MjgpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMUE4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTFBQiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxMUFDIHwgMzIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAzMiAoNTApICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTFBRSB8IDY4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNjggKDEwNCkgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxMUIwIHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDExRjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTFCNCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxMUU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTFCOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxMUM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDExQkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMUMwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxMUMwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDExQzQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTFDOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDExQ0MgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTFDQyB8IDY4IERDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEQzY4ICgtOTExMikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDExRDAgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTFFMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDExRDQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMUQ4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDExRDggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMURDIHwgMzUgMzAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDExREUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxMUUwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTFFNCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMUU2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MTFFOCB8IDM4IEU4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFODM4ICgtNjA4OCkgTG9jOiArMHgyOUIwICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDExRUMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxMUVFIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxMUVGIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MTFGMCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDExRjQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDExRjggfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMUZDIHwgNzMgNjMgNjEgNkMgNjEgNzIgNUYgNkIgfCBjaGFyWzI0XSAgICB8IHNjYWxhcl9rICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEyMDQgfCA2NSA3OSA1RiA3MyA2RiA3MiA3NCA2NSB8ICAgICAgICAgICAgIHwgZXlfc29ydGUKICArMHgxMjBDIHwgNjQgNUYgNzQgNjEgNjIgNkMgNjUgNzMgfCAgICAgICAgICAgICB8IGRfdGFibGVzCiAgKzB4MTIxNCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTIxNSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDEyMTggfCBGNCBFNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTZGNCAoLTY0MTIpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMjFDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTIxRiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxMjIwIHwgMzEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAzMSAoNDkpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTIyMiB8IDY2IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNjYgKDEwMikgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxMjI0IHwgNzggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNzggKDEyMCkgTG9jOiArMHgxMjlDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTIyOCB8IDY4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDY4ICgxMDQpIExvYzogKzB4MTI5MCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTIyQyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxMjM4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDEyMzAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMjM0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxMjM0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDEyMzggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTIzQyB8IDM4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM4ICg1NikgTG9jOiArMHgxMjc0ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MTI0MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDEyNDQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTI0NCB8IEUwIERDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEQ0UwICgtODk5MikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEyNDggfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MTI1QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDEyNEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMjUwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDEyNTAgfCAwNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNyAoNykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMjU0IHwgNEQgNkYgNkUgNzMgNzQgNjUgNzIgICAgfCBjaGFyWzddICAgICB8IE1vbnN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEyNUIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxMjVDIHwgMTEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTEgKDE3KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTI2MCB8IDZFIDY1IDczIDc0IDY1IDY0IDVGIDY2IHwgY2hhclsxN10gICAgfCBuZXN0ZWRfZiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMjY4IHwgNkMgNjEgNzQgNjIgNzUgNjYgNjYgNjUgfCAgICAgICAgICAgICB8IGxhdGJ1ZmZlCiAgKzB4MTI3MCB8IDcyICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCByCiAgKzB4MTI3MSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTI3MiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDEyNzQgfCAxMCBERCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGREQxMCAoLTg5NDQpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMjc4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDEyODggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxMjdDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTI4MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxMjgwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTI4NCB8IDM0IDM5ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCA0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMjg2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTI4OCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDEyOEMgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTI4RSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDEyOTAgfCAwQyBFNyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTcwQyAoLTYzODgpIExvYzogKzB4MkI4NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMjk0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTI5NiB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MTI5NyB8IDA0ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDEyOTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDEyOUMgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMkEwIHwgNzQgNjUgNzMgNzQgNzIgNjUgNzEgNzUgfCBjaGFyWzI4XSAgICB8IHRlc3RyZXF1ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEyQTggfCA2OSA3MiA2NSA2NCA2RSA2NSA3MyA3NCB8ICAgICAgICAgICAgIHwgaXJlZG5lc3QKICArMHgxMkIwIHwgNjUgNjQgNjYgNkMgNjEgNzQgNjIgNzUgfCAgICAgICAgICAgICB8IGVkZmxhdGJ1CiAgKzB4MTJCOCB8IDY2IDY2IDY1IDcyICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBmZmVyCiAgKzB4MTJCQyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MTJCRSB8IDFBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUEgKDI2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDEyQzAgfCAyMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDIwICgzMikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MTJDMiB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MTJDNCB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4MTJDNiB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKQogICsweDEyQzggfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MTJDQSB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkKICArMHgxMkNDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MTJDRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgxMkQwIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgxMkQyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MTJENCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpCiAgKzB4MTJENiB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDEyRDggfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4MTJCRSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMkRDIHwgMzAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAzMCAoNDgpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTJERSB8IDY0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNjQgKDEwMCkgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxMkUwIHwgNTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTQgKDg0KSBMb2M6ICsweDEzMzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTJFNCB8IDNDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDNDICg2MCkgTG9jOiArMHgxMzIwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTJFOCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgxMkZDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDEyRUMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MTJGOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgxMkYwIHwgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgfCBpbnQ2NF90ICAgICB8IDB4RkZGRkZGRkZGRkZGRkZGRiAoLTEpICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoTG9uZykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxMkY4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDEyRkMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTMwMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDEzMDQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTMwNCB8IEEwIEREIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEREEwICgtODgwMCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEzMDggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTMxOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDEzMEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMzEwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDEzMTAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMzE0IHwgMzQgMzggICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEzMTYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxMzE4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTMxQyB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMzFFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MTMyMCB8IDFDIEREIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZERDFDICgtODkzMikgTG9jOiArMHgzNjA0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEzMjQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxMzI3IHwgMDMgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDMgKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxMzI4IHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MTMyQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MTMzMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MTMzNCB8IDBCIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBCICgxMSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDEzMzggfCA3MyA2OSA2NyA2RSA2NSA2NCA1RiA2NSB8IGNoYXJbMTFdICAgIHwgc2lnbmVkX2UgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTM0MCB8IDZFIDc1IDZEICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBudW0KICArMHgxMzQzIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDEzNDQgfCAyMCBFOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTgyMCAoLTYxMTIpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxMzQ4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTM0QiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxMzRDIHwgMkYgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyRiAoNDcpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTM0RSB8IDYyIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNjIgKDk4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxMzUwIHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDEzOTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTM1NCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxMzg4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTM1OCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxMzY0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDEzNUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMzYwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxMzYwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDEzNjQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTM2OCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDEzNkMgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTM2QyB8IDA4IERFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZERTA4ICgtODY5NikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEzNzAgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTM4MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDEzNzQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxMzc4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDEzNzggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMzdDIHwgMzQgMzcgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEzN0UgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxMzgwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTM4NCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxMzg2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MTM4OCB8IEQ4IEU5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFOUQ4ICgtNTY3MikgTG9jOiArMHgyOUIwICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEzOEMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxMzhFIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxMzhGIHwgMDQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MTM5MCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDEzOTQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDEzOTggfCAwRiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwRiAoMTUpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxMzlDIHwgNzYgNjUgNjMgNzQgNkYgNzIgNUYgNkYgfCBjaGFyWzE1XSAgICB8IHZlY3Rvcl9vICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEzQTQgfCA2NiA1RiA2NSA2RSA3NSA2RCA3MyAgICB8ICAgICAgICAgICAgIHwgZl9lbnVtcwogICsweDEzQUIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MTNBQyB8IDg4IEU4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFODg4ICgtNjAwOCkgTG9jOiArMHgyQjI0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDEzQjAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxM0IzIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDEzQjQgfCAyRSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDJFICg0NikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxM0I2IHwgNjAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA2MCAoOTYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDEzQjggfCA0OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0OCAoNzIpIExvYzogKzB4MTQwMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxM0JDIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDEzRjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxM0MwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDEzQ0MgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MTNDNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDEzQzggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDEzQzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MTNDQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxM0QwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTNENCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxM0Q0IHwgNzAgREUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRFNzAgKC04NTkyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTNEOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxM0U4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTNEQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDEzRTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTNFMCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDEzRTQgfCAzNCAzNiAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgNDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTNFNiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDEzRTggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxM0VDIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDEzRUUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxM0YwIHwgMzggREIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRCMzggKC05NDE2KSBMb2M6ICsweDM4QjggICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTNGNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDEzRjcgfCAxMCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDEzRjggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgxM0ZDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxNDAwIHwgMEQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEQgKDEzKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTQwNCB8IDYxIDZFIDc5IDVGIDYxIDZEIDYyIDY5IHwgY2hhclsxM10gICAgfCBhbnlfYW1iaSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNDBDIHwgNjcgNzUgNkYgNzUgNzMgICAgICAgICAgfCAgICAgICAgICAgICB8IGd1b3VzCiAgKzB4MTQxMSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTQxMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDE0MTQgfCBEQSBFOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTlEQSAoLTU2NzApIExvYzogKzB4MkEzQSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNDE4IHwgMkQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyRCAoNDUpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTQxQSB8IDVFIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNUUgKDk0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxNDFDIHwgNEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNEMgKDc2KSBMb2M6ICsweDE0NjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTQyMCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxNDU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTQyNCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxNDMwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDE0MjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNDJDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxNDJDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDE0MzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTQzNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE0MzggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTQzOCB8IEQ0IERFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZERUQ0ICgtODQ5MikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE0M0MgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTQ0QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE0NDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNDQ0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE0NDQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNDQ4IHwgMzQgMzUgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE0NEEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNDRDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTQ1MCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNDUyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MTQ1NCB8IDUwIERFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZERTUwICgtODYyNCkgTG9jOiArMHgzNjA0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE0NTggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxNDVCIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxNDVDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MTQ2MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MTQ2NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MTQ2OCB8IDEyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEyICgxOCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE0NkMgfCA2MSA2RSA3OSA1RiA2MSA2RCA2MiA2OSB8IGNoYXJbMThdICAgIHwgYW55X2FtYmkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTQ3NCB8IDY3IDc1IDZGIDc1IDczIDVGIDc0IDc5IHwgICAgICAgICAgICAgfCBndW91c190eQogICsweDE0N0MgfCA3MCA2NSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgcGUKICArMHgxNDdFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDE0ODAgfCA1QyBFOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTk1QyAoLTU3OTYpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNDg0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTQ4NyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxNDg4IHwgMkMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyQyAoNDQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTQ4QSB8IDVDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNUMgKDkyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxNDhDIHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDE0RDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTQ5MCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxNEM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTQ5NCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxNEEwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDE0OTggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNDlDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxNDlDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDE0QTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTRBNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE0QTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTRBOCB8IDQ0IERGIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZERjQ0ICgtODM4MCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE0QUMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTRCQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE0QjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNEI0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE0QjQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNEI4IHwgMzQgMzQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDQ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE0QkEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNEJDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTRDMCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNEMyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MTRDNCB8IDBDIERDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZEQzBDICgtOTIwNCkgTG9jOiArMHgzOEI4ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE0QzggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxNENCIHwgMTAgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxNENDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MTREMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MTRENCB8IDBBIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE0RDggfCA2MSA2RSA3OSA1RiA3NSA2RSA2OSA3MSB8IGNoYXJbMTBdICAgIHwgYW55X3VuaXEgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTRFMCB8IDc1IDY1ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB1ZQogICsweDE0RTIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MTRFNCB8IEFBIEVBIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQUFBICgtNTQ2MikgTG9jOiArMHgyQTNBICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE0RTggfCAyQiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDJCICg0MykgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxNEVBIHwgNUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA1QSAoOTApICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDE0RUMgfCA0QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0QyAoNzYpIExvYzogKzB4MTUzOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxNEYwIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDE1MjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxNEY0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDE1MDAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MTRGOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE0RkMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDE0RkMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MTUwMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxNTA0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTUwOCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxNTA4IHwgQTQgREYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRGQTQgKC04Mjg0KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTUwQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxNTFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTUxMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE1MTQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTUxNCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE1MTggfCAzNCAzMyAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgNDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTUxQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE1MUMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNTIwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE1MjIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxNTI0IHwgMjAgREYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkRGMjAgKC04NDE2KSBMb2M6ICsweDM2MDQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTUyOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDE1MkIgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDE1MkMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgxNTMwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgxNTM0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxNTM4IHwgMEYgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEYgKDE1KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTUzQyB8IDYxIDZFIDc5IDVGIDc1IDZFIDY5IDcxIHwgY2hhclsxNV0gICAgfCBhbnlfdW5pcSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNTQ0IHwgNzUgNjUgNUYgNzQgNzkgNzAgNjUgICAgfCAgICAgICAgICAgICB8IHVlX3R5cGUKICArMHgxNTRCIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDE1NEMgfCAyOCBFQSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUEyOCAoLTU1OTIpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNTUwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTU1MyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxNTU0IHwgMkEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyQSAoNDIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTU1NiB8IDU4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNTggKDg4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxNTU4IHwgMDAgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxMDAgKDI1NikgTG9jOiArMHgxNjU4ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTU1QyB8IEYwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEYwICgyNDApIExvYzogKzB4MTY0QyAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTU2MCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxNTZDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDE1NjQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNTY4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxNTY4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDE1NkMgfCAwNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTU3MCB8IEIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEIwICgxNzYpIExvYzogKzB4MTYyMCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MTU3NCB8IDgwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDgwICgxMjgpIExvYzogKzB4MTVGNCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCiAgKzB4MTU3OCB8IDUwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDUwICg4MCkgTG9jOiArMHgxNUM4ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzJdCiAgKzB4MTU3QyB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgxNUEwICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzNdCiAgKzB4MTU4MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE1ODQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzRdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTU4NCB8IDIwIEUwIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMDIwICgtODE2MCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE1ODggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTU5OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE1OEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNTkwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE1OTAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNTk0IHwgMzQgMzIgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE1OTYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNTk4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTU5QyB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNTlFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDE1QTAgfCAzQyBFMCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTAzQyAoLTgxMzIpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNUE0IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDE1QkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxNUE4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTVBQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxNUFDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTVCMCB8IDY2IDZFIDc2IDMxIDYxIDVGIDM2IDM0IHwgY2hhcls4XSAgICAgfCBmbnYxYV82NCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNUI4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNUI5IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNUJDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTVDMCB8IDY4IDYxIDczIDY4ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNUM0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNUM1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTVDOCB8IDY0IEUwIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMDY0ICgtODA5MikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE1Q0MgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MTVFNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE1RDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNUQ0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE1RDQgfCAwQiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQiAoMTEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNUQ4IHwgNTIgNjUgNjYgNjUgNzIgNzIgNjEgNjIgfCBjaGFyWzExXSAgICB8IFJlZmVycmFiICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE1RTAgfCA2QyA2NSA1NCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgbGVUCiAgKzB4MTVFMyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE1RTQgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNUU4IHwgNjMgNzAgNzAgNUYgNzQgNzkgNzAgNjUgfCBjaGFyWzhdICAgICB8IGNwcF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE1RjAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE1RjEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxNUY0IHwgOTAgRTAgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkUwOTAgKC04MDQ4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTVGOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxNjA4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTVGQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE2MDAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTYwMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE2MDQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE2MDUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE2MDggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNjBDIHwgNjMgNzAgNzAgNUYgNzAgNzQgNzIgNUYgfCBjaGFyWzE2XSAgICB8IGNwcF9wdHJfICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE2MTQgfCA3NCA3OSA3MCA2NSA1RiA2NyA2NSA3NCB8ICAgICAgICAgICAgIHwgdHlwZV9nZXQKICArMHgxNjFDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNjFEIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTYyMCB8IEJDIEUwIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMEJDICgtODAwNCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE2MjQgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MTYzOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE2MjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNjJDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE2MkMgfCAwNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNjMwIHwgNkUgNjEgNkIgNjUgNjQgICAgICAgICAgfCBjaGFyWzVdICAgICB8IG5ha2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE2MzUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE2MzYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE2MzggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNjNDIHwgNjMgNzAgNzAgNUYgNzAgNzQgNzIgNUYgfCBjaGFyWzEyXSAgICB8IGNwcF9wdHJfICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE2NDQgfCA3NCA3OSA3MCA2NSAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgdHlwZQogICsweDE2NDggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE2NDkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDE2NEMgfCBDOCBFQSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUFDOCAoLTU0MzIpIExvYzogKzB4MkI4NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNjUwIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTY1MiB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MTY1MyB8IDBBICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDE2NTQgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDE2NTggfCAxRiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxRiAoMzEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNjVDIHwgNzYgNjUgNjMgNzQgNkYgNzIgNUYgNkYgfCBjaGFyWzMxXSAgICB8IHZlY3Rvcl9vICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE2NjQgfCA2NiA1RiA2RSA2RiA2RSA1RiA2RiA3NyB8ICAgICAgICAgICAgIHwgZl9ub25fb3cKICArMHgxNjZDIHwgNkUgNjkgNkUgNjcgNUYgNzIgNjUgNjYgfCAgICAgICAgICAgICB8IG5pbmdfcmVmCiAgKzB4MTY3NCB8IDY1IDcyIDY1IDZFIDYzIDY1IDczICAgIHwgICAgICAgICAgICAgfCBlcmVuY2VzCiAgKzB4MTY3QiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgxNjdDIHwgNDIgRUMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVDNDIgKC01MDU0KSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTY4MCB8IDI5IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMjkgKDQxKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDE2ODIgfCA1NiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDU2ICg4NikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MTY4NCB8IDA0IDAxIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMTA0ICgyNjApIExvYzogKzB4MTc4OCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDE2ODggfCBGMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBGMCAoMjQwKSBMb2M6ICsweDE3NzggICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDE2OEMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MTY5OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgxNjkwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTY5NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MTY5NCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgxNjk4IHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDE2OUMgfCBCMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBCMCAoMTc2KSBMb2M6ICsweDE3NEMgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDE2QTAgfCA4MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA4MCAoMTI4KSBMb2M6ICsweDE3MjAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDE2QTQgfCA1MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1MCAoODApIExvYzogKzB4MTZGNCAgICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQogICsweDE2QTggfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MTZDQyAgICAgICB8IG9mZnNldCB0byB0YWJsZVszXQogICsweDE2QUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNkIwICAgICAgICB8IG9mZnNldCB0byB0YWJsZVs0XQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDE2QjAgfCA0QyBFMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTE0QyAoLTc4NjApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNkI0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDE2QzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxNkI4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTZCQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxNkJDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTZDMCB8IDM0IDMxICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCA0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNkMyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTZDNCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE2QzggfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTZDQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxNkNDIHwgNjggRTEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkUxNjggKC03ODMyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTZEMCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgxNkU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTZENCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE2RDggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTZEOCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE2REMgfCA2NiA2RSA3NiAzMSA2MSA1RiAzNiAzNCB8IGNoYXJbOF0gICAgIHwgZm52MWFfNjQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTZFNCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTZFNSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTZFOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE2RUMgfCA2OCA2MSA3MyA2OCAgICAgICAgICAgICB8IGNoYXJbNF0gICAgIHwgaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTZGMCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTZGMSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDE2RjQgfCA5MCBFMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTE5MCAoLTc3OTIpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNkY4IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDE3MTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxNkZDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTcwMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxNzAwIHwgMEIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEIgKDExKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTcwNCB8IDUyIDY1IDY2IDY1IDcyIDcyIDYxIDYyIHwgY2hhclsxMV0gICAgfCBSZWZlcnJhYiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNzBDIHwgNkMgNjUgNTQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGxlVAogICsweDE3MEYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNzEwIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTcxNCB8IDYzIDcwIDcwIDVGIDc0IDc5IDcwIDY1IHwgY2hhcls4XSAgICAgfCBjcHBfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNzFDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNzFEIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTcyMCB8IEJDIEUxIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMUJDICgtNzc0OCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE3MjQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTczNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE3MjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxNzJDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE3MkMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNzMwIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNzMxIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNzM0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTczOCB8IDYzIDcwIDcwIDVGIDcwIDc0IDcyIDVGIHwgY2hhclsxNl0gICAgfCBjcHBfcHRyXyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNzQwIHwgNzQgNzkgNzAgNjUgNUYgNjcgNjUgNzQgfCAgICAgICAgICAgICB8IHR5cGVfZ2V0CiAgKzB4MTc0OCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTc0OSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDE3NEMgfCBFOCBFMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTFFOCAoLTc3MDQpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxNzUwIHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDE3NjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxNzU0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTc1OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxNzU4IHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTc1QyB8IDZFIDYxIDZCIDY1IDY0ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBuYWtlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNzYxIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNzYyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxNzY0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTc2OCB8IDYzIDcwIDcwIDVGIDcwIDc0IDcyIDVGIHwgY2hhclsxMl0gICAgfCBjcHBfcHRyXyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxNzcwIHwgNzQgNzkgNzAgNjUgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHR5cGUKICArMHgxNzc0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxNzc1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxNzc4IHwgOTQgRTAgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkUwOTQgKC04MDQ0KSBMb2M6ICsweDM2RTQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTc3QyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDE3N0YgfCAwQSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDE3ODAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDE3ODQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDE3ODggfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNCAoMjApICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxNzhDIHwgNkUgNkYgNkUgNUYgNkYgNzcgNkUgNjkgfCBjaGFyWzIwXSAgICB8IG5vbl9vd25pICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE3OTQgfCA2RSA2NyA1RiA3MiA2NSA2NiA2NSA3MiB8ICAgICAgICAgICAgIHwgbmdfcmVmZXIKICArMHgxNzlDIHwgNjUgNkUgNjMgNjUgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGVuY2UKICArMHgxN0EwIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxN0ExIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MTdBNCB8IDgwIEVDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQzgwICgtNDk5MikgTG9jOiArMHgyQjI0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE3QTggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxN0FCIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDE3QUMgfCAyOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDI4ICg0MCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxN0FFIHwgNTQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA1NCAoODQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDE3QjAgfCAxMCAwMSAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDExMCAoMjcyKSBMb2M6ICsweDE4QzAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxN0I0IHwgMDAgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxMDAgKDI1NikgTG9jOiArMHgxOEI0ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxN0I4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDE3QzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MTdCQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE3QzAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDE3QzAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MTdDNCB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxN0M4IHwgQjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQjQgKDE4MCkgTG9jOiArMHgxODdDICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgxN0NDIHwgODAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODAgKDEyOCkgTG9jOiArMHgxODRDICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgxN0QwIHwgNTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTAgKDgwKSBMb2M6ICsweDE4MjAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KICArMHgxN0Q0IHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDE3RjggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbM10KICArMHgxN0Q4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTdEQyAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbNF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxN0RDIHwgNzggRTIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkUyNzggKC03NTYwKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTdFMCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxN0YwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTdFNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE3RTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTdFOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE3RUMgfCAzNCAzMCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgNDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTdFRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE3RjAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxN0Y0IHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE3RjYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTdGOCB8IDk0IEUyIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMjk0ICgtNzUzMikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE3RkMgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MTgxNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE4MDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxODA0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE4MDQgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxODA4IHwgNjYgNkUgNzYgMzEgNjEgNUYgMzYgMzQgfCBjaGFyWzhdICAgICB8IGZudjFhXzY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE4MTAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE4MTEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE4MTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxODE4IHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE4MUMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE4MUQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxODIwIHwgQkMgRTIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkUyQkMgKC03NDkyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTgyNCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgxODNDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTgyOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE4MkMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTgyQyB8IDBCIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBCICgxMSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE4MzAgfCA1MiA2NSA2NiA2NSA3MiA3MiA2MSA2MiB8IGNoYXJbMTFdICAgIHwgUmVmZXJyYWIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTgzOCB8IDZDIDY1IDU0ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBsZVQKICArMHgxODNCIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTgzQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE4NDAgfCA2MyA3MCA3MCA1RiA3NCA3OSA3MCA2NSB8IGNoYXJbOF0gICAgIHwgY3BwX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTg0OCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTg0OSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDE4NEMgfCBFOCBFMiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTJFOCAoLTc0NDgpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxODUwIHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDE4NjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxODU0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTg1OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxODU4IHwgMDYgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTg1QyB8IDJFIDY3IDY1IDc0IDI4IDI5ICAgICAgIHwgY2hhcls2XSAgICAgfCAuZ2V0KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxODYyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTg2NCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE4NjggfCA2MyA3MCA3MCA1RiA3MCA3NCA3MiA1RiB8IGNoYXJbMTZdICAgIHwgY3BwX3B0cl8gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTg3MCB8IDc0IDc5IDcwIDY1IDVGIDY3IDY1IDc0IHwgICAgICAgICAgICAgfCB0eXBlX2dldAogICsweDE4NzggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE4NzkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxODdDIHwgMTggRTMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkUzMTggKC03NDAwKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTg4MCB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgxOEEwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTg4NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE4ODggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTg4OCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE4OEMgfCA2NCA2NSA2NiA2MSA3NSA2QyA3NCA1RiB8IGNoYXJbMTZdICAgIHwgZGVmYXVsdF8gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTg5NCB8IDcwIDc0IDcyIDVGIDc0IDc5IDcwIDY1IHwgICAgICAgICAgICAgfCBwdHJfdHlwZQogICsweDE4OUMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE4OUQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE4QTAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxOEE0IHwgNjMgNzAgNzAgNUYgNzAgNzQgNzIgNUYgfCBjaGFyWzEyXSAgICB8IGNwcF9wdHJfICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE4QUMgfCA3NCA3OSA3MCA2NSAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgdHlwZQogICsweDE4QjAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE4QjEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDE4QjQgfCAzMCBFRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUQzMCAoLTQ4MTYpIExvYzogKzB4MkI4NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxOEI4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MThCQSB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MThCQiB8IDBBICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDE4QkMgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDE4QzAgfCAxRSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxRSAoMzApICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxOEM0IHwgNzYgNjUgNjMgNzQgNkYgNzIgNUYgNkYgfCBjaGFyWzMwXSAgICB8IHZlY3Rvcl9vICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE4Q0MgfCA2NiA1RiA2MyA2RiA1RiA2RiA3NyA2RSB8ICAgICAgICAgICAgIHwgZl9jb19vd24KICArMHgxOEQ0IHwgNjkgNkUgNjcgNUYgNzIgNjUgNjYgNjUgfCAgICAgICAgICAgICB8IGluZ19yZWZlCiAgKzB4MThEQyB8IDcyIDY1IDZFIDYzIDY1IDczICAgICAgIHwgICAgICAgICAgICAgfCByZW5jZXMKICArMHgxOEUyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDE4RTQgfCBBQSBFRSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUVBQSAoLTQ0MzgpIExvYzogKzB4MkEzQSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxOEU4IHwgMjcgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyNyAoMzkpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MThFQSB8IDUyIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNTIgKDgyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxOEVDIHwgRDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwRDQgKDIxMikgTG9jOiArMHgxOUMwICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MThGMCB8IEMwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEMwICgxOTIpIExvYzogKzB4MTlCMCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MThGNCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxOTAwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDE4RjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxOEZDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxOEZDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDE5MDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTkwNCB8IDgwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDgwICgxMjgpIExvYzogKzB4MTk4NCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MTkwOCB8IDUwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDUwICg4MCkgTG9jOiArMHgxOTU4ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCiAgKzB4MTkwQyB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgxOTMwICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzJdCiAgKzB4MTkxMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE5MTQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzNdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTkxNCB8IEIwIEUzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFM0IwICgtNzI0OCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE5MTggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MTkyOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE5MUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxOTIwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE5MjAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxOTI0IHwgMzMgMzkgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDM5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE5MjYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxOTI4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTkyQyB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxOTJFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDE5MzAgfCBDQyBFMyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTNDQyAoLTcyMjApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxOTM0IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDE5NEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxOTM4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MTkzQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxOTNDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTk0MCB8IDY2IDZFIDc2IDMxIDYxIDVGIDM2IDM0IHwgY2hhcls4XSAgICAgfCBmbnYxYV82NCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxOTQ4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxOTQ5IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxOTRDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTk1MCB8IDY4IDYxIDczIDY4ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxOTU0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxOTU1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MTk1OCB8IEY0IEUzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFM0Y0ICgtNzE4MCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE5NUMgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MTk3NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDE5NjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxOTY0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDE5NjQgfCAwQiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQiAoMTEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxOTY4IHwgNTIgNjUgNjYgNjUgNzIgNzIgNjEgNjIgfCBjaGFyWzExXSAgICB8IFJlZmVycmFiICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE5NzAgfCA2QyA2NSA1NCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgbGVUCiAgKzB4MTk3MyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDE5NzQgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxOTc4IHwgNjMgNzAgNzAgNUYgNzQgNzkgNzAgNjUgfCBjaGFyWzhdICAgICB8IGNwcF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDE5ODAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDE5ODEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxOTg0IHwgMjAgRTQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU0MjAgKC03MTM2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MTk4OCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgxOTlDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MTk4QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDE5OTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MTk5MCB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE5OTQgfCA2RSA2MSA2QiA2NSA2NCAgICAgICAgICB8IGNoYXJbNV0gICAgIHwgbmFrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTk5OSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTk5QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MTk5QyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBDICgxMikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDE5QTAgfCA2MyA3MCA3MCA1RiA3MCA3NCA3MiA1RiB8IGNoYXJbMTJdICAgIHwgY3BwX3B0cl8gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MTlBOCB8IDc0IDc5IDcwIDY1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB0eXBlCiAgKzB4MTlBQyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MTlBRCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MTlCMCB8IENDIEUyIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFMkNDICgtNzQ3NikgTG9jOiArMHgzNkU0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDE5QjQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxOUI3IHwgMEEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEEgKDEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxOUI4IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgxOUJDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxOUMwIHwgMTMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTMgKDE5KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MTlDNCB8IDYzIDZGIDVGIDZGIDc3IDZFIDY5IDZFIHwgY2hhclsxOV0gICAgfCBjb19vd25pbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxOUNDIHwgNjcgNUYgNzIgNjUgNjYgNjUgNzIgNjUgfCAgICAgICAgICAgICB8IGdfcmVmZXJlCiAgKzB4MTlENCB8IDZFIDYzIDY1ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBuY2UKICArMHgxOUQ3IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDE5RDggfCBCNCBFRSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUVCNCAoLTQ0MjgpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxOURDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MTlERiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxOUUwIHwgMjYgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyNiAoMzgpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MTlFMiB8IDUwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNTAgKDgwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxOUU0IHwgODQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODQgKDEzMikgTG9jOiArMHgxQTY4ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MTlFOCB8IDcwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDcwICgxMTIpIExvYzogKzB4MUE1OCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MTlFQyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxOUY4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDE5RjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxOUY0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxOUY0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDE5RjggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MTlGQyB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgxQTIwICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MUEwMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFBMDQgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUEwNCB8IEEwIEU0IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNEEwICgtNzAwOCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFBMDggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUExOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFBMEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQTEwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFBMTAgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQTE0IHwgMzMgMzggICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFBMTYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxQTE4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUExQyB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQTFFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDFBMjAgfCBCQyBFNCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTRCQyAoLTY5ODApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxQTI0IHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDFBNDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxQTI4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUEyQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxQTJDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUEzMCB8IDY0IDY1IDY2IDYxIDc1IDZDIDc0IDVGIHwgY2hhclsxNl0gICAgfCBkZWZhdWx0XyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQTM4IHwgNzAgNzQgNzIgNUYgNzQgNzkgNzAgNjUgfCAgICAgICAgICAgICB8IHB0cl90eXBlCiAgKzB4MUE0MCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUE0MSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MUE0NCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBDICgxMikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFBNDggfCA2MyA3MCA3MCA1RiA3MCA3NCA3MiA1RiB8IGNoYXJbMTJdICAgIHwgY3BwX3B0cl8gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUE1MCB8IDc0IDc5IDcwIDY1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB0eXBlCiAgKzB4MUE1NCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUE1NSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUE1OCB8IEE4IEYwIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMEE4ICgtMzkyOCkgTG9jOiArMHgyOUIwICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFBNUMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxQTVFIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxQTVGIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUE2MCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDFBNjQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDFBNjggfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQTZDIHwgNzYgNjUgNjMgNzQgNkYgNzIgNUYgNkYgfCBjaGFyWzI4XSAgICB8IHZlY3Rvcl9vICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFBNzQgfCA2NiA1RiA3MyA3NCA3MiA2RiA2RSA2NyB8ICAgICAgICAgICAgIHwgZl9zdHJvbmcKICArMHgxQTdDIHwgNUYgNzIgNjUgNjYgNjUgNzIgNzIgNjEgfCAgICAgICAgICAgICB8IF9yZWZlcnJhCiAgKzB4MUE4NCB8IDYyIDZDIDY1IDczICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBibGVzCiAgKzB4MUE4OCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUE4OSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFBOEMgfCA2OCBFRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUY2OCAoLTQyNDgpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxQTkwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MUE5MyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxQTk0IHwgMjUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyNSAoMzcpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUE5NiB8IDRFIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNEUgKDc4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxQTk4IHwgRDAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwRDAgKDIwOCkgTG9jOiArMHgxQjY4ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUE5QyB8IEMwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMEMwICgxOTIpIExvYzogKzB4MUI1QyAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUFBMCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxQUFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFBQTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQUE4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxQUE4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDFBQUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MUFCMCB8IDgwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDgwICgxMjgpIExvYzogKzB4MUIzMCAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MUFCNCB8IDUwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDUwICg4MCkgTG9jOiArMHgxQjA0ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCiAgKzB4MUFCOCB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgxQURDICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzJdCiAgKzB4MUFCQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFBQzAgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzNdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUFDMCB8IDVDIEU1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNTVDICgtNjgyMCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFBQzQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUFENCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFBQzggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQUNDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFBQ0MgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQUQwIHwgMzMgMzcgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDM3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFBRDIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxQUQ0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUFEOCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQURBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDFBREMgfCA3OCBFNSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTU3OCAoLTY3OTIpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxQUUwIHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDFBRjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxQUU0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUFFOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxQUU4IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUFFQyB8IDY2IDZFIDc2IDMxIDYxIDVGIDM2IDM0IHwgY2hhcls4XSAgICAgfCBmbnYxYV82NCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQUY0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxQUY1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxQUY4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUFGQyB8IDY4IDYxIDczIDY4ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQjAwIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxQjAxIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUIwNCB8IEEwIEU1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNUEwICgtNjc1MikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFCMDggfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MUIyMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFCMEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQjEwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFCMTAgfCAwQiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQiAoMTEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQjE0IHwgNTIgNjUgNjYgNjUgNzIgNzIgNjEgNjIgfCBjaGFyWzExXSAgICB8IFJlZmVycmFiICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFCMUMgfCA2QyA2NSA1NCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgbGVUCiAgKzB4MUIxRiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDFCMjAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQjI0IHwgNjMgNzAgNzAgNUYgNzQgNzkgNzAgNjUgfCBjaGFyWzhdICAgICB8IGNwcF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFCMkMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDFCMkQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxQjMwIHwgQ0MgRTUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU1Q0MgKC02NzA4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUIzNCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgxQjQ4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MUIzOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFCM0MgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MUIzQyB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFCNDAgfCA2RSA2MSA2QiA2NSA2NCAgICAgICAgICB8IGNoYXJbNV0gICAgIHwgbmFrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUI0NSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUI0NiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MUI0OCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBDICgxMikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFCNEMgfCA2MyA3MCA3MCA1RiA3MCA3NCA3MiA1RiB8IGNoYXJbMTJdICAgIHwgY3BwX3B0cl8gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUI1NCB8IDc0IDc5IDcwIDY1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB0eXBlCiAgKzB4MUI1OCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUI1OSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUI1QyB8IEQ4IEVGIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFRkQ4ICgtNDEzNikgTG9jOiArMHgyQjg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFCNjAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxQjYyIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxQjYzIHwgMEEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEEgKDEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUI2NCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MUI2OCB8IDE5IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE5ICgyNSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFCNkMgfCA3NiA2NSA2MyA3NCA2RiA3MiA1RiA2RiB8IGNoYXJbMjVdICAgIHwgdmVjdG9yX28gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUI3NCB8IDY2IDVGIDc3IDY1IDYxIDZCIDVGIDcyIHwgICAgICAgICAgICAgfCBmX3dlYWtfcgogICsweDFCN0MgfCA2NSA2NiA2NSA3MiA2NSA2RSA2MyA2NSB8ICAgICAgICAgICAgIHwgZWZlcmVuY2UKICArMHgxQjg0IHwgNzMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHMKICArMHgxQjg1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxQjg2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MUI4OCB8IDRFIEYxIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMTRFICgtMzc2MikgTG9jOiArMHgyQTNBICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFCOEMgfCAyNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDI0ICgzNikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxQjhFIHwgNEMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA0QyAoNzYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDFCOTAgfCBENCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBENCAoMjEyKSBMb2M6ICsweDFDNjQgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxQjk0IHwgQzAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQzAgKDE5MikgTG9jOiArMHgxQzU0ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxQjk4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDFCQTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MUI5QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFCQTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDFCQTAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MUJBNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxQkE4IHwgODAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODAgKDEyOCkgTG9jOiArMHgxQzI4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgxQkFDIHwgNTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTAgKDgwKSBMb2M6ICsweDFCRkMgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgxQkIwIHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDFCRDQgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KICArMHgxQkI0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUJCOCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbM10KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxQkI4IHwgNTQgRTYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU2NTQgKC02NTcyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUJCQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxQkNDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MUJDMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFCQzQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MUJDNCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFCQzggfCAzMyAzNiAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUJDQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDFCQ0MgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQkQwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFCRDIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUJENCB8IDcwIEU2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNjcwICgtNjU0NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFCRDggfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MUJGMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFCREMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQkUwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFCRTAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQkU0IHwgNjYgNkUgNzYgMzEgNjEgNUYgMzYgMzQgfCBjaGFyWzhdICAgICB8IGZudjFhXzY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFCRUMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDFCRUQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDFCRjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQkY0IHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFCRjggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDFCRjkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxQkZDIHwgOTggRTYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU2OTggKC02NTA0KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUMwMCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgxQzE4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MUMwNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFDMDggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MUMwOCB8IDBCIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBCICgxMSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFDMEMgfCA1MiA2NSA2NiA2NSA3MiA3MiA2MSA2MiB8IGNoYXJbMTFdICAgIHwgUmVmZXJyYWIgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUMxNCB8IDZDIDY1IDU0ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBsZVQKICArMHgxQzE3IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MUMxOCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFDMUMgfCA2MyA3MCA3MCA1RiA3NCA3OSA3MCA2NSB8IGNoYXJbOF0gICAgIHwgY3BwX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUMyNCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUMyNSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDFDMjggfCBDNCBFNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTZDNCAoLTY0NjApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxQzJDIHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDFDNDAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxQzMwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUMzNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxQzM0IHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUMzOCB8IDZFIDYxIDZCIDY1IDY0ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBuYWtlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQzNEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxQzNFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxQzQwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUM0NCB8IDYzIDcwIDcwIDVGIDcwIDc0IDcyIDVGIHwgY2hhclsxMl0gICAgfCBjcHBfcHRyXyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQzRDIHwgNzQgNzkgNzAgNjUgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHR5cGUKICArMHgxQzUwIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxQzUxIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxQzU0IHwgNzAgRTUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU1NzAgKC02ODAwKSBMb2M6ICsweDM2RTQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUM1OCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDFDNUIgfCAwQSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDFDNUMgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDFDNjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDFDNjQgfCAxNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNSAoMjEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQzY4IHwgNzMgNjkgNkUgNjcgNkMgNjUgNUYgNzcgfCBjaGFyWzIxXSAgICB8IHNpbmdsZV93ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFDNzAgfCA2NSA2MSA2QiA1RiA3MiA2NSA2NiA2NSB8ICAgICAgICAgICAgIHwgZWFrX3JlZmUKICArMHgxQzc4IHwgNzIgNjUgNkUgNjMgNjUgICAgICAgICAgfCAgICAgICAgICAgICB8IHJlbmNlCiAgKzB4MUM3RCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUM3RSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFDODAgfCA1QyBGMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjE1QyAoLTM3NDgpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxQzg0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MUM4NyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxQzg4IHwgMjMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyMyAoMzUpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUM4QSB8IDRBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNEEgKDc0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxQzhDIHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDFDRDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUM5MCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxQ0M0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUM5NCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxQ0EwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFDOTggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQzlDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxQzlDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDFDQTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MUNBNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFDQTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUNBOCB8IDQ0IEU3IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNzQ0ICgtNjMzMikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFDQUMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUNCQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFDQjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxQ0I0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFDQjQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQ0I4IHwgMzMgMzUgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFDQkEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxQ0JDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUNDMCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxQ0MyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUNDNCB8IDE0IEYzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMzE0ICgtMzMwOCkgTG9jOiArMHgyOUIwICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFDQzggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxQ0NBIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxQ0NCIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUNDQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDFDRDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDFDRDQgfCAxNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNSAoMjEpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxQ0Q4IHwgNzYgNjUgNjMgNzQgNkYgNzIgNUYgNkYgfCBjaGFyWzIxXSAgICB8IHZlY3Rvcl9vICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFDRTAgfCA2NiA1RiA3MiA2NSA2NiA2NSA3MiA3MiB8ICAgICAgICAgICAgIHwgZl9yZWZlcnIKICArMHgxQ0U4IHwgNjEgNjIgNkMgNjUgNzMgICAgICAgICAgfCAgICAgICAgICAgICB8IGFibGVzCiAgKzB4MUNFRCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUNFRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFDRjAgfCBDQyBGMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjFDQyAoLTM2MzYpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxQ0Y0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MUNGNyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxQ0Y4IHwgMjIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyMiAoMzQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUNGQSB8IDQ4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNDggKDcyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxQ0ZDIHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDFENDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUQwMCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxRDM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUQwNCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxRDEwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFEMDggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRDBDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxRDBDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDFEMTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MUQxNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFEMTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUQxOCB8IEI0IEU3IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFN0I0ICgtNjIyMCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFEMUMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUQyQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFEMjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRDI0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFEMjQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRDI4IHwgMzMgMzQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDM0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFEMkEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxRDJDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUQzMCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxRDMyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUQzNCB8IDdDIEU0IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNDdDICgtNzA0NCkgTG9jOiArMHgzOEI4ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFEMzggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRDNCIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxRDNDIHwgMEIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEIgKDExKSAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MUQ0MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MUQ0NCB8IDE1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE1ICgyMSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFENDggfCA3MCA2MSA3MiA2NSA2RSA3NCA1RiA2RSB8IGNoYXJbMjFdICAgIHwgcGFyZW50X24gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUQ1MCB8IDYxIDZEIDY1IDczIDcwIDYxIDYzIDY1IHwgICAgICAgICAgICAgfCBhbWVzcGFjZQogICsweDFENTggfCA1RiA3NCA2NSA3MyA3NCAgICAgICAgICB8ICAgICAgICAgICAgIHwgX3Rlc3QKICArMHgxRDVEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxRDVFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MUQ2MCB8IDNDIEYyIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMjNDICgtMzUyNCkgTG9jOiArMHgyQjI0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFENjQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRDY3IHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDFENjggfCAyMSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDIxICgzMykgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxRDZBIHwgNDYgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA0NiAoNzApICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDFENkMgfCA0NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0NCAoNjgpIExvYzogKzB4MURCMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxRDcwIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDFEQTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxRDc0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDFEODAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MUQ3OCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFEN0MgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDFEN0MgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MUQ4MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxRDg0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUQ4OCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxRDg4IHwgMjQgRTggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU4MjQgKC02MTA4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUQ4QyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxRDlDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MUQ5MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFEOTQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MUQ5NCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFEOTggfCAzMyAzMyAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUQ5QSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDFEOUMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxREEwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFEQTIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgxREE0IHwgMjAgRjIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkYyMjAgKC0zNTUyKSBMb2M6ICsweDJCODQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MURBOCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDFEQUEgfCAwRSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDFEQUIgfCAwQyAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50YCAoQnl0ZSkKICArMHgxREFDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxREIwIHwgMTEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTEgKDE3KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MURCNCB8IDc2IDY1IDYzIDc0IDZGIDcyIDVGIDZGIHwgY2hhclsxN10gICAgfCB2ZWN0b3JfbyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxREJDIHwgNjYgNUYgNjQgNkYgNzUgNjIgNkMgNjUgfCAgICAgICAgICAgICB8IGZfZG91YmxlCiAgKzB4MURDNCB8IDczICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBzCiAgKzB4MURDNSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MURDNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFEQzggfCBBNCBGMiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjJBNCAoLTM0MjApIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxRENDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MURDRiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxREQwIHwgMjAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyMCAoMzIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUREMiB8IDQ0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwNDQgKDY4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxREQ0IHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDFFMTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUREOCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxRTBDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUREQyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxREU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFERTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxREU0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxREU0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDFERTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MURFQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFERjAgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MURGMCB8IDhDIEU4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFODhDICgtNjAwNCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFERjQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUUwNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFERjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxREZDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFERkMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRTAwIHwgMzMgMzIgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFFMDIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxRTA0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUUwOCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxRTBBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUUwQyB8IDg4IEYyIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMjg4ICgtMzQ0OCkgTG9jOiArMHgyQjg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFFMTAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRTEyIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxRTEzIHwgMDkgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDkgKDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUUxNCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MUUxOCB8IDBGIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBGICgxNSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFFMUMgfCA3NiA2NSA2MyA3NCA2RiA3MiA1RiA2RiB8IGNoYXJbMTVdICAgIHwgdmVjdG9yX28gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUUyNCB8IDY2IDVGIDZDIDZGIDZFIDY3IDczICAgIHwgICAgICAgICAgICAgfCBmX2xvbmdzCiAgKzB4MUUyQiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgxRTJDIHwgMDggRjMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkYzMDggKC0zMzIwKSBMb2M6ICsweDJCMjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUUzMCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDFFMzMgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvcHRpb25hbGAgKEJvb2wpCiAgKzB4MUUzNCB8IDFGIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUYgKDMxKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDFFMzYgfCA0MiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDQyICg2NikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MUUzOCB8IDQ4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQ4ICg3MikgTG9jOiArMHgxRTgwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDFFM0MgfCAzNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzNCAoNTIpIExvYzogKzB4MUU3MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDFFNDAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MUU0QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgxRTQ0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUU0OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MUU0OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgxRTRDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDFFNTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRTU0ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDFFNTQgfCBGMCBFOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRThGMCAoLTU5MDQpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxRTU4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDFFNjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgxRTVDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUU2MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgxRTYwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUU2NCB8IDMzIDMxICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxRTY2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MUU2OCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFFNkMgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUU2RSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDFFNzAgfCBDMCBGNCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjRDMCAoLTI4ODApIExvYzogKzB4MjlCMCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxRTc0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MUU3NiB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MUU3NyB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDFFNzggfCAwNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNiAoNikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgxRTdDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgxRTgwIHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUU4NCB8IDc0IDY1IDczIDc0IDM1ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCB0ZXN0NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxRTg5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgxRThBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MUU4QyB8IDY4IEYzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMzY4ICgtMzIyNCkgTG9jOiArMHgyQjI0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFFOTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRTkzIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDFFOTQgfCAxRSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFFICgzMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgxRTk2IHwgNDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDA0MCAoNjQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDFFOTggfCA2QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA2QyAoMTA4KSBMb2M6ICsweDFGMDQgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgxRTlDIHwgNUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNUMgKDkyKSBMb2M6ICsweDFFRjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgxRUEwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDFFQUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MUVBNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFFQTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDFFQTggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MUVBQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgxRUIwIHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDFFRDQgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgxRUI0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MUVCOCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgxRUI4IHwgNTQgRTkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU5NTQgKC01ODA0KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MUVCQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgxRUNDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MUVDMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFFQzQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MUVDNCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFFQzggfCAzMyAzMCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUVDQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDFFQ0MgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRUQwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFFRDIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUVENCB8IDcwIEU5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFOTcwICgtNTc3NikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFFRDggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUVFOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFFREMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRUUwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFFRTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRUU0IHwgMzAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFFRTUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDFFRTYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDFFRTggfCAwQSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwQSAoMTApICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRUVDIHwgNjYgNkMgNjUgNzggNjIgNzUgNjYgNjYgfCBjaGFyWzEwXSAgICB8IGZsZXhidWZmICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFFRjQgfCA2NSA3MiAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgZXIKICArMHgxRUY2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUVGOCB8IDc0IEYzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMzc0ICgtMzIxMikgTG9jOiArMHgyQjg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFFRkMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRUZFIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxRUZGIHwgMDQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUYwMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MUYwNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFGMDggfCA2NiA2QyA2NSA3OCAgICAgICAgICAgICB8IGNoYXJbNF0gICAgIHwgZmxleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUYwQyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MUYwRCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFGMTAgfCBFQyBGMyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjNFQyAoLTMwOTIpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxRjE0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MUYxNyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxRjE4IHwgMUQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxRCAoMjkpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUYxQSB8IDNFIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwM0UgKDYyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxRjFDIHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDFGNjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUYyMCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxRjU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUYyNCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxRjMwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFGMjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRjJDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxRjJDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDFGMzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MUYzNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFGMzggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUYzOCB8IEQ0IEU5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFOUQ0ICgtNTY3NikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFGM0MgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUY0QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFGNDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRjQ0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFGNDQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRjQ4IHwgMzIgMzkgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDI5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFGNEEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxRjRDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUY1MCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxRjUyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUY1NCB8IEE0IEY1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNUE0ICgtMjY1MikgTG9jOiArMHgyOUIwICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFGNTggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRjVBIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxRjVCIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUY1QyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDFGNjAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDFGNjQgfCAxNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNyAoMjMpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRjY4IHwgNzQgNjUgNzMgNzQgNjEgNzIgNzIgNjEgfCBjaGFyWzIzXSAgICB8IHRlc3RhcnJhICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFGNzAgfCA3OSA2RiA2NiA3MyA2RiA3MiA3NCA2NSB8ICAgICAgICAgICAgIHwgeW9mc29ydGUKICArMHgxRjc4IHwgNjQgNzMgNzQgNzIgNzUgNjMgNzQgICAgfCAgICAgICAgICAgICB8IGRzdHJ1Y3QKICArMHgxRjdGIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFGODAgfCA1QyBGNCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjQ1QyAoLTI5ODApIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxRjg0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MUY4NyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgxRjg4IHwgMUMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUY4QSB8IDNDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwM0MgKDYwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxRjhDIHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDFGRDAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUY5MCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgxRkM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUY5NCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgxRkEwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFGOTggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRjlDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgxRjlDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDFGQTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MUZBNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDFGQTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MUZBOCB8IDQ0IEVBIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQTQ0ICgtNTU2NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFGQUMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MUZCQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDFGQjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgxRkI0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDFGQjQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgxRkI4IHwgMzIgMzggICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDFGQkEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgxRkJDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MUZDMCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgxRkMyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MUZDNCB8IDQwIEY0IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNDQwICgtMzAwOCkgTG9jOiArMHgyQjg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDFGQzggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgxRkNBIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgxRkNCIHwgMEQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEQgKDEzKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MUZDQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MUZEMCB8IDEyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEyICgxOCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDFGRDQgfCA3NCA2NSA3MyA3NCA2MSA3MiA3MiA2MSB8IGNoYXJbMThdICAgIHwgdGVzdGFycmEgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MUZEQyB8IDc5IDZGIDY2IDczIDc0IDcyIDY5IDZFIHwgICAgICAgICAgICAgfCB5b2ZzdHJpbgogICsweDFGRTQgfCA2NyAzMiAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgZzIKICArMHgxRkU2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDFGRTggfCBBRSBGNSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjVBRSAoLTI2NDIpIExvYzogKzB4MkEzQSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgxRkVDIHwgMUIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQiAoMjcpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MUZFRSB8IDNBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwM0EgKDU4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgxRkYwIHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDIwMzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MUZGNCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgyMDI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MUZGOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyMDA0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDFGRkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMDAwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyMDAwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDIwMDQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MjAwOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIwMEMgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjAwQyB8IEE4IEVBIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQUE4ICgtNTQ2NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIwMTAgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjAyMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDIwMTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMDE4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDIwMTggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMDFDIHwgMzIgMzcgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDI3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIwMUUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyMDIwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjAyNCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMDI2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MjAyOCB8IDhDIEU2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNjhDICgtNjUxNikgTG9jOiArMHgzOTlDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIwMkMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyMDJGIHwgMEIgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEIgKDExKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyMDMwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyMDM0IHwgMDYgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjAzOCB8IDc0IDY1IDczIDc0IDY2IDMzICAgICAgIHwgY2hhcls2XSAgICAgfCB0ZXN0ZjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMDNFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDIwNDAgfCA5QSBGRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkY5QSAoLTEwMikgTG9jOiArMHgyMEE2ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMDQ0IHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MjA0NiB8IDM4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMzggKDU2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyMDQ4IHwgNTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTAgKDgwKSBMb2M6ICsweDIwOTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MjA0QyB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgyMDhDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MjA1MCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgyMDY4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDIwNTQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjA2NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgyMDU4IHwgMDAgMDAgMDAgMDAgMDAgMDAgMDggNDAgfCBkb3VibGUgICAgICB8IDB4NDAwODAwMDAwMDAwMDAwMCAoMykgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoRG91YmxlKQogICsweDIwNjAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyMDY0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDIwNjggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MjA2QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIwNzAgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjA3MCB8IDBDIEVCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQjBDICgtNTM2NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIwNzQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjA4NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDIwNzggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMDdDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDIwN0MgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMDgwIHwgMzIgMzYgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIwODIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyMDg0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjA4OCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMDhBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MjA4QyB8IEYwIEU2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFNkYwICgtNjQxNikgTG9jOiArMHgzOTlDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIwOTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyMDkzIHwgMEIgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEIgKDExKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyMDk0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyMDk4IHwgMDYgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjA5QyB8IDc0IDY1IDczIDc0IDY2IDMyICAgICAgIHwgY2hhcls2XSAgICAgfCB0ZXN0ZjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMEEyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMEEzIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDIwQTYgfCAxQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFBICgyNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgyMEE4IHwgMjQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyNCAoMzYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDIwQUEgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDIwQUMgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDIwQUUgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikKICArMHgyMEIwIHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKQogICsweDIwQjIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgyMEI0IHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KQogICsweDIwQjYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVwcmVjYXRlZGAgKGlkOiA2KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MjBCOCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGByZXF1aXJlZGAgKGlkOiA3KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MjBCQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChpZDogOCkgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDIwQkMgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KQogICsweDIwQkUgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyMEMwIHwgMUEgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUEgKDI2KSBMb2M6ICsweDIwQTYgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjBDNCB8IDE5IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTkgKDI1KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDIwQzYgfCAzNiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDM2ICg1NCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjBDOCB8IDUwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDUwICg4MCkgTG9jOiArMHgyMTE4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDIwQ0MgfCA0MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0MCAoNjQpIExvYzogKzB4MjEwQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDIwRDAgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MjBFOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyMEQ0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDIwRTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MjBEOCB8IDZFIDg2IDFCIEYwIEY5IDIxIDA5IDQwIHwgZG91YmxlICAgICAgfCAweDQwMDkyMUY5RjAxQjg2NkUgKDMuMTQxNTkpICAgICAgIHwgdGFibGUgZmllbGQgYGRlZmF1bHRfcmVhbGAgKERvdWJsZSkKICArMHgyMEUwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50OF90WzRdICB8IC4uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjBFNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyMEU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDIwRUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMEYwICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDIwRjAgfCA4QyBFQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUI4QyAoLTUyMzYpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMEY0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDIxMDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyMEY4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjBGQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyMEZDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjEwMCB8IDMyIDM1ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMTAyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjEwNCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIxMDggfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjEwQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDIxMEMgfCA3MCBFNyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRTc3MCAoLTYyODgpIExvYzogKzB4Mzk5QyAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMTEwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjExMyB8IDBCICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBCICgxMSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjExNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjExOCB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIxMUMgfCA3NCA2NSA3MyA3NCA2NiAgICAgICAgICB8IGNoYXJbNV0gICAgIHwgdGVzdGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjEyMSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjEyMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDIxMjQgfCAwMCBGNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjYwMCAoLTI1NjApIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMTI4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjEyQiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgyMTJDIHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MjEyRSB8IDM0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMzQgKDUyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyMTMwIHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDIxNzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MjEzNCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgyMTY4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MjEzOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyMTQ0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDIxM0MgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMTQwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyMTQwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDIxNDQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MjE0OCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIxNEMgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjE0QyB8IEU4IEVCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQkU4ICgtNTE0NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIxNTAgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjE2MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDIxNTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMTU4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDIxNTggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMTVDIHwgMzIgMzQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIxNUUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyMTYwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjE2NCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMTY2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MjE2OCB8IEU0IEY1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNUU0ICgtMjU4OCkgTG9jOiArMHgyQjg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIxNkMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyMTZFIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyMTZGIHwgMDIgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDIgKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MjE3MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjE3NCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIxNzggfCA3NCA2NSA3MyA3NCA2MSA3MiA3MiA2MSB8IGNoYXJbMTZdICAgIHwgdGVzdGFycmEgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjE4MCB8IDc5IDZGIDY2IDYyIDZGIDZGIDZDIDczIHwgICAgICAgICAgICAgfCB5b2Zib29scwogICsweDIxODggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDIxODkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyMThDIHwgNTIgRjcgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY3NTIgKC0yMjIyKSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjE5MCB8IDE3IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTcgKDIzKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDIxOTIgfCAzMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDMyICg1MCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjE5NCB8IDc0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDc0ICgxMTYpIExvYzogKzB4MjIwOCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDIxOTggfCA2MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA2MCAoOTYpIExvYzogKzB4MjFGOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDIxOUMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjFBOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyMUEwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjFBNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjFBNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyMUE4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDIxQUMgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MjFEMCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDIxQjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMUI0ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDIxQjQgfCA1MCBFQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUM1MCAoLTUwNDApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMUI4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDIxQzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyMUJDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjFDMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyMUMwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjFDNCB8IDMyIDMzICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAyMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMUM2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjFDOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIxQ0MgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjFDRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyMUQwIHwgNkMgRUMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVDNkMgKC01MDEyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjFENCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgyMUVDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjFEOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIxREMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjFEQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIxRTAgfCA2NiA2RSA3NiAzMSA2MSA1RiAzNiAzNCB8IGNoYXJbOF0gICAgIHwgZm52MWFfNjQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjFFOCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjFFOSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjFFQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIxRjAgfCA2OCA2MSA3MyA2OCAgICAgICAgICAgICB8IGNoYXJbNF0gICAgIHwgaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjFGNCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjFGNSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MjFGOCB8IDE0IEVCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQjE0ICgtNTM1NikgTG9jOiArMHgzNkU0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIxRkMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyMUZGIHwgMEEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEEgKDEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyMjAwIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgyMjA0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyMjA4IHwgMTEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTEgKDE3KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjIwQyB8IDc0IDY1IDczIDc0IDY4IDYxIDczIDY4IHwgY2hhclsxN10gICAgfCB0ZXN0aGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMjE0IHwgNzUgMzYgMzQgNUYgNjYgNkUgNzYgMzEgfCAgICAgICAgICAgICB8IHU2NF9mbnYxCiAgKzB4MjIxQyB8IDYxICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBhCiAgKzB4MjIxRCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjIxRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDIyMjAgfCBFNiBGNyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjdFNiAoLTIwNzQpIExvYzogKzB4MkEzQSAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMjI0IHwgMTYgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxNiAoMjIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MjIyNiB8IDMwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMzAgKDQ4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyMjI4IHwgNzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNzQgKDExNikgTG9jOiArMHgyMjlDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MjIyQyB8IDYwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDYwICg5NikgTG9jOiArMHgyMjhDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MjIzMCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyMjNDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDIyMzQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMjM4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyMjM4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDIyM0MgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MjI0MCB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgyMjY0ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MjI0NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIyNDggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjI0OCB8IEU0IEVDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFQ0U0ICgtNDg5MikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIyNEMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjI1QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDIyNTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMjU0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDIyNTQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMjU4IHwgMzIgMzIgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIyNUEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyMjVDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjI2MCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMjYyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDIyNjQgfCAwMCBFRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUQwMCAoLTQ4NjQpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMjY4IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDIyODAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyMjZDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjI3MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyMjcwIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjI3NCB8IDY2IDZFIDc2IDMxIDYxIDVGIDM2IDM0IHwgY2hhcls4XSAgICAgfCBmbnYxYV82NCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMjdDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMjdEIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyMjgwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjI4NCB8IDY4IDYxIDczIDY4ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMjg4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMjg5IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyMjhDIHwgQTggRUIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVCQTggKC01MjA4KSBMb2M6ICsweDM2RTQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjI5MCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDIyOTMgfCAwOSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwOSAoOSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDIyOTQgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDIyOTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDIyOUMgfCAxMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxMSAoMTcpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMkEwIHwgNzQgNjUgNzMgNzQgNjggNjEgNzMgNjggfCBjaGFyWzE3XSAgICB8IHRlc3RoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIyQTggfCA3MyAzNiAzNCA1RiA2NiA2RSA3NiAzMSB8ICAgICAgICAgICAgIHwgczY0X2ZudjEKICArMHgyMkIwIHwgNjEgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGEKICArMHgyMkIxIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMkIyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MjJCNCB8IDdBIEY4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGODdBICgtMTkyNikgTG9jOiArMHgyQTNBICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIyQjggfCAxNSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE1ICgyMSkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyMkJBIHwgMkUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyRSAoNDYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDIyQkMgfCBDQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBDQyAoMjA0KSBMb2M6ICsweDIzODggICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyMkMwIHwgQkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQkMgKDE4OCkgTG9jOiArMHgyMzdDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyMkM0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDIyRDAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MjJDOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIyQ0MgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDIyQ0MgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MjJEMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyMkQ0IHwgN0MgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwN0MgKDEyNCkgTG9jOiArMHgyMzUwICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgyMkQ4IHwgNTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTAgKDgwKSBMb2M6ICsweDIzMjggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgyMkRDIHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDIzMDAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KICArMHgyMkUwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjJFNCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbM10KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyMkU0IHwgODAgRUQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVEODAgKC00NzM2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjJFOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyMkY4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjJFQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIyRjAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjJGMCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIyRjQgfCAzMiAzMSAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjJGNiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDIyRjggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMkZDIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIyRkUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjMwMCB8IDlDIEVEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFRDlDICgtNDcwOCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIzMDQgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MjMxQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDIzMDggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyMzBDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDIzMEMgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMzEwIHwgNjYgNkUgNzYgMzEgNjEgNUYgMzMgMzIgfCBjaGFyWzhdICAgICB8IGZudjFhXzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIzMTggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDIzMTkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDIzMUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMzIwIHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIzMjQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDIzMjUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyMzI4IHwgQzQgRUQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVEQzQgKC00NjY4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjMyQyB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgyMzQwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjMzMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIzMzQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjMzNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIzMzggfCA1MyA3NCA2MSA3NCAgICAgICAgICAgICB8IGNoYXJbNF0gICAgIHwgU3RhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjMzQyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjMzRCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjM0MCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIzNDQgfCA2MyA3MCA3MCA1RiA3NCA3OSA3MCA2NSB8IGNoYXJbOF0gICAgIHwgY3BwX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjM0QyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjM0RCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDIzNTAgfCBFQyBFRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRURFQyAoLTQ2MjgpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyMzU0IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDIzNjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyMzU4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjM1QyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyMzVDIHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjM2MCB8IDZFIDYxIDZCIDY1IDY0ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBuYWtlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMzY1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMzY2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyMzY4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjM2QyB8IDYzIDcwIDcwIDVGIDcwIDc0IDcyIDVGIHwgY2hhclsxMl0gICAgfCBjcHBfcHRyXyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyMzc0IHwgNzQgNzkgNzAgNjUgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHR5cGUKICArMHgyMzc4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMzc5IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyMzdDIHwgRTAgRTkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkU5RTAgKC01NjY0KSBMb2M6ICsweDM5OUMgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjM4MCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDIzODMgfCAwOCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDIzODQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDIzODggfCAxMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxMSAoMTcpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyMzhDIHwgNzQgNjUgNzMgNzQgNjggNjEgNzMgNjggfCBjaGFyWzE3XSAgICB8IHRlc3RoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIzOTQgfCA3NSAzMyAzMiA1RiA2NiA2RSA3NiAzMSB8ICAgICAgICAgICAgIHwgdTMyX2ZudjEKICArMHgyMzlDIHwgNjEgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGEKICArMHgyMzlEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyMzlFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MjNBMCB8IDY2IEY5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGOTY2ICgtMTY5MCkgTG9jOiArMHgyQTNBICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIzQTQgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyM0E2IHwgMkMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyQyAoNDQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDIzQTggfCA3MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA3MCAoMTEyKSBMb2M6ICsweDI0MTggICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyM0FDIHwgNjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNjAgKDk2KSBMb2M6ICsweDI0MEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyM0IwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDIzQkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MjNCNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIzQjggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDIzQjggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MjNCQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyM0MwIHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDIzRTQgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgyM0M0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjNDOCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyM0M4IHwgNjQgRUUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVFNjQgKC00NTA4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjNDQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyM0RDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjNEMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDIzRDQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjNENCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDIzRDggfCAzMiAzMCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjNEQSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDIzREMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyM0UwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIzRTIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjNFNCB8IDgwIEVFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFRTgwICgtNDQ4MCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDIzRTggfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MjQwMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDIzRUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyM0YwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDIzRjAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyM0Y0IHwgNjYgNkUgNzYgMzEgNjEgNUYgMzMgMzIgfCBjaGFyWzhdICAgICB8IGZudjFhXzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDIzRkMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDIzRkQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI0MDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNDA0IHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI0MDggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI0MDkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI0MEMgfCA3MCBFQSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUE3MCAoLTU1MjApIExvYzogKzB4Mzk5QyAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNDEwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjQxMyB8IDA3ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjQxNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjQxOCB8IDExIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDExICgxNykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI0MUMgfCA3NCA2NSA3MyA3NCA2OCA2MSA3MyA2OCB8IGNoYXJbMTddICAgIHwgdGVzdGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjQyNCB8IDczIDMzIDMyIDVGIDY2IDZFIDc2IDMxIHwgICAgICAgICAgICAgfCBzMzJfZm52MQogICsweDI0MkMgfCA2MSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgYQogICsweDI0MkQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI0MkUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyNDMwIHwgRjYgRjkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY5RjYgKC0xNTQ2KSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjQzNCB8IDEzIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTMgKDE5KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDI0MzYgfCAyQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDJBICg0MikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjQzOCB8IDcwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDcwICgxMTIpIExvYzogKzB4MjRBOCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDI0M0MgfCA1QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1QyAoOTIpIExvYzogKzB4MjQ5OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDI0NDAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjQ0QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyNDQ0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjQ0OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjQ0OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyNDRDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDI0NTAgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MjQ3NCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDI0NTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNDU4ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI0NTggfCBGNCBFRSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUVGNCAoLTQzNjQpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNDVDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI0NkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyNDYwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjQ2NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyNDY0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjQ2OCB8IDMxIDM5ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNDZBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjQ2QyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI0NzAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjQ3MiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyNDc0IHwgMTAgRUYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVGMTAgKC00MzM2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjQ3OCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgyNDhDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjQ3QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI0ODAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjQ4MCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI0ODQgfCA2NiA2RSA3NiAzMSA1RiAzNiAzNCAgICB8IGNoYXJbN10gICAgIHwgZm52MV82NCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjQ4QiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI0OEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNDkwIHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI0OTQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI0OTUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI0OTggfCBCNCBFRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRURCNCAoLTQ2ODQpIExvYzogKzB4MzZFNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNDlDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjQ5RiB8IDBBICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjRBMCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MjRBNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjRBOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI0QUMgfCA3NCA2NSA3MyA3NCA2OCA2MSA3MyA2OCB8IGNoYXJbMTZdICAgIHwgdGVzdGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjRCNCB8IDc1IDM2IDM0IDVGIDY2IDZFIDc2IDMxIHwgICAgICAgICAgICAgfCB1NjRfZm52MQogICsweDI0QkMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI0QkQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyNEMwIHwgODYgRkEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZBODYgKC0xNDAyKSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjRDNCB8IDEyIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTIgKDE4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDI0QzYgfCAyOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDI4ICg0MCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjRDOCB8IDcwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDcwICgxMTIpIExvYzogKzB4MjUzOCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDI0Q0MgfCA1QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1QyAoOTIpIExvYzogKzB4MjUyOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDI0RDAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjREQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyNEQ0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjREOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjREOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyNERDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDI0RTAgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MjUwNCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDI0RTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNEU4ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI0RTggfCA4NCBFRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUY4NCAoLTQyMjApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNEVDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI0RkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyNEYwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjRGNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyNEY0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjRGOCB8IDMxIDM4ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNEZBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjRGQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI1MDAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjUwMiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyNTA0IHwgQTAgRUYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVGQTAgKC00MTkyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjUwOCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgyNTFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjUwQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI1MTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjUxMCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI1MTQgfCA2NiA2RSA3NiAzMSA1RiAzNiAzNCAgICB8IGNoYXJbN10gICAgIHwgZm52MV82NCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjUxQiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI1MUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNTIwIHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI1MjQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI1MjUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI1MjggfCA0NCBFRSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUU0NCAoLTQ1NDApIExvYzogKzB4MzZFNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNTJDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjUyRiB8IDA5ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA5ICg5KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjUzMCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MjUzNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjUzOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI1M0MgfCA3NCA2NSA3MyA3NCA2OCA2MSA3MyA2OCB8IGNoYXJbMTZdICAgIHwgdGVzdGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjU0NCB8IDczIDM2IDM0IDVGIDY2IDZFIDc2IDMxIHwgICAgICAgICAgICAgfCBzNjRfZm52MQogICsweDI1NEMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI1NEQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyNTUwIHwgMTYgRkIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZCMTYgKC0xMjU4KSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjU1NCB8IDExIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTEgKDE3KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDI1NTYgfCAyNiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDI2ICgzOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjU1OCB8IDZDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDZDICgxMDgpIExvYzogKzB4MjVDNCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDI1NUMgfCA1QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1QyAoOTIpIExvYzogKzB4MjVCOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDI1NjAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjU2QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyNTY0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjU2OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjU2OCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyNTZDIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDI1NzAgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MjU5NCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDI1NzQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNTc4ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI1NzggfCAxNCBGMCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjAxNCAoLTQwNzYpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNTdDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI1OEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyNTgwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjU4NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyNTg0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjU4OCB8IDMxIDM3ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNThBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjU4QyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI1OTAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjU5MiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyNTk0IHwgMzAgRjAgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkYwMzAgKC00MDQ4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjU5OCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgyNUFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjU5QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI1QTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjVBMCB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI1QTQgfCA2NiA2RSA3NiAzMSA1RiAzMyAzMiAgICB8IGNoYXJbN10gICAgIHwgZm52MV8zMiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjVBQiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI1QUMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNUIwIHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI1QjQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI1QjUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI1QjggfCAxQyBFQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUMxQyAoLTUwOTIpIExvYzogKzB4Mzk5QyAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNUJDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjVCRiB8IDA4ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjVDMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjVDNCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI1QzggfCA3NCA2NSA3MyA3NCA2OCA2MSA3MyA2OCB8IGNoYXJbMTZdICAgIHwgdGVzdGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjVEMCB8IDc1IDMzIDMyIDVGIDY2IDZFIDc2IDMxIHwgICAgICAgICAgICAgfCB1MzJfZm52MQogICsweDI1RDggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI1RDkgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyNURDIHwgQTIgRkIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZCQTIgKC0xMTE4KSBMb2M6ICsweDJBM0EgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjVFMCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDI1RTIgfCAyNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDI0ICgzNikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjVFNCB8IDZDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDZDICgxMDgpIExvYzogKzB4MjY1MCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDI1RTggfCA1QyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1QyAoOTIpIExvYzogKzB4MjY0NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDI1RUMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjVGOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyNUYwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjVGNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjVGNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyNUY4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDI1RkMgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MjYyMCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDI2MDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNjA0ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI2MDQgfCBBMCBGMCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjBBMCAoLTM5MzYpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNjA4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI2MTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyNjBDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjYxMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyNjEwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjYxNCB8IDMxIDM2ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNjE2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjYxOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI2MUMgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjYxRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyNjIwIHwgQkMgRjAgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkYwQkMgKC0zOTA4KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjYyNCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgyNjM4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjYyOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI2MkMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjYyQyB8IDA3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI2MzAgfCA2NiA2RSA3NiAzMSA1RiAzMyAzMiAgICB8IGNoYXJbN10gICAgIHwgZm52MV8zMiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjYzNyB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI2MzggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNjNDIHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI2NDAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI2NDEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI2NDQgfCBBOCBFQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUNBOCAoLTQ5NTIpIExvYzogKzB4Mzk5QyAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNjQ4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjY0QiB8IDA3ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjY0QyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjY1MCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEwICgxNikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI2NTQgfCA3NCA2NSA3MyA3NCA2OCA2MSA3MyA2OCB8IGNoYXJbMTZdICAgIHwgdGVzdGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjY1QyB8IDczIDMzIDMyIDVGIDY2IDZFIDc2IDMxIHwgICAgICAgICAgICAgfCBzMzJfZm52MQogICsweDI2NjQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI2NjUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyNjY4IHwgMkUgRkMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZDMkUgKC05NzgpIExvYzogKzB4MkEzQSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjY2QyB8IDBGIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDI2NkUgfCAyMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDIyICgzNCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjY3MCB8IDQ4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQ4ICg3MikgTG9jOiArMHgyNkI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDI2NzQgfCAzNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzNCAoNTIpIExvYzogKzB4MjZBOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDI2NzggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjY4NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyNjdDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjY4MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjY4MCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyNjg0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDI2ODggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNjhDICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI2OEMgfCAyOCBGMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjEyOCAoLTM4MDApIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNjkwIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI2QTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyNjk0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjY5OCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyNjk4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjY5QyB8IDMxIDM1ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNjlFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjZBMCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI2QTQgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjZBNiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI2QTggfCBDNCBFRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRUZDNCAoLTQxNTYpIExvYzogKzB4MzZFNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNkFDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjZBRiB8IDAyICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAyICgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjZCMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MjZCNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjZCOCB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI2QkMgfCA3NCA2NSA3MyA3NCA2MiA2RiA2RiA2QyB8IGNoYXJbOF0gICAgIHwgdGVzdGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjZDNCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjZDNSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDI2QzggfCBBNCBGQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkJBNCAoLTExMTYpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNkNDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjZDRiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgyNkQwIHwgMEUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MjZEMiB8IDIwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMjAgKDMyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyNkQ0IHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDI3MUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MjZEOCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgyNzBDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MjZEQyB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyNkU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDI2RTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNkU0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyNkU0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDI2RTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MjZFQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI2RjAgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MjZGMCB8IDhDIEYxIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMThDICgtMzcwMCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI2RjQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjcwNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDI2RjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNkZDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDI2RkMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNzAwIHwgMzEgMzQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IDE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI3MDIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyNzA0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjcwOCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNzBBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MjcwQyB8IDU0IEVFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZFRTU0ICgtNDUyNCkgTG9jOiArMHgzOEI4ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI3MTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyNzEzIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyNzE0IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MjcxOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjcxQyB8IDA5IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA5ICg5KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI3MjAgfCA3NCA2NSA3MyA3NCA2NSA2RCA3MCA3NCB8IGNoYXJbOV0gICAgIHwgdGVzdGVtcHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjcyOCB8IDc5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB5CiAgKzB4MjcyOSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjcyQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDI3MkMgfCAwOCBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkMwOCAoLTEwMTYpIExvYzogKzB4MkIyNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNzMwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjczMyB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgyNzM0IHwgMEQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwRCAoMTMpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MjczNiB8IDFFIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUUgKDMwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyNzM4IHwgNzggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNzggKDEyMCkgTG9jOiArMHgyN0IwICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MjczQyB8IDY4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDY4ICgxMDQpIExvYzogKzB4MjdBNCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4Mjc0MCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyNzRDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDI3NDQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNzQ4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyNzQ4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDI3NEMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4Mjc1MCB8IDM4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM4ICg1NikgTG9jOiArMHgyNzg4ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4Mjc1NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI3NTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4Mjc1OCB8IEY0IEYxIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMUY0ICgtMzU5NikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI3NUMgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4Mjc3MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDI3NjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyNzY0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDI3NjQgfCAwNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNyAoNykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyNzY4IHwgNEQgNkYgNkUgNzMgNzQgNjUgNzIgICAgfCBjaGFyWzddICAgICB8IE1vbnN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI3NkYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyNzcwIHwgMTEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTEgKDE3KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4Mjc3NCB8IDZFIDY1IDczIDc0IDY1IDY0IDVGIDY2IHwgY2hhclsxN10gICAgfCBuZXN0ZWRfZiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNzdDIHwgNkMgNjEgNzQgNjIgNzUgNjYgNjYgNjUgfCAgICAgICAgICAgICB8IGxhdGJ1ZmZlCiAgKzB4Mjc4NCB8IDcyICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCByCiAgKzB4Mjc4NSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4Mjc4NiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI3ODggfCAyNCBGMiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjIyNCAoLTM1NDgpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyNzhDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI3OUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyNzkwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4Mjc5NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyNzk0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4Mjc5OCB8IDMxIDMzICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyNzlBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4Mjc5QyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI3QTAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjdBMiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI3QTQgfCAyMCBGQyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkMyMCAoLTk5MikgTG9jOiArMHgyQjg0ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyN0E4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjdBQSB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjdBQiB8IDA0ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDI3QUMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDI3QjAgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNCAoMjApICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyN0I0IHwgNzQgNjUgNzMgNzQgNkUgNjUgNzMgNzQgfCBjaGFyWzIwXSAgICB8IHRlc3RuZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI3QkMgfCA2NSA2NCA2NiA2QyA2MSA3NCA2MiA3NSB8ICAgICAgICAgICAgIHwgZWRmbGF0YnUKICArMHgyN0M0IHwgNjYgNjYgNjUgNzIgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGZmZXIKICArMHgyN0M4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyN0M5IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MjdDQyB8IEE4IEZDIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGQ0E4ICgtODU2KSBMb2M6ICsweDJCMjQgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI3RDAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyN0QzIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDI3RDQgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyN0Q2IHwgMUMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDI3RDggfCA0OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0OCAoNzIpIExvYzogKzB4MjgyMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyN0RDIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDI4MTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyN0UwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDI3RUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MjdFNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI3RTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDI3RTggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MjdFQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyN0YwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjdGNCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyN0Y0IHwgOTAgRjIgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkYyOTAgKC0zNDQwKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjdGOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyODA4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjdGQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI4MDAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjgwMCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI4MDQgfCAzMSAzMiAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjgwNiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI4MDggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyODBDIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI4MEUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyODEwIHwgNTggRUYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkVGNTggKC00MjY0KSBMb2M6ICsweDM4QjggICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjgxNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDI4MTcgfCAwRiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRiAoMTUpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDI4MTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgyODFDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyODIwIHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjgyNCB8IDY1IDZFIDY1IDZEIDc5ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBlbmVteSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyODI5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyODJBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MjgyQyB8IDA4IEZEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRDA4ICgtNzYwKSBMb2M6ICsweDJCMjQgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI4MzAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyODMzIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDI4MzQgfCAwQiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBCICgxMSkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyODM2IHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDI4MzggfCBCNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBCNCAoMTgwKSBMb2M6ICsweDI4RUMgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyODNDIHwgQTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQTAgKDE2MCkgTG9jOiArMHgyOERDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyODQwIHwgNzggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNzggKDEyMCkgTG9jOiArMHgyOEI4ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4Mjg0NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI4NDggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDI4NDggfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4Mjg0QyB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgyODY4ICAgICAgIHwgb2Zmc2V0IHRvIHN0cmluZ1swXQogICsweDI4NTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyODU0ICAgICAgICB8IG9mZnNldCB0byBzdHJpbmdbMV0KCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyODU0IHwgMEUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEUgKDE0KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4Mjg1OCB8IDIwIDZEIDc1IDZDIDc0IDY5IDZDIDY5IHwgY2hhclsxNF0gICAgfCAgbXVsdGlsaSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyODYwIHwgNkUgNjUgMjAgNzQgNkYgNkYgICAgICAgfCAgICAgICAgICAgICB8IG5lIHRvbwogICsweDI4NjYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4Mjg2OCB8IDQ5IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDQ5ICg3MykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI4NkMgfCAyMCA2MSA2RSAyMCA2NSA3OCA2MSA2RCB8IGNoYXJbNzNdICAgIHwgIGFuIGV4YW0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4Mjg3NCB8IDcwIDZDIDY1IDIwIDY0IDZGIDYzIDc1IHwgICAgICAgICAgICAgfCBwbGUgZG9jdQogICsweDI4N0MgfCA2RCA2NSA2RSA3NCA2MSA3NCA2OSA2RiB8ICAgICAgICAgICAgIHwgbWVudGF0aW8KICArMHgyODg0IHwgNkUgMjAgNjMgNkYgNkQgNkQgNjUgNkUgfCAgICAgICAgICAgICB8IG4gY29tbWVuCiAgKzB4Mjg4QyB8IDc0IDNBIDIwIDc0IDY4IDY5IDczIDIwIHwgICAgICAgICAgICAgfCB0OiB0aGlzIAogICsweDI4OTQgfCA3NyA2OSA2QyA2QyAyMCA2NSA2RSA2NCB8ICAgICAgICAgICAgIHwgd2lsbCBlbmQKICArMHgyODlDIHwgMjAgNzUgNzAgMjAgNjkgNkUgMjAgNzQgfCAgICAgICAgICAgICB8ICB1cCBpbiB0CiAgKzB4MjhBNCB8IDY4IDY1IDIwIDY3IDY1IDZFIDY1IDcyIHwgICAgICAgICAgICAgfCBoZSBnZW5lcgogICsweDI4QUMgfCA2MSA3NCA2NSA2NCAyMCA2MyA2RiA2NCB8ICAgICAgICAgICAgIHwgYXRlZCBjb2QKICArMHgyOEI0IHwgNjUgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGUKICArMHgyOEI1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyOEI2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MjhCOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyOEJDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjhDMCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyOEMwIHwgNUMgRjMgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkYzNUMgKC0zMjM2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjhDNCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyOEQ0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MjhDOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI4Q0MgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjhDQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI4RDAgfCAzMSAzMSAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjhEMiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDI4RDQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyOEQ4IHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI4REEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyOERDIHwgMkMgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGMkMgKC0yMTIpIExvYzogKzB4MjlCMCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjhFMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDI4RTIgfCAwRSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDI4RTMgfCAwRiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwRiAoMTUpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50YCAoQnl0ZSkKICArMHgyOEU0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MjhFOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MjhFQyB8IDExIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDExICgxNykgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI4RjAgfCA3NCA2NSA3MyA3NCA2MSA3MiA3MiA2MSB8IGNoYXJbMTddICAgIHwgdGVzdGFycmEgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjhGOCB8IDc5IDZGIDY2IDc0IDYxIDYyIDZDIDY1IHwgICAgICAgICAgICAgfCB5b2Z0YWJsZQogICsweDI5MDAgfCA3MyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgcwogICsweDI5MDEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDI5MDIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyOTA0IHwgRTAgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZERTAgKC01NDQpIExvYzogKzB4MkIyNCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MjkwOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDI5MEIgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvcHRpb25hbGAgKEJvb2wpCiAgKzB4MjkwQyB8IDBBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEEgKDEwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDI5MEUgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MjkxMCB8IDQ0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQ0ICg2OCkgTG9jOiArMHgyOTU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDI5MTQgfCAzNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzNCAoNTIpIExvYzogKzB4Mjk0OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDI5MTggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MjkyNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyOTFDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjkyMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MjkyMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyOTI0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDI5MjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyOTJDICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDI5MkMgfCBDOCBGMyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjNDOCAoLTMxMjgpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyOTMwIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDI5NDAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyOTM0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MjkzOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyOTM4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjkzQyB8IDMxIDMwICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyOTNFIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4Mjk0MCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI5NDQgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4Mjk0NiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI5NDggfCBDNCBGRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkRDNCAoLTU3MikgTG9jOiArMHgyQjg0ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyOTRDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4Mjk0RSB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4Mjk0RiB8IDBEICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBEICgxMykgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDI5NTAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDI5NTQgfCAxMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxMSAoMTcpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyOTU4IHwgNzQgNjUgNzMgNzQgNjEgNzIgNzIgNjEgfCBjaGFyWzE3XSAgICB8IHRlc3RhcnJhICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDI5NjAgfCA3OSA2RiA2NiA3MyA3NCA3MiA2OSA2RSB8ICAgICAgICAgICAgIHwgeW9mc3RyaW4KICArMHgyOTY4IHwgNjcgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGcKICArMHgyOTY5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyOTZBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4Mjk2QyB8IDQ4IEZFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRTQ4ICgtNDQwKSBMb2M6ICsweDJCMjQgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI5NzAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyOTczIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDI5NzQgfCAwOSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA5ICg5KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyOTc2IHwgMTYgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxNiAoMjIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDI5NzggfCA1OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1OCAoODgpIExvYzogKzB4MjlEMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyOTdDIHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDI5QzAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyOTgwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDI5OEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4Mjk4NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI5ODggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDI5ODggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4Mjk4QyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyOTkwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4Mjk5NCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyOTk0IHwgMzAgRjQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY0MzAgKC0zMDI0KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4Mjk5OCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyOUE4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4Mjk5QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI5QTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MjlBMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI5QTQgfCAzOSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjlBNSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MjlBNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MjlBOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDI5QUMgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MjlBRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyOUIwIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MjlCMiB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgyOUI0IHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJhc2VfdHlwZWAgKGlkOiAwKQogICsweDI5QjYgfCAwNyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZWxlbWVudGAgKGlkOiAxKQogICsweDI5QjggfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaW5kZXhgIChpZDogMikKICArMHgyOUJBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpeGVkX2xlbmd0aGAgKGlkOiAzKSA8ZGVmYXVsdHMgdG8gMD4gKFVTaG9ydCkKICArMHgyOUJDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJhc2Vfc2l6ZWAgKGlkOiA0KSA8ZGVmYXVsdHMgdG8gND4gKFVJbnQpCiAgKzB4MjlCRSB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBlbGVtZW50X3NpemVgIChpZDogNSkKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDI5QzAgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MjlCMCAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyOUM0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MjlDNiB8IDBFICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBFICgxNCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MjlDNyB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRgIChCeXRlKQogICsweDI5QzggfCAwNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNiAoNikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgyOUNDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyOUQwIHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MjlENCB8IDc0IDY1IDczIDc0IDM0ICAgICAgICAgIHwgY2hhcls1XSAgICAgfCB0ZXN0NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyOUQ5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyOURBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MjlEQyB8IEI4IEZFIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRUI4ICgtMzI4KSBMb2M6ICsweDJCMjQgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDI5RTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyOUUzIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDI5RTQgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyOUU2IHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDI5RTggfCA0OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0OCAoNzIpIExvYzogKzB4MkEzMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyOUVDIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDJBMjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyOUYwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDI5RkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MjlGNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDI5RjggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDI5RjggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MjlGQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyQTAwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkEwNCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyQTA0IHwgQTAgRjQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY0QTAgKC0yOTEyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkEwOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyQTE4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MkEwQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJBMTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MkExMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJBMTQgfCAzOCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkExNSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MkExNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MkExOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJBMUMgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkExRSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDJBMjAgfCA2OCBGMSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjE2OCAoLTM3MzYpIExvYzogKzB4MzhCOCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQTI0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkEyNyB8IDEwICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MkEyOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDJBMkMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDJBMzAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyQTM0IHwgNzQgNjUgNzMgNzQgICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IHRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJBMzggfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJBM0EgfCAxQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFBICgyNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgyQTNDIHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDJBM0UgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDJBNDAgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDJBNDIgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikKICArMHgyQTQ0IHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKQogICsweDJBNDYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgyQTQ4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MkE0QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyQTRDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyQTRFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MkE1MCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpCiAgKzB4MkE1MiB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJBNTQgfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4MkEzQSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQTU4IHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MkE1QSB8IDEyIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTIgKDE4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyQTVDIHwgNEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNEMgKDc2KSBMb2M6ICsweDJBQTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MkE2MCB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgyQTk0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MkE2NCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyQTcwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDJBNjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyQTZDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyQTZDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDJBNzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MkE3NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJBNzggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MkE3OCB8IDE0IEY1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNTE0ICgtMjc5NikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJBN0MgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MkE4QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDJBODAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyQTg0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDJBODQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyQTg4IHwgMzcgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJBODkgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJBOEEgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDJBOEMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyQTkwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJBOTIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyQTk0IHwgOTAgRjQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY0OTAgKC0yOTI4KSBMb2M6ICsweDM2MDQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkE5OCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDJBOUIgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDJBOUMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgyQUEwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgyQUE0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyQUE4IHwgMDkgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDkgKDkpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkFBQyB8IDc0IDY1IDczIDc0IDVGIDc0IDc5IDcwIHwgY2hhcls5XSAgICAgfCB0ZXN0X3R5cCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQUI0IHwgNjUgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGUKICArMHgyQUI1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyQUI2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MkFCOCB8IDQyIEZEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRDQyICgtNzAyKSBMb2M6ICsweDJENzYgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJBQkMgfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyQUJFIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDJBQzAgfCA1OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1OCAoODgpIExvYzogKzB4MkIxOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyQUM0IHwgNDAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDAgKDY0KSBMb2M6ICsweDJCMDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyQUM4IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDJBRTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MkFDQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyQURDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDJBRDAgfCAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDA4ICg4KSAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChMb25nKQogICsweDJBRDggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyQURDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDJBRTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MkFFNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJBRTggICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MkFFOCB8IDg0IEY1IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNTg0ICgtMjY4NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJBRUMgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MkFGQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDJBRjAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyQUY0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDJBRjQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyQUY4IHwgMzYgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJBRjkgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJBRkEgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDJBRkMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyQjAwIHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJCMDIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyQjA0IHwgMDAgRjUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY1MDAgKC0yODE2KSBMb2M6ICsweDM2MDQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkIwOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDJCMEIgfCAwNCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDJCMEMgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpbmRleGAgKEludCkKICArMHgyQjEwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgyQjE0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyQjE4IHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkIxQyB8IDYzIDZGIDZDIDZGIDcyICAgICAgICAgIHwgY2hhcls1XSAgICAgfCBjb2xvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQjIxIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyQjIyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJCMjQgfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgyQjI2IHwgMUMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDJCMjggfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDJCMkEgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDJCMkMgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikKICArMHgyQjJFIHwgMEEgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKQogICsweDJCMzAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgyQjMyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MkIzNCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyQjM2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyQjM4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MkIzQSB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpCiAgKzB4MkIzQyB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQogICsweDJCM0UgfCAwNyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb3B0aW9uYWxgIChpZDogMTEpCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MkI0MCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgyQjI0ICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJCNDQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyQjQ3IHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDJCNDggfCAwNSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyQjRBIHwgMEUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwRSAoMTQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDJCNEMgfCA1NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1NCAoODQpIExvYzogKzB4MkJBMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyQjUwIHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDJCOTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyQjU0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDJCNjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MkI1OCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJCNUMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDJCNUMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MkI2MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyQjY0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkI2OCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyQjY4IHwgMDQgRjYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY2MDQgKC0yNTU2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkI2QyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyQjdDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MkI3MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJCNzQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MkI3NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJCNzggfCAzNSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkI3OSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MkI3QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MkI3QyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJCODAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkI4MiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyQjg0IHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MkI4NiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgyQjg4IHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJhc2VfdHlwZWAgKGlkOiAwKQogICsweDJCOEEgfCAwNyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZWxlbWVudGAgKGlkOiAxKQogICsweDJCOEMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaW5kZXhgIChpZDogMikgPGRlZmF1bHRzIHRvIC0xPiAoSW50KQogICsweDJCOEUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZml4ZWRfbGVuZ3RoYCAoaWQ6IDMpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDJCOTAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYmFzZV9zaXplYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byA0PiAoVUludCkKICArMHgyQjkyIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGVsZW1lbnRfc2l6ZWAgKGlkOiA1KQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MkI5NCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyQjg0ICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJCOTggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyQjlBIHwgMEUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEUgKDE0KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyQjlCIHwgMDQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudGAgKEJ5dGUpCiAgKzB4MkI5QyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MkJBMCB8IDA5IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA5ICg5KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJCQTQgfCA2OSA2RSA3NiA2NSA2RSA3NCA2RiA3MiB8IGNoYXJbOV0gICAgIHwgaW52ZW50b3IgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkJBQyB8IDc5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB5CiAgKzB4MkJBRCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MkJBRSB8IDFBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUEgKDI2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDJCQjAgfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MkJCMiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MkJCNCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4MkJCNiB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKQogICsweDJCQjggfCAwQSAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MkJCQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChMb25nKQogICsweDJCQkMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoaWQ6IDUpIDxkZWZhdWx0cyB0byAwLjAwMDAwMD4gKERvdWJsZSkKICArMHgyQkJFIHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlcHJlY2F0ZWRgIChpZDogNikKICArMHgyQkMwIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyQkMyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MkJDNCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpCiAgKzB4MkJDNiB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJCQzggfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4MkJBRSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQkNDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkJDRiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGRlcHJlY2F0ZWRgIChCb29sKQogICsweDJCRDAgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyQkQyIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDJCRDQgfCA5OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA5OCAoMTUyKSBMb2M6ICsweDJDNkMgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyQkQ4IHwgODQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODQgKDEzMikgTG9jOiArMHgyQzVDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyQkRDIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDJCRTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MkJFMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJCRTQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDJCRTQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MkJFOCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyQkVDIHwgNEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNEMgKDc2KSBMb2M6ICsweDJDMzggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgyQkYwIHwgMkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMkMgKDQ0KSBMb2M6ICsweDJDMUMgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgyQkY0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkJGOCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyQkY4IHwgOTQgRjYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY2OTQgKC0yNDEyKSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkJGQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyQzBDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MkMwMCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJDMDQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MkMwNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJDMDggfCAzMSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkMwOSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MkMwQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MkMwQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJDMTAgfCA3MCA3MiA2OSA2RiA3MiA2OSA3NCA3OSB8IGNoYXJbOF0gICAgIHwgcHJpb3JpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkMxOCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MkMxOSB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDJDMUMgfCBCOCBGNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjZCOCAoLTIzNzYpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQzIwIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDJDMzAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyQzI0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkMyOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyQzI4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkMyQyB8IDM0ICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQzJEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyQzJFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyQzMwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkMzNCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQzM2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDJDMzggfCBENCBGNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjZENCAoLTIzNDgpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQzNDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDJDNEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyQzQwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkM0NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyQzQ0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkM0OCB8IDMwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQzQ5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyQzRBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyQzRDIHwgMEEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEEgKDEwKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkM1MCB8IDY0IDY1IDcwIDcyIDY1IDYzIDYxIDc0IHwgY2hhclsxMF0gICAgfCBkZXByZWNhdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQzU4IHwgNjUgNjQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGVkCiAgKzB4MkM1QSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDJDNUMgfCA3OCBGNSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjU3OCAoLTI2OTYpIExvYzogKzB4MzZFNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQzYwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkM2MyB8IDAyICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAyICgyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MkM2NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MkM2OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MkM2QyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJDNzAgfCA2NiA3MiA2OSA2NSA2RSA2NCA2QyA3OSB8IGNoYXJbOF0gICAgIHwgZnJpZW5kbHkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkM3OCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MkM3QSB8IDFBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUEgKDI2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDJDN0MgfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MkM3RSB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MkM4MCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4MkM4MiB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKQogICsweDJDODQgfCAwQSAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MkM4NiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChMb25nKQogICsweDJDODggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoaWQ6IDUpIDxkZWZhdWx0cyB0byAwLjAwMDAwMD4gKERvdWJsZSkKICArMHgyQzhBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlcHJlY2F0ZWRgIChpZDogNikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDJDOEMgfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWlyZWRgIChpZDogNykKICArMHgyQzhFIHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KQogICsweDJDOTAgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KQogICsweDJDOTIgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyQzk0IHwgMUEgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUEgKDI2KSBMb2M6ICsweDJDN0EgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkM5OCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDJDOUEgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGByZXF1aXJlZGAgKEJvb2wpCiAgKzB4MkM5QiB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGtleWAgKEJvb2wpCiAgKzB4MkM5QyB8IDAzIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDJDOUUgfCAwQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MkNBMCB8IDY0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDY0ICgxMDApIExvYzogKzB4MkQwNCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDJDQTQgfCA1NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1NCAoODQpIExvYzogKzB4MkNGOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDJDQTggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MkNCNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgyQ0FDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkNCMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MkNCMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyQ0I0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDJDQjggfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MkNEQyAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDJDQkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyQ0MwICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDJDQzAgfCA1QyBGNyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjc1QyAoLTIyMTIpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQ0M0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDJDRDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyQ0M4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkNDQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyQ0NDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkNEMCB8IDMwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQ0QxIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyQ0QyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyQ0Q0IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkNEOCB8IDZCIDY1IDc5ICAgICAgICAgICAgICAgIHwgY2hhclszXSAgICAgfCBrZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQ0RCIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDJDREMgfCA3OCBGNyBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjc3OCAoLTIxODQpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyQ0UwIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDJDRjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyQ0U0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkNFOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyQ0U4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkNFQyB8IDMzICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQ0VEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyQ0VFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyQ0YwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkNGNCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyQ0Y2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MkNGOCB8IDVDIEYzIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGMzVDICgtMzIzNikgTG9jOiArMHgzOTlDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJDRkMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyQ0ZGIHwgMEQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEQgKDEzKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyRDAwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyRDA0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkQwOCB8IDZFIDYxIDZEIDY1ICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyRDBDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyRDBEIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MkQxMCB8IDlBIEZGIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRjlBICgtMTAyKSBMb2M6ICsweDJENzYgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJEMTQgfCAwMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyRDE2IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDJEMTggfCA1NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1NCAoODQpIExvYzogKzB4MkQ2QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyRDFDIHwgNDAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDAgKDY0KSBMb2M6ICsweDJENUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyRDIwIHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDJEMzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MkQyNCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyRDM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDJEMjggfCA2NCAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8IGludDY0X3QgICAgIHwgMHgwMDAwMDAwMDAwMDAwMDY0ICgxMDApICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChMb25nKQogICsweDJEMzAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQ4X3RbNF0gIHwgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyRDM0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDJEMzggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MkQzQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJENDAgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MkQ0MCB8IERDIEY3IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGN0RDICgtMjA4NCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJENDQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MkQ1NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDJENDggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyRDRDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDJENEMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRDUwIHwgMzIgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJENTEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJENTIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDJENTQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRDU4IHwgNjkgNjQgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJENUEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgyRDVDIHwgNzggRjYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY2NzggKC0yNDQwKSBMb2M6ICsweDM2RTQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkQ2MCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDJENjMgfCAwNSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwNSAoNSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDJENjQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDJENjggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDJENkMgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRDcwIHwgNjggNzAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzJdICAgICB8IGhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJENzIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJENzMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MkQ3NiB8IDFBIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUEgKDI2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDJENzggfCAyNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDI0ICgzNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MkQ3QSB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MkQ3QyB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4MkQ3RSB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKQogICsweDJEODAgfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MkQ4MiB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkKICArMHgyRDg0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MkQ4NiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyRDg4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyRDhBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MkQ4QyB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpCiAgKzB4MkQ4RSB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJEOTAgfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4MkQ3NiAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRDk0IHwgMDEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MkQ5NiB8IDA2IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyRDk4IHwgNTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNTQgKDg0KSBMb2M6ICsweDJERUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MkQ5QyB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgyRERDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MkRBMCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE4ICgyNCkgTG9jOiArMHgyREI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDJEQTQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MkRCNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgyREE4IHwgOTYgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDA5NiAoMTUwKSAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoTG9uZykKICArMHgyREIwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50OF90WzRdICB8IC4uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MkRCNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5hdHRyaWJ1dGVzKToKICArMHgyREI4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDJEQkMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyREMwICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDJEQzAgfCA1QyBGOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjg1QyAoLTE5NTYpIExvYzogKzB4MzU2NCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyREM0IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDJERDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgyREM4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkRDQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgyRENDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkREMCB8IDMxICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyREQxIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyREQyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgyREQ0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkREOCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyRERBIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MkREQyB8IEY4IEY2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNkY4ICgtMjMxMikgTG9jOiArMHgzNkU0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJERTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgyREUzIHwgMDUgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDUgKDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgyREU0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgyREU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgyREVDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkRGMCB8IDZEIDYxIDZFIDYxICAgICAgICAgICAgIHwgY2hhcls0XSAgICAgfCBtYW5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyREY0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyREY1IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJERjggfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgyREZBIHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDJERkMgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDJERkUgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDJFMDAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikgPGRlZmF1bHRzIHRvIDA+IChVU2hvcnQpCiAgKzB4MkUwMiB8IDA2IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvZmZzZXRgIChpZDogMykKICArMHgyRTA0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfaW50ZWdlcmAgKGlkOiA0KSA8ZGVmYXVsdHMgdG8gMD4gKExvbmcpCiAgKzB4MkUwNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X3JlYWxgIChpZDogNSkgPGRlZmF1bHRzIHRvIDAuMDAwMDAwPiAoRG91YmxlKQogICsweDJFMDggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVwcmVjYXRlZGAgKGlkOiA2KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MkUwQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGByZXF1aXJlZGAgKGlkOiA3KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MkUwQyB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChpZDogOCkgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDJFMEUgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KQogICsweDJFMTAgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKICArMHgyRTEyIHwgMDUgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9wdGlvbmFsYCAoaWQ6IDExKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJFMTQgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4MkRGOCAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRTE4IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzFdICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkUxOSB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgyRTFBIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDJFMUMgfCA0OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0OCAoNzIpIExvYzogKzB4MkU2NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyRTIwIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDJFNTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyRTI0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDJFMzAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MkUyOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJFMkMgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDJFMkMgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MkUzMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyRTM0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkUzOCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyRTM4IHwgRDQgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4RDQgKC0xODM2KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkUzQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyRTRDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MkU0MCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJFNDQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MkU0NCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJFNDggfCAzMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkU0OSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MkU0QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MkU0QyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJFNTAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkU1MiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDJFNTQgfCA5QyBGNSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjU5QyAoLTI2NjApIExvYzogKzB4MzhCOCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRTU4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkU1QiB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MkU1QyB8IDA5IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA5ICg5KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDJFNjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDJFNjQgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRTY4IHwgNzAgNkYgNzMgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IHBvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJFNkIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5PYmplY3QpOgogICsweDJFNkMgfCA0NCBGNiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjY0NCAoLTI0OTIpIExvYzogKzB4MzgyOCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRTcwIHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDJFOTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MkU3NCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgyRTg4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWVsZHNgICh2ZWN0b3IpCiAgKzB4MkU3OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG1pbmFsaWduYCAoSW50KQogICsweDJFN0MgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgyRTg0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgyRTgwIHwgRTAgMDggMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDA4RTAgKDIyNzIpIExvYzogKzB4Mzc2MCAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDJFODQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4MkU4OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyRThDIHwgM0MgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwM0MgKDYwKSBMb2M6ICsweDJFQzggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4MkU5MCB8IDE5IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE5ICgyNSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJFOTQgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMjVdICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkU5QyB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDUyIHwgICAgICAgICAgICAgfCB4YW1wbGUuUgogICsweDJFQTQgfCA2NSA2NiA2NSA3MiA3MiA2MSA2MiA2QyB8ICAgICAgICAgICAgIHwgZWZlcnJhYmwKICArMHgyRUFDIHwgNjUgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGUKICArMHgyRUFEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyRUFFIHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MkVCMCB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgyRUIyIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgyRUI0IHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgIChpZDogMSkKICArMHgyRUI2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlkYCAoaWQ6IDIpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDJFQjggfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MkVCQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChMb25nKQogICsweDJFQkMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoaWQ6IDUpIDxkZWZhdWx0cyB0byAwLjAwMDAwMD4gKERvdWJsZSkKICArMHgyRUJFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlcHJlY2F0ZWRgIChpZDogNikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDJFQzAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWlyZWRgIChpZDogNykgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDJFQzIgfCAwNSAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoaWQ6IDgpCiAgKzB4MkVDNCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpCiAgKzB4MkVDNiB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJFQzggfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4MkVBRSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRUNDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzFdICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkVDRCB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGtleWAgKEJvb2wpCiAgKzB4MkVDRSB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgyRUQwIHwgNzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNzQgKDExNikgTG9jOiArMHgyRjQ0ICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MkVENCB8IDYwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDYwICg5NikgTG9jOiArMHgyRjM0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MkVEOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgyRUU0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAodmVjdG9yKQogICsweDJFREMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyRUUwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgyRUUwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmF0dHJpYnV0ZXMpOgogICsweDJFRTQgfCAwMiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMiAoMikgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MkVFOCB8IDI0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDI0ICgzNikgTG9jOiArMHgyRjBDICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCiAgKzB4MkVFQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJFRjAgICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzFdCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MkVGMCB8IDhDIEY5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGOThDICgtMTY1MikgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJFRjQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MkYwNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDJFRjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyRUZDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDJFRkMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRjAwIHwgMzAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJGMDEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJGMDIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDJGMDQgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRjA4IHwgNkIgNjUgNzkgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IGtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJGMEIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5LZXlWYWx1ZSk6CiAgKzB4MkYwQyB8IEE4IEY5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGOUE4ICgtMTYyNCkgTG9jOiArMHgzNTY0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJGMTAgfCAxOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxOCAoMjQpIExvYzogKzB4MkYyOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoc3RyaW5nKQogICsweDJGMTQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgyRjE4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUudmFsdWUpOgogICsweDJGMTggfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRjFDIHwgNjYgNkUgNzYgMzEgNjEgNUYgMzYgMzQgfCBjaGFyWzhdICAgICB8IGZudjFhXzY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJGMjQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJGMjUgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS5rZXkpOgogICsweDJGMjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgyRjJDIHwgNjggNjEgNzMgNjggICAgICAgICAgICAgfCBjaGFyWzRdICAgICB8IGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDJGMzAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDJGMzEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDJGMzQgfCA1MCBGOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjg1MCAoLTE5NjgpIExvYzogKzB4MzZFNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRjM4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkYzQiB8IDBBICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MkYzQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MkY0MCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MkY0NCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJGNDggfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkY0QSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLk9iamVjdCk6CiAgKzB4MkY0QyB8IDI0IEY3IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNzI0ICgtMjI2OCkgTG9jOiArMHgzODI4ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDJGNTAgfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MkY3OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyRjU0IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDJGNjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgyRjU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MkY1QyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA4ICg4KSBMb2M6ICsweDJGNjQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDJGNjAgfCAwMCAwOCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDgwMCAoMjA0OCkgTG9jOiArMHgzNzYwICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKHN0cmluZykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZG9jdW1lbnRhdGlvbik6CiAgKzB4MkY2NCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZmllbGRzKToKICArMHgyRjY4IHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDJGNkMgfCA0MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0MCAoNjQpIExvYzogKzB4MkZBQyAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDJGNzAgfCBDQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBDQyAoMjA0KSBMb2M6ICsweDMwM0MgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQogICsweDJGNzQgfCA5OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA5OCAoMTUyKSBMb2M6ICsweDMwMEMgICAgICB8IG9mZnNldCB0byB0YWJsZVsyXQoKc3RyaW5nIChyZWZsZWN0aW9uLk9iamVjdC5uYW1lKToKICArMHgyRjc4IHwgMTMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTMgKDE5KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MkY3QyB8IDREIDc5IDQ3IDYxIDZEIDY1IDJFIDQ1IHwgY2hhclsxOV0gICAgfCBNeUdhbWUuRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgyRjg0IHwgNzggNjEgNkQgNzAgNkMgNjUgMkUgNTMgfCAgICAgICAgICAgICB8IHhhbXBsZS5TCiAgKzB4MkY4QyB8IDc0IDYxIDc0ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB0YXQKICArMHgyRjhGIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgyRjkwIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDJGOTIgfCAxQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFBICgyNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgyRjk0IHwgMUMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQyAoMjgpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDJGOTYgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDJGOTggfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDJGOUEgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikKICArMHgyRjlDIHwgMEEgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKQogICsweDJGOUUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgyRkEwIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MkZBMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyRkE0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgyRkE2IHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KQogICsweDJGQTggfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KQogICsweDJGQUEgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgyRkFDIHwgMUEgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUEgKDI2KSBMb2M6ICsweDJGOTIgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkZCMCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDJGQjMgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBrZXlgIChCb29sKQogICsweDJGQjQgfCAwMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgyRkI2IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDJGQjggfCA0OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0OCAoNzIpIExvYzogKzB4MzAwMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgyRkJDIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDJGRjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgyRkMwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDJGQ0MgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MkZDNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJGQzggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDJGQzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MkZDQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgyRkQwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MkZENCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgyRkQ0IHwgNzAgRkEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZBNzAgKC0xNDI0KSBMb2M6ICsweDM1NjQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MkZEOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgyRkU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MkZEQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDJGRTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MkZFMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJGRTQgfCAzMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkZFNSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MkZFNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MkZFOCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDJGRUMgfCA2QiA2NSA3OSAgICAgICAgICAgICAgICB8IGNoYXJbM10gICAgIHwga2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MkZFRiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDJGRjAgfCAwQyBGOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjkwQyAoLTE3ODApIExvYzogKzB4MzZFNCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgyRkY0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MkZGNyB8IDA2ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MkZGOCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MkZGQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzAwMCB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMwMDQgfCA2MyA2RiA3NSA2RSA3NCAgICAgICAgICB8IGNoYXJbNV0gICAgIHwgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzAwOSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzAwQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDMwMEMgfCA3NiBGQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkI3NiAoLTExNjIpIExvYzogKzB4MzQ5NiAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzMDEwIHwgMDEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MzAxMiB8IDA2IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgzMDE0IHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDMwMzQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MzAxOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgzMDI0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MzAxQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDMwMjAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDMwMjAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgzMDI0IHwgNDAgRjkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY5NDAgKC0xNzI4KSBMb2M6ICsweDM2RTQgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzAyOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMwMkIgfCAwOSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwOSAoOSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDMwMkMgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDMwMzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDMwMzQgfCAwMyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMyAoMykgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzMDM4IHwgNzYgNjEgNkMgICAgICAgICAgICAgICAgfCBjaGFyWzNdICAgICB8IHZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDMwM0IgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzAzQyB8IEI4IEY3IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGN0I4ICgtMjEyMCkgTG9jOiArMHgzODg0ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMwNDAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMV0gIHwgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMDQxIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDMwNDIgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MzA0NCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzMDYwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDMwNDggfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzA1NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDMwNEMgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzMDUwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzMDUwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzA1NCB8IEI4IEY2IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGNkI4ICgtMjM3NikgTG9jOiArMHgzOTlDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMwNTggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMDVCIHwgMEQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEQgKDEzKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzMDVDIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgzMDYwIHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzA2NCB8IDY5IDY0ICAgICAgICAgICAgICAgICAgIHwgY2hhclsyXSAgICAgfCBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzMDY2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzMDY4IHwgODggRjcgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY3ODggKC0yMTY4KSBMb2M6ICsweDM4RTAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzA2QyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMwNkYgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc19zdHJ1Y3RgIChCb29sKQogICsweDMwNzAgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MzA5NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMDc0IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDMwOEMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzMDc4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MzA3QyB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJ5dGVzaXplYCAoSW50KQogICsweDMwODAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgzMDg4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzMDg0IHwgREMgMDYgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDA2REMgKDE3NTYpIExvYzogKzB4Mzc2MCAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDMwODggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4MzA4QyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgzMDkwIHwgMzAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzAgKDQ4KSBMb2M6ICsweDMwQzAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4MzA5NCB8IDI3IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDI3ICgzOSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMwOTggfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMzldICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzBBMCB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDUzIHwgICAgICAgICAgICAgfCB4YW1wbGUuUwogICsweDMwQTggfCA3NCA3MiA3NSA2MyA3NCA0RiA2NiA1MyB8ICAgICAgICAgICAgIHwgdHJ1Y3RPZlMKICArMHgzMEIwIHwgNzQgNzIgNzUgNjMgNzQgNzMgNEYgNjYgfCAgICAgICAgICAgICB8IHRydWN0c09mCiAgKzB4MzBCOCB8IDUzIDc0IDcyIDc1IDYzIDc0IDczICAgIHwgICAgICAgICAgICAgfCBTdHJ1Y3RzCiAgKzB4MzBCRiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzMEMwIHwgRjQgRkUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZFRjQgKC0yNjgpIExvYzogKzB4MzFDQyAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzBDNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMwQzcgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvcHRpb25hbGAgKEJvb2wpCiAgKzB4MzBDOCB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgzMEU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDMwQ0MgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzBEOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDMwRDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzMEQ0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzMEQ0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzBEOCB8IDIwIEY4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGODIwICgtMjAxNikgTG9jOiArMHgzOEI4ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMwREMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMERGIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzMEUwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MzBFNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzBFOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMwRUMgfCA2MSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzBFRCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzBFRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzMEYwIHwgMTAgRjggRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY4MTAgKC0yMDMyKSBMb2M6ICsweDM4RTAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzBGNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMwRjcgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc19zdHJ1Y3RgIChCb29sKQogICsweDMwRjggfCAyQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyQyAoNDQpIExvYzogKzB4MzEyNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMEZDIHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDMxMTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzMTAwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MzEwNCB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJ5dGVzaXplYCAoSW50KQogICsweDMxMDggfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgzMTEwICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzMTBDIHwgNTQgMDYgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDA2NTQgKDE2MjApIExvYzogKzB4Mzc2MCAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDMxMTAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4MzExNCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgzMTE4IHwgRDAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwRDAgKDIwOCkgTG9jOiArMHgzMUU4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgzMTFDIHwgN0MgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwN0MgKDEyNCkgTG9jOiArMHgzMTk4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgzMTIwIHwgMjggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjggKDQwKSBMb2M6ICsweDMxNDggICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4MzEyNCB8IDFFIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDFFICgzMCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMxMjggfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMzBdICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzEzMCB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDUzIHwgICAgICAgICAgICAgfCB4YW1wbGUuUwogICsweDMxMzggfCA3NCA3MiA3NSA2MyA3NCA0RiA2NiA1MyB8ICAgICAgICAgICAgIHwgdHJ1Y3RPZlMKICArMHgzMTQwIHwgNzQgNzIgNzUgNjMgNzQgNzMgICAgICAgfCAgICAgICAgICAgICB8IHRydWN0cwogICsweDMxNDYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzE0OCB8IENDIEZGIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRkNDICgtNTIpIExvYzogKzB4MzE3QyAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMxNEMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMTRGIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDMxNTAgfCAwMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgzMTUyIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDMxNTQgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MzE3NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMTU4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDMxNjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzMTVDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzE2MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzE2MCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDMxNjQgfCBBQyBGOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjhBQyAoLTE4NzYpIExvYzogKzB4MzhCOCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzMTY4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzE2QiB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzE2QyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDMxNzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDMxNzQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzMTc4IHwgNjMgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IGMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDMxNzkgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDMxN0EgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzE3QyB8IDFDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDMxN0UgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MzE4MCB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MzE4MiB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4MzE4NCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKQogICsweDMxODYgfCAwQSAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MzE4OCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChMb25nKQogICsweDMxOEEgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoaWQ6IDUpIDxkZWZhdWx0cyB0byAwLjAwMDAwMD4gKERvdWJsZSkKICArMHgzMThDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlcHJlY2F0ZWRgIChpZDogNikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDMxOEUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWlyZWRgIChpZDogNykgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDMxOTAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoaWQ6IDgpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzMTkyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgIChpZDogOSkgPG51bGw+IChWZWN0b3IpCiAgKzB4MzE5NCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQogICsweDMxOTYgfCAwNyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb3B0aW9uYWxgIChpZDogMTEpCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzE5OCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzMTdDICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMxOUMgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMTlGIHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDMxQTAgfCAwMSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgzMUEyIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDMxQTQgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MzFDNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMUE4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDMxQjQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzMUFDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzFCMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzFCMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDMxQjQgfCBGQyBGOCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjhGQyAoLTE3OTYpIExvYzogKzB4MzhCOCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzMUI4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzFCQiB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzFCQyB8IDA2IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDMxQzAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDMxQzQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzMUM4IHwgNjIgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDMxQzkgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDMxQ0EgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzFDQyB8IDFDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDMxQ0UgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MzFEMCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MzFEMiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4MzFENCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKSA8ZGVmYXVsdHMgdG8gMD4gKFVTaG9ydCkKICArMHgzMUQ2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKSA8ZGVmYXVsdHMgdG8gMD4gKFVTaG9ydCkKICArMHgzMUQ4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfaW50ZWdlcmAgKGlkOiA0KSA8ZGVmYXVsdHMgdG8gMD4gKExvbmcpCiAgKzB4MzFEQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X3JlYWxgIChpZDogNSkgPGRlZmF1bHRzIHRvIDAuMDAwMDAwPiAoRG91YmxlKQogICsweDMxREMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVwcmVjYXRlZGAgKGlkOiA2KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzFERSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGByZXF1aXJlZGAgKGlkOiA3KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzFFMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChpZDogOCkgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDMxRTIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KSA8bnVsbD4gKFZlY3RvcikKICArMHgzMUU0IHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogMTApCiAgKzB4MzFFNiB8IDA3IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDcgKDcpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvcHRpb25hbGAgKGlkOiAxMSkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzMUU4IHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDMxQ0MgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzFFQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMxRUYgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvcHRpb25hbGAgKEJvb2wpCiAgKzB4MzFGMCB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgzMjEwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDMxRjQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzIwMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDMxRjggfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzMUZDICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzMUZDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzIwMCB8IDQ4IEY5IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGOTQ4ICgtMTcyMCkgTG9jOiArMHgzOEI4ICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMyMDQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMjA3IHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzMjA4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MzIwQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzIxMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMyMTQgfCA2MSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzIxNSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzIxNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzMjE4IHwgMzggRjkgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkY5MzggKC0xNzM2KSBMb2M6ICsweDM4RTAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzIxQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMyMUYgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc19zdHJ1Y3RgIChCb29sKQogICsweDMyMjAgfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MzI0OCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMjI0IHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDMyM0MgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzMjI4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MzIyQyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJ5dGVzaXplYCAoSW50KQogICsweDMyMzAgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgzMjM4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzMjM0IHwgMkMgMDUgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDA1MkMgKDEzMjQpIExvYzogKzB4Mzc2MCAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDMyMzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4MzIzQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgzMjQwIHwgMjQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjQgKDM2KSBMb2M6ICsweDMyNjQgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgzMjQ0IHwgNkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNkMgKDEwOCkgTG9jOiArMHgzMkIwICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4MzI0OCB8IDE2IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE2ICgyMikgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMyNEMgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMjJdICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzI1NCB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDQxIHwgICAgICAgICAgICAgfCB4YW1wbGUuQQogICsweDMyNUMgfCA2MiA2OSA2QyA2OSA3NCA3OSAgICAgICB8ICAgICAgICAgICAgIHwgYmlsaXR5CiAgKzB4MzI2MiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzMjY0IHwgQ0UgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEQ0UgKC01NjIpIExvYzogKzB4MzQ5NiAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzI2OCB8IDAxIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDMyNkEgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MzI2QyB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzMjg4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDMyNzAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzI3QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDMyNzQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzMjc4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzMjc4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzI3QyB8IEUwIEY4IEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGOEUwICgtMTgyNCkgTG9jOiArMHgzOTlDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMyODAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzMjgzIHwgMDggICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzMjg0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgzMjg4IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzI4QyB8IDY0IDY5IDczIDc0IDYxIDZFIDYzIDY1IHwgY2hhcls4XSAgICAgfCBkaXN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzMjk0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzMjk2IHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MzI5OCB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgzMjlBIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgzMjlDIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgIChpZDogMSkKICArMHgzMjlFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlkYCAoaWQ6IDIpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDMyQTAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDMyQTIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgzMkE0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MzJBNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzMkE4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzMkFBIHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KQogICsweDMyQUMgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KQogICsweDMyQUUgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzMkIwIHwgMUEgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUEgKDI2KSBMb2M6ICsweDMyOTYgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzJCNCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMyQjcgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBrZXlgIChCb29sKQogICsweDMyQjggfCA0NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0NCAoNjgpIExvYzogKzB4MzJGQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMkJDIHwgMzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzQgKDUyKSBMb2M6ICsweDMyRjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzMkMwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDMyQ0MgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgICh2ZWN0b3IpCiAgKzB4MzJDNCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDMyQzggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDMyQzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuYXR0cmlidXRlcyk6CiAgKzB4MzJDQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgzMkQwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzJENCAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgzMkQ0IHwgNzAgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZENzAgKC02NTYpIExvYzogKzB4MzU2NCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzJEOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgzMkU4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MzJEQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDMyRTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MzJFMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMyRTQgfCAzMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzJFNSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzJFNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MzJFOCB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMyRUMgfCA2QiA2NSA3OSAgICAgICAgICAgICAgICB8IGNoYXJbM10gICAgIHwga2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzJFRiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDMyRjAgfCA1NCBGOSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRjk1NCAoLTE3MDgpIExvYzogKzB4Mzk5QyAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzMkY0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzJGNyB8IDA4ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzJGOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzJGQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMzMDAgfCA2OSA2NCAgICAgICAgICAgICAgICAgICB8IGNoYXJbMl0gICAgIHwgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzMwMiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnZ0YWJsZSAocmVmbGVjdGlvbi5PYmplY3QpOgogICsweDMzMDQgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgzMzA2IHwgMjQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAyNCAoMzYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDMzMDggfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDMzMEEgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZmllbGRzYCAoaWQ6IDEpCiAgKzB4MzMwQyB8IDA3IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDcgKDcpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpc19zdHJ1Y3RgIChpZDogMikKICArMHgzMzBFIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG1pbmFsaWduYCAoaWQ6IDMpCiAgKzB4MzMxMCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBieXRlc2l6ZWAgKGlkOiA0KQogICsweDMzMTIgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA1KQogICsweDMzMTQgfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiA2KQogICsweDMzMTYgfCAyMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDIwICgzMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKGlkOiA3KQoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzMzE4IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDMzMDQgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzMxQyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMzMUYgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc19zdHJ1Y3RgIChCb29sKQogICsweDMzMjAgfCA2OCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA2OCAoMTA0KSBMb2M6ICsweDMzODggICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzMzI0IHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDMzNkMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzMzI4IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MzMyQyB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDIwICgzMikgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJ5dGVzaXplYCAoSW50KQogICsweDMzMzAgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MzM0MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgzMzM0IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MzMzQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MzMzOCB8IDI4IDA0IDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwNDI4ICgxMDY0KSBMb2M6ICsweDM3NjAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5kb2N1bWVudGF0aW9uKToKICArMHgzMzNDIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5hdHRyaWJ1dGVzKToKICArMHgzMzQwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDMzNDQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzMzQ4ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDMzNDggfCBFNCBGRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkRFNCAoLTU0MCkgTG9jOiArMHgzNTY0ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzMzRDIHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDMzNUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgzMzUwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzM1NCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgzMzU0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzM1OCB8IDM4ICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzMzU5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgzMzVBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgzMzVDIHwgMEIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEIgKDExKSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzM2MCB8IDY2IDZGIDcyIDYzIDY1IDVGIDYxIDZDIHwgY2hhclsxMV0gICAgfCBmb3JjZV9hbCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzMzY4IHwgNjkgNjcgNkUgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGlnbgogICsweDMzNkIgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4MzM2QyB8IDA2IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgzMzcwIHwgQzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwQzQgKDE5NikgTG9jOiArMHgzNDM0ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgzMzc0IHwgODQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODQgKDEzMikgTG9jOiArMHgzM0Y4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KICArMHgzMzc4IHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDMzQzAgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMl0KICArMHgzMzdDIHwgNjAgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxNjAgKDM1MikgTG9jOiArMHgzNERDICAgICAgfCBvZmZzZXQgdG8gdGFibGVbM10KICArMHgzMzgwIHwgMzAgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxMzAgKDMwNCkgTG9jOiArMHgzNEIwICAgICAgfCBvZmZzZXQgdG8gdGFibGVbNF0KICArMHgzMzg0IHwgRTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwRTQgKDIyOCkgTG9jOiArMHgzNDY4ICAgICAgfCBvZmZzZXQgdG8gdGFibGVbNV0KCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4MzM4OCB8IDEzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEzICgxOSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDMzOEMgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMTldICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzM5NCB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDU2IHwgICAgICAgICAgICAgfCB4YW1wbGUuVgogICsweDMzOUMgfCA2NSA2MyAzMyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgZWMzCiAgKzB4MzM5RiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzNBMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzM0EyIHwgMUUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxRSAoMzApICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MzNBNCB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgzM0E2IHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgzM0E4IHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgIChpZDogMSkKICArMHgzM0FBIHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlkYCAoaWQ6IDIpCiAgKzB4MzNBQyB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvZmZzZXRgIChpZDogMykKICArMHgzM0FFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfaW50ZWdlcmAgKGlkOiA0KSA8ZGVmYXVsdHMgdG8gMD4gKExvbmcpCiAgKzB4MzNCMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X3JlYWxgIChpZDogNSkgPGRlZmF1bHRzIHRvIDAuMDAwMDAwPiAoRG91YmxlKQogICsweDMzQjIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVwcmVjYXRlZGAgKGlkOiA2KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzNCNCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGByZXF1aXJlZGAgKGlkOiA3KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzNCNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChpZDogOCkgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDMzQjggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KSA8bnVsbD4gKFZlY3RvcikKICArMHgzM0JBIHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogMTApCiAgKzB4MzNCQyB8IDA1IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvcHRpb25hbGAgKGlkOiAxMSkKICArMHgzM0JFIHwgMEEgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQSAoMTApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHBhZGRpbmdgIChpZDogMTIpCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzNDMCB8IDFFIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDFFICgzMCkgTG9jOiArMHgzM0EyICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDMzQzQgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMV0gIHwgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzM0M1IHwgMDEgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb3B0aW9uYWxgIChCb29sKQogICsweDMzQzYgfCAwNSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgzM0M4IHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDMzQ0EgfCAwMiAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBwYWRkaW5nYCAoVVNob3J0KQogICsweDMzQ0MgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MzNFQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzM0QwIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDMzREMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzM0Q0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzNEOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzNEOCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDMzREMgfCAyNCBGQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkIyNCAoLTEyNDQpIExvYzogKzB4MzhCOCAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzM0UwIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzNFMyB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzNFNCB8IDA2IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDMzRTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDMzRUMgfCAwNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzM0YwIHwgNzQgNjUgNzMgNzQgMzMgICAgICAgICAgfCBjaGFyWzVdICAgICB8IHRlc3QzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDMzRjUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDMzRjYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzM0Y4IHwgN0EgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZEN0EgKC02NDYpIExvYzogKzB4MzY3RSAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzNGQyB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDMzRkUgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgzNDAwIHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDM0MDIgfCAwMSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBwYWRkaW5nYCAoVVNob3J0KQogICsweDM0MDQgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MzQyOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzNDA4IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDM0MTQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzNDBDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzQxMCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzQxMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDM0MTQgfCAxMCBGRSBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkUxMCAoLTQ5NikgTG9jOiArMHgzNjA0ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNDE4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzQxQiB8IDA0ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzQxQyB8IDAzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAzICgzKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDM0MjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3NpemVgIChVSW50KQogICsweDM0MjQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDM0MjggfCAwNSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzNDJDIHwgNzQgNjUgNzMgNzQgMzIgICAgICAgICAgfCBjaGFyWzVdICAgICB8IHRlc3QyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM0MzEgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDM0MzIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzNDM0IHwgOUUgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGOUUgKC05OCkgTG9jOiArMHgzNDk2ICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzQzOCB8IDAzIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDM0M0EgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MzQzQyB8IDIwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDIwICgzMikgTG9jOiArMHgzNDVDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDM0NDAgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzQ0QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDM0NDQgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzNDQ4ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzNDQ4IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzQ0QyB8IDY4IEZEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGRDY4ICgtNjY0KSBMb2M6ICsweDM2RTQgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM0NTAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzNDUzIHwgMEMgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzNDU0IHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV9zaXplYCAoVUludCkKICArMHgzNDU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgzNDVDIHwgMDUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDUgKDUpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzQ2MCB8IDc0IDY1IDczIDc0IDMxICAgICAgICAgIHwgY2hhcls1XSAgICAgfCB0ZXN0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzNDY1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgzNDY2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzQ2OCB8IEVBIEZEIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGREVBICgtNTM0KSBMb2M6ICsweDM2N0UgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM0NkMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzNDZFIHwgMDIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwMiAoMikgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaWRgIChVU2hvcnQpCiAgKzB4MzQ3MCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9mZnNldGAgKFVTaG9ydCkKICArMHgzNDcyIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgcGFkZGluZ2AgKFVTaG9ydCkKICArMHgzNDc0IHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDM0OTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MzQ3OCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDBDICgxMikgTG9jOiArMHgzNDg0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MzQ3QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDM0ODAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDM0ODAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgzNDg0IHwgRTggRkEgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZBRTggKC0xMzA0KSBMb2M6ICsweDM5OUMgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzQ4OCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDM0OEIgfCAwQiAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwQiAoMTEpICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBiYXNlX3R5cGVgIChCeXRlKQogICsweDM0OEMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDM0OTAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzNDk0IHwgN0EgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IHogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM0OTUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDM0OTYgfCAxQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFBICgyNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgzNDk4IHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDM0OUEgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDM0OUMgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDM0OUUgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikKICArMHgzNEEwIHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKQogICsweDM0QTIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgzNEE0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MzRBNiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzNEE4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzNEFBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzRBQyB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpIDxudWxsPiAoVmVjdG9yKQogICsweDM0QUUgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzNEIwIHwgMUEgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUEgKDI2KSBMb2M6ICsweDM0OTYgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzRCNCB8IDAxIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGlkYCAoVVNob3J0KQogICsweDM0QjYgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MzRCOCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzNEQ0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDM0QkMgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzRDOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDM0QzAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzNEM0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzNEM0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzRDOCB8IDJDIEZCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGQjJDICgtMTIzNikgTG9jOiArMHgzOTlDICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM0Q0MgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzNENGIHwgMEIgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEIgKDExKSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzNEQwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgzNEQ0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzREOCB8IDc5ICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzNEQ5IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgzNERBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4MzREQyB8IDZFIEZCIEZGIEZGICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweEZGRkZGQjZFICgtMTE3MCkgTG9jOiArMHgzOTZFICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM0RTAgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4MzRGQyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzNEU0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDM0RjAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzNEU4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzRFQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzRFQyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDM0RjAgfCA1NCBGQiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkI1NCAoLTExOTYpIExvYzogKzB4Mzk5QyAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNEY0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzRGNyB8IDBCICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBCICgxMSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzRGOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzRGQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM1MDAgfCA3OCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzUwMSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzUwMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdnRhYmxlIChyZWZsZWN0aW9uLk9iamVjdCk6CiAgKzB4MzUwNCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDM1MDYgfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MzUwOCB8IDA0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MzUwQSB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWVsZHNgIChpZDogMSkKICArMHgzNTBDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlzX3N0cnVjdGAgKGlkOiAyKSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzUwRSB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBtaW5hbGlnbmAgKGlkOiAzKQogICsweDM1MTAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYnl0ZXNpemVgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChJbnQpCiAgKzB4MzUxMiB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDUpCiAgKzB4MzUxNCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDYpCiAgKzB4MzUxNiB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoaWQ6IDcpCgp0YWJsZSAocmVmbGVjdGlvbi5PYmplY3QpOgogICsweDM1MTggfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MzUwNCAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNTFDIHwgODAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwODAgKDEyOCkgTG9jOiArMHgzNTlDICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MzUyMCB8IDc0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDc0ICgxMTYpIExvYzogKzB4MzU5NCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWVsZHNgICh2ZWN0b3IpCiAgKzB4MzUyNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG1pbmFsaWduYCAoSW50KQogICsweDM1MjggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MzUzOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKHZlY3RvcikKICArMHgzNTJDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MzUzNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MzUzMCB8IDMwIDAyIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMjMwICg1NjApIExvYzogKzB4Mzc2MCAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5kb2N1bWVudGF0aW9uKToKICArMHgzNTM0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5hdHRyaWJ1dGVzKToKICArMHgzNTM4IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDM1M0MgfCAzMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzMCAoNDgpIExvYzogKzB4MzU2QyAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQogICsweDM1NDAgfCAwNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwNCAoNCkgTG9jOiArMHgzNTQ0ICAgICAgICB8IG9mZnNldCB0byB0YWJsZVsxXQoKdGFibGUgKHJlZmxlY3Rpb24uS2V5VmFsdWUpOgogICsweDM1NDQgfCBFMCBGRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkZFMCAoLTMyKSBMb2M6ICsweDM1NjQgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNTQ4IHwgMTAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTAgKDE2KSBMb2M6ICsweDM1NTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKHN0cmluZykKICArMHgzNTRDIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzU1MCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHZhbHVlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLnZhbHVlKToKICArMHgzNTUwIHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzU1NCB8IDMwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzNTU1IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgzNTU2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgpzdHJpbmcgKHJlZmxlY3Rpb24uS2V5VmFsdWUua2V5KToKICArMHgzNTU4IHwgMDcgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDcgKDcpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzU1QyB8IDcwIDcyIDY5IDc2IDYxIDc0IDY1ICAgIHwgY2hhcls3XSAgICAgfCBwcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzNTYzIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgzNTY0IHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MzU2NiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgzNTY4IHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiAwKQogICsweDM1NkEgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdmFsdWVgIChpZDogMSkKCnRhYmxlIChyZWZsZWN0aW9uLktleVZhbHVlKToKICArMHgzNTZDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MzU2NCAgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzU3MCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgzNTgwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChzdHJpbmcpCiAgKzB4MzU3NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDM1NzggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB2YWx1ZWAgKHN0cmluZykKCnN0cmluZyAocmVmbGVjdGlvbi5LZXlWYWx1ZS52YWx1ZSk6CiAgKzB4MzU3OCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM1N0MgfCAzMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzU3RCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzU3RSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKc3RyaW5nIChyZWZsZWN0aW9uLktleVZhbHVlLmtleSk6CiAgKzB4MzU4MCB8IDBFIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBFICgxNCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM1ODQgfCA2MyA3MyA2OCA2MSA3MiA3MCA1RiA3MCB8IGNoYXJbMTRdICAgIHwgY3NoYXJwX3AgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzU4QyB8IDYxIDcyIDc0IDY5IDYxIDZDICAgICAgIHwgICAgICAgICAgICAgfCBhcnRpYWwKICArMHgzNTkyIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5maWVsZHMpOgogICsweDM1OTQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCiAgKzB4MzU5OCB8IDRDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDRDICg3NikgTG9jOiArMHgzNUU0ICAgICAgIHwgb2Zmc2V0IHRvIHRhYmxlWzBdCgpzdHJpbmcgKHJlZmxlY3Rpb24uT2JqZWN0Lm5hbWUpOgogICsweDM1OUMgfCAyNiAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAyNiAoMzgpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzNUEwIHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzM4XSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM1QTggfCA3OCA2MSA2RCA3MCA2QyA2NSAyRSA1NCB8ICAgICAgICAgICAgIHwgeGFtcGxlLlQKICArMHgzNUIwIHwgNjUgNzMgNzQgNTMgNjkgNkQgNzAgNkMgfCAgICAgICAgICAgICB8IGVzdFNpbXBsCiAgKzB4MzVCOCB8IDY1IDU0IDYxIDYyIDZDIDY1IDU3IDY5IHwgICAgICAgICAgICAgfCBlVGFibGVXaQogICsweDM1QzAgfCA3NCA2OCA0NSA2RSA3NSA2RCAgICAgICB8ICAgICAgICAgICAgIHwgdGhFbnVtCiAgKzB4MzVDNiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzVDNyB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzNUNBIHwgMUEgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxQSAoMjYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MzVDQyB8IDFDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgzNUNFIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgzNUQwIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgIChpZDogMSkKICArMHgzNUQyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlkYCAoaWQ6IDIpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDM1RDQgfCAwNiAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA2ICg2KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgb2Zmc2V0YCAoaWQ6IDMpCiAgKzB4MzVENiB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkKICArMHgzNUQ4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4MzVEQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzNURDIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzNURFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzVFMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpIDxudWxsPiAoVmVjdG9yKQogICsweDM1RTIgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzNUU0IHwgMUEgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUEgKDI2KSBMb2M6ICsweDM1Q0EgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzVFOCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDM1RUEgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBvZmZzZXRgIChVU2hvcnQpCiAgKzB4MzVFQyB8IDNDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDNDICg2MCkgTG9jOiArMHgzNjI4ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDM1RjAgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyNCAoMzYpIExvYzogKzB4MzYxNCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKHRhYmxlKQogICsweDM1RjQgfCAwQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwQyAoMTIpIExvYzogKzB4MzYwMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzNUY4IHwgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfCBpbnQ2NF90ICAgICB8IDB4MDAwMDAwMDAwMDAwMDAwMiAoMikgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoTG9uZykKCnZlY3RvciAocmVmbGVjdGlvbi5GaWVsZC5kb2N1bWVudGF0aW9uKToKICArMHgzNjAwIHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDM2MDQgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgzNjA2IHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDM2MDggfCAwNyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA3ICg3KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYmFzZV90eXBlYCAoaWQ6IDApCiAgKzB4MzYwQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBlbGVtZW50YCAoaWQ6IDEpIDxkZWZhdWx0cyB0byAwPiAoQnl0ZSkKICArMHgzNjBDIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGluZGV4YCAoaWQ6IDIpCiAgKzB4MzYwRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaXhlZF9sZW5ndGhgIChpZDogMykgPGRlZmF1bHRzIHRvIDA+IChVU2hvcnQpCiAgKzB4MzYxMCB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBiYXNlX3NpemVgIChpZDogNCkKICArMHgzNjEyIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGVsZW1lbnRfc2l6ZWAgKGlkOiA1KQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzYxNCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgzNjA0ICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM2MTggfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzNjFCIHwgMDQgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDQgKDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzNjFDIHwgMDMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDMgKDMpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MzYyMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MzYyNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzYyOCB8IDA1IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA1ICg1KSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM2MkMgfCA2MyA2RiA2QyA2RiA3MiAgICAgICAgICB8IGNoYXJbNV0gICAgIHwgY29sb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzYzMSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzYzMiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzNjM0IHwgNTQgRkQgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZENTQgKC02ODQpIExvYzogKzB4MzhFMCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzYzOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDM2M0IgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc19zdHJ1Y3RgIChCb29sKQogICsweDM2M0MgfCAyOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyOCAoNDApIExvYzogKzB4MzY2NCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzNjQwIHwgMTggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTggKDI0KSBMb2M6ICsweDM2NTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzNjQ0IHwgMDIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDIgKDIpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MzY0OCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJ5dGVzaXplYCAoSW50KQogICsweDM2NEMgfCAwOCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAwOCAoOCkgTG9jOiArMHgzNjU0ICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzNjUwIHwgMTAgMDEgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAxMTAgKDI3MikgTG9jOiArMHgzNzYwICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDM2NTQgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4MzY1OCB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKICArMHgzNjVDIHwgNzQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNzQgKDExNikgTG9jOiArMHgzNkQwICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMF0KICArMHgzNjYwIHwgM0MgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwM0MgKDYwKSBMb2M6ICsweDM2OUMgICAgICAgfCBvZmZzZXQgdG8gdGFibGVbMV0KCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4MzY2NCB8IDEzIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDEzICgxOSkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM2NjggfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0NSB8IGNoYXJbMTldICAgIHwgTXlHYW1lLkUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzY3MCB8IDc4IDYxIDZEIDcwIDZDIDY1IDJFIDU0IHwgICAgICAgICAgICAgfCB4YW1wbGUuVAogICsweDM2NzggfCA2NSA3MyA3NCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgZXN0CiAgKzB4MzY3QiB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzY3QyB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzNjdFIHwgMUUgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxRSAoMzApICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MzY4MCB8IDE4IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTggKDI0KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgzNjgyIHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChpZDogMCkKICArMHgzNjg0IHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgIChpZDogMSkKICArMHgzNjg2IHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlkYCAoaWQ6IDIpCiAgKzB4MzY4OCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvZmZzZXRgIChpZDogMykKICArMHgzNjhBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfaW50ZWdlcmAgKGlkOiA0KSA8ZGVmYXVsdHMgdG8gMD4gKExvbmcpCiAgKzB4MzY4QyB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X3JlYWxgIChpZDogNSkgPGRlZmF1bHRzIHRvIDAuMDAwMDAwPiAoRG91YmxlKQogICsweDM2OEUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVwcmVjYXRlZGAgKGlkOiA2KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzY5MCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGByZXF1aXJlZGAgKGlkOiA3KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4MzY5MiB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBrZXlgIChpZDogOCkgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDM2OTQgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA5KSA8bnVsbD4gKFZlY3RvcikKICArMHgzNjk2IHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogMTApCiAgKzB4MzY5OCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvcHRpb25hbGAgKGlkOiAxMSkgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDM2OUEgfCAwQSAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBBICgxMCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgcGFkZGluZ2AgKGlkOiAxMikKCnRhYmxlIChyZWZsZWN0aW9uLkZpZWxkKToKICArMHgzNjlDIHwgMUUgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUUgKDMwKSBMb2M6ICsweDM2N0UgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzZBMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDM2QTIgfCAwMSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpZGAgKFVTaG9ydCkKICArMHgzNkE0IHwgMDIgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwMiAoMikgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDM2QTYgfCAwMSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBwYWRkaW5nYCAoVVNob3J0KQogICsweDM2QTggfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MzZDOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzNkFDIHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDM2QjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzNkIwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzZCNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzZCNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDM2QjggfCBENCBGRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkZENCAoLTQ0KSBMb2M6ICsweDM2RTQgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNkJDIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzZCRiB8IDAzICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAzICgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzZDMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MzZDNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzZDOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM2Q0MgfCA2MiAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzZDRCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzZDRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDM2RDAgfCA2MiBGRCBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkQ2MiAoLTY3MCkgTG9jOiArMHgzOTZFICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNkQ0IHwgMzAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMzAgKDQ4KSBMb2M6ICsweDM3MDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MzZEOCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzNkY0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4MzZEQyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDM2RTAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDM2RTAgfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2dGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzZFNCB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDM2RTYgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MzZFOCB8IDA3IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDcgKDcpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBiYXNlX3R5cGVgIChpZDogMCkKICArMHgzNkVBIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGVsZW1lbnRgIChpZDogMSkgPGRlZmF1bHRzIHRvIDA+IChCeXRlKQogICsweDM2RUMgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaW5kZXhgIChpZDogMikgPGRlZmF1bHRzIHRvIC0xPiAoSW50KQogICsweDM2RUUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZml4ZWRfbGVuZ3RoYCAoaWQ6IDMpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDM2RjAgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYmFzZV9zaXplYCAoaWQ6IDQpCiAgKzB4MzZGMiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBlbGVtZW50X3NpemVgIChpZDogNSkKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDM2RjQgfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MzZFNCAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzNkY4IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzZGQiB8IDA1ICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDA1ICg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzZGQyB8IDAyIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAyICgyKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2Vfc2l6ZWAgKFVJbnQpCiAgKzB4MzcwMCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzcwNCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM3MDggfCA2MSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzcwOSB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzcwQSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzNzBDIHwgRTQgRkUgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZFRTQgKC0yODQpIExvYzogKzB4MzgyOCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzcxMCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzNzJDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDM3MTQgfCAxNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxNCAoMjApIExvYzogKzB4MzcyOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZmllbGRzYCAodmVjdG9yKQogICsweDM3MTggfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBtaW5hbGlnbmAgKEludCkKICArMHgzNzFDIHwgMDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDggKDgpIExvYzogKzB4MzcyNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4MzcyMCB8IDQwIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDQwICg2NCkgTG9jOiArMHgzNzYwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5kb2N1bWVudGF0aW9uKToKICArMHgzNzI0IHwgMDAgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQoKdmVjdG9yIChyZWZsZWN0aW9uLk9iamVjdC5maWVsZHMpOgogICsweDM3MjggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgpzdHJpbmcgKHJlZmxlY3Rpb24uT2JqZWN0Lm5hbWUpOgogICsweDM3MkMgfCAxNyAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAxNyAoMjMpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzNzMwIHwgNEQgNzkgNDcgNjEgNkQgNjUgMkUgNDUgfCBjaGFyWzIzXSAgICB8IE15R2FtZS5FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM3MzggfCA3OCA2MSA2RCA3MCA2QyA2NSAzMiAyRSB8ICAgICAgICAgICAgIHwgeGFtcGxlMi4KICArMHgzNzQwIHwgNEQgNkYgNkUgNzMgNzQgNjUgNzIgICAgfCAgICAgICAgICAgICB8IE1vbnN0ZXIKICArMHgzNzQ3IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzNzQ4IHwgMjAgRkYgRkYgRkYgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4RkZGRkZGMjAgKC0yMjQpIExvYzogKzB4MzgyOCAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4Mzc0QyB8IDM0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDM0ICg1MikgTG9jOiArMHgzNzgwICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoc3RyaW5nKQogICsweDM3NTAgfCAyQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyQyAoNDQpIExvYzogKzB4Mzc3QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZmllbGRzYCAodmVjdG9yKQogICsweDM3NTQgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBtaW5hbGlnbmAgKEludCkKICArMHgzNzU4IHwgMjAgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMjAgKDMyKSBMb2M6ICsweDM3NzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCiAgKzB4Mzc1QyB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDM3NjAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWNsYXJhdGlvbl9maWxlYCAoc3RyaW5nKQoKc3RyaW5nIChyZWZsZWN0aW9uLk9iamVjdC5kZWNsYXJhdGlvbl9maWxlKToKICArMHgzNzYwIHwgMTIgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMTIgKDE4KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4Mzc2NCB8IDJGIDJGIDZEIDZGIDZFIDczIDc0IDY1IHwgY2hhclsxOF0gICAgfCAvL21vbnN0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzNzZDIHwgNzIgNUYgNzQgNjUgNzMgNzQgMkUgNjYgfCAgICAgICAgICAgICB8IHJfdGVzdC5mCiAgKzB4Mzc3NCB8IDYyIDczICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBicwogICsweDM3NzYgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmRvY3VtZW50YXRpb24pOgogICsweDM3NzggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uT2JqZWN0LmZpZWxkcyk6CiAgKzB4Mzc3QyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnN0cmluZyAocmVmbGVjdGlvbi5PYmplY3QubmFtZSk6CiAgKzB4Mzc4MCB8IDE4IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM3ODQgfCA0RCA3OSA0NyA2MSA2RCA2NSAyRSA0OSB8IGNoYXJbMjRdICAgIHwgTXlHYW1lLkkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4Mzc4QyB8IDZFIDUwIDYxIDcyIDY1IDZFIDc0IDRFIHwgICAgICAgICAgICAgfCBuUGFyZW50TgogICsweDM3OTQgfCA2MSA2RCA2NSA3MyA3MCA2MSA2MyA2NSB8ICAgICAgICAgICAgIHwgYW1lc3BhY2UKICArMHgzNzlDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgzNzlEIHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCgp0YWJsZSAocmVmbGVjdGlvbi5PYmplY3QpOgogICsweDM3QTAgfCA3OCBGRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkY3OCAoLTEzNikgTG9jOiArMHgzODI4ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzN0E0IHwgNDggMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDggKDcyKSBMb2M6ICsweDM3RUMgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4MzdBOCB8IDNDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDNDICg2MCkgTG9jOiArMHgzN0U0ICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWVsZHNgICh2ZWN0b3IpCiAgKzB4MzdBQyB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG1pbmFsaWduYCAoSW50KQogICsweDM3QjAgfCAzMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzMCAoNDgpIExvYzogKzB4MzdFMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzN0I0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzdCOCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uT2JqZWN0LmRlY2xhcmF0aW9uX2ZpbGUpOgogICsweDM3QjggfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAyMCAoMzIpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzN0JDIHwgMkYgMkYgNjkgNkUgNjMgNkMgNzUgNjQgfCBjaGFyWzMyXSAgICB8IC8vaW5jbHVkICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM3QzQgfCA2NSA1RiA3NCA2NSA3MyA3NCAyRiA2OSB8ICAgICAgICAgICAgIHwgZV90ZXN0L2kKICArMHgzN0NDIHwgNkUgNjMgNkMgNzUgNjQgNjUgNUYgNzQgfCAgICAgICAgICAgICB8IG5jbHVkZV90CiAgKzB4MzdENCB8IDY1IDczIDc0IDMxIDJFIDY2IDYyIDczIHwgICAgICAgICAgICAgfCBlc3QxLmZicwogICsweDM3REMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDM3REQgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzdFMCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZmllbGRzKToKICArMHgzN0U0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDM3RTggfCAxMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAxMCAoMTYpIExvYzogKzB4MzdGOCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKc3RyaW5nIChyZWZsZWN0aW9uLk9iamVjdC5uYW1lKToKICArMHgzN0VDIHwgMDYgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDYgKDYpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzdGMCB8IDU0IDYxIDYyIDZDIDY1IDQxICAgICAgIHwgY2hhcls2XSAgICAgfCBUYWJsZUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzN0Y2IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDM3RjggfCA3NCBGRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkY3NCAoLTE0MCkgTG9jOiArMHgzODg0ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzN0ZDIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzFdICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzdGRCB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgzN0ZFIHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDM4MDAgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4MzgyMCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzODA0IHwgMEMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMEMgKDEyKSBMb2M6ICsweDM4MTAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzODA4IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzgwQyAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzgwQyB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnRhYmxlIChyZWZsZWN0aW9uLlR5cGUpOgogICsweDM4MTAgfCA1OCBGRiBGRiBGRiAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHhGRkZGRkY1OCAoLTE2OCkgTG9jOiArMHgzOEI4ICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzODE0IHwgMDAgMDAgMDAgICAgICAgICAgICAgICAgfCB1aW50OF90WzNdICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzgxNyB8IDBGICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDBGICgxNSkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJhc2VfdHlwZWAgKEJ5dGUpCiAgKzB4MzgxOCB8IDBDIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDBDICgxMikgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGluZGV4YCAoSW50KQogICsweDM4MUMgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBlbGVtZW50X3NpemVgIChVSW50KQoKc3RyaW5nIChyZWZsZWN0aW9uLkZpZWxkLm5hbWUpOgogICsweDM4MjAgfCAwMSAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMSAoMSkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzODI0IHwgNjIgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyWzFdICAgICB8IGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM4MjUgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDM4MjYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbMl0gIHwgLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZ0YWJsZSAocmVmbGVjdGlvbi5PYmplY3QpOgogICsweDM4MjggfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgzODJBIHwgMTggMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxOCAoMjQpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDM4MkMgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDM4MkUgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZmllbGRzYCAoaWQ6IDEpCiAgKzB4MzgzMCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpc19zdHJ1Y3RgIChpZDogMikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDM4MzIgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbWluYWxpZ25gIChpZDogMykKICArMHgzODM0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJ5dGVzaXplYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoSW50KQogICsweDM4MzYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYXR0cmlidXRlc2AgKGlkOiA1KSA8bnVsbD4gKFZlY3RvcikKICArMHgzODM4IHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gIChpZDogNikKICArMHgzODNBIHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChpZDogNykKCnRhYmxlIChyZWZsZWN0aW9uLk9iamVjdCk6CiAgKzB4MzgzQyB8IDE0IDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDE0ICgyMCkgTG9jOiArMHgzODI4ICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM4NDAgfCAyMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAyMCAoMzIpIExvYzogKzB4Mzg2MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzODQ0IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDM4NTggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzODQ4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4Mzg0QyB8IDA4IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA4ICg4KSBMb2M6ICsweDM4NTQgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQogICsweDM4NTAgfCBDNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDBDNCAoMTk2KSBMb2M6ICsweDM5MTQgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKHN0cmluZykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZG9jdW1lbnRhdGlvbik6CiAgKzB4Mzg1NCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZmllbGRzKToKICArMHgzODU4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDM4NUMgfCA0NCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0NCAoNjgpIExvYzogKzB4MzhBMCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKc3RyaW5nIChyZWZsZWN0aW9uLk9iamVjdC5uYW1lKToKICArMHgzODYwIHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4Mzg2NCB8IDREIDc5IDQ3IDYxIDZEIDY1IDJFIDRGIHwgY2hhclsyOF0gICAgfCBNeUdhbWUuTyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzODZDIHwgNzQgNjggNjUgNzIgNEUgNjEgNkQgNjUgfCAgICAgICAgICAgICB8IHRoZXJOYW1lCiAgKzB4Mzg3NCB8IDUzIDcwIDYxIDYzIDY1IDJFIDU0IDYxIHwgICAgICAgICAgICAgfCBTcGFjZS5UYQogICsweDM4N0MgfCA2MiA2QyA2NSA0MiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgYmxlQgogICsweDM4ODAgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDM4ODEgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZ0YWJsZSAocmVmbGVjdGlvbi5GaWVsZCk6CiAgKzB4Mzg4NCB8IDFDIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDM4ODYgfCAxNCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDE0ICgyMCkgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4Mzg4OCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4Mzg4QSB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAoaWQ6IDEpCiAgKzB4Mzg4QyB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpZGAgKGlkOiAyKSA8ZGVmYXVsdHMgdG8gMD4gKFVTaG9ydCkKICArMHgzODhFIHwgMDYgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNiAoNikgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9mZnNldGAgKGlkOiAzKQogICsweDM4OTAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9pbnRlZ2VyYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byAwPiAoTG9uZykKICArMHgzODkyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlZmF1bHRfcmVhbGAgKGlkOiA1KSA8ZGVmYXVsdHMgdG8gMC4wMDAwMDA+IChEb3VibGUpCiAgKzB4Mzg5NCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZXByZWNhdGVkYCAoaWQ6IDYpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzODk2IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHJlcXVpcmVkYCAoaWQ6IDcpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzODk4IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGtleWAgKGlkOiA4KSA8ZGVmYXVsdHMgdG8gMD4gKEJvb2wpCiAgKzB4Mzg5QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDkpIDxudWxsPiAoVmVjdG9yKQogICsweDM4OUMgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiAxMCkKICArMHgzODlFIHwgMDUgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNSAoNSkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG9wdGlvbmFsYCAoaWQ6IDExKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDM4QTAgfCAxQyAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQyAoMjgpIExvYzogKzB4Mzg4NCAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzOEE0IHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzFdICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCiAgKzB4MzhBNSB8IDAxICAgICAgICAgICAgICAgICAgICAgIHwgdWludDhfdCAgICAgfCAweDAxICgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYG9wdGlvbmFsYCAoQm9vbCkKICArMHgzOEE2IHwgMDQgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAwNCAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgb2Zmc2V0YCAoVVNob3J0KQogICsweDM4QTggfCAzMCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzMCAoNDgpIExvYzogKzB4MzhEOCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzOEFDIHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMUMgKDI4KSBMb2M6ICsweDM4QzggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYHR5cGVgICh0YWJsZSkKICArMHgzOEIwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzhCNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRvY3VtZW50YXRpb25gICh2ZWN0b3IpCgp2ZWN0b3IgKHJlZmxlY3Rpb24uRmllbGQuZG9jdW1lbnRhdGlvbik6CiAgKzB4MzhCNCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZ0YWJsZSAocmVmbGVjdGlvbi5UeXBlKToKICArMHgzOEI4IHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHRoaXMgdnRhYmxlCiAgKzB4MzhCQSB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiByZWZlcnJpbmcgdGFibGUKICArMHgzOEJDIHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJhc2VfdHlwZWAgKGlkOiAwKQogICsweDM4QkUgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZWxlbWVudGAgKGlkOiAxKSA8ZGVmYXVsdHMgdG8gMD4gKEJ5dGUpCiAgKzB4MzhDMCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBpbmRleGAgKGlkOiAyKQogICsweDM4QzIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZml4ZWRfbGVuZ3RoYCAoaWQ6IDMpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDM4QzQgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYmFzZV9zaXplYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byA0PiAoVUludCkKICArMHgzOEM2IHwgMEMgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwQyAoMTIpICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGVsZW1lbnRfc2l6ZWAgKGlkOiA1KQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzhDOCB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgzOEI4ICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM4Q0MgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzOENGIHwgMEYgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MEYgKDE1KSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzOEQwIHwgMEUgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMEUgKDE0KSAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgaW5kZXhgIChJbnQpCiAgKzB4MzhENCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGVsZW1lbnRfc2l6ZWAgKFVJbnQpCgpzdHJpbmcgKHJlZmxlY3Rpb24uRmllbGQubmFtZSk6CiAgKzB4MzhEOCB8IDAxIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAxICgxKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHN0cmluZwogICsweDM4REMgfCA2MSAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJbMV0gICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyBsaXRlcmFsCiAgKzB4MzhERCB8IDAwICAgICAgICAgICAgICAgICAgICAgIHwgY2hhciAgICAgICAgfCAweDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIHRlcm1pbmF0b3IKCnBhZGRpbmc6CiAgKzB4MzhERSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDhfdFsyXSAgfCAuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwoKdnRhYmxlIChyZWZsZWN0aW9uLk9iamVjdCk6CiAgKzB4MzhFMCB8IDE0IDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTQgKDIwKSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDM4RTIgfCAyMCAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDIwICgzMikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MzhFNCB8IDA4IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDggKDgpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBuYW1lYCAoaWQ6IDApCiAgKzB4MzhFNiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBmaWVsZHNgIChpZDogMSkKICArMHgzOEU4IHwgMDcgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwNyAoNykgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGlzX3N0cnVjdGAgKGlkOiAyKQogICsweDM4RUEgfCAxMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDEwICgxNikgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbWluYWxpZ25gIChpZDogMykKICArMHgzOEVDIHwgMTQgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAxNCAoMjApICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGJ5dGVzaXplYCAoaWQ6IDQpCiAgKzB4MzhFRSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBhdHRyaWJ1dGVzYCAoaWQ6IDUpIDxudWxsPiAoVmVjdG9yKQogICsweDM4RjAgfCAxOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDE4ICgyNCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKGlkOiA2KQogICsweDM4RjIgfCAxQyAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDFDICgyOCkgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVjbGFyYXRpb25fZmlsZWAgKGlkOiA3KQoKdGFibGUgKHJlZmxlY3Rpb24uT2JqZWN0KToKICArMHgzOEY0IHwgMTQgMDAgMDAgMDAgICAgICAgICAgICAgfCBTT2Zmc2V0MzIgICB8IDB4MDAwMDAwMTQgKDIwKSBMb2M6ICsweDM4RTAgICAgICAgfCBvZmZzZXQgdG8gdnRhYmxlCiAgKzB4MzhGOCB8IDAwIDAwIDAwICAgICAgICAgICAgICAgIHwgdWludDhfdFszXSAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFkZGluZwogICsweDM4RkIgfCAwMSAgICAgICAgICAgICAgICAgICAgICB8IHVpbnQ4X3QgICAgIHwgMHgwMSAoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRhYmxlIGZpZWxkIGBpc19zdHJ1Y3RgIChCb29sKQogICsweDM4RkMgfCA1MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA1MCAoODApIExvYzogKzB4Mzk0QyAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKHN0cmluZykKICArMHgzOTAwIHwgNDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwNDQgKDY4KSBMb2M6ICsweDM5NDQgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGZpZWxkc2AgKHZlY3RvcikKICArMHgzOTA0IHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDQgKDQpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgbWluYWxpZ25gIChJbnQpCiAgKzB4MzkwOCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgIHwgdGFibGUgZmllbGQgYGJ5dGVzaXplYCAoSW50KQogICsweDM5MEMgfCAzNCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDAzNCAoNTIpIExvYzogKzB4Mzk0MCAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZG9jdW1lbnRhdGlvbmAgKHZlY3RvcikKICArMHgzOTEwIHwgMDQgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMDQgKDQpIExvYzogKzB4MzkxNCAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlY2xhcmF0aW9uX2ZpbGVgIChzdHJpbmcpCgpzdHJpbmcgKHJlZmxlY3Rpb24uT2JqZWN0LmRlY2xhcmF0aW9uX2ZpbGUpOgogICsweDM5MTQgfCAyNCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAyNCAoMzYpICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiBzdHJpbmcKICArMHgzOTE4IHwgMkYgMkYgNjkgNkUgNjMgNkMgNzUgNjQgfCBjaGFyWzM2XSAgICB8IC8vaW5jbHVkICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgbGl0ZXJhbAogICsweDM5MjAgfCA2NSA1RiA3NCA2NSA3MyA3NCAyRiA3MyB8ICAgICAgICAgICAgIHwgZV90ZXN0L3MKICArMHgzOTI4IHwgNzUgNjIgMkYgNjkgNkUgNjMgNkMgNzUgfCAgICAgICAgICAgICB8IHViL2luY2x1CiAgKzB4MzkzMCB8IDY0IDY1IDVGIDc0IDY1IDczIDc0IDMyIHwgICAgICAgICAgICAgfCBkZV90ZXN0MgogICsweDM5MzggfCAyRSA2NiA2MiA3MyAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgLmZicwogICsweDM5M0MgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgpwYWRkaW5nOgogICsweDM5M0QgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZG9jdW1lbnRhdGlvbik6CiAgKzB4Mzk0MCB8IDAwIDAwIDAwIDAwICAgICAgICAgICAgIHwgdWludDMyX3QgICAgfCAweDAwMDAwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mIHZlY3RvciAoIyBpdGVtcykKCnZlY3RvciAocmVmbGVjdGlvbi5PYmplY3QuZmllbGRzKToKICArMHgzOTQ0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgdmVjdG9yICgjIGl0ZW1zKQogICsweDM5NDggfCA0MCAwMCAwMCAwMCAgICAgICAgICAgICB8IFVPZmZzZXQzMiAgIHwgMHgwMDAwMDA0MCAoNjQpIExvYzogKzB4Mzk4OCAgICAgICB8IG9mZnNldCB0byB0YWJsZVswXQoKc3RyaW5nIChyZWZsZWN0aW9uLk9iamVjdC5uYW1lKToKICArMHgzOTRDIHwgMUMgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMUMgKDI4KSAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4Mzk1MCB8IDREIDc5IDQ3IDYxIDZEIDY1IDJFIDRGIHwgY2hhclsyOF0gICAgfCBNeUdhbWUuTyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzOTU4IHwgNzQgNjggNjUgNzIgNEUgNjEgNkQgNjUgfCAgICAgICAgICAgICB8IHRoZXJOYW1lCiAgKzB4Mzk2MCB8IDUzIDcwIDYxIDYzIDY1IDJFIDU1IDZFIHwgICAgICAgICAgICAgfCBTcGFjZS5VbgogICsweDM5NjggfCA3NSA3MyA2NSA2NCAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgdXNlZAogICsweDM5NkMgfCAwMCAgICAgICAgICAgICAgICAgICAgICB8IGNoYXIgICAgICAgIHwgMHgwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZyB0ZXJtaW5hdG9yCgp2dGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDM5NkUgfCAxQSAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDFBICgyNikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgdGhpcyB2dGFibGUKICArMHgzOTcwIHwgMTAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50MTZfdCAgICB8IDB4MDAxMCAoMTYpICAgICAgICAgICAgICAgICAgICAgICAgfCBzaXplIG9mIHJlZmVycmluZyB0YWJsZQogICsweDM5NzIgfCAwNCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA0ICg0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgbmFtZWAgKGlkOiAwKQogICsweDM5NzQgfCAwOCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDA4ICg4KSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgdHlwZWAgKGlkOiAxKQogICsweDM5NzYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaWRgIChpZDogMikgPGRlZmF1bHRzIHRvIDA+IChVU2hvcnQpCiAgKzB4Mzk3OCB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBvZmZzZXRgIChpZDogMykgPGRlZmF1bHRzIHRvIDA+IChVU2hvcnQpCiAgKzB4Mzk3QSB8IDAwIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkZWZhdWx0X2ludGVnZXJgIChpZDogNCkgPGRlZmF1bHRzIHRvIDA+IChMb25nKQogICsweDM5N0MgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZGVmYXVsdF9yZWFsYCAoaWQ6IDUpIDxkZWZhdWx0cyB0byAwLjAwMDAwMD4gKERvdWJsZSkKICArMHgzOTdFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGRlcHJlY2F0ZWRgIChpZDogNikgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDM5ODAgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgcmVxdWlyZWRgIChpZDogNykgPGRlZmF1bHRzIHRvIDA+IChCb29sKQogICsweDM5ODIgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBga2V5YCAoaWQ6IDgpIDxkZWZhdWx0cyB0byAwPiAoQm9vbCkKICArMHgzOTg0IHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGF0dHJpYnV0ZXNgIChpZDogOSkgPG51bGw+IChWZWN0b3IpCiAgKzB4Mzk4NiB8IDBDIDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMEMgKDEyKSAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAoaWQ6IDEwKQoKdGFibGUgKHJlZmxlY3Rpb24uRmllbGQpOgogICsweDM5ODggfCAxQSAwMCAwMCAwMCAgICAgICAgICAgICB8IFNPZmZzZXQzMiAgIHwgMHgwMDAwMDAxQSAoMjYpIExvYzogKzB4Mzk2RSAgICAgICB8IG9mZnNldCB0byB2dGFibGUKICArMHgzOThDIHwgMkMgMDAgMDAgMDAgICAgICAgICAgICAgfCBVT2Zmc2V0MzIgICB8IDB4MDAwMDAwMkMgKDQ0KSBMb2M6ICsweDM5QjggICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYG5hbWVgIChzdHJpbmcpCiAgKzB4Mzk5MCB8IDFDIDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDFDICgyOCkgTG9jOiArMHgzOUFDICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGB0eXBlYCAodGFibGUpCiAgKzB4Mzk5NCB8IDA0IDAwIDAwIDAwICAgICAgICAgICAgIHwgVU9mZnNldDMyICAgfCAweDAwMDAwMDA0ICg0KSBMb2M6ICsweDM5OTggICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBkb2N1bWVudGF0aW9uYCAodmVjdG9yKQoKdmVjdG9yIChyZWZsZWN0aW9uLkZpZWxkLmRvY3VtZW50YXRpb24pOgogICsweDM5OTggfCAwMCAwMCAwMCAwMCAgICAgICAgICAgICB8IHVpbnQzMl90ICAgIHwgMHgwMDAwMDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiB2ZWN0b3IgKCMgaXRlbXMpCgp2dGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4Mzk5QyB8IDEwIDAwICAgICAgICAgICAgICAgICAgIHwgdWludDE2X3QgICAgfCAweDAwMTAgKDE2KSAgICAgICAgICAgICAgICAgICAgICAgIHwgc2l6ZSBvZiB0aGlzIHZ0YWJsZQogICsweDM5OUUgfCAwQyAwMCAgICAgICAgICAgICAgICAgICB8IHVpbnQxNl90ICAgIHwgMHgwMDBDICgxMikgICAgICAgICAgICAgICAgICAgICAgICB8IHNpemUgb2YgcmVmZXJyaW5nIHRhYmxlCiAgKzB4MzlBMCB8IDA3IDAwICAgICAgICAgICAgICAgICAgIHwgVk9mZnNldDE2ICAgfCAweDAwMDcgKDcpICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2Zmc2V0IHRvIGZpZWxkIGBiYXNlX3R5cGVgIChpZDogMCkKICArMHgzOUEyIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwMCAoMCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGVsZW1lbnRgIChpZDogMSkgPGRlZmF1bHRzIHRvIDA+IChCeXRlKQogICsweDM5QTQgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgaW5kZXhgIChpZDogMikgPGRlZmF1bHRzIHRvIC0xPiAoSW50KQogICsweDM5QTYgfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgZml4ZWRfbGVuZ3RoYCAoaWQ6IDMpIDxkZWZhdWx0cyB0byAwPiAoVVNob3J0KQogICsweDM5QTggfCAwMCAwMCAgICAgICAgICAgICAgICAgICB8IFZPZmZzZXQxNiAgIHwgMHgwMDAwICgwKSAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mZnNldCB0byBmaWVsZCBgYmFzZV9zaXplYCAoaWQ6IDQpIDxkZWZhdWx0cyB0byA0PiAoVUludCkKICArMHgzOUFBIHwgMDggMDAgICAgICAgICAgICAgICAgICAgfCBWT2Zmc2V0MTYgICB8IDB4MDAwOCAoOCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZmZzZXQgdG8gZmllbGQgYGVsZW1lbnRfc2l6ZWAgKGlkOiA1KQoKdGFibGUgKHJlZmxlY3Rpb24uVHlwZSk6CiAgKzB4MzlBQyB8IDEwIDAwIDAwIDAwICAgICAgICAgICAgIHwgU09mZnNldDMyICAgfCAweDAwMDAwMDEwICgxNikgTG9jOiArMHgzOTlDICAgICAgIHwgb2Zmc2V0IHRvIHZ0YWJsZQogICsweDM5QjAgfCAwMCAwMCAwMCAgICAgICAgICAgICAgICB8IHVpbnQ4X3RbM10gIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhZGRpbmcKICArMHgzOUIzIHwgMDcgICAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90ICAgICB8IDB4MDcgKDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgYmFzZV90eXBlYCAoQnl0ZSkKICArMHgzOUI0IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCB0YWJsZSBmaWVsZCBgZWxlbWVudF9zaXplYCAoVUludCkKCnN0cmluZyAocmVmbGVjdGlvbi5GaWVsZC5uYW1lKToKICArMHgzOUI4IHwgMDEgMDAgMDAgMDAgICAgICAgICAgICAgfCB1aW50MzJfdCAgICB8IDB4MDAwMDAwMDEgKDEpICAgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2Ygc3RyaW5nCiAgKzB4MzlCQyB8IDYxICAgICAgICAgICAgICAgICAgICAgIHwgY2hhclsxXSAgICAgfCBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nIGxpdGVyYWwKICArMHgzOUJEIHwgMDAgICAgICAgICAgICAgICAgICAgICAgfCBjaGFyICAgICAgICB8IDB4MDAgKDApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgdGVybWluYXRvcgoKcGFkZGluZzoKICArMHgzOUJFIHwgMDAgMDAgICAgICAgICAgICAgICAgICAgfCB1aW50OF90WzJdICB8IC4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYWRkaW5nCg==