IyBUaGlzIGlzIGEgZnJvemVuIHN0YXRlIGZpbGUgZ2VuZXJhdGVkIGJ5IEdOVSBNNCAxLjQuMTYKVjEKUTEsMQpbXQpUMTYsNDAwCl9BU19FWElUX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRV9TSEVMTF9GTihbYXNfZm5fc2V0X3N0YXR1c10sCiAgW0FTX0ZVTkNUSU9OX0RFU0NSSUJFKFthc19mbl9zZXRfc3RhdHVzXSwgW1NUQVRVU10sCiAgICBbU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLl0pXSwgWyAgcmV0dXJuICRbXTFdKUFTX1JFUVVJUkVfU0hFTExfRk4oW2FzX2ZuX2V4aXRdLAogIFtBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fZXhpdF0sIFtTVEFUVVNdLAogICAgW0V4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC5dKV0sClsgIHNldCArZQogIGFzX2ZuX3NldF9zdGF0dXMgJFsxXQogIGV4aXQgJFsxXV0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMiw2OQpfbTRfbGlzdF9jbXBtNF9pZihbJDFdLCBbXSwgWzBtNF9pZ25vcmVdLCBbJDJdLCBbMF0sIFttNF91bnF1b3RlXSwgWyQybTRfaWdub3JlXSkKRjEyLDkKbTRfZGVidWdmaWxlZGVidWdmaWxlClQxNywwCkFTX01FU1NBR0VfTE9HX0ZEClQ4LDAKX200X3dhcm4KVDI3LDMwCm00X2xvY2F0aW9uKF9BU19NRV9QUkVQQVJFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTA3OApUMjAsMjkKbTRfbG9jYXRpb24oQVNfRVhJVCkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjU0NApUMjEsNDc5Cl9BU19WQVJfQVJJVEhfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fYXJpdGhdLCBbQVJHLi4uXSwKW1BlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbgp0aGUgZ2xvYmFsICRhc192YWwuICBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuClRoZSBhcmd1bWVudHMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuXSkKQVNfSUYoW19BU19SVU4oWyJBU19FU0NBUEUobTRfcXVvdGUoX0FTX1ZBUl9BUklUSF9XT1JLUykpIl0pXSwKW2V2YWwgJ2FzX2ZuX2FyaXRoICgpCiAgewogICAgYXNfdmFsPSQoKCAkW10qICkpCiAgfSddLApbYXNfZm5fYXJpdGggKCkKICB7CiAgICBhc192YWw9YGV4cHIgIiRbXUAiIHx8IHRlc3QgJD8gLWVxIDFgCiAgfV0pICMgYXNfZm5fYXJpdGgKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNSwyMTgKbTRfbWFwX2FyZ3Nfc2VwbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCiAgICAgICBbJCNdLCBbMV0sIFtdLAogICAgICAgWyQjXSwgWzJdLCBbXSwKICAgICAgIFskI10sIFszXSwgW10sCiAgICAgICBbJCNdLCBbNF0sIFskMVskNF0kMltdXSwKICAgICAgIFskMVskNF0kMltdX200X2ZvcmVhY2goWyQzW10kMV0sIFskMl0sIG00X3NoaWZ0MygkQCkpXSkKVDIyLDMwCm00X2xvY2F0aW9uKEFTX1RFU1RfWCkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjEwNDYKVDgsMTUwCm00X2RlZnVubTRfZGVmaW5lKFttNF9sb2NhdGlvbigkMSldLCBtNF9sb2NhdGlvbiltNF9kZWZhdWx0KFskM10sIFttNF9kZWZpbmVdKShbJDFdLAogIFtfbTRfZGVmdW5fcHJvKF1tNF9kcXVvdGUoJFswXSlbKSQyW11fbTRfZGVmdW5fZXBpKF1tNF9kcXVvdGUoJFswXSlbKV0pClQxOCw1MApfbTRfc2V0X2NvbnRlbnRzXzFfbTRfc3RhY2tfcmV2ZXJzZShbX200X3NldChbJDFdKV0sIFtfbTRfc2V0XygkMSldKQpUMTgsOTQKX200X3NldF9jb250ZW50c18yX200X3N0YWNrX3JldmVyc2UoW19tNF9zZXRfKCQxKV0sIFtfbTRfc2V0KFskMV0pXSwKICBbJDJbXV9tNF9kZWZuKFtfbTRfc2V0XygkMSldKSQzXSwgWyQ0W11dKQpUOCw4MQptNF9jaG9tcG00X2Zvcm1hdChbWyUuKnNdXSwgbTRfaW5kZXgobTRfdHJhbnNsaXQoW1skMV1dLCBbCi8uXSwgWy8gIF0pWy4vLl0sIFsvLl0pLCBbJDFdKQpUMTAsNTIKX0FTX1RSX0NQUF9BU19MSVRFUkFMX0lGKFskMV0sIFskMF9MSVRFUkFMXSwgWyQwX0lORElSXSkoWyQxXSkKVDE2LDU5MApfQVNfVEVTVF9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKWlmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICBhc190ZXN0X3g9J3Rlc3QgLXgnCmVsc2UKICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgIGFzX2xzX0xfb3B0aW9uPUwKICBlbHNlCiAgICBhc19sc19MX29wdGlvbj0KICBmaQogIGFzX3Rlc3RfeD0nCiAgICBldmFsIHNoIC1jICdcJycKICAgICAgaWYgdGVzdCAtZCAiJFtdMSI7IHRoZW4KCXRlc3QgLWQgIiRbXTEvLiI7CiAgICAgIGVsc2UKCWNhc2UgJFtdMSBpbiBAJTpAKAoJLSopc2V0ICIuLyRbXTEiOzsKCWVzYWM7CgljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJFtdMSIgMj4vZGV2L251bGxgIGluIEAlOkAoKAoJPz8/W1tzeF1dKik6OzsqKWZhbHNlOztlc2FjO2ZpCiAgICAnXCcnIHNoCiAgJwpmaQpkbmwgYXNfZXhlY3V0YWJsZV9wIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBMaWJ0b29sCmRubCAxLjUuMjIsIGJ1dCBpdCBzaG91bGQgZ28gYXdheSBhdCBzb21lIHBvaW50Lgphc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeApbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE4LDMwMwpfQVNfRUNIT19OX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pRUNIT19DPSBFQ0hPX049IEVDSE9fVD0KY2FzZSBgZWNobyAtbiB4YCBpbiBAJTpAKCgoKCgKLW4qKQogIGNhc2UgYGVjaG8gJ3h5XGMnYCBpbgogICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgogIHh5KSAgRUNIT19DPSdcYyc7OwogICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlYIDYuMWAgPiAvZGV2L251bGwKICAgICAgIEVDSE9fVD0nCSc7OwogIGVzYWM7OwoqKQogIEVDSE9fTj0nLW4nOzsKZXNhYwpbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEzLDgyCm00X2RxdW90ZV9lbHRtNF9pZihbJCNdLCBbMF0sIFtdLAogICAgICAgWyQjXSwgWzFdLCBbW1skMV1dXSwKICAgICAgIFtbWyQxXV0sJDAobTRfc2hpZnQoJEApKV0pClQyNCwzMgptNF9kZWZhdWx0X25ibGFua19xdW90ZWRtNF9pZmJsYW5rKFskMV0sIFtbJDJdXSwgW1skMV1dKQpUOSw1NwptNF9hcHBlbmRtNF9kZWZpbmUoWyQxXSwgbTRfaWZkZWYoWyQxXSwgW19tNF9kZWZuKFskMV0pWyQzXV0pWyQyXSkKVDExLDM3Cm00X2xpc3RfY21wXyQwX3JhdyhtNF9kcXVvdGUoJDEpLCBtNF9kcXVvdGUoJDIpKQpUNyw4NApfbTRfZm9yJDRbJDFdJDVbXW00X2lmKFskMV0sIFskMl0sIFtdLAoJCSBbJDAobTRfZXZhbChbJDEgKyAkM10pLCBbJDJdLCBbJDNdLCBbJDRdLCBbJDVdKV0pClQxMiw3OAptNF9mb3JlYWNoX3dtNF9wdXNoZGVmKFskMV0pbTRfbWFwX2FyZ3NfdyhbJDJdLAogIFttNF9kZWZpbmUoWyQxXSxdLCBbKSQzXSltNF9wb3BkZWYoWyQxXSkKVDUsMTEzCkFTX0lGX200X2RlZnVuX3BybyhbJDBdKWlmICQxOyB0aGVuIDoKICAkMgptNF9tYXBfYXJnc19wYWlyKFtfJDBdLCBbXyQwX0VMU0VdLCBtNF9zaGlmdDIoJEApKWZpW11bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDExLDE2NQpfbTRfZHVtcGRlZm00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X2J1aWx0aW4oW2R1bXBkZWZdLCBbJDFdKV0sCiAgICAgICBbbTRfbWFwX2FyZ3Nfc2VwKFttNF9idWlsdGluKFtkdW1wZGVmXSxdLCBbKV0sIFtdLCAkQCldKQpUMjUsMzAKbTRfbG9jYXRpb24oQVNfVkFSX0FSSVRIKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTg5MApUMTQsMTMxCm00X3NldF9hZGRfYWxsbTRfZGVmaW5lKFtfbTRfc2V0X3NpemUoJDEpXSwgbTRfZXZhbChtNF9zZXRfc2l6ZShbJDFdKQogICsgbTRfbGVuKG00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwgW18kMF9jaGVja10sIFtfJDBdKShbJDFdLCAkQCkpKSkKRjcsNAptNF9pbmNyaW5jcgpGOCw0Cl9tNF9kZWZuZGVmbgpUMTMsMTI0Cl9tNF9kZWZ1bl9wcm9tNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFtdLCBbX200X2RlZnVuX3Byb19vdXRlcihbJDFdKV0pbTRfZXhwYW5zaW9uX3N0YWNrX3B1c2goWyQxXSltNF9wdXNoZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0pClQxNSwxMTgKQVNfVkFSX1RFU1RfU0VUQVNfTElURVJBTF9JRihbJDFdLAoJICAgICAgIFt0ZXN0ICIkeyQxK3NldH0iID0gc2V0XSwKCSAgICAgICBbeyBhc192YXI9JDE7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH1dKQpUNywxMTEKQVNfRVhJVF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfRVhJVF9QUkVQQVJFXSlbXWFzX2ZuX2V4aXQgbTRfaWZ2YWwoWyQxXSwgWyQxXSwgWyRdWz9dKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMjcsMzAKbTRfbG9jYXRpb24oX0FTX0NSX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxNzA0ClQxMywxNzMKbTRfZGVmdW5faW5pdG00X2RlZmluZShbJDFdLCBbJDNdKW00X2RlZnVuKFskMV0sCiAgIFskMltdX200X3BvcGRlZihdbTRfZHF1b3RlKCRbMF0pWyltNF9pbmRpcihdbTRfZHF1b3RlKCRbMF0pZG5sClttNF9pZihdbTRfZHF1b3RlKCRbI10pWywgWzBdLCBbXSwgXW00X2RxdW90ZShbLCRdQClbKSldLCBbbTRfcHVzaGRlZl0pClQxMiw2MgpfQVNfRUNIT19MT0dfQVNfRUNITyhbJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkMV0sIEFTX01FU1NBR0VfTE9HX0ZEKQpUMTIsMTMxCl9BU19FQ0hPX0xPR19tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfTElORU5PX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNyw2MDQKX0FTX1NIRUxMX0ZOX1dPUkthc19mbl9yZXR1cm4gKCkgeyAoZXhpdCBbJF0xKTsgfQphc19mbl9zdWNjZXNzICgpIHsgYXNfZm5fcmV0dXJuIDA7IH0KYXNfZm5fZmFpbHVyZSAoKSB7IGFzX2ZuX3JldHVybiAxOyB9CmFzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0KYXNfZm5fcmV0X2ZhaWx1cmUgKCkgeyByZXR1cm4gMTsgfQoKZXhpdGNvZGU9MAphc19mbl9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9zdWNjZXNzIGZhaWxlZC47IH0KYXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVyZSBzdWNjZWVkZWQuOyB9CmFzX2ZuX3JldF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfc3VjY2VzcyBmYWlsZWQuOyB9CmFzX2ZuX3JldF9mYWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfZmFpbHVyZSBzdWNjZWVkZWQuOyB9CkFTX0lGKFsoIHNldCB4OyBhc19mbl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9ICJbJF0xIiApXSwgW10sCiAgICAgIFtleGl0Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3ZXJlIG5vdCBzYXZlZC5dKQp0ZXN0IHgkZXhpdGNvZGUgPSB4MFtdClQyMSw5NwptNF9jb3B5cmlnaHRfY29uZGVuc2VtNF90ZXh0X3dyYXAobTRfYnBhdHN1YnN0KG00X2ZsYXR0ZW4oW1skMV1dKSwKWyhDKVstCSAsMC05XSpcKFsxLTldWzAtOV1bMC05XVswLTldXCldLCBbKEMpIFwxXSkpClQxNywyMDMKbTRfY3Jfbm90X0xldHRlcnMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC4vMDEyMzQ1Njc4OTo7PD0+P0BbXF1eX2B7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LQpUMjEsMQpfbTRfZGl2ZXJ0KE00U0gtSU5JVCk2ClQxMiw2NgptNF9yZV9zdHJpbmdbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XSoKVDE2LDUKX200X2RpdmVydChHUk9XKTEwMDAwClQxOCw3MgptNF92ZXJzaW9uX2NvbXBhcmVfbTRfbGlzdF9jbXBfcmF3KF9tNF92ZXJzaW9uX3VubGV0dGVyKFskMV0pLCBfbTRfdmVyc2lvbl91bmxldHRlcihbJDJdKSkKVDMxLDMwCm00X2xvY2F0aW9uKF9BU19MSU5FTk9fUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjExMjMKVDI1LDEKX200X2RpdmVydChNNFNILVNBTklUSVpFKTQKVDEwLDEyMApfQVNfRVNDQVBFbTRfaWYobTRfaW5kZXgobTRfdHJhbnNsaXQoW1skMV1dLCBbJDNdLCBbJDIkMiQyJDJdKSwgWyQyXSksIFstMV0sCiAgICAgICBbJDBfXSwgW200X2JwYXRzdWJzdF0pKFskMV0sIFtbJDIkM11dLCBbXFxcJl0pClQyOSwyOQptNF9sb2NhdGlvbihfQVNfRVhJVF9QUkVQQVJFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6NTI3ClQxNSwxNjUKX200X3NldF9hZGRfYWxsbTRfaWYoWyQjXSwgWzJdLCBbXSwKICAgICAgIFttNF9pZmRlZihbX200X3NldChbJDFdLCQzKV0sIFtdLAoJCSBbbTRfZGVmaW5lKFtfbTRfc2V0KFskMV0sJDMpXSwgWzFdKW00X3B1c2hkZWYoW19tNF9zZXQoWyQxXSldLAoJICAgWyQzXSktXSkkMChbJDFdLCBtNF9zaGlmdDIoJEApKV0pClQxNyw3NzQKX0FTX0VSUk9SX1BSRVBBUkVBU19SRVFVSVJFX1NIRUxMX0ZOKFthc19mbl9lcnJvcl0sCiAgW0FTX0ZVTkNUSU9OX0RFU0NSSUJFKFthc19mbl9lcnJvcl0sIFtFUlJPUl1tNF9pZnZhbChBU19NRVNTQUdFX0xPR19GRCwKICAgICAgW1sgW1tMSU5FTk8gTE9HX0ZEXV1dXSksCiAgICBbT3V0cHV0ICJgYmFzZW5hbWUgQFN8QDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci5dCm00X2lmdmFsKEFTX01FU1NBR0VfTE9HX0ZELAogICAgW1tJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsCiAgICAgIHJlZmVyZW5jaW5nIExJTkVOTy5dXSkKICAgIFtUaGVuIGV4aXQgdGhlIHNjcmlwdCB3aXRoIHN0YXR1cyAkPywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLl0pXSwKWyAgYXNfc3RhdHVzPSQ/OyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKbTRfaWZ2YWwoQVNfTUVTU0FHRV9MT0dfRkQsClttNF9wdXNoZGVmKFtBU19NRVNTQUdFX0xPR19GRF0sIFskWzNdXSlkbmwKICBpZiB0ZXN0ICIkWzNdIjsgdGhlbgogICAgQVNfTElORU5PX1BVU0goWyRbMl1dKQogICAgX0FTX0VDSE9fTE9HKFtlcnJvcjogJFsxXV0pCiAgZmkKbTRfZGVmaW5lKFtBU19NRVNTQUdFX0xPR19GRF0pXSwgW200X3B1c2hkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSldKWRubAogIEFTX01FU1NBR0UoW2Vycm9yOiAkWzFdXSwgWzJdKQpfbTRfcG9wZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pZG5sCiAgQVNfRVhJVChbJGFzX3N0YXR1c10pXSkKVDgsNAptNF9xdW90ZVskKl0KVDE1LDQKbTRfUEFDS0FHRV9ZRUFSMjAwOQpUMTAsMjExCm00X2R1bXBkZWZtNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRdKV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbbTRfZXJycHJpbnRuKAogIFskMToJXW00X2RxdW90ZShfbTRfZGVmbihbJDFdKSkpXSwgW200X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAogICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pClQxNSwxOTMKbTRfY3Jfbm90X2FsbnVtAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywuLzo7PD0+P0BbXF1eX2B7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LQpUNiwyMQpfQVNfSUZlbGlmICQxOyB0aGVuIDoKICAkMgoKVDEzLDE1CkFTX1ZBUl9QT1BERUZtNF9wb3BkZWYoWyQxXSkKVDIzLDI5Cm00X2xvY2F0aW9uKEFTX1JFUVVJUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDozNDYKRjYsMwptNF9sZW5sZW4KVDE0LDQyCm00X2RpdmVydF90ZXh0bTRfZGl2ZXJ0X3B1c2goWyQxXSkkMgptNF9kaXZlcnRfcG9wKFskMV0pClQ4LDg5CkFTX1VOU0VUX200X2RlZnVuX3BybyhbJDBdKXsgQVNfTElURVJBTF9JRihbJDFdLCBbXSwgW2V2YWwgXSkkMT07IHVuc2V0ICQxO31bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEwLDExMApBU19WQVJfR0VUQVNfTElURVJBTF9JRihbJDFdLAoJICAgICAgIFskJDFdLAogIFtgZXZhbCAnYXNfdmFsPSR7J19BU19FU0NBUEUoW1skMV1dLCBbYF0sIFtcXSknfTtBU19FQ0hPKFsiJGFzX3ZhbCJdKSdgXSkKVDI5LDMwCm00X2xvY2F0aW9uKF9BU19MTl9TX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMTc1CkYxMiw5Cm00X2RlYnVnbW9kZWRlYnVnbW9kZQpUMTAsMjgwCm00X3NldF9hZGRtNF9pZmRlZihbX200X3NldChbJDFdLCQyKV0sCgkgIFttNF9pZihtNF9pbmRpcihbX200X3NldChbJDFdLCQyKV0pLCBbMF0sCgkJIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMildLAoJCQkgICAgWzFdKV9tNF9zZXRfc2l6ZShbJDFdLCBbbTRfaW5jcl0pJDNdLCBbJDRdKV0sCgkgIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMildLAoJCSAgICAgWzFdKW00X3B1c2hkZWYoW19tNF9zZXQoWyQxXSldLAoJCQkJICAgIFskMl0pX200X3NldF9zaXplKFskMV0sIFttNF9pbmNyXSkkM10pClQxNCwxMjIKbTRfYXBwZW5kX3VuaXFtNF9pZnZhbChbJDNdLCBbbTRfaWYobTRfaW5kZXgoWyQyXSwgWyQzXSksIFstMV0sIFtdLAoJCSAgICAgICBbbTRfd2Fybihbc3ludGF4XSwKCQkJCVskMDogYCQyJyBjb250YWlucyBgJDMnXSldKV0pXyQwKCRAKQpUMTUsMApfbTRfZGl2ZXJ0X2R1bXAKVDI3LDMwCm00X2xvY2F0aW9uKEFTX1ZBUl9QVVNIREVGKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTk3MQpUMjAsMjAKbTRfUEFDS0FHRV9CVUdSRVBPUlRidWctYXV0b2NvbmZAZ251Lm9yZwpUOCw2NgptNF9pZnNldG00X2lmZGVmKFskMV0sCgkgIFttNF9pZnZhbChfbTRfZGVmbihbJDFdKSwgWyQyXSwgWyQzXSldLAoJICBbJDNdKQpUNywxODIKbTRfY29uZG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKICAgICAgIFskI10sIFsxXSwgWyQxXSwKICAgICAgIG00X2V2YWwoWyQjICUgM10pLCBbMl0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYW4gYXJndW1lbnRdKV0sCiAgICAgICBbXyQwKCRAKV0pClQ5LDEzCkFTX0VDSE9fTiRhc19lY2hvX24gJDEKVDksMTI5CkFTX0VDSE9fTl9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfRUNIT19QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTIsMzAKbTRfZXN5c2NtZF9zbTRfY2hvbXBfYWxsKG00X2VzeXNjbWQoWyQxXSkpClQ2LDI2NApBU19GT1JfbTRfZGVmdW5fcHJvKFskMF0pbTRfcHVzaGRlZihbJDFdLCBtNF9pZihbJDNdLCBbXSwgW1skJDJdXSwgbTRfdHJhbnNsaXQoWyQzXSwgW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OV1bJSs9OiwuLy1dKSwgW10sIFtbJDNdXSwgW1skJDJdXSkpZm9yICQyW11tNF9pZnZhbChbJDNdLCBbIGluICQzXSkKZG8gOgogICQ0CmRvbmVbXV9tNF9wb3BkZWYoWyQxXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE0LDI3NgpfQVNfQ1JfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSkjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCmFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jwphc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCmFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCltdX200X2RlZnVuX2VwaShbJDBdKQpUMTUsMTQ4Cl9tNF9hcHBlbmRfdW5pcW00X2lmZGVmKFskMV0sCgkgIFttNF9pZihtNF9pbmRleChbJDNdX200X2RlZm4oWyQxXSlbJDNdLCBbJDMkMiQzXSksIFstMV0sCgkJIFttNF9hcHBlbmQoWyQxXSwgWyQyXSwgWyQzXSkkNF0sIFskNV0pXSwKCSAgW200X2RlZmluZShbJDFdLCBbJDJdKSQ0XSkKVDMyLDMwCm00X2xvY2F0aW9uKF9BU19NS0RJUl9QX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMjQ4ClQyMCwyMDEKX0FTX0JBU0VOQU1FX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0VYUFJfUFJFUEFSRV0paWYgKGJhc2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAiID0gIlgvIjsgdGhlbgogIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCmVsc2UKICBhc19iYXNlbmFtZT1mYWxzZQpmaQpbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE3LDI3MgpfQVNfSURFTlRJRklFUl9JRm00X2NvbmQoW1skMV1dLCBbXSwgW10sCgkgW200X2V2YWwobTRfbGVuKG00X3RyYW5zbGl0KFtbJDFdXSwgXVtbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XV1bKSkgPiAwKV0sIFsxXSwgW10sCgkgW200X2xlbihtNF90cmFuc2xpdChtNF9mb3JtYXQoW1slLjFzXV0sIFskMV0pLCBdW1thYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX11dWykpXSwgWzBdLCBbLV0pClQxMSw4MwpBU19CQVNFTkFNRSRhc19iYXNlbmFtZSAtLSAkMSB8fApfQVNfQkFTRU5BTUVfRVhQUihbJDFdKSAyPi9kZXYvbnVsbCB8fApfQVNfQkFTRU5BTUVfU0VEKFskMV0pClQxMSwxMjQKQVNfQkFTRU5BTUVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQ5LDMxCl9tNF9hcHBseW00X2lmKFskMl0sIFtdLCBbXSwgWyQxKCQyKVtdXSkKVDEzLDg0Cl9BU19RVU9URV9PTERtNF93YXJuKFtvYnNvbGV0ZV0sCiAgIFtiYWNrIHF1b3RlcyBhbmQgZG91YmxlIHF1b3RlcyBtdXN0IG5vdCBiZSBlc2NhcGVkIGluOiAkMV0pJDEKVDEwLDIKbTRfdW5xdW90ZSQqClQ5LDcyCm00X21hcGFsbG00X2lmKFskMl0sIFtdLCBbXSwKICAgICAgIFtfbTRfZm9yZWFjaChbbTRfYXBwbHkoWyQxXSxdLCBbKV0sIFtdLCAkMildKQpGMTQsNgpfbTRfZGl2ZXJ0X3Jhd2RpdmVydApUNiwxMjIKbTRfY2RybTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKICAgICAgIFskI10sIDEsIFtdLAogICAgICAgW200X2RxdW90ZShtNF9zaGlmdCgkQCkpXSkKVDE2LDI3Cl9BU19RVU9URV9NT0RFUk5fQVNfRVNDQVBFKFskMV0sIFtgXSwgWyIiXSkKVDE0LDQxCl9tNF9saXN0X2NtcF8xX200X2xpc3RfY21wXzIoWyQyXSwgW200X3NoaWZ0MigkQCldLCAkMSkKVDE0LDk1Cl9tNF9saXN0X2NtcF8yX200X2xpc3RfY21wKFskMSQzXSwgbTRfY21wKFskMyswXSwgWyQxKzBdKSkoCiAgW19tNF9saXN0X2NtcF8xKG00X2RxdW90ZShtNF9zaGlmdDMoJEApKSwgJDIpXSkKVDExLDUzCl9tNF9qb2luYWxsbTRfaWYoWyQjXSwgWzJdLCBbXSwgW1skMSQzXSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKVDE2LDEzNQpfQVNfRElSTkFNRV9FWFBSJGFzX2V4cHIgWFtdJDEgOiAnWFwoLipbW14vXV1cKS8vKltbXi9dW14vXV0qLyokJyBcfCBcCgkgWFtdJDEgOiAnWFwoLy9cKVtbXi9dXScgXHwgXAoJIFhbXSQxIDogJ1hcKC8vXCkkJyBcfCBcCgkgWFtdJDEgOiAnWFwoL1wpJyBcfCAuClQxNiwxMjkKX0FTX0RJUk5BTUVfRVhQUl9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfRVhQUl9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUOSwxNTgKbTRfcG9wZGVmbTRfaWYoWyQjXSwgWzBdLCBbWyQwXV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X3BvcGRlZihbJDFdKV0sCgkJCSAgICBbbTRfZmF0YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQxXSldKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDIxLDI5Cm00X2xvY2F0aW9uKEFTX1VOU0VUKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6NjMwClQxMiwxNTIKX200X3NldF9kdW1wbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbWyQyXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKAoJCVtfbTRfc2V0KFskMV0pXSlbKV0sIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdLCBbJDIkM10pXSkKVDE3LDE1NgpBU19TSEVMTF9TQU5JVElaRV9BU19TSEVMTF9TQU5JVElaRQptNF9wcm92aWRlX2lmKFtBU19JTklUXSwgW10sClttNF9wcm92aWRlKFtBU19JTklUXSkKX0FTX0RFVEVDVF9SRVFVSVJFRChbX0FTX1NIRUxMX0ZOX1dPUktdKQpfQVNfREVURUNUX0JFVFRFUl9TSEVMTApfQVNfVU5TRVRfUFJFUEFSRQpdKQpUMTIsMzIKbTRfbWFrZV9saXN0bTRfam9pbihbLApdLCBtNF9kcXVvdGVfZWx0KCRAKSkKVDMxLDI5Cm00X2xvY2F0aW9uKF9BU19FQ0hPX05fUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00Ojc2NgpUMjcsMjkKbTRfbG9jYXRpb24oQVNfTElORU5PX1BVU0gpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo4NTQKVDExLDQ5OApfQVNfTUtESVJfUGNhc2UgJGFzX2RpciBpbiAjKAogIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsKICBlc2FjCiAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7CiAgICBhc19kaXJzPQogICAgd2hpbGUgOjsgZG8KICAgICAgY2FzZSAkYXNfZGlyIGluICMoCiAgICAgICpcJyopIGFzX3FkaXI9YEFTX0VDSE8oWyIkYXNfZGlyIl0pIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCiAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7CiAgICAgIGVzYWMKICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKICAgICAgYXNfZGlyPWBBU19ESVJOQU1FKCIkYXNfZGlyIilgCiAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCiAgICBkb25lCiAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCiAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBBU19FUlJPUihbY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2Rpcl0pCgpUMzksMzAKbTRfbG9jYXRpb24oX0FTX1BBVEhfU0VQQVJBVE9SX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMjY3ClQ1LDczCm00X2RvbTRfaWYoWyQjXSwgMCwgW10sCiAgICAgICBbJCNdLCAxLCBbJDFbXV0sCiAgICAgICBbJDFbXSQwKG00X3NoaWZ0KCRAKSldKQpGOSw2Cm00X3N1YnN0cnN1YnN0cgpUMzMsMjkKbTRfbG9jYXRpb24oX0FTX0RFVEVDVF9TVUdHRVNURUQpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxNjgKVDE4LDgKbTRfUEFDS0FHRV9UQVJOQU1FYXV0b2NvbmYKVDEzLDI1MgptNF9zZXRfcmVtb3ZlbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFtfbTRfc2V0X3NpemUoWyQxXSwKICAgIFttNF9kZWNyXSltNF9pZihfbTRfZGVmbihbX200X3NldChbJDFdKV0pLCBbJDJdLAoJCSAgICBbX200X3BvcGRlZihbX200X3NldChbJDFdLCQyKV0sIFtfbTRfc2V0KFskMV0pXSldLAoJCSAgICBbbTRfZGVmaW5lKFtfbTRfc2V0X2NsZWFudXAoJDEpXSltNF9kZWZpbmUoCgkJICAgICAgW19tNF9zZXQoWyQxXSwkMildLCBbMF0pXSkkM10sIFskNF0pClQxOSwxMDkKX200X2RlZnVuX2VwaV9vdXRlcl9tNF9wb3BkZWYoW19tNF9kaXZlcnRfZHVtcF0sIFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgW19tNF9kaXZlcnRpbmddKW00X2RpdmVydF9wb3AoW0dST1ddKW00X3VuZGl2ZXJ0KFtHUk9XXSkKVDI3LDMwCm00X2xvY2F0aW9uKF9BU19UUl9QUkVQQVJFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTc4NwpUMTUsNTgKbTRfZGl2ZXJ0X3N0YWNrbTRfc3RhY2tfZm9yZWFjaF9zZXBfbGlmbyhbX200X2RpdmVydF9zdGFja10sIFtdLCBbXSwgWwpdKQpUMTcsMzEKbTRfZGVmYXVsdF9xdW90ZWRtNF9pZihbJDFdLCBbXSwgW1skMl1dLCBbWyQxXV0pClQxNCwyNgpBU19WQVJfUFVTSERFRl8kMChbJDFdLCBtNF9leHBhbmQoWyQyXSkpClQxNCwxMzAKQVNfVkFSX1BVU0hERUZfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX1RSX1NIX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxOCwyOQptNF9sb2NhdGlvbihBU19JRikuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjU5OApUMzEsMzAKbTRfbG9jYXRpb24oQVNfVkVSU0lPTl9DT01QQVJFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTY3OApGOSw2Cm00X3N5c2NtZHN5c2NtZApUMTEsMTM2Cm00X3NldF9kdW1wbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLAoJICBbX200X3BvcGRlZihbX200X3NldF9zaXplKCQxKV0pXSltNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCiAgICBbXyQwX2NoZWNrXSwgW18kMF0pKFskMV0sIFtdLCBbJDJdKQpUOSw1OAptNF9pZnZhbG5tNF9pZihbJDFdLAogICAgICAgW10sICAgW200X24oWyQzXSldLAoJICAgICBbbTRfbihbJDJdKV0pClQ3LDAKX19nbnVfXwpUMTAsMjcKbTRfam9pbmFsbFskMl1fJDAoWyQxXSwgbTRfc2hpZnQoJEApKQpUMTEsMgpfQVNfRVNDQVBFXyQxClQ5LDIyCm00X3NoaWZ0Mm00X3NoaWZ0KG00X3NoaWZ0KCRAKSkKVDE4LDgwCm00X2V4cGFuc2lvbl9zdGFja200X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm8oW18kMF0sIFtfJDBfZW50cnkoXSwgWykKXSltNF9sb2NhdGlvbls6IHRoZSB0b3AgbGV2ZWxdClQ5LDMyCm00X3NoaWZ0M200X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpClQxNywxNTIKbTRfdmVyc2lvbl9wcmVyZXFtNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUoWzIuNjVdLCBbJDFdKSwKCVstMV0sCglbbTRfZGVmYXVsdChbJDNdLAoJCSAgICBbbTRfZmF0YWwoW0F1dG9jb25mIHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkXSwKCQkJICAgICAgWzYzXSldKV0sCglbJDJdKQpUMTYsNTAKX200X2xpc3RfY21wX3Jhd200X2lmKFskMV0sIFskMl0sIFswXSwgW19tNF9saXN0X2NtcF8xKFskMV0sICQyKV0pClQ4LDAKX191bml4X18KVDIwLDMwCm00X2xvY2F0aW9uKEFTX0xOX1MpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMjA5ClQxNCwxMDkKbTRfZmlsZV9hcHBlbmRtNF9zeXNjbWQoW2NhdCA+PiQxIDw8X200ZW9mCiQyCl9tNGVvZgpdKQptNF9pZihtNF9zeXN2YWwsIFswXSwgW10sCiAgICAgIFttNF9mYXRhbChbJDA6IGNhbm5vdCB3cml0ZTogJDFdKV0pClQxNSwxMzEKX0FTX1ZBUl9QVVNIREVGX0FTX0xJVEVSQUxfSUYoWyQyXSwKCQlbbTRfcHVzaGRlZihbJDFdLCBbX0FTX1RSX1NIX0xJVEVSQUwoWyQyXSldKV0sCgkJW2FzXyQxPV9BU19UUl9TSF9JTkRJUihbJDJdKQptNF9wdXNoZGVmKFskMV0sIFskYXNfWyQxXV0pXSkKVDE1LDQ5Cm00X3JlbmFtZV9mb3JjZW00X2lmZGVmKFskMl0sIFtfbTRfdW5kZWZpbmUoWyQyXSldKW00X3JlbmFtZSgkQCkKVDI4LDMwCm00X2xvY2F0aW9uKEFTX0VYRUNVVEFCTEVfUCkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjEwNTQKVDksMjIyCm00X2JtYXRjaG00X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCiAgICAgICBbJCNdLCAyLCBbJDJdLAogICAgICAgW200X2lmKG00X2JyZWdleHAoWyQxXSwgWyQyXSksIC0xLCBbJDAoWyQxXSwgbTRfc2hpZnQzKCRAKSldLAoJICAgICAgWyQzXSldKQpUMTAsMjQKQVNfTUtESVJfUGFzX2Rpcj0kMTsgYXNfZm5fbWtkaXJfcApUMTAsMTI0CkFTX01LRElSX1BfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMywzMjgKbTRfZGl2ZXJ0X3BvcG00X2lmKFskMV0sIFtdLCBbXSwKICAgICAgIFskMV0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pLCBbXSwKICAgICAgIFttNF9mYXRhbChbJDAoJDEpOiBkaXZlcnNpb24gbWlzbWF0Y2g6Cl1tNF9kaXZlcnRfc3RhY2spXSlfbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X3N0YWNrXSwgW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSltNF9pZmRlZihbX200X2RpdmVydF9kaXZlcnNpb25dLCBbXSwKCSAgIFttNF9mYXRhbChbdG9vIG1hbnkgbTRfZGl2ZXJ0X3BvcF0pXSlfbTRfZGl2ZXJ0X3JhdyhfbTRfZGl2ZXJ0KF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pKSkKVDE2LDE2OQpfQVNfRVhQUl9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmCiAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCiAgYXNfZXhwcj1leHByCmVsc2UKICBhc19leHByPWZhbHNlCmZpCltdX200X2RlZnVuX2VwaShbJDBdKQpUMTksOTUKX0FTX0RFVEVDVF9SRVFVSVJFRF9tNF9kZWZ1bl9wcm8oWyQwXSltNF9zZXRfYWRkKFtfQVNfREVURUNUX1JFUVVJUkVEX0JPRFldLCBbJDEgfHwgQVNfRVhJVF0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMCwxMjEKbTRfcmVfd29yZFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX11bYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XSoKVDI2LDI5Cm00X2xvY2F0aW9uKEFTX1NFVF9TVEFUVVMpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo2MDgKVDE0LDM3Cm00X1BBQ0tBR0VfVVJMaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLwpUMTEsNjIKbTRfY3JfYWxudW1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OQpUMTIsNzEKQVNfQ09QWVJJR0hUbTRfZGl2ZXJ0X3RleHQoW0hFQURFUi1DT1BZUklHSFRdLApbbTRfYnBhdHN1YnN0KFsKJDFdLCBbXl0sIFtAJTpAIF0pXSkKRjExLDgKbTRfdHJhbnNsaXR0cmFuc2xpdApUMTQsMTA0Cm00X2RpdmVydF9wdXNobTRfZGl2ZXJ0X3N0YWNrX3B1c2goWyQwXSwgWyQxXSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0sIFskMV0pX200X2RpdmVydF9yYXcoX200X2RpdmVydChbJDFdKSkKVDgsODcKbTRfZmF0YWxtNF9lcnJwcmludG4obTRfbG9jYXRpb25bOiBlcnJvcjogJDFdCm00X2V4cGFuc2lvbl9zdGFjayltNF9leGl0KG00X2lmKFskMl0sLCAxLCBbJDJdKSkKRjgsNQptNF9pZmRlZmlmZGVmClQxNiwyMjUKX0FTX0xJTkVOT19XT1JLUyAgYXNfbGluZW5vXzE9JExJTkVOTyBhc19saW5lbm9fMWE9JExJTkVOTwogIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRMSU5FTk8KICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAhPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKICB0ZXN0ICJ4YGV4cHIgJGFzX2xpbmVub18xJyRhc19ydW4nICsgMWAiID0gIngkYXNfbGluZW5vXzInJGFzX3J1biciJwpUNywyMAptNF93cmFwX200X3dyYXAoW10sIFskMVtdXSkKVDEyLDExMApfbTRfc2V0X3NpemVtNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLAoJICAgbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLCBbJDIobTRfaW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKSldLAoJCSAgICBbMV0pKQpUNiw0MwptNF9tYXBfbTRfZm9yZWFjaChbX200X2FwcGx5KFskMV0sXSwgWyldLCBbXSwgJDIpClQxMCw1NAptNF9pbmNsdWRlbTRfaW5jbHVkZV91bmlxdWUoWyQxXSlkbmwKbTRfYnVpbHRpbihbaW5jbHVkZV0sIFskMV0pClQxNywxMzYKX0FTX0JBU0VOQU1FX0VYUFJfbTRfZGVmdW5fcHJvKFskMF0pJGFzX2V4cHIgWC9bXSQxIDogJy4qL1woW1teL11bXi9dKl1cKS8qJCcgXHwgXAoJIFhbXSQxIDogJ1hcKC8vXCkkJyBcfCBcCgkgWFtdJDEgOiAnWFwoL1wpJyBcfCAuW11fbTRfZGVmdW5fZXBpKFskMF0pClQ4LDE1MwpBU19FUlJPUm00X2lmdmFsbihbJDJdLCBbeyBBU19TRVRfU1RBVFVTKFskMl0pXSlhc19mbl9lcnJvciAiX0FTX1FVT1RFKFskMV0pIm00X2lmdmFsKEFTX01FU1NBR0VfTE9HX0ZELAogIFsgIiRMSU5FTk8iIEFTX01FU1NBR0VfTE9HX0ZEXSlbXW00X2lmdmFsKFskMl0sIFs7IH1dKQpUOCwxODcKQVNfRVJST1JfbTRfZGVmdW5fcHJvKFskMF0pbTRfYXBwZW5kX3VuaXEoW19BU19DTEVBTlVQXSwKICBbbTRfZGl2ZXJ0X3RleHQoW000U0gtSU5JVC1GTl0sIFtfQVNfRVJST1JfUFJFUEFSRVtdXSldKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQ4LDE4OQptNF9zcGxpdG00X2lmKFskMV0sIFtdLCBbXSwKICAgICAgIFskMl0sIFsgXSwgW200X2lmKG00X2luZGV4KFskMV0sIFsgXSksIFstMV0sIFtbWyQxXV1dLAoJCQkgW18kMChbJDFdLCBbJDJdLCBbLCBdKV0pXSwKICAgICAgIFskMl0sIFtdLCBbXyQwKFskMV0sIFtbCSBdK10sIFssIF0pXSwKICAgICAgIFtfJDAoWyQxXSwgWyQyXSwgWywgXSldKQpUNiwxOTAKbTRfbWlubTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoW3RvbyBmZXcgYXJndW1lbnRzIHRvICQwXSldLAogICAgICAgWyQjXSwgWzFdLCBbbTRfZXZhbChbJDFdKV0sCiAgICAgICBbJCMkMV0sIFsyJDJdLCBbbTRfZXZhbChbJDFdKV0sCiAgICAgICBbJCNdLCBbMl0sIFtfJDAoJEApXSwKICAgICAgIFtfbTRfbWlubWF4KFtfJDBdLCAkQCldKQpGMTQsMTEKbTRfY2hhbmdlcXVvdGVjaGFuZ2VxdW90ZQpUMjYsMQpfbTRfZGl2ZXJ0KEhFQURFUi1DT01NRU5UKTIKVDEwLDU0Cm00X2lmYmxhbmttNF9pZihtNF90cmFuc2xpdChbWyQxXV0sICBbIF1bCV1bCl0pLCBbXSwgWyQyXSwgWyQzXSkKVDE0LDE2MQptNF9jbGVhcmRpdmVydG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFtfbTRfZGl2ZXJ0X3JhdyhbLTFdKW00X3VuZGl2ZXJ0KCRAKV9tNF9kaXZlcnRfcmF3KAoJIF9tNF9kaXZlcnQoX200X2RlZm4oW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSkpKV0pClQxOCwyMDYKX200X3RleHRfd3JhcF93b3JkbTRfZGVmaW5lKFttNF9DdXJzb3JdLCBtNF9ldmFsKG00X0N1cnNvciArIG00X3FsZW4oWyQxXSkgKyAxKSltNF9pZihtNF9ldmFsKG00X0N1cnNvciA+IChbJDNdKSksCiAgICAgIFsxXSwgW200X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfZXZhbChtNF9JbmRlbnQgKyBtNF9xbGVuKFskMV0pICsgMSkpClskMl1dLAogICAgICBbbTRfU2VwYXJhdG9yW11dKVskMV0KVDE4LDE1OTAKX0FTX1NIRUxMX1NBTklUSVpFX200X2RlZnVuX3BybyhbJDBdKW00X3B1c2hkZWYoW0FTX0VYSVRdLCBbZXhpdCBtNF9kZWZhdWx0KF1tNF9kcXVvdGUoWyRdWzFdKVssIDEpXSltNF90ZXh0X2JveChbTTRzaCBJbml0aWFsaXphdGlvbi5dKQoKQVNfQk9VUk5FX0NPTVBBVElCTEUKX0FTX0VDSE9fUFJFUEFSRQpfQVNfUEFUSF9TRVBBUkFUT1JfUFJFUEFSRQoKIyBJRlMKIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKIyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10YWIuCiMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAojIHNwbGl0dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCklGUz0iICIiCSRhc19ubCIKCiMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCmNhc2UgJFswXSBpbiBAJTpAKCgKICAqW1tcXC9dXSogKSBhc19teXNlbGY9JFswXSA7OwogICopIF9BU19QQVRIX1dBTEsoW10sCgkJICAgW3Rlc3QgLXIgIiRhc19kaXIvJFswXSIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJFswXSAmJiBicmVha10pCiAgICAgOzsKZXNhYwojIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCiMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgppZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCiAgYXNfbXlzZWxmPSRbMF0KZmkKaWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgogIEFTX0VDSE8oWyIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSJdKSA+JjIKICBBU19FWElUCmZpCgojIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluCiMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIKIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZAojIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0Lgpmb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBNQUlMIE1BSUxQQVRICmRvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCiAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6CmRvbmUKUFMxPSckICcKUFMyPSc+ICcKUFM0PScrICcKCiMgTkxTIG51aXNhbmNlcy4KTENfQUxMPUMKZXhwb3J0IExDX0FMTApMQU5HVUFHRT1DCmV4cG9ydCBMQU5HVUFHRQoKIyBDRFBBVEguCih1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKX200X3BvcGRlZihbQVNfRVhJVF0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQ3LDQ4Cm00X3FsZW5tNF9pZmRlZihbJDAtJDFdLCBbX200X2RlZm4oWyQwLV1dLCBbXyQwKF0pWyQxXSkKVDYsMTkwCm00X21heG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFt0b28gZmV3IGFyZ3VtZW50cyB0byAkMF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X2V2YWwoWyQxXSldLAogICAgICAgWyQjJDFdLCBbMiQyXSwgW200X2V2YWwoWyQxXSldLAogICAgICAgWyQjXSwgWzJdLCBbXyQwKCRAKV0sCiAgICAgICBbX200X21pbm1heChbXyQwXSwgJEApXSkKRjExLDgKbTRfZXJycHJpbnRlcnJwcmludApUMTAsNjgKX200X2RpdmVydG00X2lmZGVmKFtfbTRfZGl2ZXJ0KCQxKV0sCgkgIFttNF9pbmRpcihbX200X2RpdmVydCgkMSldKV0sCgkgIFskMV0pClQxMywyNgptNF9jcl9MRVRURVJTQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoKVDE1LDI3MgpfQVNfRElSTkFNRV9TRURfbTRfZGVmdW5fcHJvKFskMF0pQVNfRUNITyhbWFtdJDFdKSB8CiAgICBzZWQgWycvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wvXClbXi9dLiovewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXC9cKSQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXCkuKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIHMvLiovLi87IHEnXVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTcsOTQKX200X3N0YWNrX3JldmVyc2VtNF9pZmRlZihbJDFdLCBbbTRfcHVzaGRlZihbJDJdLAogIF9tNF9kZWZuKFskMV0pKSQzW11fbTRfcG9wZGVmKFskMV0pJDAoWyQxXSwgWyQyXSwgWyQ0JDNdKV0pClQxNiwxMDMKQVNfSURFTlRJRklFUl9JRm00X2lmKF8kMChtNF9pZihtNF9pbmRleChbJDFdLCBbQF0pLCBbLTFdLAogIFtbJDFdXSwgW200X2JwYXRzdWJzdChbWyQxXV0sIFtAJnRAXSldKSksIFstXSwgWyQyXSwgWyQzXSkKRjExLDcKbTRfbWFrZXRlbXBta3N0ZW1wClQxNywxMjkKX0FTX0RFVEVDVF9FWFBBTkQkMT0ibTRfYnBhdHN1YnN0KG00X2RxdW90ZShBU19FU0NBUEUoX200X2V4cGFuZChtNF9zZXRfY29udGVudHMoWyQyXSwgWwpdKSkpKSwgW1xcXCRMSU5FTk9cKC4qXCkkXSwgWyI7JDE9JCQxJExJTkVOTzskMT0kJDEiXDFdKSIKVDQsMzcKbTRfbm00X2lmKFskMV0sCiAgICAgICBbXSwgW10sCgkgICBbJDEKXSkKVDI2LDI5Cm00X2xvY2F0aW9uKEFTX0xJTkVOT19QT1ApLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo4NjIKVDgsMjAKQVNfVFJfU0hfJDAobTRfZXhwYW5kKFskMV0pKQpUOCwxMjQKQVNfVFJfU0hfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMCwxNTQKbTRfcHJvdmlkZW00X2lmZGVmKFttNF9wcm92aWRlKCQxKV0sIFtdLApbbTRfc2V0X2FkZChbX200X3Byb3ZpZGVdLCBbJDFdLCBbbTRfZGVmaW5lKFttNF9wcm92aWRlKCQxKV0sCiAgbTRfaWZkZWYoW19tNF9kaXZlcnRpbmddLCBbX200X2RlZm4oW19tNF9kaXZlcnRpbmddKV0pKV0pXSkKVDEzLDExNgpBU19MSU5FTk9fUE9QX200X2RlZnVuX3BybyhbJDBdKWV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiBBU19VTlNFVChbYXNfbGluZW5vXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDExLDY1Cm00X3NldF9zaXplbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLCBbbTRfaW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKV0sIFswXSkKVDksMAptNF9pZ25vcmUKVDksMjgKX200X3F1b3RlbTRfaWYoWyQjXSwgWzBdLCBbXSwgW1skKl1dKQpUMjEsMzAKbTRfbG9jYXRpb24oQVNfVFJfU0gpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxNzM3ClQ5LDM1Cm00X3NoaWZ0bm00X2Fzc2VydCgwIDwgJDEgJiYgJDEgPCAkIylfJDAoJEApClQ3LDc1Cm00X3dhcm5fbTRfd2FybihbJDFdLCBbJDJdLAptNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFttNF9leHBhbnNpb25fc3RhY2tdKSkKVDE2LDI0NQptNF9jcl9ub3RfZGlnaXRzAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywuLzo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KVDEyLDI1Cm00X3NldF9saXN0Y200X3NldF9tYXBfc2VwKFskMV0sIFssXSkKRjksNgptNF9kaXZudW1kaXZudW0KVDMwLDMwCm00X2xvY2F0aW9uKEFTX0lOSVRfR0VORVJBVEVEKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MjAyNQpUMjEsNzYKX200X3NldF9hZGRfYWxsX2NoZWNrbTRfaWYoWyQjXSwgWzJdLCBbXSwKICAgICAgIFttNF9zZXRfYWRkKFskMV0sIFskM10pJDAoWyQxXSwgbTRfc2hpZnQyKCRAKSldKQpUMjQsMQpfbTRfZGl2ZXJ0KE00U0gtSU5JVC1GTik1ClQxMCw3MwpBU19WQVJfU0VUQVNfTElURVJBTF9JRihbJDFdLAoJICAgICAgIFskMT0kMl0sCgkgICAgICAgW2V2YWwgIiQxPUFTX0VTQ0FQRShbJDJdKSJdKQpUMTAsMwptNF9uZXdsaW5lCiQxClQxMywyOTMKbTRfZGVmdW5fb25jZW00X2RlZmluZShbbTRfbG9jYXRpb24oJDEpXSwgbTRfbG9jYXRpb24pbTRfZGVmaW5lKFskMV0sIFtfbTRfZGVmdW5fb25jZShbJDFdLCBbJDJdLCBtNF9pZihfbTRfZGl2ZXJ0X2R1bXAsIFtdLAogIFtbX200X2RlZnVuX3BybyhbJDFdKW00X3VucXVvdGUoXSwgWylfbTRfZGVmdW5fZXBpKFskMV0pXV0sCm00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgWy1dKSwgWy1dLCBbW200X3VucXVvdGUoXSwgWyldXSwKICBbW19tNF9yZXF1aXJlX2NhbGwoWyQxXSxdLCBbLCBfbTRfZGl2ZXJ0X2R1bXApXV0pKV0pClQxMyw0NzQKX200X3RleHRfd3JhcG00X3B1c2hkZWYoW200X0luZGVudF0sIG00X3FsZW4oWyQyXSkpbTRfcHVzaGRlZihbbTRfQ3Vyc29yXSwgbTRfcWxlbihbJDNdKSltNF9wdXNoZGVmKFttNF9TZXBhcmF0b3JdLCBbbTRfZGVmaW5lKFttNF9TZXBhcmF0b3JdLCBbIF0pXSlbJDNdbTRfY29uZChbbTRfQ3Vyc29yXSwgbTRfSW5kZW50LCBbXSwKCSAgICAgIFttNF9ldmFsKG00X0N1cnNvciA+IG00X0luZGVudCldLCBbMV0sIFsKWyQyXW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0sCgkgICAgICBbbTRfZm9ybWF0KFslKnNdLCBtNF9tYXgoWzBdLAogIG00X2V2YWwobTRfSW5kZW50IC0gbTRfQ3Vyc29yKSksIFtdKW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0pbTRfbWFwX2FyZ3NfdyhbJDFdLCBbJDBfd29yZChdLCBbLCBbJDJdLCBbJDRdKV0pX200X3BvcGRlZihbbTRfU2VwYXJhdG9yXSwgW200X0N1cnNvcl0sIFttNF9JbmRlbnRdKQpUMjEsMzQyCl9BU19CT1VSTkVfQ09NUEFUSUJMRUFTX0lGKFt0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjFdLAogW2VtdWxhdGUgc2gKICBOVUxMQ01EPToKICBbI10gUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkW0BdIn0sIHdoaWNoCiAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KICBhbGlhcyAtZyAnJHsxKyIkW0BdIn0nPSciJFtAXSInCiAgc2V0b3B0IE5PX0dMT0JfU1VCU1RdLAogW0FTX0NBU0UoW2Aoc2V0IC1vKSAyPi9kZXYvbnVsbGBdLCBbKnBvc2l4Kl0sIFtzZXQgLW8gcG9zaXhdKV0pCgpGOSw2Cm00X2Zvcm1hdGZvcm1hdApGMTAsNwptNF9ta3N0ZW1wbWtzdGVtcApGMTEsMTEKX19wcm9ncmFtX19fX3Byb2dyYW1fXwpUNiw3OQpBU19CT1hBU19MSVRFUkFMX0lGKFskMV0sCgkgICAgICAgW19BU19CT1hfTElURVJBTCgkQCldLAoJICAgICAgIFtfQVNfQk9YX0lORElSKCRAKV0pClQ3LDE1NgptNF9kZWZubTRfaWYoWyQjXSwgWzBdLCBbWyQwXV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X2RlZm4oWyQxXSldLAoJCQkgICAgW200X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAogICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pClQxMSw1NDQKX0FTX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pbTRfcHVzaGRlZihbQVNfUkVRVUlSRV0pbTRfcHVzaGRlZihbQVNfUkVRVUlSRV9TSEVMTF9GTl0sIF9tNF9kZWZuKFtfQVNfUkVRVUlSRV9TSEVMTF9GTl0pCiltNF9wdXNoZGVmKFtBU19NRVNTQUdFX0xPR19GRF0sIFstMV0pX0FTX0VSUk9SX1BSRVBBUkUKX200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV9BU19FWElUX1BSRVBBUkUKX0FTX1VOU0VUX1BSRVBBUkUKX0FTX1ZBUl9BUFBFTkRfUFJFUEFSRQpfQVNfVkFSX0FSSVRIX1BSRVBBUkUKCl9BU19FWFBSX1BSRVBBUkUKX0FTX0JBU0VOQU1FX1BSRVBBUkUKX0FTX0RJUk5BTUVfUFJFUEFSRQpfQVNfTUVfUFJFUEFSRQpfQVNfQ1JfUFJFUEFSRQpfQVNfRUNIT19OX1BSRVBBUkUKX0FTX0xOX1NfUFJFUEFSRQpfQVNfTUtESVJfUF9QUkVQQVJFCl9BU19URVNUX1BSRVBBUkUKX0FTX1RSX0NQUF9QUkVQQVJFCl9BU19UUl9TSF9QUkVQQVJFCl9tNF9wb3BkZWYoW0FTX1JFUVVJUkVdLCBbQVNfUkVRVUlSRV9TSEVMTF9GTl0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNiw1NAptNF9hcHBlbmRfdW5pcV93bTRfbWFwX2FyZ3NfdyhbJDJdLCBbX200X2FwcGVuZF91bmlxKFskMV0sXSwgWywgWyBdKV0pClQxMywyMDcKbTRfbWFwX2FyZ3Nfd18kMChfbTRfc3BsaXQoWyBdbTRfZmxhdHRlbihbJDFdKVsgXSwgW1sJIF0rXSwKCSAgICAgICBtNF9pZihtNF9pbmRleChbJDIkMyQ0XSwgW1xdKSwgWy0xXSwgW1skM1tdJDRbXSQyXV0sCgkJICAgICBbbTRfYnBhdHN1YnN0KFtbJDNbXSQ0W10kMl1dLCBbXFxdLCBbXFxcXF0pXSkpLAogICAgIG00X2xlbihbW10kM1tdJDRdKSwgbTRfbGVuKFskNFtdJDJbXV0pKQpUNiw0Cm00X2NhclskMV0KVDgsMgptNF9jb3VudCQjClQxNCw0MgpfbTRfZGVmdW5fb25jZW00X3B1c2hkZWYoWyQxXSkkM1skMltdbTRfcHJvdmlkZShbJDFdKV0kNApUMTYsMTM0NgpfQVNfRUNIT19QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKVthc19ubD0nCicKZXhwb3J0IGFzX25sCiMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuCmFzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCmFzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwphc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwojIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywKIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KaWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAogICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgogIGFzX2VjaG89J3ByaW50IC1yIC0tJwogIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJwplbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCiAgYXNfZWNobz0ncHJpbnRmICVzXG4nCiAgYXNfZWNob19uPSdwcmludGYgJXMnCmVsc2UKICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KICAgIGFzX2VjaG9fYm9keT0nZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkXVsxJGFzX25sIicKICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKICBlbHNlCiAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCRdWzEiIDogIlhcXCguKlxcKSInCiAgICBhc19lY2hvX25fYm9keT0nZXZhbAogICAgICBhcmc9JF1bMTsKICAgICAgY2FzZSAkYXJnIGluIEAlOkAoCiAgICAgICoiJGFzX25sIiopCglleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCkiYDs7CiAgICAgIGVzYWM7CiAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKICAgICcKICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQogICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycKICBmaQogIGV4cG9ydCBhc19lY2hvX2JvZHkKICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCmZpCl1bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE3LDE2NApfQVNfVU5TRVRfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fdW5zZXRdLCBbVkFSXSwgW1BvcnRhYmx5IHVuc2V0IFZBUi5dKQphc19mbl91bnNldCAoKQp7CiAgQVNfVU5TRVQoWyRbMV1dKQp9CmFzX3Vuc2V0PWFzX2ZuX3Vuc2V0W11fbTRfZGVmdW5fZXBpKFskMF0pClQxNCw2MgptNF9zZXRfZm9yZWFjaG00X3B1c2hkZWYoWyQyXSltNF9zZXRfbWFwX3NlcChbJDFdLCBbbTRfZGVmaW5lKFskMl0sXSwgWykkM10pClQxNiwxMDEKbTRfc3RhY2tfZm9yZWFjaF9tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdKV9tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0pKV0pClQxMiw3NwptNF9jaG9tcF9hbGxtNF9mb3JtYXQoW1slLipzXV0sIG00X2JyZWdleHAobTRfdHJhbnNsaXQoW1skMV1dLCBbCi9dLCBbLyBdKSwgWy8qJF0pLCBbJDFdKQpUNiw0NgptNF9jbXBtNF9ldmFsKCgoWyQxXSkgPiAoWyQyXSkpIC0gKChbJDFdKSA8IChbJDJdKSkpClQ5LDM4NApBU19UTVBESVIjIENyZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4KbTRfaWYoWyQyXSwgW10sIFs6ICR7VE1QRElSPS90bXB9XSkKewogIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIm00X2RlZmF1bHQoWyQyXSwgWyRUTVBESVJdKS8kMVhYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgogIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCn0gIHx8CnsKICB0bXA9bTRfZGVmYXVsdChbJDJdLCBbJFRNUERJUl0pLyQxJCQtJFJBTkRPTQogICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0bXAiKQp9IHx8IEFTX0VSUk9SKFtjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiBtNF9kZWZhdWx0KFskMl0sCgkgICAgICBbJFRNUERJUl0pXSkKVDE3LDUxCl9BU19FQ0hPX1VOUVVPVEVEQVNfRUNITyhbIiQxIl0pID4mbTRfZGVmYXVsdChbJDJdLCBbQVNfTUVTU0FHRV9GRF0pClQyMCw5NgpfQVNfREVURUNUX1NVR0dFU1RFRF9tNF9kZWZ1bl9wcm8oWyQwXSltNF9zZXRfYWRkKFtfQVNfREVURUNUX1NVR0dFU1RFRF9CT0RZXSwgWyQxIHx8IEFTX0VYSVRdKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTcsNTcKQVNfTElORU5PX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKRjUsNgptNF9pZmlmZWxzZQpUOSwzNgptNF9yZW5hbWVtNF9jb3B5KFskMV0sIFskMl0pbTRfdW5kZWZpbmUoWyQxXSkKRjgsNQptNF9pbmRpcmluZGlyClQxMiwxCl9tNF9kaXZlcnQoKTAKVDMxLDMwCm00X2xvY2F0aW9uKF9BU19UUl9DUFBfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjE3NTUKRjEyLDkKbTRfY2hhbmdlY29tY2hhbmdlY29tClQyMCw0MApfQVNfVkFSX0FQUEVORF9XT1JLU2FzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeCRhc192YXIgPSB4MTIKVDEwLDYyCm00X25vcXVvdGVtNF9jaGFuZ2VxdW90ZShbLT08eyhdLFspfT49LV0pJDEtPTx7KCl9Pj0tbTRfY2hhbmdlcXVvdGUoWyxdKQpUMTMsNDIKQVNfVkFSX1NFVF9JRkFTX0lGKFtBU19WQVJfVEVTVF9TRVQoWyQxXSldLCBbJDJdLCBbJDNdKQpGOCw1Cm00X2luZGV4aW5kZXgKVDE0LDU4Cl9tNF9tYXBfYXJnc193bTRfc3Vic3RyKFskMV0sIFskMl0sIG00X2V2YWwobTRfbGVuKFskMV0pIC0gWyQyXSAtIFskM10pKQpUNyw5OApfQVNfUlVObTRfaWZ2YWwoWyQyXSwgW3sgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIkMSB8IGFzX3J1bj1hICQyOyB9XSwKCQlbKGV2YWwgJDEpXSkgMj4vZGV2L251bGwKVDE0LDEwNwptNF9zZXRfbWFwX3NlcG00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwgW19tNF9zZXRfY29udGVudHNfMWNdLAoJICBbX200X3NldF9jb250ZW50c18xXSkoWyQxXSlfbTRfc2V0X2NvbnRlbnRzXzIoJEApClQ5LDE3NAptNF9leHBhbmRtNF9wdXNoZGVmKFttNF9kaXZlcnRdLCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSltNF9wdXNoZGVmKFttNF9kaXZlcnRfcHVzaF0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X3Vuc2FmZV0pKW00X2Nob21wKF8kMChbJDEKXSkpX200X3BvcGRlZihbbTRfZGl2ZXJ0XSwgW200X2RpdmVydF9wdXNoXSkKVDE5LDMzNgpfQVNfTUtESVJfUF9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkVfU0hFTExfRk4oW2FzX2ZuX21rZGlyX3BdLAogIFtBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fbWtkaXJfcF0sIFtdLAogICAgW0NyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS5dKV0sClsKICBfQVNfTUtESVJfUApdKWlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCmVsc2UKICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAogIGFzX21rZGlyX3A9ZmFsc2UKZmkKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNywyMjkKbTRfY3Jfbm90X0xFVFRFUlMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC4vMDEyMzQ1Njc4OTo7PD0+P0BbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxOCwyNTYKX200X3NldF9kdW1wX2NoZWNrbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbbTRfc2V0X2NvbnRhaW5zKFskMV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSksCgkJCSAgIFtbJDJdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKV0pX200X3BvcGRlZigKICAgIFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlbKV0sCiAgICBbX200X3NldChbJDFdKV0pJDAoWyQxXSwgWyQyJDNdKV0sCgkgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKQpUMTAsNzI4CkFTX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pbTRfZGl2ZXJ0X3B1c2goW0tJTExdKQptNF9hcHBlbmRfdW5pcShbX0FTX0NMRUFOVVBdLAogIFttNF9kaXZlcnRfdGV4dChbTTRTSC1JTklULUZOXSwgW19BU19FUlJPUl9QUkVQQVJFW11dKV0pCkFTX1JFUVVJUkUoW19BU19FWFBSX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfQkFTRU5BTUVfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19ESVJOQU1FX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfTUVfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19DUl9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX0xJTkVOT19QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX0VDSE9fTl9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX0VYSVRfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19MTl9TX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfTUtESVJfUF9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX1RFU1RfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19UUl9DUFBfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19UUl9TSF9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX1VOU0VUX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfVkFSX0FQUEVORF9QUkVQQVJFXSwgW10sIFtNNFNILUlOSVQtRk5dKQpBU19SRVFVSVJFKFtfQVNfVkFSX0FSSVRIX1BSRVBBUkVdLCBbXSwgW000U0gtSU5JVC1GTl0pCm00X2RpdmVydF9wb3BbXVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTEsMTcKbTRfbG9jYXRpb25fX2ZpbGVfXzpfX2xpbmVfXwpUMjQsMjkKbTRfbG9jYXRpb24oQVNfQkFTRU5BTUUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo5MDAKVDM2LDI5Cm00X2xvY2F0aW9uKF9BU19ERVRFQ1RfQkVUVEVSX1NIRUxMKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTk1ClQxMSw1NAptNF9pZm5ibGFua200X2lmKG00X3RyYW5zbGl0KFtbJDFdXSwgIFsgXVsJXVsKXSksIFtdLCBbJDNdLCBbJDJdKQpUMTMsMTM0Cl9tNF9kZWZ1bl9lcGlfbTRfcG9wZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0sIFtfbTRfZXhwYW5zaW9uX3N0YWNrXSltNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFtdLCBbX200X2RlZnVuX2VwaV9vdXRlcihbJDFdKV0pbTRfcHJvdmlkZShbJDFdKQpUMTAsNDAKbTRfd2FybmluZ200X2VycnByaW50bihtNF9sb2NhdGlvbls6IHdhcm5pbmc6ICQxXSkKRjcsNAptNF9ldmFsZXZhbApUMTUsNQpfbTRfZGl2ZXJ0X2dyb3cxMDAwMApUMTUsMzQKQVNfRVhFQ1VUQUJMRV9QeyB0ZXN0IC1mICQxICYmIEFTX1RFU1RfWChbJDFdKTsgfQpUMTUsMTI5CkFTX0VYRUNVVEFCTEVfUF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfVEVTVF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUNiw1OTgKbTRfZm9ybTRfcHVzaGRlZihbJDFdLCBtNF9ldmFsKFskMl0pKW00X2NvbmQoW200X2V2YWwoKFskM10pID4gKFskMl0pKV0sIDEsCgkgICBbbTRfcHVzaGRlZihbX200X3N0ZXBdLCBtNF9ldmFsKG00X2RlZmF1bHRfcXVvdGVkKFskNF0sCgkgICAgICAxKSkpbTRfYXNzZXJ0KF9tNF9zdGVwID4gMClfJDAoX200X2RlZm4oWyQxXSksCiAgbTRfZXZhbCgoKFskM10pIC0gKFskMl0pKSAvIF9tNF9zdGVwICogX200X3N0ZXAgKyAoWyQyXSkpLCBfbTRfc3RlcCxdLAoJIFttNF9ldmFsKChbJDNdKSA8IChbJDJdKSldLCAxLAoJICAgW200X3B1c2hkZWYoW19tNF9zdGVwXSwgbTRfZXZhbChtNF9kZWZhdWx0X3F1b3RlZChbJDRdLAoJICAgICAgLTEpKSltNF9hc3NlcnQoX200X3N0ZXAgPCAwKV8kMChfbTRfZGVmbihbJDFdKSwKICBtNF9ldmFsKCgoWyQyXSkgLSAoWyQzXSkpIC8gLShfbTRfc3RlcCkgKiBfbTRfc3RlcCArIChbJDJdKSksIF9tNF9zdGVwLF0sCgkgW200X3B1c2hkZWYoW19tNF9zdGVwXSlfJDAoX200X2RlZm4oWyQxXSksIF9tNF9kZWZuKFskMV0pLCAwLF0pW200X2RlZmluZShbJDFdLF0sIFspJDVdKW00X3BvcGRlZihbX200X3N0ZXBdLCBbJDFdKQpUOCw0MgpfQVNfRUNIT19BU19FQ0hPX1VOUVVPVEVEKFtfQVNfUVVPVEUoWyQxXSldLCBbJDJdKQpUMjUsMjkKbTRfbG9jYXRpb24oX0FTX0VDSE9fTE9HKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6NzQ5ClQxNywxODUKX0FTX1RSX1NIX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0NSX1BSRVBBUkVdKSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgphc190cl9zaD0iZXZhbCBzZWQgJ3klKislcHAlO3MlW1teXyRhc19jcl9hbG51bV1dJV8lZyciCltdX200X2RlZnVuX2VwaShbJDBdKQpUMTMsMTEwCl9BU19DTEVBTl9ESVJpZiB0ZXN0IC1kICQxOyB0aGVuCiAgZmluZCAkMSAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOwogIHJtIC1mciAkMS8qICQxLy5bWyEuXV0gJDEvLj8/KgpmaQpUMjAsMTgxCkFTX0ZVTkNUSU9OX0RFU0NSSUJFQCU6QCAkMVtdbTRfaWZ2YWwoWyQyXSwgWyAkMl0pCkAlOkAgbTRfdHJhbnNsaXQobTRfZm9ybWF0KFslKnNdLAoJICAgbTRfZGVjcihtNF9xbGVuKF9tNF9leHBhbmQoWyQxW11tNF9pZnZhbChbJDJdLCBbICQyXSkKXSkpKSwgW10pLCBbIF0sIFstXSkKbTRfdGV4dF93cmFwKFskM10sIFtAJTpAIF0sIFtdLCBbJDRdKQpUMTYsMjk4Cm00X21hcF9hcmdzX3BhaXJtNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIFsxXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKICAgICAgIFskI10sIFsyXSwgW10sCiAgICAgICBbJCNdLCBbM10sIFttNF9kZWZhdWx0KFskMl0sIFskMV0pKFskM10pW11dLAogICAgICAgWyQjXSwgWzRdLCBbJDEoWyQzXSwgWyQ0XSlbXV0sCiAgICAgICBbJDEoWyQzXSwgWyQ0XSlbXSQwKFskMV0sIFskMl0sIG00X3NoaWZ0KG00X3NoaWZ0MygkQCkpKV0pClQxOCwxCl9tNF9kaXZlcnQoTk9USUNFKTYKVDI3LDEKX200X2RpdmVydChIRUFERVItUkVWSVNJT04pMQpUMTAsMTIyCkFTX01FU1NBR0VtNF9pZnZhbChBU19NRVNTQUdFX0xPR19GRCwKCSAgW3sgX0FTX0VDSE9fTE9HKFskMV0pCl9BU19FQ0hPKFskYXNfbWU6ICQxXSwgWyQyXSk7fV0sCgkgIFtfQVNfRUNITyhbJGFzX21lOiAkMV0sIFskMl0pXSlbXQpUMTAsMTI3CkFTX01FU1NBR0VfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX01FX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNiwyNwpfQVNfQ0FTRV9ERUZBVUxUIFtAJTpAKF0KICAqWyldIDoKICAgICQxIDs7ClQ3LDMwCkFTX1dBUk5BU19NRVNTQUdFKFtXQVJOSU5HOiAkMV0sIFsyXSkKVDMwLDI5Cm00X2xvY2F0aW9uKF9BU19CQVNFTkFNRV9FWFBSKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6ODc5ClQxNyw0OTAKX0FTX1RSX1NIX0xJVEVSQUxtNF90cmFuc2xpdChbWyQxXV0sCiAgWyorW11dWwECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLi86Ozw9Pj9AW1xdXmB7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LV0sCiAgW3BwW11dW19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX10pClQxMCw2NgpfQVNfRUNIT19OQVNfRUNIT19OKFsiX0FTX1FVT1RFKFskMV0pIl0pID4mbTRfZGVmYXVsdChbJDJdLCBbQVNfTUVTU0FHRV9GRF0pClQ3LDM2Cm00X3NpZ25tNF9ldmFsKCgoWyQxXSkgPiAwKSAtICgoWyQxXSkgPCAwKSkKVDI1LDUzCl9tNF9leHBhbnNpb25fc3RhY2tfZW50cnlfbTRfZGVmbihbbTRfbG9jYXRpb24oJDEpXSlbOiAkMSBpcyBleHBhbmRlZCBmcm9tLi4uXQpUMTksMTkxCl9BU19ESVJOQU1FX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0VYUFJfUFJFUEFSRV0paWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgYXNfZGlybmFtZT1kaXJuYW1lCmVsc2UKICBhc19kaXJuYW1lPWZhbHNlCmZpCltdX200X2RlZnVuX2VwaShbJDBdKQpUOSwxMjcKX200X3NwbGl0bTRfY2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKVttNF9icGF0c3Vic3QoLT08eygtPTx7KCQxKX0+PS0pfT49LSwgLT08eygkMil9Pj0tLAoJICAgICAgIC09PHsoXSQzWyl9Pj0tKV1tNF9jaGFuZ2VxdW90ZShbLCBdKQpUOCw4NQpfbTRfam9pbm00X2lmKFskIyQyXSwgWzJdLCBbXSwKICAgICAgIFttNF9pZihbJDJdLCBbXSwgW10sIFtbJDEkMl1dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKVDE2LDQKX200X2RpdmVydChCT0RZKTEwMDAKVDE4LDEwMjYKX0FTX0xJTkVOT19QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19DUl9QUkVQQVJFXSlBU19SRVFVSVJFKFtfQVNfTUVfUFJFUEFSRV0pX0FTX0RFVEVDVF9TVUdHRVNURUQoW19BU19MSU5FTk9fV09SS1NdKW00X3B1c2hkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSltNF9wdXNoZGVmKFtBU19FUlJPUl0sCiAgW3sgQVNfTUVTU0FHRShdbTRfZHF1b3RlKFtlcnJvcjogJF1bMV0pWywgWzJdKTsgQVNfRVhJVChbMV0pOyB9XSlfQVNfTElORU5PX1dPUktTIHx8IHsKICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkKICBzZWQgLW4gJwogICAgcAogICAgL1tbJF1dTElORU5PLz0KICAnIDwkYXNfbXlzZWxmIHwKICAgIHNlZCAnCiAgICAgIHMvW1skXV1MSU5FTk8uKi8mLS8KICAgICAgdCBsaW5lbm8KICAgICAgYgogICAgICA6bGluZW5vCiAgICAgIE4KICAgICAgOmxvb3AKICAgICAgcy9bWyRdXUxJTkVOT1woW1teJyRhc19jcl9hbG51bSdfXV0uKlxuXClcKC4qXCkvXDJcMVwyLwogICAgICB0IGxvb3AKICAgICAgcy8tXG4uKi8vCiAgICAnID4kYXNfbWUubGluZW5vICYmCiAgY2htb2QgK3ggIiRhc19tZS5saW5lbm8iIHx8CiAgICBBU19FUlJPUihbY2Fubm90IGNyZWF0ZSAkYXNfbWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGxdKQoKICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwogICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBmaW5kIHRoZQogICMgb3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUgdG8gdGhpcykuCiAgLiAiLi8kYXNfbWUubGluZW5vIgogICMgRXhpdCBzdGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLgogIGV4aXQKfQpfbTRfcG9wZGVmKFtBU19NRVNTQUdFX0xPR19GRF0sIFtBU19FUlJPUl0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMywyNzYKbTRfc2V0X2RlbGV0ZW00X2lmZGVmKFtfbTRfc2V0KFskMV0pXSwKCSAgW19tNF9wb3BkZWYoW19tNF9zZXQoWyQxXSxdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKVspXSwKCQkgICAgICBbX200X3NldChbJDFdKV0pJDAoWyQxXSldLAoJICBbbTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLAoJCSAgICBbX200X3BvcGRlZihbX200X3NldF9jbGVhbnVwKCQxKV0pXSltNF9pZmRlZigKCQkgICAgW19tNF9zZXRfc2l6ZSgkMSldLAoJCSAgICBbX200X3BvcGRlZihbX200X3NldF9zaXplKCQxKV0pXSldKQpUMTIsMTAKbTRfY3JfZGlnaXRzMDEyMzQ1Njc4OQpUMTcsMTcKbTRfUEFDS0FHRV9TVFJJTkdHTlUgQXV0b2NvbmYgMi42NQpUOSwxNQpBU19URVNUX1gkYXNfdGVzdF94ICQxW10KVDksMTI5CkFTX1RFU1RfWF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfVEVTVF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpGMTAsNgpfbTRfcG9wZGVmcG9wZGVmClQ5LDUyCl9BU19UUl9TSF9BU19MSVRFUkFMX0lGKFskMV0sIFskMF9MSVRFUkFMXSwgWyQwX0lORElSXSkoWyQxXSkKVDcsMTY4OAptNF9pbml0IyBBbGwgdGhlIE00c3VnYXIgbWFjcm9zIHN0YXJ0IHdpdGggYG00XycsIGV4Y2VwdCBgZG5sJyBrZXB0IGFzIGlzCiMgZm9yIHNha2Ugb2Ygc2ltcGxpY2l0eS4KbTRfcGF0dGVybl9mb3JiaWQoW15fP200X10pCm00X3BhdHRlcm5fZm9yYmlkKFteZG5sJF0pCgojIElmIF9fbTRfdmVyc2lvbl9fIGlzIGRlZmluZWQsIHdlIGFzc3VtZSB0aGF0IHdlIGFyZSBiZWluZyBydW4gYnkgTTQKIyAxLjYgb3IgbmV3ZXIsIHRodXMgJEAgcmVjdXJzaW9uIGlzIGxpbmVhciwgYW5kIGRlYnVnbW9kZSgrZG8pCiMgaXMgYXZhaWxhYmxlIGZvciBmYXN0ZXIgY2hlY2tzIG9mIGRlcmVmZXJlbmNpbmcgdW5kZWZpbmVkIG1hY3JvcwojIGFuZCBmb3JjaW5nIGR1bXBkZWYgdG8gcHJpbnQgdG8gc3RkZXJyIHJlZ2FyZGxlc3Mgb2YgZGVidWdmaWxlLgojIEJ1dCBpZiBpdCBpcyBtaXNzaW5nLCB3ZSBhc3N1bWUgd2UgYXJlIGJlaW5nIHJ1biBieSBNNCAxLjQueCwgdGhhdAojICRAIHJlY3Vyc2lvbiBpcyBxdWFkcmF0aWMsIGFuZCB0aGF0IHdlIG5lZWQgZm9yZWFjaC1iYXNlZAojIHJlcGxhY2VtZW50IG1hY3Jvcy4gIEFsc28sIG00IHByaW9yIHRvIDEuNC44IGxvc2VzIHRyYWNrIG9mIGxvY2F0aW9uCiMgZHVyaW5nIG00d3JhcCB0ZXh0OyBfX2xpbmVfXyBzaG91bGQgbmV2ZXIgYmUgMC4KIwojIFVzZSB0aGUgcmF3IGJ1aWx0aW4gdG8gYXZvaWQgdHJpcHBpbmcgdXAgaW5jbHVkZSB0cmFjaW5nLgojIE1lYW53aGlsZSwgYXZvaWQgbTRfY29weSwgc2luY2UgaXQgdGVtcG9yYXJpbHkgdW5kZWZpbmVzIG00X2RlZm4uCm00X2lmZGVmKFtfX200X3ZlcnNpb25fX10sClttNF9kZWJ1Z21vZGUoWytkb10pCm00X2RlZmluZShbbTRfZGVmbl0sIF9tNF9kZWZuKFtfbTRfZGVmbl0pKQptNF9kZWZpbmUoW200X2R1bXBkZWZdLCBfbTRfZGVmbihbX200X2R1bXBkZWZdKSkKbTRfZGVmaW5lKFttNF9wb3BkZWZdLCBfbTRfZGVmbihbX200X3BvcGRlZl0pKQptNF9kZWZpbmUoW200X3VuZGVmaW5lXSwgX200X2RlZm4oW19tNF91bmRlZmluZV0pKV0sClttNF9idWlsdGluKFtpbmNsdWRlXSwgW200c3VnYXIvZm9yZWFjaC5tNF0pCm00X3dyYXBfbGlmbyhbbTRfaWYoX19saW5lX18sIFswXSwgW200X3B1c2hkZWYoW200X2xvY2F0aW9uXSwKXV1tNF9kcXVvdGUobTRfZHF1b3RlKG00X2RxdW90ZShfX2ZpbGVfXzpfX2xpbmVfXykpKVtbKV0pXSldKQoKIyBSZXdyaXRlIHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgZGl2ZXJzaW9uIHN0YWNrLgptNF9kaXZlcnQoW0tJTExdKQoKIyBDaGVjayB0aGUgZGl2ZXJ0IHB1c2gvcG9wIHBlcmZlY3QgYmFsYW5jZS4KIyBTb21lIHVzZXJzIGFyZSBwcm9uZSB0byBhbHNvIHVzZSBtNF93cmFwIHRvIHJlZ2lzdGVyIGxhc3QtbWludXRlCiMgbTRfZGl2ZXJ0X3RleHQ7IHNvIGFmdGVyIG91ciBkaXZlcnNpb24gY2xlYW51cHMsIHdlIHJlc3RvcmUKIyBLSUxMIGFzIHRoZSBib3R0b20gb2YgdGhlIGRpdmVyc2lvbiBzdGFjay4KbTRfd3JhcChbbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pbTRfaWZkZWYoCiAgW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgW200X2ZhdGFsKFskMDogdW5iYWxhbmNlZCBtNF9kaXZlcnRfcHVzaDoKXW00X2RpdmVydF9zdGFjayldKV9tNF9wb3BkZWYoW19tNF9kaXZlcnRfc3RhY2tdKW00X2RpdmVydF9wdXNoKFtLSUxMXSldKQoKVDIxLDI5Cm00X2xvY2F0aW9uKEFTX0VSUk9SKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6ODQyClQxMSwxNjIKbTRfZHVtcGRlZnNtNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRdKV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9zdGFja19mb3JlYWNoX2xpZm8oWyQxXSwgW200X2R1bXBkZWYoWyQxXSltNF9pZ25vcmVdKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDEyLDE2Cm00X3dyYXBfbGlmb19tNF93cmFwKFskMVtdXSkKVDEwLDEwMwptNF9mbGF0dGVubTRfaWYobTRfaW5kZXgoWyQxXSwgWwpdKSwgWy0xXSwgW1skMV1dLAogICAgICAgW200X3RyYW5zbGl0KG00X2JwYXRzdWJzdChbW1skMV1dXSwgW1xcCl0pLCBbCl0sIFsgXSldKQpUMjAsMzYKX200X3NldF9pbnRlcnNlY3Rpb25tNF9zZXRfY29udGFpbnMoWyQxXSwgWyQyXSwgWyxbJDJdXSkKVDIwLDMzCl9BU19SRVFVSVJFX1NIRUxMX0ZOCm00X24oWyQyXSkkMSAoKQp7CiQzCn0gQCU6QCAkMVtdClQyMiwzMAptNF9sb2NhdGlvbihBU19UUl9DUFApLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxNzY5ClQ4LDI4Cl9BU19DQVNFIFtAJTpAKF0KICAkMVspXSA6CiAgICAkMiA7OwpUMTksMjkKbTRfbG9jYXRpb24oQVNfRk9SKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6NTY2ClQ5LDE1NgptNF9lc2NhcGVtNF9pZihtNF9pbmRleChtNF90cmFuc2xpdChbJDFdLAogICBbW10jLCgpXVthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXzAxMjM0NTY3ODldLCBbJCQkXSksIFskXSksCiAgWy0xXSwgW200X2VjaG9dLCBbXyQwXSkoWyQxXSkKVDE3LDQ3OApBU19JTklUX0dFTkVSQVRFRF9tNF9kZWZ1bl9wcm8oWyQwXSltNF9yZXF1aXJlKFtBU19QUkVQQVJFXSltNF9wdXNoZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pYXNfd3JpdGVfZmFpbD0wCmNhdCA+JDEgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCiMhICRTSEVMTAojIEdlbmVyYXRlZCBieSAkYXNfbWUuCiQyClNIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9CmV4cG9ydCBTSEVMTApfQVNFT0YKY2F0ID4+JDEgPDxcX0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQpfQVNfU0hFTExfU0FOSVRJWkUKX0FTX1BSRVBBUkUKbTRfaWYoQVNfTUVTU0FHRV9GRCwgWzFdLCBbXSwgW2V4ZWMgQVNfTUVTU0FHRV9GRD4mMQpdKW00X3RleHRfYm94KFtNYWluIGJvZHkgb2YgJDEgc2NyaXB0Ll0pCl9BU0VPRgp0ZXN0ICRhc193cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkMVtdZG5sCl9tNF9wb3BkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDI5LDI5Cm00X2xvY2F0aW9uKF9BU19ESVJOQU1FX0VYUFIpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo5MzMKVDEyLDI0Cm00X3JlbmFtZV9tNG00X3JlbmFtZShbJDFdLCBbbTRfJDFdKQpUMzAsMjkKbTRfbG9jYXRpb24oX0FTX1VOU0VUX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo2MTYKVDIwLDExMQptNF9zdGFja19mb3JlYWNoX3NlcF9tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdKV9tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdLCBbJDJbXV9tNF9kZWZuKFttNF90bXAtJDFdKSQzXSwgWyQ0W11dKQpUMjAsMjkKbTRfbG9jYXRpb24oQVNfRUNITykuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00Ojk4NApUMzUsMzAKbTRfbG9jYXRpb24oX0FTX1ZBUl9BUFBFTkRfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjE4MTUKVDE5LDE1NgpfbTRfZGVmdW5fcHJvX291dGVybTRfc2V0X2RlbGV0ZShbX200X3Byb3ZpZGVdKW00X3B1c2hkZWYoW19tNF9kaXZlcnRpbmcoWyQxXSldKW00X3B1c2hkZWYoW19tNF9kaXZlcnRpbmddLCBbJDFdKW00X3B1c2hkZWYoW19tNF9kaXZlcnRfZHVtcF0sIG00X2Rpdm51bSltNF9kaXZlcnRfcHVzaChbR1JPV10pClQxNyw2MwptNF9zZXRfZGlmZmVyZW5jZW00X2lmKFskMV0sIFskMl0sIFtdLCBbbTRfc2V0X21hcF9zZXAoWyQxXSwgW18kMChbJDJdLF0sIFspXSldKQpUMTcsMjA5Cl9tNF9yZXF1aXJlX2NoZWNrbTRfaWYoX200X2RlZm4oW19tNF9kaXZlcnRpbmddKSwgWyQyXSwgW200X2lnbm9yZV0sCiAgICAgICBtNF9pZmRlZihbX200X2RpdmVydGluZyhbJDJdKV0sIFstXSksIFstXSwgW200X3dhcm4oW3N5bnRheF0sCiAgIFskMzogYCQxJyB3YXMgZXhwYW5kZWQgYmVmb3JlIGl0IHdhcyByZXF1aXJlZF0pX200X3JlcXVpcmVfY2FsbF0sCiAgICAgICBbbTRfaWdub3JlXSkKVDE5LDE2NgptNF9zZXRfaW50ZXJzZWN0aW9ubTRfaWYoWyQxXSwgWyQyXSwgW200X3NldF9saXN0YyhbJDFdKV0sCiAgICAgICBtNF9ldmFsKG00X3NldF9zaXplKFskMl0pIDwgbTRfc2V0X3NpemUoWyQxXSkpLCBbMV0sIFskMChbJDJdLCBbJDFdKV0sCiAgICAgICBbbTRfc2V0X21hcF9zZXAoWyQxXSwgW18kMChbJDJdLF0sIFspXSldKQpUMTksMTQ3CkFTX1JFUVVJUkVfU0hFTExfRk5tNF9wcm92aWRlX2lmKFtBU19TSEVMTF9GTl8kMV0sIFtdLApbQVNfUkVRVUlSRShbQVNfU0hFTExfRk5fJDFdLApbbTRfcHJvdmlkZShbQVNfU0hFTExfRk5fJDFdKV8kMCgkQCldLAptNF9kZWZhdWx0X3F1b3RlZChbJDRdLCBbTTRTSC1JTklULUZOXSkpXSkKVDEzLDMyCkFTX0xJVEVSQUxfSUZfJDAobTRfZXhwYW5kKFskMV0pLCBbJDJdLCBbJDNdKQpUMjEsMTAxCm00X3N0YWNrX2ZvcmVhY2hfbGlmb19tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0pKV0pX200X3N0YWNrX3JldmVyc2UoW200X3RtcC0kMV0sIFskMV0pClQxMSwzMwptNF9zZXRfbGlzdG00X3NldF9tYXBfc2VwKFskMV0sIFtdLCBbXSwgWyxdKQpUMzIsMjkKbTRfbG9jYXRpb24oX0FTX0RFVEVDVF9SRVFVSVJFRCkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjE1NwpUMjMsMjkKbTRfbG9jYXRpb24oQVNfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjMxNApUMjksMzAKbTRfbG9jYXRpb24oX0FTX1RFU1RfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjEzMzkKRjgsOApfX2xpbmVfX19fbGluZV9fClQxMyw0MQpfbTRfc2V0X3VuaW9ubTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLCBbXSwgWyxbJDJdXSkKVDE3LDEKX200X2RpdmVydChCSU5TSCkwClQxMCw1NQpfbTRfc2hpZnQybTRfaWYoWyQjXSwgWzJdLCBbXSwKICAgICAgIFssIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSldKQpUMTgsNAptNF9QQUNLQUdFX1ZFUlNJT04yLjY1ClQxMCw2NQpfbTRfc2hpZnQzbTRfaWYoWyQjXSwgWzNdLCBbXSwKICAgICAgIFssIG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSkKVDE2LDIyMgpfQVNfQkFTRU5BTUVfU0VEX200X2RlZnVuX3BybyhbJDBdKUFTX0VDSE8oW1gvW10kMV0pIHwKICAgIHNlZCBbJy9eLipcL1woW14vXVteL10qXClcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXC9cKFwvXC9cKSQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcL1woXC9cKS4qL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgcy8uKi8uLzsgcSddW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMywzODEKX0FTX1BBVEhfV0FMS2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKbTRfaWZ2YWxuKFskM10sIFthc19mb3VuZD1mYWxzZV0pZG5sCm00X2JtYXRjaChbJDFdLCBbWzo7XV0sClthc19kdW1teT0iJDEiCmZvciBhc19kaXIgaW4gJGFzX2R1bW15XSwKW2ZvciBhc19kaXIgaW4gbTRfZGVmYXVsdChbJDFdLCBbJFBBVEhdKV0pCmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgbTRfaWZ2YWxuKFskM10sIFthc19mb3VuZD06XSlkbmwKICAkMgogIG00X2lmdmFsbihbJDNdLCBbYXNfZm91bmQ9ZmFsc2VdKWRubApkb25lCm00X2lmdmFsbihbJDNdLCBbJGFzX2ZvdW5kIHx8IHsgJDM7IH1dKWRubApJRlM9JGFzX3NhdmVfSUZTCgpUMTMsMTM5Cl9BU19QQVRIX1dBTEtfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX1BBVEhfU0VQQVJBVE9SX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQyOCwxCl9tNF9kaXZlcnQoSEVBREVSLUNPUFlSSUdIVCkzClQxMSw1OApfQVNfQ0xFQU5VUG00X2RpdmVydF90ZXh0KFtNNFNILVNBTklUSVpFXSwgW19BU19ERVRFQ1RfQkVUVEVSX1NIRUxMXSkKVDEwLDg0Cl9tNF9taW5tYXhtNF9pZihbJCNdLCBbM10sIFskMShbJDJdLCBbJDNdKV0sCiAgICAgICBbJDAoWyQxXSwgJDEoWyQyXSwgWyQzXSksIG00X3NoaWZ0MygkQCkpXSkKVDEzLDU3CkFTX01FX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDExLDIxMAptNF90ZXh0X2JveG00X3B1c2hkZWYoW200X0JvcmRlcl0sCgkgICAgbTRfdHJhbnNsaXQobTRfZm9ybWF0KFslKnNdLCBtNF9kZWNyKG00X3FsZW4oX200X2V4cGFuZChbJDEKXSkpKSwgW10pLCBbIF0sIG00X2RlZmF1bHRfcXVvdGVkKFskMl0sIFstXSkpKVsjI10gbTRfQm9yZGVyIFsjI10KWyMjXSAkMSBbIyNdClsjI10gbTRfQm9yZGVyIFsjI11fbTRfcG9wZGVmKFttNF9Cb3JkZXJdKQpUMTUsMTgwCm00X3NldF9jb250YWluc200X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwKCSAgW200X2lmKG00X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwKCQkgICAgW200X2luZGlyKFtfbTRfc2V0KFskMV0sJDIpXSldLCBbMF0pLCBbMV0sIFskM10sIFskNF0pXSwKCSAgW200X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgWyQzXSwgWyQ0XSldKQpGMTAsNwptNF9lc3lzY21kZXN5c2NtZApUOSwyMApBU19UUl9DUFBfJDAobTRfZXhwYW5kKFskMV0pKQpUOSwxMjQKQVNfVFJfQ1BQX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW18kMF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTAsMzIKbTRfc2V0X21hcG00X3NldF9tYXBfc2VwKFskMV0sIFskMihdLCBbKV0pClQxNCw1MwptNF9jcl9zeW1ib2xzMWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfClQxNCwyMTkKX0FTX0xJVEVSQUxfSUZtNF9pZihtNF9jb25kKFttNF9ldmFsKG00X2luZGV4KFskMV0sIFtAU3xAXSkgPT0gLTEpXSwgWzBdLCBbXSwKICBbbTRfaW5kZXgobTRfdHJhbnNsaXQoWyQxXSwgW1tdYCwjKCldXVtbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XV1bLCBbJCQkXSksIFskXSldLAogIFstMV0sIFstXSksIFstXSwgWyQyXSwgWyQzXSkKVDE0LDYzCm00X2NyX3N5bWJvbHMyYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5ClQxMywxMTYKX0FTX0JPWF9JTkRJUnNlZCAnaDtzLy4vbTRfZGVmYXVsdChbJDJdLCBbLV0pL2c7cy9eLi4uL0AlOkBAJTpAIC87cy8uLi4kLyBAJTpAQCU6QC87cDt4O3A7eCcgPDxfQVNCT1gKQCU6QEAlOkAgJDEgQCU6QEAlOkAKX0FTQk9YClQxMiwxOAptNF9lcnJwcmludG5tNF9lcnJwcmludChbJDEKXSkKVDEzLDMwNgptNF9icGF0c3Vic3RzbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAogICAgICAgWyQjXSwgMSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKICAgICAgIFskI10sIDIsIFttNF91bnF1b3RlKG00X2J1aWx0aW4oW3BhdHN1YnN0XSwgW1skMV1dLCBbJDJdKSldLAogICAgICAgWyQjXSwgMywgW200X3VucXVvdGUobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pKV0sCiAgICAgICBbXyQwKCRAbTRfaWYobTRfZXZhbCgkIyAmIDEpLCAwLCBbLF0pKV0pClQyMywyOQptNF9sb2NhdGlvbihBU19NRVNTQUdFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6NzkzCkY3LDQKbTRfZGVjcmRlY3IKVDEyLDkzCm00X3RleHRfd3JhcF8kMChtNF9lc2NhcGUoWyQxXSksIFskMl0sIG00X2RlZmF1bHRfcXVvdGVkKFskM10sIFskMl0pLAogICAgIG00X2RlZmF1bHRfcXVvdGVkKFskNF0sIFs3OV0pKQpUMTIsOTMKbTRfc2V0X2VtcHR5bTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLAoJICBbbTRfaWYobTRfaW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKSwgWzBdLCBbJDJdLCBbJDNdKV0sIFskMl0pClQxNSwzNgptNF9zZXRfY29udGVudHNtNF9zZXRfbWFwX3NlcChbJDFdLCBbXSwgW10sIFtbJDJdXSkKVDMyLDI5Cm00X2xvY2F0aW9uKF9BU19ESVJOQU1FX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo5NjkKVDE1LDU1Cl9BU19UUl9TSF9JTkRJUmBBU19FQ0hPKFsiX0FTX0VTQ0FQRShbWyQxXV0sIFtgXSwgW1xdKSJdKSB8ICRhc190cl9zaGAKVDIwLDI5Cm00X2xvY2F0aW9uKEFTX0NBU0UpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo1MDkKVDEwLDE2OAptNF9jb21iaW5lbTRfaWYoWyQyXSwgW10sIFtdLCBtNF9ldmFsKFskIyA+IDNdKSwgWzFdLApbbTRfbWFwX2FyZ3Nfc2VwKFttNF9tYXBfYXJnc19zZXAobTRfZHF1b3RlKF0sIFspW1skM11dLCBbXSwgW1skMV1dLF1dbTRfZHF1b3RlKG00X2RxdW90ZShtNF9zaGlmdDMoJEApKSlbWyldLCBbWyQxXV0sICQyKV0pClQ5LDEzMwpBU19WQVJfSUZBU19MSVRFUkFMX0lGKFskMV0sCiAgW0FTX0lGKFt0ZXN0ICJ4JCQxIiA9IHgiIiQyXV0sCiAgW0FTX1ZBUl9DT1BZKFthc192YWxdLCBbJDFdKQogICBBU19JRihbdGVzdCAieCRhc192YWwiID0geCIiJDJdXSksIFskM10sIFskNF0pClQxOCwyMDIKbTRfY3Jfbm90X3N5bWJvbHMxAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywuLzAxMjM0NTY3ODk6Ozw9Pj9AW1xdXmB7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LQpUMTgsMTkyCm00X2NyX25vdF9zeW1ib2xzMgECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLi86Ozw9Pj9AW1xdXmB7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LQpUMjMsMjkKbTRfbG9jYXRpb24oQVNfRElSTkFNRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00Ojk2MApGMTIsOAptNF9icGF0c3Vic3RwYXRzdWJzdApUMzEsMjkKbTRfbG9jYXRpb24oX0FTX1NIRUxMX1NBTklUSVpFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6NDEyClQ3LDIKbTRfZWNobyRAClQyMCwxCkFTX09SSUdJTkFMX1NURElOX0ZEMApUMjUsMTExCm00X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm9fbTRfc3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSwgWyQyW11fbTRfZGVmbihbbTRfdG1wLSQxXSkkM10sIFskNFtdXSlfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSkKVDE0LDEwMgpfQVNfTUVfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfQkFTRU5BTUVfUFJFUEFSRV0pYXNfbWU9YEFTX0JBU0VOQU1FKCIkWzBdIilgCltdX200X2RlZnVuX2VwaShbJDBdKQpUMjYsMzAKbTRfbG9jYXRpb24oX0FTX1BBVEhfV0FMSykuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjEyOTEKVDcsOTEKbTRfYXJnbm00X2Fzc2VydChbMCA8ICQxXSltNF9wdXNoZGVmKFtfJDBdLCBbX200X3BvcGRlZihbXyQwXSldbTRfZHF1b3RlKFskXW00X2luY3IoWyQxXSkpKV8kMCgkQCkKVDI5LDMwCm00X2xvY2F0aW9uKF9BU19FQ0hPX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMDAyClQ4LDI3Cm00X2lmdmFsbTRfaWYoWyQxXSwgW10sIFskM10sIFskMl0pClQ3LDE5NwptNF9jb3B5bTRfaWZkZWYoWyQyXSwgW200X2ZhdGFsKFskMDogd29uJ3Qgb3ZlcndyaXRlIGRlZmluZWQgbWFjcm86ICQyXSldLAoJICBbbTRfc3RhY2tfZm9yZWFjaF9zZXAoWyQxXSwgW200X3B1c2hkZWYoWyQyXSxdLCBbKV0pXSltNF9pZmRlZihbbTRfbG9jYXRpb24oJDEpXSwgW200X2RlZmluZShbbTRfbG9jYXRpb24oJDIpXSwgbTRfbG9jYXRpb24pXSkKVDExLDMxCl9BU19JRl9FTFNFbTRfaWZuYmxhbmsoWyQxXSwKW2Vsc2UKICAkMQpdKQpUMjYsMjkyCl9BU19QQVRIX1NFUEFSQVRPUl9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKSMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgppZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgogIFBBVEhfU0VQQVJBVE9SPToKICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7CiAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fAogICAgICBQQVRIX1NFUEFSQVRPUj0nOycKICB9CmZpCltdX200X2RlZnVuX2VwaShbJDBdKQpUMTQsMTEzCm00X2V4cGFuZF9vbmNlbTRfcHJvdmlkZV9pZihtNF9kZWZhdWx0X3F1b3RlZChbJDJdLCBbJDFdKSwKCSAgICAgICBbXSwKCSAgICAgICBbbTRfcHJvdmlkZShtNF9kZWZhdWx0X3F1b3RlZChbJDJdLCBbJDFdKSlbXSQxXSkKVDE0LDk2Cl9tNF9icGF0c3Vic3RzbTRfaWYoWyQjXSwgMiwgWyQxXSwKICAgICAgIFskMChtNF9idWlsdGluKFtwYXRzdWJzdF0sIFtbJDFdXSwgWyQyXSwgWyQzXSksCgkgICBtNF9zaGlmdDMoJEApKV0pClQxMyw0MQptNF9wcm92aWRlX2lmbTRfaWZkZWYoW200X3Byb3ZpZGUoJDEpXSwKCSAgWyQyXSwgWyQzXSkKVDE2LDgzNApfQVNfTE5fU19QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCmlmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgogIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUKZWxzZQogIHJtIC1mIGNvbmYkJC5kaXIKICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCmZpCmlmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KICAgIGFzX2xuX3M9J2xuIC1zJwogICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuCiAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4KICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuCiAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8CiAgICAgIGFzX2xuX3M9J2NwIC1wJwogIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCiAgICBhc19sbl9zPWxuCiAgZWxzZQogICAgYXNfbG5fcz0nY3AgLXAnCiAgZmkKZWxzZQogIGFzX2xuX3M9J2NwIC1wJwpmaQpybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCnJtZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKW11fbTRfZGVmdW5fZXBpKFskMF0pClQ4LDEwNzUKQVNfVU5BTUV7CmNhdCA8PF9BU1VOQU1FCm00X3RleHRfYm94KFtQbGF0Zm9ybS5dKQoKaG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCnVuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAp1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKdW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCgovdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCgovYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAovdXNyL2Jpbi9ob3N0aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8fCBlY2hvIHVua25vd25gCi9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYAovYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAgICAgICAgICB8fCBlY2hvIHVua25vd25gCgpfQVNVTkFNRQoKX0FTX1BBVEhfV0FMSyhbJFBBVEhdLCBbQVNfRUNITyhbIlBBVEg6ICRhc19kaXIiXSldKQp9ClQ3LDE0CkFTX0xOX1MkYXNfbG5fcyAkMSAkMgpUNywxMjkKQVNfTE5fU19tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfTE5fU19QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTgsMjA3Cl9BU19UUl9DUFBfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfQ1JfUFJFUEFSRV0pIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgphc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW1teXyRhc19jcl9hbG51bV1dJV8lZyciCltdX200X2RlZnVuX2VwaShbJDBdKQpUOSw3NQpBU19FU0NBUEVfJDAoWyQxXSwgbTRfaWYoWyQyXSwgW10sIFtbYF0sIFtcIiRdXSwgW200X3N1YnN0cihbJDJdLCBbMF0sIFsxXSksIFskMl1dKSkKVDIwLDQKX200X2RpdmVydF9kaXZlcnNpb25LSUxMClQyNCwyOQptNF9sb2NhdGlvbihfQVNfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjI4MwpUMjIsMjkKbTRfbG9jYXRpb24oQVNfRUNIT19OKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6OTkyClQzMCwzMAptNF9sb2NhdGlvbihfQVNfVFJfU0hfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjE3MTYKVDIzLDMwCm00X2xvY2F0aW9uKEFTX01LRElSX1ApLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMjQxCkYxMiw4Cl9tNF91bmRpdmVydHVuZGl2ZXJ0ClQ3LDU0Cl9tNF9jZHJtNF9pZihbJCNdLCAxLCBbXSwKICAgICAgIFssIG00X2RxdW90ZShtNF9zaGlmdCgkQCkpXSkKVDEwLDg2Cm00X3RvdXBwZXJtNF90cmFuc2xpdChbWyQxXV0sIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5el0sCgkJICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpdKQpUOCwxOQptNF9jdXJyeSQxKG00X3NoaWZ0KCRALClfJDAKVDE2LDMwCl9BU19UUl9DUFBfSU5ESVJgQVNfRUNITyhbIiQxIl0pIHwgJGFzX3RyX2NwcGAKVDE3LDI4Cm00X2RlZmF1bHRfbmJsYW5rbTRfaWZibGFuayhbJDFdLCBbJDJdLCBbJDFdKQpUMjgsMjkKbTRfbG9jYXRpb24oX0FTX0RJUk5BTUVfU0VEKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6OTQwClQxOCw1MzgKX0FTX1RSX0NQUF9MSVRFUkFMbTRfdHJhbnNsaXQoWyQxXSwKICBbKltdXVthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLi86Ozw9Pj9AW1xdXmB7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LV0sCiAgW1BbXV1bQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19dKQpUMTIsNDgKbTRfcmVfZXNjYXBlbTRfYnBhdHN1YnN0KFskMV0sCgkgICAgICBbW11bKisuP1xeJF1dLCBbXFxcJl0pClQxMiwyNgptNF9ub3JtYWxpemVtNF9zdHJpcChtNF9mbGF0dGVuKFskMV0pKQpUMTgsNDAKX200X3NldF9kaWZmZXJlbmNlbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFtdLCBbLFskMl1dKQpGMywzCmRubGRubApUMjcsMjA1MgpfQVNfVkVSU0lPTl9DT01QQVJFX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pW2FzX2F3a19zdHJ2ZXJzY21wPScKICAjIFVzZSBvbmx5IGF3ayBmZWF0dXJlcyB0aGF0IHdvcmsgd2l0aCA3dGggZWRpdGlvbiBVbml4IGF3ayAoMTk3OCkuCiAgIyBNeSwgd2hhdCBhbiBvbGQgYXdrIHlvdSBoYXZlLCBNci4gU29sYXJpcyEKICBFTkQgewogICAgd2hpbGUgKGxlbmd0aCh2MSkgJiYgbGVuZ3RoKHYyKSkgewogICAgICAjIFNldCBkMSB0byBiZSB0aGUgbmV4dCB0aGluZyB0byBjb21wYXJlIGZyb20gdjEsIGFuZCBsaWtld2lzZSBmb3IgZDIuCiAgICAgICMgTm9ybWFsbHkgdGhpcyBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIGJ1dCBpZiB2MSBhbmQgdjIgY29udGFpbiBkaWdpdHMsCiAgICAgICMgY29tcGFyZSB0aGVtIGFzIGludGVnZXJzIGFuZCBmcmFjdGlvbnMgYXMgc3RydmVyc2NtcCBkb2VzLgogICAgICBpZiAodjEgfiAvXlswLTldLyAmJiB2MiB+IC9eWzAtOV0vKSB7CgkjIFNwbGl0IHYxIGFuZCB2MiBpbnRvIHRoZWlyIGxlYWRpbmcgZGlnaXQgc3RyaW5nIGNvbXBvbmVudHMgZDEgYW5kIGQyLAoJIyBhbmQgYWR2YW5jZSB2MSBhbmQgdjIgcGFzdCB0aGUgbGVhZGluZyBkaWdpdCBzdHJpbmdzLgoJZm9yIChsZW4xID0gMTsgc3Vic3RyKHYxLCBsZW4xICsgMSkgfiAvXlswLTldLzsgbGVuMSsrKSBjb250aW51ZQoJZm9yIChsZW4yID0gMTsgc3Vic3RyKHYyLCBsZW4yICsgMSkgfiAvXlswLTldLzsgbGVuMisrKSBjb250aW51ZQoJZDEgPSBzdWJzdHIodjEsIDEsIGxlbjEpOyB2MSA9IHN1YnN0cih2MSwgbGVuMSArIDEpCglkMiA9IHN1YnN0cih2MiwgMSwgbGVuMik7IHYyID0gc3Vic3RyKHYyLCBsZW4yICsgMSkKCWlmIChkMSB+IC9eMC8pIHsKCSAgaWYgKGQyIH4gL14wLykgewoJICAgICMgQ29tcGFyZSB0d28gZnJhY3Rpb25zLgoJICAgIHdoaWxlIChkMSB+IC9eMC8gJiYgZDIgfiAvXjAvKSB7CgkgICAgICBkMSA9IHN1YnN0cihkMSwgMik7IGxlbjEtLQoJICAgICAgZDIgPSBzdWJzdHIoZDIsIDIpOyBsZW4yLS0KCSAgICB9CgkgICAgaWYgKGxlbjEgIT0gbGVuMiAmJiAhIChsZW4xICYmIGxlbjIgJiYgc3Vic3RyKGQxLCAxLCAxKSA9PSBzdWJzdHIoZDIsIDEsIDEpKSkgewoJICAgICAgIyBUaGUgdHdvIGNvbXBvbmVudHMgZGlmZmVyIGluIGxlbmd0aCwgYW5kIHRoZSBjb21tb24gcHJlZml4CgkgICAgICAjIGNvbnRhaW5zIG9ubHkgbGVhZGluZyB6ZXJvcy4gIENvbnNpZGVyIHRoZSBsb25nZXIgdG8gYmUgbGVzcy4KCSAgICAgIGQxID0gLWxlbjEKCSAgICAgIGQyID0gLWxlbjIKCSAgICB9IGVsc2UgewoJICAgICAgIyBPdGhlcndpc2UsIGNvbXBhcmUgYXMgc3RyaW5ncy4KCSAgICAgIGQxID0gIngiIGQxCgkgICAgICBkMiA9ICJ4IiBkMgoJICAgIH0KCSAgfSBlbHNlIHsKCSAgICAjIEEgZnJhY3Rpb24gaXMgbGVzcyB0aGFuIGFuIGludGVnZXIuCgkgICAgZXhpdCAxCgkgIH0KCX0gZWxzZSB7CgkgIGlmIChkMiB+IC9eMC8pIHsKCSAgICAjIEFuIGludGVnZXIgaXMgZ3JlYXRlciB0aGFuIGEgZnJhY3Rpb24uCgkgICAgZXhpdCAyCgkgIH0gZWxzZSB7CgkgICAgIyBDb21wYXJlIHR3byBpbnRlZ2Vycy4KCSAgICBkMSArPSAwCgkgICAgZDIgKz0gMAoJICB9Cgl9CiAgICAgIH0gZWxzZSB7CgkjIFRoZSBub3JtYWwgY2FzZSwgd2l0aG91dCB3b3JyeWluZyBhYm91dCBkaWdpdHMuCglkMSA9IHN1YnN0cih2MSwgMSwgMSk7IHYxID0gc3Vic3RyKHYxLCAyKQoJZDIgPSBzdWJzdHIodjIsIDEsIDEpOyB2MiA9IHN1YnN0cih2MiwgMikKICAgICAgfQogICAgICBpZiAoZDEgPCBkMikgZXhpdCAxCiAgICAgIGlmIChkMSA+IGQyKSBleGl0IDIKICAgIH0KICAgICMgQmV3YXJlIFNvbGFyaXMgL3Vzci94Z3A0L2Jpbi9hd2sgKGF0IGxlYXN0IHRocm91Z2ggU29sYXJpcyAxMCksCiAgICAjIHdoaWNoIG1pc2hhbmRsZXMgc29tZSBjb21wYXJpc29ucyBvZiBlbXB0eSBzdHJpbmdzIHRvIGludGVnZXJzLgogICAgaWYgKGxlbmd0aCh2MikpIGV4aXQgMQogICAgaWYgKGxlbmd0aCh2MSkpIGV4aXQgMgogIH0KJ11bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE0LDExNgpBU19MSU5FTk9fUFVTSF9tNF9kZWZ1bl9wcm8oWyQwXSlhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrW11fbTRfZGVmdW5fZXBpKFskMF0pCkYxMiw4Cl9tNF91bmRlZmluZXVuZGVmaW5lClQxMCw3OQpfbTRfc2hpZnRubTRfaWYoWyQxXSwgMSwgW200X3NoaWZ0KF0sCiAgICAgICBbJDAobTRfZGVjcihbJDFdKV0pLCBtNF9zaGlmdChtNF9zaGlmdCgkQCkpKQpUMjAsMTcwCl9tNF92ZXJzaW9uX3VubGV0dGVybTRfYnBhdHN1YnN0KG00X2JwYXRzdWJzdChtNF90cmFuc2xpdChbW1tbMCwkMV1dXV0sIFsuLV0sIFssLF0pLFtbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl1dWytdLAoJICAgICAgWysxLC0xLFswcjM2OlwmXV0pLCBbLDBdLCBbLFswcjEwOjBdXSkKVDcsNjMzCkFTX0lOSVQjIFdyYXAgb3VyIGNsZWFudXAgcHJpb3IgdG8gbTRzdWdhcidzIGNsZWFudXAuCm00X3dyYXAoW19BU19DTEVBTlVQXSkKbTRfaW5pdAptNF9wcm92aWRlKFtBU19JTklUXSkKCiMgRm9yYmlkZGVuIHRva2VucyBhbmQgZXhjZXB0aW9ucy4KbTRfcGF0dGVybl9mb3JiaWQoW15fP0FTX10pCgojIEJhbmdzaGUgYW5kIG1pbmltYWwgaW5pdGlhbGl6YXRpb24uCm00X2RpdmVydF90ZXh0KFtCSU5TSF0sIFtAJTpAISAvYmluL3NoXSkKbTRfZGl2ZXJ0X3RleHQoW0hFQURFUi1DT01NRU5UXSwKCSAgICAgICBbQCU6QCBHZW5lcmF0ZWQgZnJvbSBfX2ZpbGVfXyBieSBtNF9QQUNLQUdFX1NUUklORy5dKQptNF9kaXZlcnRfdGV4dChbTTRTSC1TQU5JVElaRV0sIFtfQVNfU0hFTExfU0FOSVRJWkVdKQptNF9kaXZlcnRfdGV4dChbTTRTSC1JTklULUZOXSwgW200X3RleHRfYm94KFtNNHNoIFNoZWxsIEZ1bmN0aW9ucy5dKV0pCgojIExldCdzIGdvIQptNF9kaXZlcnQoW0JPRFldKWRubAptNF90ZXh0X2JveChbTWFpbiBib2R5IG9mIHNjcmlwdC5dKQpfQVNfREVURUNUX1JFUVVJUkVEKFtfQVNfU0hFTExfRk5fV09SS10pZG5sCkFTX1JFUVVJUkUoW19BU19VTlNFVF9QUkVQQVJFXSwgW10sIFtNNFNILUlOSVQtRk5dKWRubAoKVDExLDEzNgptNF91bmRpdmVydG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFskI10sIFsxXSwgW19tNF91bmRpdmVydChfbTRfZGl2ZXJ0KFskMV0pKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDE1LDM2Cl9BU19CT1hfTElURVJBTGNhdCA8PFxfQVNCT1gKbTRfdGV4dF9ib3goJEApCl9BU0JPWApUMTAsNDEyCm00X3JlcXVpcmVtNF9pZmRlZihbX200X2V4cGFuZGluZygkMSldLAogIFttNF9mYXRhbChbJDA6IGNpcmN1bGFyIGRlcGVuZGVuY3kgb2YgJDFdKV0pbTRfaWYoX200X2RpdmVydF9kdW1wLCBbXSwKICBbbTRfZmF0YWwoWyQwKCQxKTogY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBhbiBdZG5sCm00X2lmKFskMF0sIFttNF9yZXF1aXJlXSwgW1ttNF9kZWZ1bl1dLCBbW0FDX0RFRlVOXV0pWydkIG1hY3JvXSldKW00X3Byb3ZpZGVfaWYoWyQxXSwgW200X3NldF9jb250YWlucyhbX200X3Byb3ZpZGVdLCBbJDFdLAogICAgW19tNF9yZXF1aXJlX2NoZWNrKFskMV0sIF9tNF9kZWZuKFttNF9wcm92aWRlKCQxKV0pLCBbJDBdKV0sIFttNF9pZ25vcmVdKV0sCiAgW19tNF9yZXF1aXJlX2NhbGxdKShbJDFdLCBbJDJdLCBfbTRfZGl2ZXJ0X2R1bXApClQ3LDExOQptNF9jYXNlbTRfaWYoWyQjXSwgMCwgW10sCiAgICAgICBbJCNdLCAxLCBbXSwKICAgICAgIFskI10sIDIsIFskMl0sCiAgICAgICBbJDFdLCBbJDJdLCBbJDNdLAogICAgICAgWyQwKFskMV0sIG00X3NoaWZ0MygkQCkpXSkKVDExLDU1Cm00X3NpbmNsdWRlbTRfaW5jbHVkZV91bmlxdWUoWyQxXSlkbmwKbTRfYnVpbHRpbihbc2luY2x1ZGVdLCBbJDFdKQpUOSwyNTUKbTRfY3JfYWxsAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywuLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxOSw2MgptNF92ZXJzaW9uX3VubGV0dGVybTRfc3Vic3RyKG00X21hcF9hcmdzKFsubTRfZXZhbF0sIG00X3VucXVvdGUoXyQwKFskMV0pKSksIFszXSkKVDE3LDMyCm00X2RlZmluZV9kZWZhdWx0bTRfaWZuZGVmKFskMV0sIFttNF9kZWZpbmUoJEApXSkKVDExLDE2MAptNF91bmRlZmluZW00X2lmKFskI10sIFswXSwgW1skMF1dLAogICAgICAgWyQjXSwgWzFdLCBbbTRfaWZkZWYoWyQxXSwgW19tNF91bmRlZmluZShbJDFdKV0sCgkJCSAgICBbbTRfZmF0YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQxXSldKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDE1LDEyCm00X1BBQ0tBR0VfTkFNRUdOVSBBdXRvY29uZgpGMTAsNwptNF9idWlsdGluYnVpbHRpbgpUMTAsMjYxCkFTX1JFUVVJUkVfbTRfZGVmdW5fcHJvKFskMF0pbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0X2Rlc2lyZWRdLCBbbTRfZGVmYXVsdF9xdW90ZWQoWyQzXSwgW000U0gtSU5JVF0pXSltNF9pZihtNF9ldmFsKF9tNF9kaXZlcnRfZHVtcCAtIDAgPD0gX200X2RpdmVydChfbTRfZGl2ZXJ0X2Rlc2lyZWQpKSwKICAgICAgIDEsIFttNF9yZXF1aXJlKF0sCgkgIFttNF9kaXZlcnRfcmVxdWlyZShfbTRfZGl2ZXJ0X2Rlc2lyZWQsXSkgWyQxXSwgWyQyXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE0LDQ0Cm00X2RpdmVydF9vbmNlbTRfZXhwYW5kX29uY2UoW200X2RpdmVydF90ZXh0KFskMV0sIFskMl0pXSkKVDExLDE0NgpfbTRfZXhwYW5kX200X2lmKFskNF0sIFt9Pj0tXSwKICAgICAgIFttNF9jaGFuZ2VxdW90ZShbLT08eyQyXSwgWyl9Pj0tXSkkM200X2NoYW5nZXF1b3RlKFssIF0pXSwKICAgICAgIFskMChbJDFdLCBbKCQyXSwgLT08eygkMiQxKX0+PS0sIFt9Pj0tXSltNF9pZ25vcmUkMl0pClQyOSwyOQptNF9sb2NhdGlvbihfQVNfQkFTRU5BTUVfU0VEKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6ODg0ClQxNyw2NApfbTRfZGl2ZXJ0X3Vuc2FmZW00X2ZhdGFsKFskMDogY2Fubm90IGNoYW5nZSBkaXZlcnNpb24gdG8gYCQxJyBpbnNpZGUgbTRfZXhwYW5kXSkKVDgsOTkKX200X2NvbmRtNF9pZigoJDEpLCBbKCQyKV0sIFskM10sCiAgICAgICBbJCNdLCBbM10sIFtdLAogICAgICAgWyQjXSwgWzRdLCBbJDRdLAogICAgICAgWyQwKG00X3NoaWZ0MygkQCkpXSkKVDE2LDAKbTRfcGF0dGVybl9hbGxvdwpUMTcsMjQ4Cm00X2RpdmVydF9yZXF1aXJlbTRfaWZkZWYoW19tNF9leHBhbmRpbmcoJDIpXSwKICBbbTRfZmF0YWwoWyQwOiBjaXJjdWxhciBkZXBlbmRlbmN5IG9mICQyXSldKW00X2lmKF9tNF9kaXZlcnRfZHVtcCwgW10sCiAgW200X2ZhdGFsKFskMCgkMik6IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgYW4gbTRfZGVmdW4nZCBtYWNyb10pXSltNF9wcm92aWRlX2lmKFskMl0sIFtdLAogIFtfbTRfcmVxdWlyZV9jYWxsKFskMl0sIFskM10sIF9tNF9kaXZlcnQoWyQxXSkpXSkKRjksNgptNF9zeXN2YWxzeXN2YWwKVDEzLDkxCkFTX1NFVF9TVEFUVVNfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0VYSVRfUFJFUEFSRV0pW11hc19mbl9zZXRfc3RhdHVzICQxW11fbTRfZGVmdW5fZXBpKFskMF0pClQyMiw1MjcKX0FTX1ZBUl9BUFBFTkRfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fYXBwZW5kXSwgW1ZBUiBWQUxVRV0sCltBcHBlbmQgdGhlIHRleHQgaW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4KVkFSLiAgVGFrZSBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQKbGluZWFyIGdyb3d0aCBvdmVyIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljCmdyb3d0aCBwcmVzZW50IGluIG5haXZlIGltcGxlbWVudGF0aW9ucy5dKQpBU19JRihbX0FTX1JVTihbIkFTX0VTQ0FQRShtNF9xdW90ZShfQVNfVkFSX0FQUEVORF9XT1JLUykpIl0pXSwKW2V2YWwgJ2FzX2ZuX2FwcGVuZCAoKQogIHsKICAgIGV2YWwgJFtdMSs9XCRbXTIKICB9J10sClthc19mbl9hcHBlbmQgKCkKICB7CiAgICBldmFsICRbXTE9XCQkW10xXCRbXTIKICB9XSkgIyBhc19mbl9hcHBlbmQKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNywwCm00X3BhdHRlcm5fZm9yYmlkClQ5LDY5Cm00X2Fzc2VydG00X2lmKG00X2V2YWwoWyQxXSksIDAsCiAgICAgICBbbTRfZmF0YWwoW2Fzc2VydCBmYWlsZWQ6ICQxXSwgWyQyXSldKQpGMTAsNwptNF9wdXNoZGVmcHVzaGRlZgpUMjAsNTMKbTRfZGl2ZXJ0X3N0YWNrX3B1c2htNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X3N0YWNrXSwgbTRfbG9jYXRpb25bOiAkMTogJDJdKQpUMTcsMTA1Cl9tNF9kZWZpbmVfY3Jfbm90bTRfZGVmaW5lKFttNF9jcl9ub3RfJDFdLAoJICAgbTRfdHJhbnNsaXQobTRfZHF1b3RlKG00X2RlZm4oW200X2NyX2FsbF0pKSwKCQkgICAgICAgbTRfZGVmbihbbTRfY3JfJDFdKSkpClQxOSwyMQpfQVNfVkFSX0FSSVRIX1dPUktTdGVzdCAkKCggMSArIDEgKSkgPSAyClQyMywzOQptNF9leHBhbnNpb25fc3RhY2tfcHVzaG00X3B1c2hkZWYoW19tNF9leHBhbnNpb25fc3RhY2tdLCBbJDFdKQpUMTQsMTMxCkFTX1NFVF9DQVRGSUxFY2FzZSAkMiBpbiBAJTpAKCgKLikgJDE9JDM7OwoqKQogIGNhc2UgJDMgaW4gQCU6QCgoKAogIC4pICQxPSQyOzsKICBbW1xcL11dKiB8ID86W1tcXC9dXSogKSAkMT0kMzs7CiAgKikgJDE9JDIvJDM7OwogIGVzYWM7Owplc2FjW10KVDM0LDMwCm00X2xvY2F0aW9uKF9BU19WQVJfQVJJVEhfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjE4NTcKVDEzLDI2Cm00X2NyX2xldHRlcnNhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egpUNywxMQpBU19FQ0hPJGFzX2VjaG8gJDEKVDcsMTI0CkFTX0VDSE9fbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMCwzNgpfbTRfZXhwYW5kJDBfKFskMV0sIFsoXSwgLT08eygkMSl9Pj0tLCBbfT49LV0pClQyNiwxMDQKX0FTX0RFVEVDVF9TVUdHRVNURURfUFJVTkVtNF9zZXRfY29udGFpbnMoW19BU19ERVRFQ1RfUkVRVUlSRURfQk9EWV0sIFskMV0sCgkJIFttNF9zZXRfcmVtb3ZlKFtfQVNfREVURUNUX1NVR0dFU1RFRF9CT0RZXSwgWyQxXSldKQpUMTEsMTQ5Cm00X21hcF9hcmdzbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCiAgICAgICBbJCNdLCBbMV0sIFtdLAogICAgICAgWyQjXSwgWzJdLCBbJDEoWyQyXSlbXV0sCiAgICAgICBbX200X2ZvcmVhY2goWyQxKF0sIFspXSwgJEApXSkKVDE5LDI4OApfbTRfc2V0X2NvbnRlbnRzXzFjbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbbTRfc2V0X2NvbnRhaW5zKFskMV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSksCgkJICAgW200X3B1c2hkZWYoW19tNF9zZXRfKCQxKV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSkpXSwKCQkgICBbX200X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbigKICAgICAgW19tNF9zZXQoWyQxXSldKVspXSldKV9tNF9wb3BkZWYoW19tNF9zZXQoWyQxXSldKSQwKFskMV0pXSwKCSAgW19tNF9wb3BkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldKV0pClQ3LDY1Cl9tNF9taW5tNF9ldmFsKCgoWyQxXSkgPCAoWyQyXSkpICogKFskMV0pICsgKChbJDFdKSA+PSAoWyQyXSkpICogKFskMl0pKQpUMTQsMTgwCkFTX0hFTFBfU1RSSU5HbTRfdGV4dF93cmFwKFskMl0sIG00X2NvbmQoW1skM11dLCBbXSwgWyAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKCQkJICAgIFttNF9ldmFsKFskM10rMCldLCBbMF0sIFtbJDNdXSwKCQkJICAgIFttNF9mb3JtYXQoW1slKnNdXSwgWyQzXSwgW10pXSksCgkgICAgICBtNF9leHBhbmQoWyAgJDEgXSksIFskNF0pCkY4LDUKbTRfc2hpZnRzaGlmdApUMTYsNDQ3Cl9tNF9yZXF1aXJlX2NhbGxtNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2dyb3ddLCBtNF9kZWNyKF9tNF9kaXZlcnRfZ3JvdykpbTRfcHVzaGRlZihbX200X2RpdmVydGluZyhbJDFdKV0pbTRfcHVzaGRlZihbX200X2RpdmVydGluZ10sIFskMV0pbTRfZGl2ZXJ0X3B1c2goX200X2RpdmVydF9ncm93KW00X2lmKFskMl0sIFtdLCBbJDFdLCBbJDJdKQptNF9wcm92aWRlX2lmKFskMV0sIFttNF9zZXRfcmVtb3ZlKFtfbTRfcHJvdmlkZV0sIFskMV0pXSwKICBbbTRfd2Fybihbc3ludGF4XSwgWyQxIGlzIG00X3JlcXVpcmUnZCBidXQgbm90IG00X2RlZnVuJ2RdKV0pX200X2RpdmVydF9yYXcoJDMpX200X3VuZGl2ZXJ0KF9tNF9kaXZlcnRfZ3JvdyltNF9kaXZlcnRfcG9wKF9tNF9kaXZlcnRfZ3JvdylfbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X2dyb3ddLApbX200X2RpdmVydGluZyhbJDFdKV0sIFtfbTRfZGl2ZXJ0aW5nXSkKVDExLDcwCl9tNF9mb3JlYWNobTRfaWYoWyQjXSwgWzNdLCBbXSwKICAgICAgIFskMVskNF0kMltdJDAoWyQxXSwgWyQyXSwgbTRfc2hpZnQzKCRAKSldKQpUNyw2NQpfbTRfbWF4bTRfZXZhbCgoKFskMV0pID4gKFskMl0pKSAqIChbJDFdKSArICgoWyQxXSkgPD0gKFskMl0pKSAqIChbJDJdKSkKRjgsOApfX2ZpbGVfX19fZmlsZV9fCkYxMCw2Cm00X2JyZWdleHByZWdleHAKVDE0LDEwMwpfQVNfVFJfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfVFJfU0hfUFJFUEFSRV0pQVNfUkVRVUlSRShbX0FTX1RSX0NQUF9QUkVQQVJFXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEyLDQ1CkFTX1ZBUl9BUklUSGFzX2ZuX2FyaXRoICQyICYmIEFTX1ZBUl9TRVQoWyQxXSwgWyRhc192YWxdKQpUMTIsMTk3CkFTX1ZBUl9BUklUSF9tNF9kZWZ1bl9wcm8oWyQwXSlfQVNfREVURUNUX1NVR0dFU1RFRChbX0FTX1ZBUl9BUklUSF9XT1JLU10pQVNfUkVRVUlSRShbX0FTX1ZBUl9BUklUSF9QUkVQQVJFXSwgW10sIFtNNFNILUlOSVQtRk5dKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMCw4MApBU19ESVJOQU1FJGFzX2Rpcm5hbWUgLS0gJDEgfHwKX0FTX0RJUk5BTUVfRVhQUihbJDFdKSAyPi9kZXYvbnVsbCB8fApfQVNfRElSTkFNRV9TRUQoWyQxXSkKVDEwLDEyNApBU19ESVJOQU1FX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW18kMF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMzMsMjkKbTRfbG9jYXRpb24oX0FTX0JBU0VOQU1FX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDo5MTIKVDEzLDQyCm00X21hcGFsbF9zZXBtNF9pZihbJDNdLCBbXSwgW10sIFtfJDAoWyQxXSwgWyQyXSwgJDMpXSkKVDksMjYKbTRfaWZuZGVmbTRfaWZkZWYoWyQxXSwgWyQzXSwgWyQyXSkKVDE4LDE0MgpBU19WRVJTSU9OX0NPTVBBUkVhc19hcmdfdjE9JDEKYXNfYXJnX3YyPSQyCmF3ayAiJGFzX2F3a19zdHJ2ZXJzY21wIiB2MT0iJGFzX2FyZ192MSIgdjI9IiRhc19hcmdfdjIiIC9kZXYvbnVsbApBU19DQVNFKFskP10sCglbMV0sIFskM10sCglbMF0sIFskNF0sCglbMl0sIFskNV0pClQxOCwxMjQKQVNfVkVSU0lPTl9DT01QQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW18kMF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTMsNDcKbTRfY29weV9mb3JjZW00X2lmZGVmKFskMl0sIFtfbTRfdW5kZWZpbmUoWyQyXSldKW00X2NvcHkoJEApClQ3LDEwOAptNF9qb2lubTRfaWYoWyQjXSwgWzFdLCBbXSwKICAgICAgIFskI10sIFsyXSwgW1skMl1dLAogICAgICAgW200X2lmKFskMl0sIFtdLCBbXSwgW1skMl1fXSkkMChbJDFdLCBtNF9zaGlmdDIoJEApKV0pClQyMywyNzU4Cl9BU19ERVRFQ1RfQkVUVEVSX1NIRUxMX200X2RlZnVuX3BybyhbJDBdKW00X3NldF9tYXAoW19BU19ERVRFQ1RfU1VHR0VTVEVEX0JPRFldLCBbX0FTX0RFVEVDVF9TVUdHRVNURURfUFJVTkVdKW00X3B1c2hkZWYoW0FTX0VYSVRdLCBbZXhpdCBtNF9kZWZhdWx0KF1tNF9kcXVvdGUoWyRdWzFdKVssIDEpXSlpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgPSB4OyB0aGVuCiAgYXNfYm91cm5lX2NvbXBhdGlibGU9IkFTX0VTQ0FQRShfbTRfZXhwYW5kKFtfQVNfQk9VUk5FX0NPTVBBVElCTEVdKSkiCiAgX0FTX0RFVEVDVF9FWFBBTkQoW2FzX3JlcXVpcmVkXSwgW19BU19ERVRFQ1RfUkVRVUlSRURfQk9EWV0pCiAgX0FTX0RFVEVDVF9FWFBBTkQoW2FzX3N1Z2dlc3RlZF0sIFtfQVNfREVURUNUX1NVR0dFU1RFRF9CT0RZXSkKICBBU19JRihbX0FTX1JVTihbIiRhc19yZXF1aXJlZCJdKV0sCglbYXNfaGF2ZV9yZXF1aXJlZD15ZXNdLAoJW2FzX2hhdmVfcmVxdWlyZWQ9bm9dKQogIEFTX0lGKFt0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMgJiYgX0FTX1JVTihbIiRhc19zdWdnZXN0ZWQiXSldLAogICAgW10sCiAgICBbX0FTX1BBVEhfV0FMSyhbL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdLAogICAgICBbY2FzZSAkYXNfZGlyIGluIEAlOkAoCgkgLyopCgkgICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCgkgICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhpc3QsIHRvIHNhdmUgc2V2ZXJhbCBmb3Jrcy4KCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQoJICAgICBBU19JRihbeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmCgkJICAgIF9BU19SVU4oWyIkYXNfcmVxdWlyZWQiXSwgWyIkYXNfc2hlbGwiXSldLAoJCSAgIFtDT05GSUdfU0hFTEw9JGFzX3NoZWxsIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCgkJICAgbTRfc2V0X2VtcHR5KFtfQVNfREVURUNUX1NVR0dFU1RFRF9CT0RZXSwgW2JyZWFrIDJdLAoJCSAgICAgW0FTX0lGKFtfQVNfUlVOKFsiJGFzX3N1Z2dlc3RlZCJdLCBbIiRhc19zaGVsbCJdKV0sCgkJCSAgICBbYnJlYWsgMl0pXSldKQoJICAgZG9uZTs7CiAgICAgICBlc2FjXSwKICAgICAgW0FTX0lGKFt7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4ZSI7IH0gJiYKCSAgICAgIF9BU19SVU4oWyIkYXNfcmVxdWlyZWQiXSwgWyIkU0hFTEwiXSldLAoJICAgICBbQ09ORklHX1NIRUxMPSRTSEVMTCBhc19oYXZlX3JlcXVpcmVkPXllc10pXSkKCiAgICAgIEFTX0lGKFt0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geF0sCglbIyBXZSBjYW5ub3QgeWV0IGFzc3VtZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCgkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgoJQkFTSF9FTlY9L2Rldi9udWxsCglFTlY9L2Rldi9udWxsCgkodW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYKCWV4cG9ydCBDT05GSUdfU0hFTEwKCWV4ZWMgIiRDT05GSUdfU0hFTEwiICIkYXNfbXlzZWxmIiAkezErIiRbQF0ifV0pCgpkbmwgVW5mb3J0dW5hdGVseSwgJGFzX21lIGlzbid0IGF2YWlsYWJsZSBoZXJlLgogICAgQVNfSUYoW3Rlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vXSwKICAgICAgW0FTX0VDSE8oWyIkW10wOiBUaGlzIHNjcmlwdCByZXF1aXJlcyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRoYW4gYWxsIl0pCiAgQVNfRUNITyhbIiRbXTA6IHRoZSBzaGVsbHMgdGhhdCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiJdKQogIGlmIHRlc3QgeCR7WlNIX1ZFUlNJT04rc2V0fSA9IHhzZXQgOyB0aGVuCiAgICBBU19FQ0hPKFsiJFtdMDogSW4gcGFydGljdWxhciwgenNoICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIl0pCiAgICBBU19FQ0hPKFsiJFtdMDogYmUgdXBncmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiJdKQogIGVsc2UKICAgIEFTX0VDSE8oIm00X3RleHRfd3JhcChbUGxlYXNlIHRlbGwgXV9tNF9kZWZuKFttNF9QQUNLQUdFX0JVR1JFUE9SVF0pCm00X2lmc2V0KFtBQ19QQUNLQUdFX0JVR1JFUE9SVF0sIFttNF9pZihfbTRfZGVmbihbbTRfUEFDS0FHRV9CVUdSRVBPUlRdKSwKX200X2RlZm4oW0FDX1BBQ0tBR0VfQlVHUkVQT1JUXSksIFtdLCBbYW5kIF9tNF9kZWZuKFtBQ19QQUNLQUdFX0JVR1JFUE9SVF0pXSldKQpbYWJvdXQgeW91ciBzeXN0ZW0sIGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0IGJlZm9yZSB0aGlzIG1lc3NhZ2UuClRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwgb3IgbWFudWFsbHkgcnVuIHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhCnNoZWxsIGlmIHlvdSBkbyBoYXZlIG9uZS5dLCBbJFtdMDogXSwgW10sIFs2Ml0pIikKICBmaQogIEFTX0VYSVRdKV0pCmZpClNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CmV4cG9ydCBTSEVMTAojIFVuc2V0IG1vcmUgdmFyaWFibGVzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbiB0b29scy4KQ0xJQ09MT1JfRk9SQ0U9IEdSRVBfT1BUSU9OUz0KdW5zZXQgQ0xJQ09MT1JfRk9SQ0UgR1JFUF9PUFRJT05TCl9tNF9wb3BkZWYoW0FTX0VYSVRdKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMjYsMzAKbTRfbG9jYXRpb24oQVNfTUVfUFJFUEFSRSkuLi8uLi9saWIvbTRzdWdhci9tNHNoLm00OjEwNzcKRjcsNgptNF9leGl0bTRleGl0ClQxMiw4MwptNF9zZXRfdW5pb25tNF9zZXRfbGlzdGMoWyQxXSltNF9pZihbJDFdLCBbJDJdLCBbXSwKICBbbTRfc2V0X21hcF9zZXAoWyQyXSwgW18kMChbJDFdLF0sIFspXSldKQpUMjAsNzMKQVNfQk9VUk5FX0NPTVBBVElCTEUjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUKRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaApfJDAKClQxNiwyCl9tNF9kaXZlcnQoS0lMTCktMQpUMTAsMTAwCm00X2ZvcmVhY2htNF9pZihbJDJdLCBbXSwgW10sCiAgICAgICBbbTRfcHVzaGRlZihbJDFdKV8kMChbbTRfZGVmaW5lKFskMV0sXSwgWykkM10sIFtdLAogICQyKW00X3BvcGRlZihbJDFdKV0pClQ5LDI2NQpfQVNfUVVPVEVtNF9jb25kKFttNF9pbmRleChbJDFdLCBbXF0pXSwgWy0xXSwgW19BU19RVU9URV9NT0RFUk5dLAoJIFttNF9ldmFsKG00X2luZGV4KG00X3RyYW5zbGl0KFtbJDFdXSwgWyRdLCBbXF0pLCBbXFxdKSA+PSAwKV0sClsxXSwgW19BU19RVU9URV9NT0RFUk5dLAoJIFttNF9ldmFsKG00X2luZGV4KG00X3RyYW5zbGl0KFtbJDFdXSwgWyJdLCBbYF0pLCBbXGBdKSA+PSAwKV0sZG5sIgpbMV0sIFtfQVNfUVVPVEVfT0xEXSwKCSBbX0FTX1FVT1RFX01PREVSTl0pKFskMV0pCkYxMSw4Cm00X3RyYWNlb2ZmdHJhY2VvZmYKVDgsMzMKbTRfYXBwbHltNF9pZihbJDJdLCBbXSwgWyQxXSwgWyQxKCQyKV0pW10KVDMwLDAKbTRfaW5jbHVkZShtNHN1Z2FyL3ZlcnNpb24ubTQpClQyNiwzMAptNF9sb2NhdGlvbihBU19WQVJfQVBQRU5EKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTg0OApUMTQsNzMKX200X21hcGFsbF9zZXBtNF9hcHBseShbJDFdLCBbJDNdKV9tNF9mb3JlYWNoKFttNF9hcHBseShbJDJbXSQxXSxdLCBbKV0sIG00X3NoaWZ0MigkQCkpClQ5LDEzMgptNF9kaXZlcnRtNF9wb3BkZWYoW19tNF9kaXZlcnRfc3RhY2tdKW00X2RlZmluZShbX200X2RpdmVydF9kaXZlcnNpb25dLCBbJDFdKW00X2RpdmVydF9zdGFja19wdXNoKFskMF0sIFskMV0pX200X2RpdmVydF9yYXcoX200X2RpdmVydChbJDFdKSkKRjEwLDcKbTRfdHJhY2VvbnRyYWNlb24KVDEzLDUyCm00X2NyX0xldHRlcnNhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaClQ3LDE0NgpBU19DQVNFX200X2RlZnVuX3BybyhbJDBdKWNhc2UgJDEgaW5bXW00X21hcF9hcmdzX3BhaXIoW18kMF0sIFtfJDBfREVGQVVMVF0sCiAgIG00X3NoaWZ0KCRAbTRfaWYobTRfZXZhbChbJCMgJiAxXSksIFsxXSwgWyxdKSkpCmVzYWNbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDksNzUKbTRfYmVmb3JlbTRfcHJvdmlkZV9pZihbJDJdLAoJICAgICAgIFttNF93YXJuKFtzeW50YXhdLCBbJDIgd2FzIGNhbGxlZCBiZWZvcmUgJDFdKV0pClQxMCwxNDMKbTRfbWFwX3NlcG00X3B1c2hkZWYoW200X1NlcF0sIFttNF9kZWZpbmUoW200X1NlcF0sIF9tNF9kZWZuKFttNF91bnF1b3RlXSkpXSlfbTRfZm9yZWFjaChbX200X2FwcGx5KFttNF9TZXAoWyQyXSlbXSQxXSxdLCBbKV0sIFtdLCAkMyltNF9wb3BkZWYoW200X1NlcF0pClQxMiw1NQptNF9jb3B5X3VubTRtNF9jb3B5KFskMV0sIG00X2JwYXRzdWJzdChbJDFdLCBbXm00X1woLipcKV0sIFtbXDFdXSkpClQxMCw4NgptNF90b2xvd2VybTRfdHJhbnNsaXQoW1skMV1dLCBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpdLAoJCSAgICAgW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XSkKVDgsMTg5Cl9tNF93cmFwbTRfaWZkZWYoWyQwX3RleHRdLAoJICBbbTRfZGVmaW5lKFskMF90ZXh0XSwgWyQxXV9tNF9kZWZuKFskMF90ZXh0XSlbJDJdKV0sCgkgIFttNF9idWlsdGluKFttNHdyYXBdLCBbbTRfdW5xdW90ZSgKICBfbTRfZGVmbihbJDBfdGV4dF0pX200X3BvcGRlZihbJDBfdGV4dF0pKV0pbTRfZGVmaW5lKFskMF90ZXh0XSwgWyQxJDJdKV0pCkY5LDYKbTRfZGVmaW5lZGVmaW5lClQxMCwyNwptNF9kZWZhdWx0bTRfaWYoWyQxXSwgW10sIFskMl0sIFskMV0pClQ5LDUKX200X2N1cnJ5WyQxXSkKVDEzLDE4CkFTX1ZBUl9BUFBFTkRhc19mbl9hcHBlbmQgJDEgJDIKVDEzLDE1NQpBU19WQVJfQVBQRU5EX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19WQVJfQVBQRU5EX1BSRVBBUkVdLCBbXSwgW000U0gtSU5JVC1GTl0pW11fbTRfcG9wZGVmKFskMF0pbTRfaW5kaXIoWyQwXW00X2lmKFskI10sIFswXSwgW10sIFssJEBdKSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDI5LDMwCm00X2xvY2F0aW9uKF9BU19FWFBSX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMDY0ClQ4LDE5OApfbTRfcWxlbm00X2RlZmluZShbbTRfcWxlbi0kMV0sCm00X2lmKG00X2luZGV4KFskMV0sIFtAXSksIFstMV0sIFttNF9sZW4oWyQxXSldLAogICAgICBbbTRfbGVuKG00X2JwYXRzdWJzdChbWyQxXV0sCgkJCSAgIFtAXChcKDw6XHw6Plx8U3xcfCU6XHxcezpcfDpcfVwpXChAXClcfCZ0QFwpXSwKCQkJICAgW1wzXSkpXSkpX200X2RlZm4oW200X3FsZW4tJDFdKQpUMTAsNzIKbTRfcmV2ZXJzZW00X2lmKFskI10sIFswXSwgW10sIFskI10sIFsxXSwgW1skMV1dLAogICAgICAgWyQwKG00X3NoaWZ0KCRAKSksIFskMV1dKQpUMTMsMQpBU19NRVNTQUdFX0ZEMQpUNDAsMzAKbTRfbG9jYXRpb24oX0FTX1ZFUlNJT05fQ09NUEFSRV9QUkVQQVJFKS4uLy4uL2xpYi9tNHN1Z2FyL200c2gubTQ6MTYwOApUMzAsMzAKbTRfbG9jYXRpb24oQVNfTElORU5PX1BSRVBBUkUpLi4vLi4vbGliL200c3VnYXIvbTRzaC5tNDoxMTIyClQxMCwyOTQKX200X2VzY2FwZW00X2NoYW5nZXF1b3RlKFstPTx7KF0sWyl9Pj0tXSltNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KG00X2JwYXRzdWJzdChtNF9icGF0c3Vic3QoCgkgIC09PHsoLT08eygtPTx7KC09PHsoLT08eygkMSl9Pj0tKX0+PS0pfT49LSl9Pj0tKX0+PS0sCgktPTx7KCMpfT49LSwgLT08eyhAJTpAKX0+PS0pLAogICAgICAtPTx7KFxbKX0+PS0sIC09PHsoQDw6QCl9Pj0tKSwKICAgIC09PHsoXF0pfT49LSwgLT08eyhAOj5AKX0+PS0pLAogIC09PHsoXCQpfT49LSwgLT08eyhAU3xAKX0+PS0pbTRfY2hhbmdlcXVvdGUoWyxdKQpUMTYsNTUKX200X2RpdmVydF9zdGFjay4uLy4uL2xpYi9tNHN1Z2FyL200c3VnYXIubTQ6MzI1MTogbTRfZGl2ZXJ0X3B1c2g6IEtJTEwKVDExLDQ5CkFTX1ZBUl9DT1BZQVNfTElURVJBTF9JRihbJDFbXSQyXSwgWyQxPSQkMl0sIFtldmFsICQxPVwkJDJdKQpUMTcsMjI5Cm00X2NyX25vdF9sZXR0ZXJzAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywuLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2B7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LQpUMTcsMTE3Cm00X2luY2x1ZGVfdW5pcXVlbTRfaWZkZWYoW200X2luY2x1ZGUoJDEpXSwKCSAgW200X3dhcm4oW3N5bnRheF0sIFtmaWxlIGAkMScgaW5jbHVkZWQgc2V2ZXJhbCB0aW1lc10pXSlkbmwKbTRfZGVmaW5lKFttNF9pbmNsdWRlKCQxKV0pClQ4LDc3Cm00X3N0cmlwbTRfYnBhdHN1YnN0cyhbJDEgXSwKCSAgICAgICBbWwkgXStdLCBbIF0sCgkgICAgICAgW14uID9cKC4qXCkgLiRdLCBbW1tcMV1dXSkKVDksNAptNF9kcXVvdGVbJEBdCkQtMSwwCgojIEVuZCBvZiBmcm96ZW4gc3RhdGUgZmlsZQo=