IyBUaGlzIGlzIGEgZnJvemVuIHN0YXRlIGZpbGUgZ2VuZXJhdGVkIGJ5IEdOVSBNNCAxLjQuMTYKVjEKUTEsMQpbXQpUMjIsMTMzCl9BU19MSVRFUkFMX0hFUkVET0NfSUZtNF9pZihtNF9pbmRleChbJDFdLCBbQFN8QF0pLCBbLTFdLAogIFttNF9pZihtNF9pbmRleChtNF90cmFuc2xpdChbWyQxXV0sIFtcYF0sIFskXSksIFskXSksIFstMV0sCiAgICBbJDBfWUVTXSwgWyQwX05PXSldLAogIFskMF9OT10pClQxNiw0MDAKX0FTX0VYSVRfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFX1NIRUxMX0ZOKFthc19mbl9zZXRfc3RhdHVzXSwKICBbQVNfRlVOQ1RJT05fREVTQ1JJQkUoW2FzX2ZuX3NldF9zdGF0dXNdLCBbU1RBVFVTXSwKICAgIFtTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuXSldLCBbICByZXR1cm4gJFtdMV0pQVNfUkVRVUlSRV9TSEVMTF9GTihbYXNfZm5fZXhpdF0sCiAgW0FTX0ZVTkNUSU9OX0RFU0NSSUJFKFthc19mbl9leGl0XSwgW1NUQVRVU10sCiAgICBbRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0Ll0pXSwKWyAgc2V0ICtlCiAgYXNfZm5fc2V0X3N0YXR1cyAkWzFdCiAgZXhpdCAkWzFdXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEyLDY5Cl9tNF9saXN0X2NtcG00X2lmKFskMV0sIFtdLCBbMG00X2lnbm9yZV0sIFskMl0sIFswXSwgW200X3VucXVvdGVdLCBbJDJtNF9pZ25vcmVdKQpGMTIsOQptNF9kZWJ1Z2ZpbGVkZWJ1Z2ZpbGUKVDE3LDAKQVNfTUVTU0FHRV9MT0dfRkQKVDgsMApfbTRfd2FybgpUMjcsMTAzCm00X2xvY2F0aW9uKF9BU19NRV9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjEwODcKVDIwLDEwMgptNF9sb2NhdGlvbihBU19FWElUKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjU1MgpUMjEsNDc5Cl9BU19WQVJfQVJJVEhfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fYXJpdGhdLCBbQVJHLi4uXSwKW1BlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbgp0aGUgZ2xvYmFsICRhc192YWwuICBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuClRoZSBhcmd1bWVudHMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuXSkKQVNfSUYoW19BU19SVU4oWyJBU19FU0NBUEUobTRfcXVvdGUoX0FTX1ZBUl9BUklUSF9XT1JLUykpIl0pXSwKW2V2YWwgJ2FzX2ZuX2FyaXRoICgpCiAgewogICAgYXNfdmFsPSQoKCAkW10qICkpCiAgfSddLApbYXNfZm5fYXJpdGggKCkKICB7CiAgICBhc192YWw9YGV4cHIgIiRbXUAiIHx8IHRlc3QgJD8gLWVxIDFgCiAgfV0pICMgYXNfZm5fYXJpdGgKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNSwyMTgKbTRfbWFwX2FyZ3Nfc2VwbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCiAgICAgICBbJCNdLCBbMV0sIFtdLAogICAgICAgWyQjXSwgWzJdLCBbXSwKICAgICAgIFskI10sIFszXSwgW10sCiAgICAgICBbJCNdLCBbNF0sIFskMVskNF0kMltdXSwKICAgICAgIFskMVskNF0kMltdX200X2ZvcmVhY2goWyQzW10kMV0sIFskMl0sIG00X3NoaWZ0MygkQCkpXSkKVDIyLDEwMwptNF9sb2NhdGlvbihBU19URVNUX1gpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTA1NQpUOCwxNTAKbTRfZGVmdW5tNF9kZWZpbmUoW200X2xvY2F0aW9uKCQxKV0sIG00X2xvY2F0aW9uKW00X2RlZmF1bHQoWyQzXSwgW200X2RlZmluZV0pKFskMV0sCiAgW19tNF9kZWZ1bl9wcm8oXW00X2RxdW90ZSgkWzBdKVspJDJbXV9tNF9kZWZ1bl9lcGkoXW00X2RxdW90ZSgkWzBdKVspXSkKVDE4LDUwCl9tNF9zZXRfY29udGVudHNfMV9tNF9zdGFja19yZXZlcnNlKFtfbTRfc2V0KFskMV0pXSwgW19tNF9zZXRfKCQxKV0pClQxOCw5NApfbTRfc2V0X2NvbnRlbnRzXzJfbTRfc3RhY2tfcmV2ZXJzZShbX200X3NldF8oJDEpXSwgW19tNF9zZXQoWyQxXSldLAogIFskMltdX200X2RlZm4oW19tNF9zZXRfKCQxKV0pJDNdLCBbJDRbXV0pClQ4LDgxCm00X2Nob21wbTRfZm9ybWF0KFtbJS4qc11dLCBtNF9pbmRleChtNF90cmFuc2xpdChbWyQxXV0sIFsKLy5dLCBbLyAgXSlbLi8uXSwgWy8uXSksIFskMV0pClQxMCw2OApfQVNfVFJfQ1BQX0FTX0xJVEVSQUxfSUYoWyQxXSwgWypdWwkgXVsKXSkoW10sIFskMF9JTkRJUl0sIFskMF9MSVRFUkFMXSkoWyQxXSkKVDE2LDU5MApfQVNfVEVTVF9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKWlmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICBhc190ZXN0X3g9J3Rlc3QgLXgnCmVsc2UKICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgIGFzX2xzX0xfb3B0aW9uPUwKICBlbHNlCiAgICBhc19sc19MX29wdGlvbj0KICBmaQogIGFzX3Rlc3RfeD0nCiAgICBldmFsIHNoIC1jICdcJycKICAgICAgaWYgdGVzdCAtZCAiJFtdMSI7IHRoZW4KCXRlc3QgLWQgIiRbXTEvLiI7CiAgICAgIGVsc2UKCWNhc2UgJFtdMSBpbiBAJTpAKAoJLSopc2V0ICIuLyRbXTEiOzsKCWVzYWM7CgljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJFtdMSIgMj4vZGV2L251bGxgIGluIEAlOkAoKAoJPz8/W1tzeF1dKik6OzsqKWZhbHNlOztlc2FjO2ZpCiAgICAnXCcnIHNoCiAgJwpmaQpkbmwgYXNfZXhlY3V0YWJsZV9wIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBMaWJ0b29sCmRubCAxLjUuMjIsIGJ1dCBpdCBzaG91bGQgZ28gYXdheSBhdCBzb21lIHBvaW50Lgphc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeApbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE4LDMwMwpfQVNfRUNIT19OX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pRUNIT19DPSBFQ0hPX049IEVDSE9fVD0KY2FzZSBgZWNobyAtbiB4YCBpbiBAJTpAKCgoKCgKLW4qKQogIGNhc2UgYGVjaG8gJ3h5XGMnYCBpbgogICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgogIHh5KSAgRUNIT19DPSdcYyc7OwogICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlYIDYuMWAgPiAvZGV2L251bGwKICAgICAgIEVDSE9fVD0nCSc7OwogIGVzYWM7OwoqKQogIEVDSE9fTj0nLW4nOzsKZXNhYwpbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEzLDgyCm00X2RxdW90ZV9lbHRtNF9pZihbJCNdLCBbMF0sIFtdLAogICAgICAgWyQjXSwgWzFdLCBbW1skMV1dXSwKICAgICAgIFtbWyQxXV0sJDAobTRfc2hpZnQoJEApKV0pClQyNCwzMgptNF9kZWZhdWx0X25ibGFua19xdW90ZWRtNF9pZmJsYW5rKFskMV0sIFtbJDJdXSwgW1skMV1dKQpUOSw1NwptNF9hcHBlbmRtNF9kZWZpbmUoWyQxXSwgbTRfaWZkZWYoWyQxXSwgW19tNF9kZWZuKFskMV0pWyQzXV0pWyQyXSkKVDExLDM3Cm00X2xpc3RfY21wXyQwX3JhdyhtNF9kcXVvdGUoJDEpLCBtNF9kcXVvdGUoJDIpKQpUNyw4NApfbTRfZm9yJDRbJDFdJDVbXW00X2lmKFskMV0sIFskMl0sIFtdLAoJCSBbJDAobTRfZXZhbChbJDEgKyAkM10pLCBbJDJdLCBbJDNdLCBbJDRdLCBbJDVdKV0pClQxMiw3OAptNF9mb3JlYWNoX3dtNF9wdXNoZGVmKFskMV0pbTRfbWFwX2FyZ3NfdyhbJDJdLAogIFttNF9kZWZpbmUoWyQxXSxdLCBbKSQzXSltNF9wb3BkZWYoWyQxXSkKVDUsMTEzCkFTX0lGX200X2RlZnVuX3BybyhbJDBdKWlmICQxOyB0aGVuIDoKICAkMgptNF9tYXBfYXJnc19wYWlyKFtfJDBdLCBbXyQwX0VMU0VdLCBtNF9zaGlmdDIoJEApKWZpW11bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDExLDE2NQpfbTRfZHVtcGRlZm00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X2J1aWx0aW4oW2R1bXBkZWZdLCBbJDFdKV0sCiAgICAgICBbbTRfbWFwX2FyZ3Nfc2VwKFttNF9idWlsdGluKFtkdW1wZGVmXSxdLCBbKV0sIFtdLCAkQCldKQpUMjUsMTAzCm00X2xvY2F0aW9uKEFTX1ZBUl9BUklUSCkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxOTYzClQxNCwxMzEKbTRfc2V0X2FkZF9hbGxtNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLCBtNF9ldmFsKG00X3NldF9zaXplKFskMV0pCiAgKyBtNF9sZW4obTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLCBbXyQwX2NoZWNrXSwgW18kMF0pKFskMV0sICRAKSkpKQpGNyw0Cm00X2luY3JpbmNyCkY4LDQKX200X2RlZm5kZWZuClQxMywxMjQKX200X2RlZnVuX3Byb200X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW10sIFtfbTRfZGVmdW5fcHJvX291dGVyKFskMV0pXSltNF9leHBhbnNpb25fc3RhY2tfcHVzaChbJDFdKW00X3B1c2hkZWYoW19tNF9leHBhbmRpbmcoJDEpXSkKVDE1LDExNApBU19WQVJfVEVTVF9TRVRBU19MSVRFUkFMX1dPUkRfSUYoWyQxXSwKICBbJHskMSs6fSBmYWxzZV0sCiAgW3sgYXNfdmFyPSQxOyBldmFsIFwkeyRhc192YXIrOn0gZmFsc2U7IH1dLAogIFtldmFsIFwkeyQxKzp9IGZhbHNlXSkKVDcsMTExCkFTX0VYSVRfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0VYSVRfUFJFUEFSRV0pW11hc19mbl9leGl0IG00X2lmdmFsKFskMV0sIFskMV0sIFskXVs/XSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDI3LDEwMwptNF9sb2NhdGlvbihfQVNfQ1JfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxNzc1ClQxMywxNzUKbTRfZGVmdW5faW5pdG00X2RlZmluZShbJDFdLCBbJDNbXV0pbTRfZGVmdW4oWyQxXSwKICAgWyQyW11fbTRfcG9wZGVmKF1tNF9kcXVvdGUoJFswXSlbKW00X2luZGlyKF1tNF9kcXVvdGUoJFswXSlkbmwKW200X2lmKF1tNF9kcXVvdGUoJFsjXSlbLCBbMF0sIFtdLCBdbTRfZHF1b3RlKFssJF1AKVspKV0sIFttNF9wdXNoZGVmXSkKVDEyLDY0Cl9BU19FQ0hPX0xPR19BU19FQ0hPKFskYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICQxXSwgQVNfTUVTU0FHRV9MT0dfRkQpW10KVDEyLDEzMQpfQVNfRUNIT19MT0dfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0xJTkVOT19QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTcsNjA0Cl9BU19TSEVMTF9GTl9XT1JLYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgWyRdMSk7IH0KYXNfZm5fc3VjY2VzcyAoKSB7IGFzX2ZuX3JldHVybiAwOyB9CmFzX2ZuX2ZhaWx1cmUgKCkgeyBhc19mbl9yZXR1cm4gMTsgfQphc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJldHVybiAwOyB9CmFzX2ZuX3JldF9mYWlsdXJlICgpIHsgcmV0dXJuIDE7IH0KCmV4aXRjb2RlPTAKYXNfZm5fc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9CmFzX2ZuX2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX2ZhaWx1cmUgc3VjY2VlZGVkLjsgfQphc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X3N1Y2Nlc3MgZmFpbGVkLjsgfQphc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X2ZhaWx1cmUgc3VjY2VlZGVkLjsgfQpBU19JRihbKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0IHggPSAiWyRdMSIgKV0sIFtdLAogICAgICBbZXhpdGNvZGU9MTsgZWNobyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2VyZSBub3Qgc2F2ZWQuXSkKdGVzdCB4JGV4aXRjb2RlID0geDBbXQpUMjEsOTcKbTRfY29weXJpZ2h0X2NvbmRlbnNlbTRfdGV4dF93cmFwKG00X2JwYXRzdWJzdChtNF9mbGF0dGVuKFtbJDFdXSksClsoQylbLQkgLDAtOV0qXChbMS05XVswLTldWzAtOV1bMC05XVwpXSwgWyhDKSBcMV0pKQpUMTcsMjAzCm00X2NyX25vdF9MZXR0ZXJzAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMqJSYnKCkkKywuLzAxMjM0NTY3ODk6Ozw9Pj9AW1xdXl9ge3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KVDIxLDEKX200X2RpdmVydChNNFNILUlOSVQpNgpUMTIsNjYKbTRfcmVfc3RyaW5nW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OV0qClQxNiw1Cl9tNF9kaXZlcnQoR1JPVykxMDAwMApUMTgsNzIKbTRfdmVyc2lvbl9jb21wYXJlX200X2xpc3RfY21wX3JhdyhfbTRfdmVyc2lvbl91bmxldHRlcihbJDFdKSwgX200X3ZlcnNpb25fdW5sZXR0ZXIoWyQyXSkpClQzMSwxMDMKbTRfbG9jYXRpb24oX0FTX0xJTkVOT19QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjExMzIKVDI1LDEKX200X2RpdmVydChNNFNILVNBTklUSVpFKTQKVDEwLDEyMApfQVNfRVNDQVBFbTRfaWYobTRfaW5kZXgobTRfdHJhbnNsaXQoW1skMV1dLCBbJDNdLCBbJDIkMiQyJDJdKSwgWyQyXSksIFstMV0sCiAgICAgICBbJDBfXSwgW200X2JwYXRzdWJzdF0pKFskMV0sIFtbJDIkM11dLCBbXFxcJl0pClQyOSwxMDIKbTRfbG9jYXRpb24oX0FTX0VYSVRfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo1MzUKVDE1LDE2NQpfbTRfc2V0X2FkZF9hbGxtNF9pZihbJCNdLCBbMl0sIFtdLAogICAgICAgW200X2lmZGVmKFtfbTRfc2V0KFskMV0sJDMpXSwgW10sCgkJIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMyldLCBbMV0pbTRfcHVzaGRlZihbX200X3NldChbJDFdKV0sCgkgICBbJDNdKS1dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKVDE3LDc4MApfQVNfRVJST1JfUFJFUEFSRUFTX1JFUVVJUkVfU0hFTExfRk4oW2FzX2ZuX2Vycm9yXSwKICBbQVNfRlVOQ1RJT05fREVTQ1JJQkUoW2FzX2ZuX2Vycm9yXSwgW1NUQVRVUyBFUlJPUl1tNF9pZnZhbChBU19NRVNTQUdFX0xPR19GRCwKICAgICAgW1sgW1tMSU5FTk8gTE9HX0ZEXV1dXSksCiAgICBbT3V0cHV0ICJgYmFzZW5hbWUgQFN8QDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci5dCm00X2lmdmFsKEFTX01FU1NBR0VfTE9HX0ZELAogICAgW1tJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsCiAgICAgIHJlZmVyZW5jaW5nIExJTkVOTy5dXSkKICAgIFtUaGVuIGV4aXQgdGhlIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLl0pXSwKWyAgYXNfc3RhdHVzPSRbMV07IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQptNF9pZnZhbChBU19NRVNTQUdFX0xPR19GRCwKW200X3B1c2hkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSwgWyRbNF1dKWRubAogIGlmIHRlc3QgIiRbNF0iOyB0aGVuCiAgICBBU19MSU5FTk9fUFVTSChbJFszXV0pCiAgICBfQVNfRUNIT19MT0coW2Vycm9yOiAkWzJdXSkKICBmaQptNF9kZWZpbmUoW0FTX01FU1NBR0VfTE9HX0ZEXSldLCBbbTRfcHVzaGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV0pZG5sCiAgQVNfTUVTU0FHRShbZXJyb3I6ICRbMl1dLCBbMl0pCl9tNF9wb3BkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSlkbmwKICBBU19FWElUKFskYXNfc3RhdHVzXSldKQpUOCw0Cm00X3F1b3RlWyQqXQpUMTUsNAptNF9QQUNLQUdFX1lFQVIyMDEwClQxMCwyMTEKbTRfZHVtcGRlZm00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFttNF9lcnJwcmludG4oCiAgWyQxOgldbTRfZHF1b3RlKF9tNF9kZWZuKFskMV0pKSldLCBbbTRfZmF0YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQxXSldKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDE1LDE5MwptNF9jcl9ub3RfYWxudW0BAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyolJicoKSQrLC4vOjs8PT4/QFtcXV5fYHt8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQ2LDIxCl9BU19JRmVsaWYgJDE7IHRoZW4gOgogICQyCgpUMTMsMTUKQVNfVkFSX1BPUERFRm00X3BvcGRlZihbJDFdKQpUMjMsMTAyCm00X2xvY2F0aW9uKEFTX1JFUVVJUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MzUzCkY2LDMKbTRfbGVubGVuClQxNCw0MgptNF9kaXZlcnRfdGV4dG00X2RpdmVydF9wdXNoKFskMV0pJDIKbTRfZGl2ZXJ0X3BvcChbJDFdKQpUOCw5NApBU19VTlNFVF9tNF9kZWZ1bl9wcm8oWyQwXSl7IEFTX0xJVEVSQUxfV09SRF9JRihbJDFdLCBbXSwgW2V2YWwgXSkkMT07IHVuc2V0ICQxO31bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEwLDExNQpBU19WQVJfR0VUQVNfTElURVJBTF9XT1JEX0lGKFskMV0sCgkgICAgICAgWyQkMV0sCiAgW2BldmFsICdhc192YWw9JHsnX0FTX0VTQ0FQRShbWyQxXV0sIFtgXSwgW1xdKSd9O0FTX0VDSE8oWyIkYXNfdmFsIl0pJ2BdKQpUMjksMTAzCm00X2xvY2F0aW9uKF9BU19MTl9TX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTE4NApGMTIsOQptNF9kZWJ1Z21vZGVkZWJ1Z21vZGUKVDEwLDI4MAptNF9zZXRfYWRkbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLAoJICBbbTRfaWYobTRfaW5kaXIoW19tNF9zZXQoWyQxXSwkMildKSwgWzBdLAoJCSBbbTRfZGVmaW5lKFtfbTRfc2V0KFskMV0sJDIpXSwKCQkJICAgIFsxXSlfbTRfc2V0X3NpemUoWyQxXSwgW200X2luY3JdKSQzXSwgWyQ0XSldLAoJICBbbTRfZGVmaW5lKFtfbTRfc2V0KFskMV0sJDIpXSwKCQkgICAgIFsxXSltNF9wdXNoZGVmKFtfbTRfc2V0KFskMV0pXSwKCQkJCSAgICBbJDJdKV9tNF9zZXRfc2l6ZShbJDFdLCBbbTRfaW5jcl0pJDNdKQpUMTQsMTIyCm00X2FwcGVuZF91bmlxbTRfaWZ2YWwoWyQzXSwgW200X2lmKG00X2luZGV4KFskMl0sIFskM10pLCBbLTFdLCBbXSwKCQkgICAgICAgW200X3dhcm4oW3N5bnRheF0sCgkJCQlbJDA6IGAkMicgY29udGFpbnMgYCQzJ10pXSldKV8kMCgkQCkKVDE1LDAKX200X2RpdmVydF9kdW1wClQyNywxMDMKbTRfbG9jYXRpb24oQVNfVkFSX1BVU0hERUYpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MjA0OApUMjAsMjAKbTRfUEFDS0FHRV9CVUdSRVBPUlRidWctYXV0b2NvbmZAZ251Lm9yZwpUOCw2NgptNF9pZnNldG00X2lmZGVmKFskMV0sCgkgIFttNF9pZnZhbChfbTRfZGVmbihbJDFdKSwgWyQyXSwgWyQzXSldLAoJICBbJDNdKQpUNywxODIKbTRfY29uZG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKICAgICAgIFskI10sIFsxXSwgWyQxXSwKICAgICAgIG00X2V2YWwoWyQjICUgM10pLCBbMl0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYW4gYXJndW1lbnRdKV0sCiAgICAgICBbXyQwKCRAKV0pClQ5LDE1CkFTX0VDSE9fTiRhc19lY2hvX24gJDFbXQpUOSwxMjkKQVNfRUNIT19OX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19FQ0hPX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMiwzMAptNF9lc3lzY21kX3NtNF9jaG9tcF9hbGwobTRfZXN5c2NtZChbJDFdKSkKVDYsMjY0CkFTX0ZPUl9tNF9kZWZ1bl9wcm8oWyQwXSltNF9wdXNoZGVmKFskMV0sIG00X2lmKFskM10sIFtdLCBbWyQkMl1dLCBtNF90cmFuc2xpdChbJDNdLCBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XVslKz06LC4vLV0pLCBbXSwgW1skM11dLCBbWyQkMl1dKSlmb3IgJDJbXW00X2lmdmFsKFskM10sIFsgaW4gJDNdKQpkbyA6CiAgJDQKZG9uZVtdX200X3BvcGRlZihbJDFdKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTQsMjc2Cl9BU19DUl9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKSMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCmFzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwphc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5Jwphc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNSwxNDgKX200X2FwcGVuZF91bmlxbTRfaWZkZWYoWyQxXSwKCSAgW200X2lmKG00X2luZGV4KFskM11fbTRfZGVmbihbJDFdKVskM10sIFskMyQyJDNdKSwgWy0xXSwKCQkgW200X2FwcGVuZChbJDFdLCBbJDJdLCBbJDNdKSQ0XSwgWyQ1XSldLAoJICBbbTRfZGVmaW5lKFskMV0sIFskMl0pJDRdKQpUMzIsMTAzCm00X2xvY2F0aW9uKF9BU19NS0RJUl9QX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTI1NwpUMjAsMjAxCl9BU19CQVNFTkFNRV9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19FWFBSX1BSRVBBUkVdKWlmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KICBhc19iYXNlbmFtZT1iYXNlbmFtZQplbHNlCiAgYXNfYmFzZW5hbWU9ZmFsc2UKZmkKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNywyNzIKX0FTX0lERU5USUZJRVJfSUZtNF9jb25kKFtbJDFdXSwgW10sIFtdLAoJIFttNF9ldmFsKG00X2xlbihtNF90cmFuc2xpdChbWyQxXV0sIF1bW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OV1dWykpID4gMCldLCBbMV0sIFtdLAoJIFttNF9sZW4obTRfdHJhbnNsaXQobTRfZm9ybWF0KFtbJS4xc11dLCBbJDFdKSwgXVtbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9dXVspKV0sIFswXSwgWy1dKQpUMTEsODUKQVNfQkFTRU5BTUUkYXNfYmFzZW5hbWUgLS0gJDEgfHwKX0FTX0JBU0VOQU1FX0VYUFIoWyQxXSkgMj4vZGV2L251bGwgfHwKX0FTX0JBU0VOQU1FX1NFRChbJDFdKVtdClQxMSwxMjQKQVNfQkFTRU5BTUVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQ5LDMxCl9tNF9hcHBseW00X2lmKFskMl0sIFtdLCBbXSwgWyQxKCQyKVtdXSkKVDEzLDg0Cl9BU19RVU9URV9PTERtNF93YXJuKFtvYnNvbGV0ZV0sCiAgIFtiYWNrIHF1b3RlcyBhbmQgZG91YmxlIHF1b3RlcyBtdXN0IG5vdCBiZSBlc2NhcGVkIGluOiAkMV0pJDEKVDEwLDIKbTRfdW5xdW90ZSQqClQ5LDcyCm00X21hcGFsbG00X2lmKFskMl0sIFtdLCBbXSwKICAgICAgIFtfbTRfZm9yZWFjaChbbTRfYXBwbHkoWyQxXSxdLCBbKV0sIFtdLCAkMildKQpGMTQsNgpfbTRfZGl2ZXJ0X3Jhd2RpdmVydApUNiwxMjIKbTRfY2RybTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKICAgICAgIFskI10sIDEsIFtdLAogICAgICAgW200X2RxdW90ZShtNF9zaGlmdCgkQCkpXSkKVDE2LDI3Cl9BU19RVU9URV9NT0RFUk5fQVNfRVNDQVBFKFskMV0sIFtgXSwgWyIiXSkKVDE0LDQxCl9tNF9saXN0X2NtcF8xX200X2xpc3RfY21wXzIoWyQyXSwgW200X3NoaWZ0MigkQCldLCAkMSkKVDE0LDk1Cl9tNF9saXN0X2NtcF8yX200X2xpc3RfY21wKFskMSQzXSwgbTRfY21wKFskMyswXSwgWyQxKzBdKSkoCiAgW19tNF9saXN0X2NtcF8xKG00X2RxdW90ZShtNF9zaGlmdDMoJEApKSwgJDIpXSkKVDExLDUzCl9tNF9qb2luYWxsbTRfaWYoWyQjXSwgWzJdLCBbXSwgW1skMSQzXSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKVDE2LDEzNwpfQVNfRElSTkFNRV9FWFBSJGFzX2V4cHIgWFtdJDEgOiAnWFwoLipbW14vXV1cKS8vKltbXi9dW14vXV0qLyokJyBcfCBcCgkgWFtdJDEgOiAnWFwoLy9cKVtbXi9dXScgXHwgXAoJIFhbXSQxIDogJ1hcKC8vXCkkJyBcfCBcCgkgWFtdJDEgOiAnWFwoL1wpJyBcfCAuW10KVDE2LDEyOQpfQVNfRElSTkFNRV9FWFBSX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19FWFBSX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQ5LDE1OAptNF9wb3BkZWZtNF9pZihbJCNdLCBbMF0sIFtbJDBdXSwKICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFtfbTRfcG9wZGVmKFskMV0pXSwKCQkJICAgIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0pXSwKICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKQpUMjEsMTAyCm00X2xvY2F0aW9uKEFTX1VOU0VUKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjYzOApUMTIsMTUyCl9tNF9zZXRfZHVtcG00X2lmZGVmKFtfbTRfc2V0KFskMV0pXSwKCSAgW1skMl1fbTRfZGVmbihbX200X3NldChbJDFdKV0pX200X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbigKCQlbX200X3NldChbJDFdKV0pWyldLCBbX200X3NldChbJDFdKV0pJDAoWyQxXSwgWyQyJDNdKV0pClQxNywxNTYKQVNfU0hFTExfU0FOSVRJWkVfQVNfU0hFTExfU0FOSVRJWkUKbTRfcHJvdmlkZV9pZihbQVNfSU5JVF0sIFtdLApbbTRfcHJvdmlkZShbQVNfSU5JVF0pCl9BU19ERVRFQ1RfUkVRVUlSRUQoW19BU19TSEVMTF9GTl9XT1JLXSkKX0FTX0RFVEVDVF9CRVRURVJfU0hFTEwKX0FTX1VOU0VUX1BSRVBBUkUKXSkKVDEyLDMyCm00X21ha2VfbGlzdG00X2pvaW4oWywKXSwgbTRfZHF1b3RlX2VsdCgkQCkpClQzMSwxMDIKbTRfbG9jYXRpb24oX0FTX0VDSE9fTl9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00Ojc3NApUMjcsMTAyCm00X2xvY2F0aW9uKEFTX0xJTkVOT19QVVNIKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00Ojg2MQpUMTEsNDk4Cl9BU19NS0RJUl9QY2FzZSAkYXNfZGlyIGluICMoCiAgLSopIGFzX2Rpcj0uLyRhc19kaXI7OwogIGVzYWMKICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8IHsKICAgIGFzX2RpcnM9CiAgICB3aGlsZSA6OyBkbwogICAgICBjYXNlICRhc19kaXIgaW4gIygKICAgICAgKlwnKikgYXNfcWRpcj1gQVNfRUNITyhbIiRhc19kaXIiXSkgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OyAjJygKICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKICAgICAgZXNhYwogICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgogICAgICBhc19kaXI9YEFTX0RJUk5BTUUoIiRhc19kaXIiKWAKICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKICAgIGRvbmUKICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IEFTX0VSUk9SKFtjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyXSkKClQzOSwxMDMKbTRfbG9jYXRpb24oX0FTX1BBVEhfU0VQQVJBVE9SX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTI3NgpUNSw3MwptNF9kb200X2lmKFskI10sIDAsIFtdLAogICAgICAgWyQjXSwgMSwgWyQxW11dLAogICAgICAgWyQxW10kMChtNF9zaGlmdCgkQCkpXSkKRjksNgptNF9zdWJzdHJzdWJzdHIKVDMzLDEwMgptNF9sb2NhdGlvbihfQVNfREVURUNUX1NVR0dFU1RFRCkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxNjgKVDE4LDgKbTRfUEFDS0FHRV9UQVJOQU1FYXV0b2NvbmYKVDEzLDI1MgptNF9zZXRfcmVtb3ZlbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFtfbTRfc2V0X3NpemUoWyQxXSwKICAgIFttNF9kZWNyXSltNF9pZihfbTRfZGVmbihbX200X3NldChbJDFdKV0pLCBbJDJdLAoJCSAgICBbX200X3BvcGRlZihbX200X3NldChbJDFdLCQyKV0sIFtfbTRfc2V0KFskMV0pXSldLAoJCSAgICBbbTRfZGVmaW5lKFtfbTRfc2V0X2NsZWFudXAoJDEpXSltNF9kZWZpbmUoCgkJICAgICAgW19tNF9zZXQoWyQxXSwkMildLCBbMF0pXSkkM10sIFskNF0pClQxOSwxMDkKX200X2RlZnVuX2VwaV9vdXRlcl9tNF9wb3BkZWYoW19tNF9kaXZlcnRfZHVtcF0sIFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgW19tNF9kaXZlcnRpbmddKW00X2RpdmVydF9wb3AoW0dST1ddKW00X3VuZGl2ZXJ0KFtHUk9XXSkKVDI3LDEwMwptNF9sb2NhdGlvbihfQVNfVFJfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxODYwClQxNSw1OAptNF9kaXZlcnRfc3RhY2ttNF9zdGFja19mb3JlYWNoX3NlcF9saWZvKFtfbTRfZGl2ZXJ0X3N0YWNrXSwgW10sIFtdLCBbCl0pClQxNywzMQptNF9kZWZhdWx0X3F1b3RlZG00X2lmKFskMV0sIFtdLCBbWyQyXV0sIFtbJDFdXSkKVDE0LDI4CkFTX1ZBUl9QVVNIREVGXyQwKFskMV0sIG00X2V4cGFuZChbJDJdKSlbXQpUMTQsMTMwCkFTX1ZBUl9QVVNIREVGX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19UUl9TSF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTgsMTAyCm00X2xvY2F0aW9uKEFTX0lGKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjYwNgpUMzEsMTAzCm00X2xvY2F0aW9uKEFTX1ZFUlNJT05fQ09NUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxNzQ5CkY5LDYKbTRfc3lzY21kc3lzY21kClQxMSwxMzYKbTRfc2V0X2R1bXBtNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sCgkgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X3NpemUoJDEpXSldKW00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwKICAgIFtfJDBfY2hlY2tdLCBbXyQwXSkoWyQxXSwgW10sIFskMl0pClQ5LDU4Cm00X2lmdmFsbm00X2lmKFskMV0sCiAgICAgICBbXSwgICBbbTRfbihbJDNdKV0sCgkgICAgIFttNF9uKFskMl0pXSkKVDcsMApfX2dudV9fClQxMCwyNwptNF9qb2luYWxsWyQyXV8kMChbJDFdLCBtNF9zaGlmdCgkQCkpClQxMSwyCl9BU19FU0NBUEVfJDEKVDksMjIKbTRfc2hpZnQybTRfc2hpZnQobTRfc2hpZnQoJEApKQpUMTgsODAKbTRfZXhwYW5zaW9uX3N0YWNrbTRfc3RhY2tfZm9yZWFjaF9zZXBfbGlmbyhbXyQwXSwgW18kMF9lbnRyeShdLCBbKQpdKW00X2xvY2F0aW9uWzogdGhlIHRvcCBsZXZlbF0KVDksMzIKbTRfc2hpZnQzbTRfc2hpZnQobTRfc2hpZnQobTRfc2hpZnQoJEApKSkKVDE3LDE1MgptNF92ZXJzaW9uX3ByZXJlcW00X2lmKG00X3ZlcnNpb25fY29tcGFyZShbMi42OF0sIFskMV0pLAoJWy0xXSwKCVttNF9kZWZhdWx0KFskM10sCgkJICAgIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAkMSBvciBoaWdoZXIgaXMgcmVxdWlyZWRdLAoJCQkgICAgICBbNjNdKV0pXSwKCVskMl0pClQxNiw1MApfbTRfbGlzdF9jbXBfcmF3bTRfaWYoWyQxXSwgWyQyXSwgWzBdLCBbX200X2xpc3RfY21wXzEoWyQxXSwgJDIpXSkKVDgsMApfX3VuaXhfXwpUMjAsMTAzCm00X2xvY2F0aW9uKEFTX0xOX1MpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTIxOApUMTQsMTA5Cm00X2ZpbGVfYXBwZW5kbTRfc3lzY21kKFtjYXQgPj4kMSA8PF9tNGVvZgokMgpfbTRlb2YKXSkKbTRfaWYobTRfc3lzdmFsLCBbMF0sIFtdLAogICAgICBbbTRfZmF0YWwoWyQwOiBjYW5ub3Qgd3JpdGU6ICQxXSldKQpUMTUsMTQwCl9BU19WQVJfUFVTSERFRl9BU19MSVRFUkFMX0lGKFskMl0sIFsJIF1bCl0pKFtdLCBbYXNfJDE9X0FTX1RSX1NIX0lORElSKFskMl0pCm00X3B1c2hkZWYoWyQxXSwgWyRhc19bJDFdXSldLApbbTRfcHVzaGRlZihbJDFdLCBbX0FTX1RSX1NIX0xJVEVSQUwoWyQyXSldKV0pClQxNSw0OQptNF9yZW5hbWVfZm9yY2VtNF9pZmRlZihbJDJdLCBbX200X3VuZGVmaW5lKFskMl0pXSltNF9yZW5hbWUoJEApClQyOCwxMDMKbTRfbG9jYXRpb24oQVNfRVhFQ1VUQUJMRV9QKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjEwNjMKVDksMjIyCm00X2JtYXRjaG00X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCiAgICAgICBbJCNdLCAyLCBbJDJdLAogICAgICAgW200X2lmKG00X2JyZWdleHAoWyQxXSwgWyQyXSksIC0xLCBbJDAoWyQxXSwgbTRfc2hpZnQzKCRAKSldLAoJICAgICAgWyQzXSldKQpUMTAsMjYKQVNfTUtESVJfUGFzX2Rpcj0kMTsgYXNfZm5fbWtkaXJfcFtdClQxMCwxMjQKQVNfTUtESVJfUF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfJDBfUFJFUEFSRV0pW11fbTRfcG9wZGVmKFskMF0pbTRfaW5kaXIoWyQwXW00X2lmKFskI10sIFswXSwgW10sIFssJEBdKSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEzLDMzMwptNF9kaXZlcnRfcG9wbTRfaWYoWyQxXSwgW10sIFtdLAogICAgICAgWyQxXSwgX200X2RlZm4oW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSksIFtdLAogICAgICAgW200X2ZhdGFsKFskMCgkMSk6IGRpdmVyc2lvbiBtaXNtYXRjaDoKXW00X2RpdmVydF9zdGFjayldKV9tNF9wb3BkZWYoW19tNF9kaXZlcnRfc3RhY2tdLCBbX200X2RpdmVydF9kaXZlcnNpb25dKW00X2lmZGVmKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0sIFtdLAoJICAgW200X2ZhdGFsKFt0b28gbWFueSBtNF9kaXZlcnRfcG9wXSldKV9tNF9kaXZlcnRfcmF3KF9tNF9kaXZlcnQoX200X2RlZm4oW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSksIFstXSkpClQxNiwxNjkKX0FTX0VYUFJfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgogICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhlbgogIGFzX2V4cHI9ZXhwcgplbHNlCiAgYXNfZXhwcj1mYWxzZQpmaQpbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE5LDk1Cl9BU19ERVRFQ1RfUkVRVUlSRURfbTRfZGVmdW5fcHJvKFskMF0pbTRfc2V0X2FkZChbX0FTX0RFVEVDVF9SRVFVSVJFRF9CT0RZXSwgWyQxIHx8IEFTX0VYSVRdKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTAsMTIxCm00X3JlX3dvcmRbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9dW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OV0qClQyNiwxMDIKbTRfbG9jYXRpb24oQVNfU0VUX1NUQVRVUykvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo2MTYKVDE0LDM3Cm00X1BBQ0tBR0VfVVJMaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLwpUMTEsNjIKbTRfY3JfYWxudW1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OQpUMTIsNzEKQVNfQ09QWVJJR0hUbTRfZGl2ZXJ0X3RleHQoW0hFQURFUi1DT1BZUklHSFRdLApbbTRfYnBhdHN1YnN0KFsKJDFdLCBbXl0sIFtAJTpAIF0pXSkKRjExLDgKbTRfdHJhbnNsaXR0cmFuc2xpdApUMTQsMTEwCm00X2RpdmVydF9wdXNobTRfZGl2ZXJ0X3N0YWNrX3B1c2goWyQwXSwgWyQxXSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0sIFskMV0pX200X2RpdmVydF9yYXcoX200X2RpdmVydChbJDFdLCBbJDJdKSkKVDgsODcKbTRfZmF0YWxtNF9lcnJwcmludG4obTRfbG9jYXRpb25bOiBlcnJvcjogJDFdCm00X2V4cGFuc2lvbl9zdGFjayltNF9leGl0KG00X2lmKFskMl0sLCAxLCBbJDJdKSkKRjgsNQptNF9pZmRlZmlmZGVmClQxNiwyMjUKX0FTX0xJTkVOT19XT1JLUyAgYXNfbGluZW5vXzE9JExJTkVOTyBhc19saW5lbm9fMWE9JExJTkVOTwogIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRMSU5FTk8KICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAhPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKICB0ZXN0ICJ4YGV4cHIgJGFzX2xpbmVub18xJyRhc19ydW4nICsgMWAiID0gIngkYXNfbGluZW5vXzInJGFzX3J1biciJwpUNywyMAptNF93cmFwX200X3dyYXAoW10sIFskMVtdXSkKVDEyLDExMApfbTRfc2V0X3NpemVtNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLAoJICAgbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLCBbJDIobTRfaW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKSldLAoJCSAgICBbMV0pKQpUNiw0MwptNF9tYXBfbTRfZm9yZWFjaChbX200X2FwcGx5KFskMV0sXSwgWyldLCBbXSwgJDIpClQxMCw1NAptNF9pbmNsdWRlbTRfaW5jbHVkZV91bmlxdWUoWyQxXSlkbmwKbTRfYnVpbHRpbihbaW5jbHVkZV0sIFskMV0pClQxNywxMzYKX0FTX0JBU0VOQU1FX0VYUFJfbTRfZGVmdW5fcHJvKFskMF0pJGFzX2V4cHIgWC9bXSQxIDogJy4qL1woW1teL11bXi9dKl1cKS8qJCcgXHwgXAoJIFhbXSQxIDogJ1hcKC8vXCkkJyBcfCBcCgkgWFtdJDEgOiAnWFwoL1wpJyBcfCAuW11fbTRfZGVmdW5fZXBpKFskMF0pClQ4LDExNQpBU19FUlJPUmFzX2ZuX2Vycm9yIG00X2RlZmF1bHQoWyQyXSwgWyQ/XSkgIl9BU19RVU9URShbJDFdKSJtNF9pZnZhbChBU19NRVNTQUdFX0xPR19GRCwKICBbICIkTElORU5PIiBBU19NRVNTQUdFX0xPR19GRF0pW10KVDgsMTg3CkFTX0VSUk9SX200X2RlZnVuX3BybyhbJDBdKW00X2FwcGVuZF91bmlxKFtfQVNfQ0xFQU5VUF0sCiAgW200X2RpdmVydF90ZXh0KFtNNFNILUlOSVQtRk5dLCBbX0FTX0VSUk9SX1BSRVBBUkVbXV0pXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUOCwxODkKbTRfc3BsaXRtNF9pZihbJDFdLCBbXSwgW10sCiAgICAgICBbJDJdLCBbIF0sIFttNF9pZihtNF9pbmRleChbJDFdLCBbIF0pLCBbLTFdLCBbW1skMV1dXSwKCQkJIFtfJDAoWyQxXSwgWyQyXSwgWywgXSldKV0sCiAgICAgICBbJDJdLCBbXSwgW18kMChbJDFdLCBbWwkgXStdLCBbLCBdKV0sCiAgICAgICBbXyQwKFskMV0sIFskMl0sIFssIF0pXSkKVDYsMTkwCm00X21pbm00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFt0b28gZmV3IGFyZ3VtZW50cyB0byAkMF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X2V2YWwoWyQxXSldLAogICAgICAgWyQjJDFdLCBbMiQyXSwgW200X2V2YWwoWyQxXSldLAogICAgICAgWyQjXSwgWzJdLCBbXyQwKCRAKV0sCiAgICAgICBbX200X21pbm1heChbXyQwXSwgJEApXSkKRjE0LDExCm00X2NoYW5nZXF1b3RlY2hhbmdlcXVvdGUKVDE3LDIKX0FTX0xJVEVSQUxfSUZfTk8kMgpUMjYsMQpfbTRfZGl2ZXJ0KEhFQURFUi1DT01NRU5UKTIKVDEwLDU0Cm00X2lmYmxhbmttNF9pZihtNF90cmFuc2xpdChbWyQxXV0sICBbIF1bCV1bCl0pLCBbXSwgWyQyXSwgWyQzXSkKVDE0LDE2NgptNF9jbGVhcmRpdmVydG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFtfbTRfZGl2ZXJ0X3JhdyhbLTFdKW00X3VuZGl2ZXJ0KCRAKV9tNF9kaXZlcnRfcmF3KAoJIF9tNF9kaXZlcnQoX200X2RlZm4oW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSksIFstXSkpXSkKVDE4LDIwNgpfbTRfdGV4dF93cmFwX3dvcmRtNF9kZWZpbmUoW200X0N1cnNvcl0sIG00X2V2YWwobTRfQ3Vyc29yICsgbTRfcWxlbihbJDFdKSArIDEpKW00X2lmKG00X2V2YWwobTRfQ3Vyc29yID4gKFskM10pKSwKICAgICAgWzFdLCBbbTRfZGVmaW5lKFttNF9DdXJzb3JdLCBtNF9ldmFsKG00X0luZGVudCArIG00X3FsZW4oWyQxXSkgKyAxKSkKWyQyXV0sCiAgICAgIFttNF9TZXBhcmF0b3JbXV0pWyQxXQpUMTgsMTYwMQpfQVNfU0hFTExfU0FOSVRJWkVfbTRfZGVmdW5fcHJvKFskMF0pbTRfcHVzaGRlZihbQVNfRVhJVF0sIFtleGl0IG00X2RlZmF1bHQoXW00X2RxdW90ZShbJF1bMV0pWywgMSldKW00X3RleHRfYm94KFtNNHNoIEluaXRpYWxpemF0aW9uLl0pCgpBU19CT1VSTkVfQ09NUEFUSUJMRQpfQVNfRUNIT19QUkVQQVJFCl9BU19QQVRIX1NFUEFSQVRPUl9QUkVQQVJFCgojIElGUwojIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcwojIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4KIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkCiMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikKSUZTPSIgIiIJJGFzX25sIgoKIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KYXNfbXlzZWxmPQpjYXNlICRbMF0gaW4gQCU6QCgoCiAgKltbXFwvXV0qICkgYXNfbXlzZWxmPSRbMF0gOzsKICAqKSBfQVNfUEFUSF9XQUxLKFtdLAoJCSAgIFt0ZXN0IC1yICIkYXNfZGlyLyRbMF0iICYmIGFzX215c2VsZj0kYXNfZGlyLyRbMF0gJiYgYnJlYWtdKQogICAgIDs7CmVzYWMKIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwojIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KaWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgogIGFzX215c2VsZj0kWzBdCmZpCmlmIHRlc3QgISAtZiAiJGFzX215c2VsZiI7IHRoZW4KICBBU19FQ0hPKFsiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiXSkgPiYyCiAgQVNfRVhJVApmaQoKIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbgojIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRvIG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCiMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUuMi4xNC4KZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBFTlYgTUFJTCBNQUlMUEFUSApkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAogICYmICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwgOgpkb25lClBTMT0nJCAnClBTMj0nPiAnClBTND0nKyAnCgojIE5MUyBudWlzYW5jZXMuCkxDX0FMTD1DCmV4cG9ydCBMQ19BTEwKTEFOR1VBR0U9QwpleHBvcnQgTEFOR1VBR0UKCiMgQ0RQQVRILgoodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICl9tNF9wb3BkZWYoW0FTX0VYSVRdKVtdX200X2RlZnVuX2VwaShbJDBdKQpUNyw0OAptNF9xbGVubTRfaWZkZWYoWyQwLSQxXSwgW19tNF9kZWZuKFskMC1dXSwgW18kMChdKVskMV0pClQ2LDE5MAptNF9tYXhtNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbdG9vIGZldyBhcmd1bWVudHMgdG8gJDBdKV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9ldmFsKFskMV0pXSwKICAgICAgIFskIyQxXSwgWzIkMl0sIFttNF9ldmFsKFskMV0pXSwKICAgICAgIFskI10sIFsyXSwgW18kMCgkQCldLAogICAgICAgW19tNF9taW5tYXgoW18kMF0sICRAKV0pCkYxMSw4Cm00X2VycnByaW50ZXJycHJpbnQKVDEwLDEzNwpfbTRfZGl2ZXJ0bTRfaWZkZWYoW19tNF9kaXZlcnQoJDEpXSwKCSAgW200X2luZGlyKFtfbTRfZGl2ZXJ0KCQxKV0pXSwKCSAgW200X2lmKFskMl0sIFtdLCBbbTRfd2Fybihbc3ludGF4XSwKCSAgICAgW3ByZWZlciBuYW1lZCBkaXZlcnNpb25zXSldKSQxXSkKVDEzLDI2Cm00X2NyX0xFVFRFUlNBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgpUMTUsMjcyCl9BU19ESVJOQU1FX1NFRF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19FQ0hPKFtYW10kMV0pIHwKICAgIHNlZCBbJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXC9cKVteL10uKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cL1wpJC97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cKS4qL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgcy8uKi8uLzsgcSddW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNyw5NApfbTRfc3RhY2tfcmV2ZXJzZW00X2lmZGVmKFskMV0sIFttNF9wdXNoZGVmKFskMl0sCiAgX200X2RlZm4oWyQxXSkpJDNbXV9tNF9wb3BkZWYoWyQxXSkkMChbJDFdLCBbJDJdLCBbJDQkM10pXSkKVDE2LDEwMwpBU19JREVOVElGSUVSX0lGbTRfaWYoXyQwKG00X2lmKG00X2luZGV4KFskMV0sIFtAXSksIFstMV0sCiAgW1skMV1dLCBbbTRfYnBhdHN1YnN0KFtbJDFdXSwgW0AmdEBdKV0pKSwgWy1dLCBbJDJdLCBbJDNdKQpGMTEsNwptNF9tYWtldGVtcG1rc3RlbXAKVDE3LDEyOQpfQVNfREVURUNUX0VYUEFORCQxPSJtNF9icGF0c3Vic3QobTRfZHF1b3RlKEFTX0VTQ0FQRShfbTRfZXhwYW5kKG00X3NldF9jb250ZW50cyhbJDJdLCBbCl0pKSkpLCBbXFxcJExJTkVOT1woLipcKSRdLCBbIjskMT0kJDEkTElORU5POyQxPSQkMSJcMV0pIgpUNCwzNwptNF9ubTRfaWYoWyQxXSwKICAgICAgIFtdLCBbXSwKCSAgIFskMQpdKQpUMjYsMTAyCm00X2xvY2F0aW9uKEFTX0xJTkVOT19QT1ApL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6ODcxClQ4LDIyCkFTX1RSX1NIXyQwKG00X2V4cGFuZChbJDFdKSlbXQpUOCwxMjQKQVNfVFJfU0hfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMCwxNTQKbTRfcHJvdmlkZW00X2lmZGVmKFttNF9wcm92aWRlKCQxKV0sIFtdLApbbTRfc2V0X2FkZChbX200X3Byb3ZpZGVdLCBbJDFdLCBbbTRfZGVmaW5lKFttNF9wcm92aWRlKCQxKV0sCiAgbTRfaWZkZWYoW19tNF9kaXZlcnRpbmddLCBbX200X2RlZm4oW19tNF9kaXZlcnRpbmddKV0pKV0pXSkKVDEzLDEwMApBU19MSU5FTk9fUE9QX200X2RlZnVuX3BybyhbJDBdKWV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVub1tdX200X2RlZnVuX2VwaShbJDBdKQpUMTEsNjUKbTRfc2V0X3NpemVtNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sIFttNF9pbmRpcihbX200X3NldF9zaXplKCQxKV0pXSwgWzBdKQpUOSwwCm00X2lnbm9yZQpUOSwyOApfbTRfcXVvdGVtNF9pZihbJCNdLCBbMF0sIFtdLCBbWyQqXV0pClQyMSwxMDMKbTRfbG9jYXRpb24oQVNfVFJfU0gpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTgwOApUOSwzNQptNF9zaGlmdG5tNF9hc3NlcnQoMCA8ICQxICYmICQxIDwgJCMpXyQwKCRAKQpUNyw3NQptNF93YXJuX200X3dhcm4oWyQxXSwgWyQyXSwKbTRfaWZkZWYoW19tNF9leHBhbnNpb25fc3RhY2tdLCBbbTRfZXhwYW5zaW9uX3N0YWNrXSkpClQxNiwyNDUKbTRfY3Jfbm90X2RpZ2l0cwECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjKiUmJygpJCssLi86Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxMiwyNQptNF9zZXRfbGlzdGNtNF9zZXRfbWFwX3NlcChbJDFdLCBbLF0pCkY5LDYKbTRfZGl2bnVtZGl2bnVtClQzMCwxMDMKbTRfbG9jYXRpb24oQVNfSU5JVF9HRU5FUkFURUQpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MjEwMwpUMjEsNzYKX200X3NldF9hZGRfYWxsX2NoZWNrbTRfaWYoWyQjXSwgWzJdLCBbXSwKICAgICAgIFttNF9zZXRfYWRkKFskMV0sIFskM10pJDAoWyQxXSwgbTRfc2hpZnQyKCRAKSldKQpUMjQsMQpfbTRfZGl2ZXJ0KE00U0gtSU5JVC1GTik1ClQxMCw5MQpBU19WQVJfU0VUQVNfTElURVJBTF9XT1JEX0lGKFskMV0sCgkgICAgICAgWyQxPSQyXSwKCSAgICAgICBbZXZhbCAiJDE9X0FTX0VTQ0FQRShbJDJdLCBbYF0sIFtcIiRdKSJdKQpUMTAsMwptNF9uZXdsaW5lCiQxClQxMywyOTMKbTRfZGVmdW5fb25jZW00X2RlZmluZShbbTRfbG9jYXRpb24oJDEpXSwgbTRfbG9jYXRpb24pbTRfZGVmaW5lKFskMV0sIFtfbTRfZGVmdW5fb25jZShbJDFdLCBbJDJdLCBtNF9pZihfbTRfZGl2ZXJ0X2R1bXAsIFtdLAogIFtbX200X2RlZnVuX3BybyhbJDFdKW00X3VucXVvdGUoXSwgWylfbTRfZGVmdW5fZXBpKFskMV0pXV0sCm00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgWy1dKSwgWy1dLCBbW200X3VucXVvdGUoXSwgWyldXSwKICBbW19tNF9yZXF1aXJlX2NhbGwoWyQxXSxdLCBbLCBfbTRfZGl2ZXJ0X2R1bXApXV0pKV0pClQxMyw0NzQKX200X3RleHRfd3JhcG00X3B1c2hkZWYoW200X0luZGVudF0sIG00X3FsZW4oWyQyXSkpbTRfcHVzaGRlZihbbTRfQ3Vyc29yXSwgbTRfcWxlbihbJDNdKSltNF9wdXNoZGVmKFttNF9TZXBhcmF0b3JdLCBbbTRfZGVmaW5lKFttNF9TZXBhcmF0b3JdLCBbIF0pXSlbJDNdbTRfY29uZChbbTRfQ3Vyc29yXSwgbTRfSW5kZW50LCBbXSwKCSAgICAgIFttNF9ldmFsKG00X0N1cnNvciA+IG00X0luZGVudCldLCBbMV0sIFsKWyQyXW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0sCgkgICAgICBbbTRfZm9ybWF0KFslKnNdLCBtNF9tYXgoWzBdLAogIG00X2V2YWwobTRfSW5kZW50IC0gbTRfQ3Vyc29yKSksIFtdKW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0pbTRfbWFwX2FyZ3NfdyhbJDFdLCBbJDBfd29yZChdLCBbLCBbJDJdLCBbJDRdKV0pX200X3BvcGRlZihbbTRfU2VwYXJhdG9yXSwgW200X0N1cnNvcl0sIFttNF9JbmRlbnRdKQpUMjEsMzQyCl9BU19CT1VSTkVfQ09NUEFUSUJMRUFTX0lGKFt0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjFdLAogW2VtdWxhdGUgc2gKICBOVUxMQ01EPToKICBbI10gUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkW0BdIn0sIHdoaWNoCiAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KICBhbGlhcyAtZyAnJHsxKyIkW0BdIn0nPSciJFtAXSInCiAgc2V0b3B0IE5PX0dMT0JfU1VCU1RdLAogW0FTX0NBU0UoW2Aoc2V0IC1vKSAyPi9kZXYvbnVsbGBdLCBbKnBvc2l4Kl0sIFtzZXQgLW8gcG9zaXhdKV0pCgpUMTUsOTkKX0FTX0xJVEVSQUxfSUZfbTRfaWYobTRfdHJhbnNsaXQoWyQxXSwgWytdKSwgW10sIFskMFlFU10sCiAgICAgICBtNF90cmFuc2xpdChbJDFdLCBbJF0pLCBbXSwgW200X2RlZmF1bHRdLCBbJDBOT10pCkY5LDYKbTRfZm9ybWF0Zm9ybWF0CkYxMCw3Cm00X21rc3RlbXBta3N0ZW1wCkYxMSwxMQpfX3Byb2dyYW1fX19fcHJvZ3JhbV9fClQ2LDI2CkFTX0JPWF8kMChtNF9leHBhbmQoWyQxXSksIFskMl0pClQ3LDE1NgptNF9kZWZubTRfaWYoWyQjXSwgWzBdLCBbWyQwXV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X2RlZm4oWyQxXSldLAoJCQkgICAgW200X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAogICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pClQxMSw1NDQKX0FTX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pbTRfcHVzaGRlZihbQVNfUkVRVUlSRV0pbTRfcHVzaGRlZihbQVNfUkVRVUlSRV9TSEVMTF9GTl0sIF9tNF9kZWZuKFtfQVNfUkVRVUlSRV9TSEVMTF9GTl0pCiltNF9wdXNoZGVmKFtBU19NRVNTQUdFX0xPR19GRF0sIFstMV0pX0FTX0VSUk9SX1BSRVBBUkUKX200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV9BU19FWElUX1BSRVBBUkUKX0FTX1VOU0VUX1BSRVBBUkUKX0FTX1ZBUl9BUFBFTkRfUFJFUEFSRQpfQVNfVkFSX0FSSVRIX1BSRVBBUkUKCl9BU19FWFBSX1BSRVBBUkUKX0FTX0JBU0VOQU1FX1BSRVBBUkUKX0FTX0RJUk5BTUVfUFJFUEFSRQpfQVNfTUVfUFJFUEFSRQpfQVNfQ1JfUFJFUEFSRQpfQVNfRUNIT19OX1BSRVBBUkUKX0FTX0xOX1NfUFJFUEFSRQpfQVNfTUtESVJfUF9QUkVQQVJFCl9BU19URVNUX1BSRVBBUkUKX0FTX1RSX0NQUF9QUkVQQVJFCl9BU19UUl9TSF9QUkVQQVJFCl9tNF9wb3BkZWYoW0FTX1JFUVVJUkVdLCBbQVNfUkVRVUlSRV9TSEVMTF9GTl0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNiw1NAptNF9hcHBlbmRfdW5pcV93bTRfbWFwX2FyZ3NfdyhbJDJdLCBbX200X2FwcGVuZF91bmlxKFskMV0sXSwgWywgWyBdKV0pClQxMywyMDcKbTRfbWFwX2FyZ3Nfd18kMChfbTRfc3BsaXQoWyBdbTRfZmxhdHRlbihbJDFdKVsgXSwgW1sJIF0rXSwKCSAgICAgICBtNF9pZihtNF9pbmRleChbJDIkMyQ0XSwgW1xdKSwgWy0xXSwgW1skM1tdJDRbXSQyXV0sCgkJICAgICBbbTRfYnBhdHN1YnN0KFtbJDNbXSQ0W10kMl1dLCBbXFxdLCBbXFxcXF0pXSkpLAogICAgIG00X2xlbihbW10kM1tdJDRdKSwgbTRfbGVuKFskNFtdJDJbXV0pKQpUNiw0Cm00X2NhclskMV0KVDgsMgptNF9jb3VudCQjClQxNCw0MgpfbTRfZGVmdW5fb25jZW00X3B1c2hkZWYoWyQxXSkkM1skMltdbTRfcHJvdmlkZShbJDFdKV0kNApUMTYsMTM0NgpfQVNfRUNIT19QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKVthc19ubD0nCicKZXhwb3J0IGFzX25sCiMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuCmFzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCmFzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwphc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwojIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywKIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KaWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAogICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgogIGFzX2VjaG89J3ByaW50IC1yIC0tJwogIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJwplbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCiAgYXNfZWNobz0ncHJpbnRmICVzXG4nCiAgYXNfZWNob19uPSdwcmludGYgJXMnCmVsc2UKICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KICAgIGFzX2VjaG9fYm9keT0nZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkXVsxJGFzX25sIicKICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKICBlbHNlCiAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCRdWzEiIDogIlhcXCguKlxcKSInCiAgICBhc19lY2hvX25fYm9keT0nZXZhbAogICAgICBhcmc9JF1bMTsKICAgICAgY2FzZSAkYXJnIGluIEAlOkAoCiAgICAgICoiJGFzX25sIiopCglleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCkiYDs7CiAgICAgIGVzYWM7CiAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKICAgICcKICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQogICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycKICBmaQogIGV4cG9ydCBhc19lY2hvX2JvZHkKICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCmZpCl1bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE3LDE2NApfQVNfVU5TRVRfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fdW5zZXRdLCBbVkFSXSwgW1BvcnRhYmx5IHVuc2V0IFZBUi5dKQphc19mbl91bnNldCAoKQp7CiAgQVNfVU5TRVQoWyRbMV1dKQp9CmFzX3Vuc2V0PWFzX2ZuX3Vuc2V0W11fbTRfZGVmdW5fZXBpKFskMF0pClQxNCw2MgptNF9zZXRfZm9yZWFjaG00X3B1c2hkZWYoWyQyXSltNF9zZXRfbWFwX3NlcChbJDFdLCBbbTRfZGVmaW5lKFskMl0sXSwgWykkM10pClQxNiwxMDEKbTRfc3RhY2tfZm9yZWFjaF9tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdKV9tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0pKV0pClQxMiw3NwptNF9jaG9tcF9hbGxtNF9mb3JtYXQoW1slLipzXV0sIG00X2JyZWdleHAobTRfdHJhbnNsaXQoW1skMV1dLCBbCi9dLCBbLyBdKSwgWy8qJF0pLCBbJDFdKQpUNiw0NgptNF9jbXBtNF9ldmFsKCgoWyQxXSkgPiAoWyQyXSkpIC0gKChbJDFdKSA8IChbJDJdKSkpClQ5LDM3MwpBU19UTVBESVIjIENyZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4KbTRfaWYoWyQyXSwgW10sIFs6ICIke1RNUERJUjo9L3RtcH0iXSkKewogIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIm00X2RlZmF1bHQoWyQyXSwKICAgIFskVE1QRElSXSkvJDFYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKICB0ZXN0IC1kICIkdG1wIgp9ICB8fAp7CiAgdG1wPW00X2RlZmF1bHQoWyQyXSwgWyRUTVBESVJdKS8kMSQkLSRSQU5ET00KICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikKfSB8fCBBU19FUlJPUihbY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gbTRfZGVmYXVsdChbJDJdLAoJICAgICAgWyRUTVBESVJdKV0pClQxNyw1MQpfQVNfRUNIT19VTlFVT1RFREFTX0VDSE8oWyIkMSJdKSA+Jm00X2RlZmF1bHQoWyQyXSwgW0FTX01FU1NBR0VfRkRdKQpUMjAsOTYKX0FTX0RFVEVDVF9TVUdHRVNURURfbTRfZGVmdW5fcHJvKFskMF0pbTRfc2V0X2FkZChbX0FTX0RFVEVDVF9TVUdHRVNURURfQk9EWV0sIFskMSB8fCBBU19FWElUXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE3LDU3CkFTX0xJTkVOT19QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW18kMF0pW11fbTRfZGVmdW5fZXBpKFskMF0pCkY1LDYKbTRfaWZpZmVsc2UKVDksMzYKbTRfcmVuYW1lbTRfY29weShbJDFdLCBbJDJdKW00X3VuZGVmaW5lKFskMV0pCkY4LDUKbTRfaW5kaXJpbmRpcgpUMTIsMQpfbTRfZGl2ZXJ0KCkwClQzMSwxMDMKbTRfbG9jYXRpb24oX0FTX1RSX0NQUF9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjE4MjcKRjEyLDkKbTRfY2hhbmdlY29tY2hhbmdlY29tClQyMCw0MApfQVNfVkFSX0FQUEVORF9XT1JLU2FzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeCRhc192YXIgPSB4MTIKVDEwLDYyCm00X25vcXVvdGVtNF9jaGFuZ2VxdW90ZShbLT08eyhdLFspfT49LV0pJDEtPTx7KCl9Pj0tbTRfY2hhbmdlcXVvdGUoWyxdKQpUMTMsNDIKQVNfVkFSX1NFVF9JRkFTX0lGKFtBU19WQVJfVEVTVF9TRVQoWyQxXSldLCBbJDJdLCBbJDNdKQpGOCw1Cm00X2luZGV4aW5kZXgKVDE0LDU4Cl9tNF9tYXBfYXJnc193bTRfc3Vic3RyKFskMV0sIFskMl0sIG00X2V2YWwobTRfbGVuKFskMV0pIC0gWyQyXSAtIFskM10pKQpUNyw5OApfQVNfUlVObTRfaWZ2YWwoWyQyXSwgW3sgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIkMSB8IGFzX3J1bj1hICQyOyB9XSwKCQlbKGV2YWwgJDEpXSkgMj4vZGV2L251bGwKVDE0LDEwNwptNF9zZXRfbWFwX3NlcG00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwgW19tNF9zZXRfY29udGVudHNfMWNdLAoJICBbX200X3NldF9jb250ZW50c18xXSkoWyQxXSlfbTRfc2V0X2NvbnRlbnRzXzIoJEApClQ5LDE3NAptNF9leHBhbmRtNF9wdXNoZGVmKFttNF9kaXZlcnRdLCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSltNF9wdXNoZGVmKFttNF9kaXZlcnRfcHVzaF0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X3Vuc2FmZV0pKW00X2Nob21wKF8kMChbJDEKXSkpX200X3BvcGRlZihbbTRfZGl2ZXJ0XSwgW200X2RpdmVydF9wdXNoXSkKVDE5LDMzNgpfQVNfTUtESVJfUF9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkVfU0hFTExfRk4oW2FzX2ZuX21rZGlyX3BdLAogIFtBU19GVU5DVElPTl9ERVNDUklCRShbYXNfZm5fbWtkaXJfcF0sIFtdLAogICAgW0NyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS5dKV0sClsKICBfQVNfTUtESVJfUApdKWlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCmVsc2UKICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAogIGFzX21rZGlyX3A9ZmFsc2UKZmkKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNywyMjkKbTRfY3Jfbm90X0xFVFRFUlMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyolJicoKSQrLC4vMDEyMzQ1Njc4OTo7PD0+P0BbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxOCwyNTYKX200X3NldF9kdW1wX2NoZWNrbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbbTRfc2V0X2NvbnRhaW5zKFskMV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSksCgkJCSAgIFtbJDJdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKV0pX200X3BvcGRlZigKICAgIFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlbKV0sCiAgICBbX200X3NldChbJDFdKV0pJDAoWyQxXSwgWyQyJDNdKV0sCgkgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKQpUMTAsNzI4CkFTX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pbTRfZGl2ZXJ0X3B1c2goW0tJTExdKQptNF9hcHBlbmRfdW5pcShbX0FTX0NMRUFOVVBdLAogIFttNF9kaXZlcnRfdGV4dChbTTRTSC1JTklULUZOXSwgW19BU19FUlJPUl9QUkVQQVJFW11dKV0pCkFTX1JFUVVJUkUoW19BU19FWFBSX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfQkFTRU5BTUVfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19ESVJOQU1FX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfTUVfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19DUl9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX0xJTkVOT19QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX0VDSE9fTl9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX0VYSVRfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19MTl9TX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfTUtESVJfUF9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX1RFU1RfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19UUl9DUFBfUFJFUEFSRV0pCkFTX1JFUVVJUkUoW19BU19UUl9TSF9QUkVQQVJFXSkKQVNfUkVRVUlSRShbX0FTX1VOU0VUX1BSRVBBUkVdKQpBU19SRVFVSVJFKFtfQVNfVkFSX0FQUEVORF9QUkVQQVJFXSwgW10sIFtNNFNILUlOSVQtRk5dKQpBU19SRVFVSVJFKFtfQVNfVkFSX0FSSVRIX1BSRVBBUkVdLCBbXSwgW000U0gtSU5JVC1GTl0pCm00X2RpdmVydF9wb3BbXVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTEsMTcKbTRfbG9jYXRpb25fX2ZpbGVfXzpfX2xpbmVfXwpUMjQsMTAyCm00X2xvY2F0aW9uKEFTX0JBU0VOQU1FKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjkwOQpUMzYsMTAyCm00X2xvY2F0aW9uKF9BU19ERVRFQ1RfQkVUVEVSX1NIRUxMKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjE5NQpUMTEsNTQKbTRfaWZuYmxhbmttNF9pZihtNF90cmFuc2xpdChbWyQxXV0sICBbIF1bCV1bCl0pLCBbXSwgWyQzXSwgWyQyXSkKVDEzLDEzNApfbTRfZGVmdW5fZXBpX200X3BvcGRlZihbX200X2V4cGFuZGluZygkMSldLCBbX200X2V4cGFuc2lvbl9zdGFja10pbTRfaWZkZWYoW19tNF9leHBhbnNpb25fc3RhY2tdLCBbXSwgW19tNF9kZWZ1bl9lcGlfb3V0ZXIoWyQxXSldKW00X3Byb3ZpZGUoWyQxXSkKVDEwLDQwCm00X3dhcm5pbmdtNF9lcnJwcmludG4obTRfbG9jYXRpb25bOiB3YXJuaW5nOiAkMV0pCkY3LDQKbTRfZXZhbGV2YWwKVDE1LDUKX200X2RpdmVydF9ncm93MTAwMDAKVDE1LDM2CkFTX0VYRUNVVEFCTEVfUHsgdGVzdCAtZiAkMSAmJiBBU19URVNUX1goWyQxXSk7IH1bXQpUMTUsMTI5CkFTX0VYRUNVVEFCTEVfUF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfVEVTVF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUNiw1OTgKbTRfZm9ybTRfcHVzaGRlZihbJDFdLCBtNF9ldmFsKFskMl0pKW00X2NvbmQoW200X2V2YWwoKFskM10pID4gKFskMl0pKV0sIDEsCgkgICBbbTRfcHVzaGRlZihbX200X3N0ZXBdLCBtNF9ldmFsKG00X2RlZmF1bHRfcXVvdGVkKFskNF0sCgkgICAgICAxKSkpbTRfYXNzZXJ0KF9tNF9zdGVwID4gMClfJDAoX200X2RlZm4oWyQxXSksCiAgbTRfZXZhbCgoKFskM10pIC0gKFskMl0pKSAvIF9tNF9zdGVwICogX200X3N0ZXAgKyAoWyQyXSkpLCBfbTRfc3RlcCxdLAoJIFttNF9ldmFsKChbJDNdKSA8IChbJDJdKSldLCAxLAoJICAgW200X3B1c2hkZWYoW19tNF9zdGVwXSwgbTRfZXZhbChtNF9kZWZhdWx0X3F1b3RlZChbJDRdLAoJICAgICAgLTEpKSltNF9hc3NlcnQoX200X3N0ZXAgPCAwKV8kMChfbTRfZGVmbihbJDFdKSwKICBtNF9ldmFsKCgoWyQyXSkgLSAoWyQzXSkpIC8gLShfbTRfc3RlcCkgKiBfbTRfc3RlcCArIChbJDJdKSksIF9tNF9zdGVwLF0sCgkgW200X3B1c2hkZWYoW19tNF9zdGVwXSlfJDAoX200X2RlZm4oWyQxXSksIF9tNF9kZWZuKFskMV0pLCAwLF0pW200X2RlZmluZShbJDFdLF0sIFspJDVdKW00X3BvcGRlZihbX200X3N0ZXBdLCBbJDFdKQpUOCw0MgpfQVNfRUNIT19BU19FQ0hPX1VOUVVPVEVEKFtfQVNfUVVPVEUoWyQxXSldLCBbJDJdKQpUMjUsMTAyCm00X2xvY2F0aW9uKF9BU19FQ0hPX0xPRykvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo3NTcKVDE3LDE4NQpfQVNfVFJfU0hfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfQ1JfUFJFUEFSRV0pIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCmFzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbW15fJGFzX2NyX2FsbnVtXV0lXyVnJyIKW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMywxMTAKX0FTX0NMRUFOX0RJUmlmIHRlc3QgLWQgJDE7IHRoZW4KICBmaW5kICQxIC10eXBlIGQgISAtcGVybSAtNzAwIC1leGVjIGNobW9kIHUrcnd4IHt9IFw7CiAgcm0gLWZyICQxLyogJDEvLltbIS5dXSAkMS8uPz8qCmZpClQyMCwxODEKQVNfRlVOQ1RJT05fREVTQ1JJQkVAJTpAICQxW11tNF9pZnZhbChbJDJdLCBbICQyXSkKQCU6QCBtNF90cmFuc2xpdChtNF9mb3JtYXQoWyUqc10sCgkgICBtNF9kZWNyKG00X3FsZW4oX200X2V4cGFuZChbJDFbXW00X2lmdmFsKFskMl0sIFsgJDJdKQpdKSkpLCBbXSksIFsgXSwgWy1dKQptNF90ZXh0X3dyYXAoWyQzXSwgW0AlOkAgXSwgW10sIFskNF0pClQxNiwyOTgKbTRfbWFwX2FyZ3NfcGFpcm00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAogICAgICAgWyQjXSwgWzFdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCM6ICQxXSldLAogICAgICAgWyQjXSwgWzJdLCBbXSwKICAgICAgIFskI10sIFszXSwgW200X2RlZmF1bHQoWyQyXSwgWyQxXSkoWyQzXSlbXV0sCiAgICAgICBbJCNdLCBbNF0sIFskMShbJDNdLCBbJDRdKVtdXSwKICAgICAgIFskMShbJDNdLCBbJDRdKVtdJDAoWyQxXSwgWyQyXSwgbTRfc2hpZnQobTRfc2hpZnQzKCRAKSkpXSkKVDE4LDEKX200X2RpdmVydChOT1RJQ0UpNgpUMjcsMQpfbTRfZGl2ZXJ0KEhFQURFUi1SRVZJU0lPTikxClQxMCwxMjQKQVNfTUVTU0FHRW00X2lmdmFsKEFTX01FU1NBR0VfTE9HX0ZELAoJICBbeyBfQVNfRUNIT19MT0coWyQxXSkKX0FTX0VDSE8oWyRhc19tZTogJDFdLCBbJDJdKTt9XSwKCSAgW19BU19FQ0hPKFskYXNfbWU6ICQxXSwgWyQyXSldKVtdW10KVDEwLDEyNwpBU19NRVNTQUdFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19NRV9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTYsMjcKX0FTX0NBU0VfREVGQVVMVCBbQCU6QChdCiAgKlspXSA6CiAgICAkMSA7OwpUNywzMApBU19XQVJOQVNfTUVTU0FHRShbV0FSTklORzogJDFdLCBbMl0pClQzMCwxMDIKbTRfbG9jYXRpb24oX0FTX0JBU0VOQU1FX0VYUFIpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6ODg4ClQxNyw0OTAKX0FTX1RSX1NIX0xJVEVSQUxtNF90cmFuc2xpdChbWyQxXV0sCiAgWyorW11dWwECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjKiUmJygpJCssLi86Ozw9Pj9AW1xdXmB7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LV0sCiAgW3BwW11dW19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX10pClQxMCw2NgpfQVNfRUNIT19OQVNfRUNIT19OKFsiX0FTX1FVT1RFKFskMV0pIl0pID4mbTRfZGVmYXVsdChbJDJdLCBbQVNfTUVTU0FHRV9GRF0pClQ3LDM2Cm00X3NpZ25tNF9ldmFsKCgoWyQxXSkgPiAwKSAtICgoWyQxXSkgPCAwKSkKVDI1LDUzCl9tNF9leHBhbnNpb25fc3RhY2tfZW50cnlfbTRfZGVmbihbbTRfbG9jYXRpb24oJDEpXSlbOiAkMSBpcyBleHBhbmRlZCBmcm9tLi4uXQpUMTksMTkxCl9BU19ESVJOQU1FX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0VYUFJfUFJFUEFSRV0paWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgYXNfZGlybmFtZT1kaXJuYW1lCmVsc2UKICBhc19kaXJuYW1lPWZhbHNlCmZpCltdX200X2RlZnVuX2VwaShbJDBdKQpUMjYsMgpfQVNfTElURVJBTF9IRVJFRE9DX0lGX1lFUyQxClQ5LDEyNwpfbTRfc3BsaXRtNF9jaGFuZ2VxdW90ZShbLT08eyhdLFspfT49LV0pW200X2JwYXRzdWJzdCgtPTx7KC09PHsoJDEpfT49LSl9Pj0tLCAtPTx7KCQyKX0+PS0sCgkgICAgICAgLT08eyhdJDNbKX0+PS0pXW00X2NoYW5nZXF1b3RlKFssIF0pClQ4LDg1Cl9tNF9qb2lubTRfaWYoWyQjJDJdLCBbMl0sIFtdLAogICAgICAgW200X2lmKFskMl0sIFtdLCBbXSwgW1skMSQyXV0pJDAoWyQxXSwgbTRfc2hpZnQyKCRAKSldKQpUMTYsNApfbTRfZGl2ZXJ0KEJPRFkpMTAwMApUMTgsMTAyMApfQVNfTElORU5PX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX0NSX1BSRVBBUkVdKUFTX1JFUVVJUkUoW19BU19NRV9QUkVQQVJFXSlfQVNfREVURUNUX1NVR0dFU1RFRChbX0FTX0xJTkVOT19XT1JLU10pbTRfcHVzaGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKW00X3B1c2hkZWYoW0FTX0VSUk9SXSwKICBbeyBBU19NRVNTQUdFKF1tNF9kcXVvdGUoW2Vycm9yOiAkXVsxXSlbLCBbMl0pOyBBU19FWElUKFsxXSk7IH1dKV9BU19MSU5FTk9fV09SS1MgfHwgewpbICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkKICBzZWQgLW4gJwogICAgcAogICAgL1skXUxJTkVOTy89CiAgJyA8JGFzX215c2VsZiB8CiAgICBzZWQgJwogICAgICBzL1skXUxJTkVOTy4qLyYtLwogICAgICB0IGxpbmVubwogICAgICBiCiAgICAgIDpsaW5lbm8KICAgICAgTgogICAgICA6bG9vcAogICAgICBzL1skXUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KICAgICAgdCBsb29wCiAgICAgIHMvLVxuLiovLwogICAgJyA+JGFzX21lLmxpbmVubyAmJgogIGNobW9kICt4ICIkYXNfbWUubGluZW5vIl0gfHwKICAgIEFTX0VSUk9SKFtjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbF0pCgogICMgRG9uJ3QgdHJ5IHRvIGV4ZWMgYXMgaXQgY2hhbmdlcyAkWzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zCiAgIyAodGhlIGRpcm5hbWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCiAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4KICAuICIuLyRhc19tZS5saW5lbm8iCiAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9mIHRoZSBsYXN0IGNvbW1hbmQuCiAgZXhpdAp9Cl9tNF9wb3BkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSwgW0FTX0VSUk9SXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEzLDI3NgptNF9zZXRfZGVsZXRlbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbX200X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbihbX200X3NldChbJDFdKV0pWyldLAoJCSAgICAgIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdKV0sCgkgIFttNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCgkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKW00X2lmZGVmKAoJCSAgICBbX200X3NldF9zaXplKCQxKV0sCgkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X3NpemUoJDEpXSldKV0pClQxMiwxMAptNF9jcl9kaWdpdHMwMTIzNDU2Nzg5ClQxNywxNwptNF9QQUNLQUdFX1NUUklOR0dOVSBBdXRvY29uZiAyLjY4ClQ5LDE3CkFTX1RFU1RfWCRhc190ZXN0X3ggJDFbXVtdClQ5LDEyOQpBU19URVNUX1hfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX1RFU1RfUFJFUEFSRV0pW11fbTRfcG9wZGVmKFskMF0pbTRfaW5kaXIoWyQwXW00X2lmKFskI10sIFswXSwgW10sIFssJEBdKSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKRjEwLDYKX200X3BvcGRlZnBvcGRlZgpUOSw2OApfQVNfVFJfU0hfQVNfTElURVJBTF9JRihbJDFdLCBbKl1bCSBdWwpdKShbXSwgWyQwX0lORElSXSwgWyQwX0xJVEVSQUxdKShbJDFdKQpUNywxNjg4Cm00X2luaXQjIEFsbCB0aGUgTTRzdWdhciBtYWNyb3Mgc3RhcnQgd2l0aCBgbTRfJywgZXhjZXB0IGBkbmwnIGtlcHQgYXMgaXMKIyBmb3Igc2FrZSBvZiBzaW1wbGljaXR5LgptNF9wYXR0ZXJuX2ZvcmJpZChbXl8/bTRfXSkKbTRfcGF0dGVybl9mb3JiaWQoW15kbmwkXSkKCiMgSWYgX19tNF92ZXJzaW9uX18gaXMgZGVmaW5lZCwgd2UgYXNzdW1lIHRoYXQgd2UgYXJlIGJlaW5nIHJ1biBieSBNNAojIDEuNiBvciBuZXdlciwgdGh1cyAkQCByZWN1cnNpb24gaXMgbGluZWFyLCBhbmQgZGVidWdtb2RlKCtkbykKIyBpcyBhdmFpbGFibGUgZm9yIGZhc3RlciBjaGVja3Mgb2YgZGVyZWZlcmVuY2luZyB1bmRlZmluZWQgbWFjcm9zCiMgYW5kIGZvcmNpbmcgZHVtcGRlZiB0byBwcmludCB0byBzdGRlcnIgcmVnYXJkbGVzcyBvZiBkZWJ1Z2ZpbGUuCiMgQnV0IGlmIGl0IGlzIG1pc3NpbmcsIHdlIGFzc3VtZSB3ZSBhcmUgYmVpbmcgcnVuIGJ5IE00IDEuNC54LCB0aGF0CiMgJEAgcmVjdXJzaW9uIGlzIHF1YWRyYXRpYywgYW5kIHRoYXQgd2UgbmVlZCBmb3JlYWNoLWJhc2VkCiMgcmVwbGFjZW1lbnQgbWFjcm9zLiAgQWxzbywgbTQgcHJpb3IgdG8gMS40LjggbG9zZXMgdHJhY2sgb2YgbG9jYXRpb24KIyBkdXJpbmcgbTR3cmFwIHRleHQ7IF9fbGluZV9fIHNob3VsZCBuZXZlciBiZSAwLgojCiMgVXNlIHRoZSByYXcgYnVpbHRpbiB0byBhdm9pZCB0cmlwcGluZyB1cCBpbmNsdWRlIHRyYWNpbmcuCiMgTWVhbndoaWxlLCBhdm9pZCBtNF9jb3B5LCBzaW5jZSBpdCB0ZW1wb3JhcmlseSB1bmRlZmluZXMgbTRfZGVmbi4KbTRfaWZkZWYoW19fbTRfdmVyc2lvbl9fXSwKW200X2RlYnVnbW9kZShbK2RvXSkKbTRfZGVmaW5lKFttNF9kZWZuXSwgX200X2RlZm4oW19tNF9kZWZuXSkpCm00X2RlZmluZShbbTRfZHVtcGRlZl0sIF9tNF9kZWZuKFtfbTRfZHVtcGRlZl0pKQptNF9kZWZpbmUoW200X3BvcGRlZl0sIF9tNF9kZWZuKFtfbTRfcG9wZGVmXSkpCm00X2RlZmluZShbbTRfdW5kZWZpbmVdLCBfbTRfZGVmbihbX200X3VuZGVmaW5lXSkpXSwKW200X2J1aWx0aW4oW2luY2x1ZGVdLCBbbTRzdWdhci9mb3JlYWNoLm00XSkKbTRfd3JhcF9saWZvKFttNF9pZihfX2xpbmVfXywgWzBdLCBbbTRfcHVzaGRlZihbbTRfbG9jYXRpb25dLApdXW00X2RxdW90ZShtNF9kcXVvdGUobTRfZHF1b3RlKF9fZmlsZV9fOl9fbGluZV9fKSkpW1spXSldKV0pCgojIFJld3JpdGUgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBkaXZlcnNpb24gc3RhY2suCm00X2RpdmVydChbS0lMTF0pCgojIENoZWNrIHRoZSBkaXZlcnQgcHVzaC9wb3AgcGVyZmVjdCBiYWxhbmNlLgojIFNvbWUgdXNlcnMgYXJlIHByb25lIHRvIGFsc28gdXNlIG00X3dyYXAgdG8gcmVnaXN0ZXIgbGFzdC1taW51dGUKIyBtNF9kaXZlcnRfdGV4dDsgc28gYWZ0ZXIgb3VyIGRpdmVyc2lvbiBjbGVhbnVwcywgd2UgcmVzdG9yZQojIEtJTEwgYXMgdGhlIGJvdHRvbSBvZiB0aGUgZGl2ZXJzaW9uIHN0YWNrLgptNF93cmFwKFttNF9wb3BkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSltNF9pZmRlZigKICBbX200X2RpdmVydF9kaXZlcnNpb25dLCBbbTRfZmF0YWwoWyQwOiB1bmJhbGFuY2VkIG00X2RpdmVydF9wdXNoOgpdbTRfZGl2ZXJ0X3N0YWNrKV0pX200X3BvcGRlZihbX200X2RpdmVydF9zdGFja10pbTRfZGl2ZXJ0X3B1c2goW0tJTExdKV0pCgpUMjEsMTAyCm00X2xvY2F0aW9uKEFTX0VSUk9SKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00Ojg1MApUMTEsMTYyCm00X2R1bXBkZWZzbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBtaXNzaW5nIGFyZ3VtZW50XSldLAogICAgICAgWyQjXSwgWzFdLCBbbTRfc3RhY2tfZm9yZWFjaF9saWZvKFskMV0sIFttNF9kdW1wZGVmKFskMV0pbTRfaWdub3JlXSldLAogICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pClQxMiwxNgptNF93cmFwX2xpZm9fbTRfd3JhcChbJDFbXV0pClQxMCwxMDMKbTRfZmxhdHRlbm00X2lmKG00X2luZGV4KFskMV0sIFsKXSksIFstMV0sIFtbJDFdXSwKICAgICAgIFttNF90cmFuc2xpdChtNF9icGF0c3Vic3QoW1tbJDFdXV0sIFtcXApdKSwgWwpdLCBbIF0pXSkKVDIwLDM2Cl9tNF9zZXRfaW50ZXJzZWN0aW9ubTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFssWyQyXV0pClQyMCwzMwpfQVNfUkVRVUlSRV9TSEVMTF9GTgptNF9uKFskMl0pJDEgKCkKewokMwp9IEAlOkAgJDFbXQpUMjIsMTAzCm00X2xvY2F0aW9uKEFTX1RSX0NQUCkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxODQxClQ4LDI4Cl9BU19DQVNFIFtAJTpAKF0KICAkMVspXSA6CiAgICAkMiA7OwpUMTksMTAyCm00X2xvY2F0aW9uKEFTX0ZPUikvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo1NzQKVDksMTU2Cm00X2VzY2FwZW00X2lmKG00X2luZGV4KG00X3RyYW5zbGl0KFskMV0sCiAgIFtbXSMsKCldW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OV0sIFskJCRdKSwgWyRdKSwKICBbLTFdLCBbbTRfZWNob10sIFtfJDBdKShbJDFdKQpUMTcsNDc4CkFTX0lOSVRfR0VORVJBVEVEX200X2RlZnVuX3BybyhbJDBdKW00X3JlcXVpcmUoW0FTX1BSRVBBUkVdKW00X3B1c2hkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSlhc193cml0ZV9mYWlsPTAKY2F0ID4kMSA8PF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTEKIyEgJFNIRUxMCiMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KJDIKU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KZXhwb3J0IFNIRUxMCl9BU0VPRgpjYXQgPj4kMSA8PFxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCl9BU19TSEVMTF9TQU5JVElaRQpfQVNfUFJFUEFSRQptNF9pZihBU19NRVNTQUdFX0ZELCBbMV0sIFtdLCBbZXhlYyBBU19NRVNTQUdFX0ZEPiYxCl0pbTRfdGV4dF9ib3goW01haW4gYm9keSBvZiAkMSBzY3JpcHQuXSkKX0FTRU9GCnRlc3QgJGFzX3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICQxW11kbmwKX200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMjksMTAyCm00X2xvY2F0aW9uKF9BU19ESVJOQU1FX0VYUFIpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6OTQyClQxMiwyNAptNF9yZW5hbWVfbTRtNF9yZW5hbWUoWyQxXSwgW200XyQxXSkKVDMwLDEwMgptNF9sb2NhdGlvbihfQVNfVU5TRVRfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo2MjQKVDIwLDExMQptNF9zdGFja19mb3JlYWNoX3NlcF9tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdKV9tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdLCBbJDJbXV9tNF9kZWZuKFttNF90bXAtJDFdKSQzXSwgWyQ0W11dKQpUMjAsMTAyCm00X2xvY2F0aW9uKEFTX0VDSE8pL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6OTkzClQzNSwxMDMKbTRfbG9jYXRpb24oX0FTX1ZBUl9BUFBFTkRfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxODg4ClQxOSwxNTYKX200X2RlZnVuX3Byb19vdXRlcm00X3NldF9kZWxldGUoW19tNF9wcm92aWRlXSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0aW5nXSwgWyQxXSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2R1bXBdLCBtNF9kaXZudW0pbTRfZGl2ZXJ0X3B1c2goW0dST1ddKQpUMTgsNDkKQVNfTElURVJBTF9XT1JEX0lGX0FTX0xJVEVSQUxfSUYobTRfZXhwYW5kKFskMV0pKShbJDRdLCBbJDNdLCBbJDJdKQpUMTcsNjMKbTRfc2V0X2RpZmZlcmVuY2VtNF9pZihbJDFdLCBbJDJdLCBbXSwgW200X3NldF9tYXBfc2VwKFskMV0sIFtfJDAoWyQyXSxdLCBbKV0pXSkKVDE3LDIwOQpfbTRfcmVxdWlyZV9jaGVja200X2lmKF9tNF9kZWZuKFtfbTRfZGl2ZXJ0aW5nXSksIFskMl0sIFttNF9pZ25vcmVdLAogICAgICAgbTRfaWZkZWYoW19tNF9kaXZlcnRpbmcoWyQyXSldLCBbLV0pLCBbLV0sIFttNF93YXJuKFtzeW50YXhdLAogICBbJDM6IGAkMScgd2FzIGV4cGFuZGVkIGJlZm9yZSBpdCB3YXMgcmVxdWlyZWRdKV9tNF9yZXF1aXJlX2NhbGxdLAogICAgICAgW200X2lnbm9yZV0pClQxOSwxNjYKbTRfc2V0X2ludGVyc2VjdGlvbm00X2lmKFskMV0sIFskMl0sIFttNF9zZXRfbGlzdGMoWyQxXSldLAogICAgICAgbTRfZXZhbChtNF9zZXRfc2l6ZShbJDJdKSA8IG00X3NldF9zaXplKFskMV0pKSwgWzFdLCBbJDAoWyQyXSwgWyQxXSldLAogICAgICAgW200X3NldF9tYXBfc2VwKFskMV0sIFtfJDAoWyQyXSxdLCBbKV0pXSkKVDE5LDE0NwpBU19SRVFVSVJFX1NIRUxMX0ZObTRfcHJvdmlkZV9pZihbQVNfU0hFTExfRk5fJDFdLCBbXSwKW0FTX1JFUVVJUkUoW0FTX1NIRUxMX0ZOXyQxXSwKW200X3Byb3ZpZGUoW0FTX1NIRUxMX0ZOXyQxXSlfJDAoJEApXSwKbTRfZGVmYXVsdF9xdW90ZWQoWyQ0XSwgW000U0gtSU5JVC1GTl0pKV0pClQxMyw0NwpBU19MSVRFUkFMX0lGXyQwKG00X2V4cGFuZChbJDFdKSwgWwkgXVsKXSkoWyQ0XSwgWyQzXSwgWyQyXSkKVDIxLDEwMQptNF9zdGFja19mb3JlYWNoX2xpZm9fbTRfc3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSwgWyQyKF9tNF9kZWZuKFttNF90bXAtJDFdKSldKV9tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdKQpUMTEsMzMKbTRfc2V0X2xpc3RtNF9zZXRfbWFwX3NlcChbJDFdLCBbXSwgW10sIFssXSkKVDMyLDEwMgptNF9sb2NhdGlvbihfQVNfREVURUNUX1JFUVVJUkVEKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjE1NwpUMjMsMTAyCm00X2xvY2F0aW9uKEFTX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MzIxClQyOSwxMDMKbTRfbG9jYXRpb24oX0FTX1RFU1RfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxMzQ4CkY4LDgKX19saW5lX19fX2xpbmVfXwpUMTMsNDEKX200X3NldF91bmlvbm00X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgW10sIFssWyQyXV0pClQxNywxCl9tNF9kaXZlcnQoQklOU0gpMApUMTAsNTUKX200X3NoaWZ0Mm00X2lmKFskI10sIFsyXSwgW10sCiAgICAgICBbLCBtNF9zaGlmdChtNF9zaGlmdCgkQCkpXSkKVDE4LDQKbTRfUEFDS0FHRV9WRVJTSU9OMi42OApUMTAsNjUKX200X3NoaWZ0M200X2lmKFskI10sIFszXSwgW10sCiAgICAgICBbLCBtNF9zaGlmdChtNF9zaGlmdChtNF9zaGlmdCgkQCkpKV0pClQxNiwyMjIKX0FTX0JBU0VOQU1FX1NFRF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19FQ0hPKFtYL1tdJDFdKSB8CiAgICBzZWQgWycvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwvXChcL1wvXCkkL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXC9cKFwvXCkuKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIHMvLiovLi87IHEnXVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTMsMzgzCl9BU19QQVRIX1dBTEthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCm00X2lmdmFsbihbJDNdLCBbYXNfZm91bmQ9ZmFsc2VdKWRubAptNF9ibWF0Y2goWyQxXSwgW1s6O11dLApbYXNfZHVtbXk9IiQxIgpmb3IgYXNfZGlyIGluICRhc19kdW1teV0sCltmb3IgYXNfZGlyIGluIG00X2RlZmF1bHQoWyQxXSwgWyRQQVRIXSldKQpkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogIG00X2lmdmFsbihbJDNdLCBbYXNfZm91bmQ9Ol0pZG5sCiAgJDIKICBtNF9pZnZhbG4oWyQzXSwgW2FzX2ZvdW5kPWZhbHNlXSlkbmwKZG9uZQptNF9pZnZhbG4oWyQzXSwgWyRhc19mb3VuZCB8fCB7ICQzOyB9XSlkbmwKSUZTPSRhc19zYXZlX0lGUwpbXQpUMTMsMTM5Cl9BU19QQVRIX1dBTEtfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX1BBVEhfU0VQQVJBVE9SX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQyOCwxCl9tNF9kaXZlcnQoSEVBREVSLUNPUFlSSUdIVCkzClQxMSw1OApfQVNfQ0xFQU5VUG00X2RpdmVydF90ZXh0KFtNNFNILVNBTklUSVpFXSwgW19BU19ERVRFQ1RfQkVUVEVSX1NIRUxMXSkKVDIxLDMyCkFTX0xJVEVSQUxfSEVSRURPQ19JRl8kMChtNF9leHBhbmQoWyQxXSkpKFskMl0sIFskM10pClQxMCw4NApfbTRfbWlubWF4bTRfaWYoWyQjXSwgWzNdLCBbJDEoWyQyXSwgWyQzXSldLAogICAgICAgWyQwKFskMV0sICQxKFskMl0sIFskM10pLCBtNF9zaGlmdDMoJEApKV0pClQxMyw1NwpBU19NRV9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW18kMF0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMSwyMzgKbTRfdGV4dF9ib3htNF9wdXNoZGVmKFttNF9Cb3JkZXJdLAoJICAgIG00X3RyYW5zbGl0KG00X2Zvcm1hdChbW1slKnNdXV0sIG00X2RlY3IobTRfcWxlbihfbTRfZXhwYW5kKFskMQpdKSkpLCBbXSksIFsgXSwgbTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWy1dKSkpWyMjXSBfbTRfZGVmbihbbTRfQm9yZGVyXSkgWyMjXQpbIyNdICQxIFsjI10KWyMjXSBfbTRfZGVmbihbbTRfQm9yZGVyXSkgWyMjXV9tNF9wb3BkZWYoW200X0JvcmRlcl0pClQxNSwxODAKbTRfc2V0X2NvbnRhaW5zbTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLAoJICBbbTRfaWYobTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLAoJCSAgICBbbTRfaW5kaXIoW19tNF9zZXQoWyQxXSwkMildKV0sIFswXSksIFsxXSwgWyQzXSwgWyQ0XSldLAoJICBbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLCBbJDNdLCBbJDRdKV0pCkYxMCw3Cm00X2VzeXNjbWRlc3lzY21kClQ5LDIyCkFTX1RSX0NQUF8kMChtNF9leHBhbmQoWyQxXSkpW10KVDksMTI0CkFTX1RSX0NQUF9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfJDBfUFJFUEFSRV0pW11fbTRfcG9wZGVmKFskMF0pbTRfaW5kaXIoWyQwXW00X2lmKFskI10sIFswXSwgW10sIFssJEBdKSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEwLDMyCm00X3NldF9tYXBtNF9zZXRfbWFwX3NlcChbJDFdLCBbJDIoXSwgWyldKQpUMTQsNTMKbTRfY3Jfc3ltYm9sczFhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXwpUMTQsMTc5Cl9BU19MSVRFUkFMX0lGbTRfaWYobTRfaW5kZXgoWyQxXSwgW0BTfEBdKSwgWy0xXSwgWyQwXyhtNF90cmFuc2xpdChbJDFdLAogIFstOiUvQHt9W10jKCksLiQyXV1bW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OV1dWywKICBbKysrKyskJGBgYGBgXSkpXSwgWyQwX05PXSkKVDE0LDYzCm00X2NyX3N5bWJvbHMyYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5ClQxMywxMTYKX0FTX0JPWF9JTkRJUnNlZCAnaDtzLy4vbTRfZGVmYXVsdChbJDJdLCBbLV0pL2c7cy9eLi4uL0AlOkBAJTpAIC87cy8uLi4kLyBAJTpAQCU6QC87cDt4O3A7eCcgPDxfQVNCT1gKQCU6QEAlOkAgJDEgQCU6QEAlOkAKX0FTQk9YClQxMiwxOAptNF9lcnJwcmludG5tNF9lcnJwcmludChbJDEKXSkKVDEzLDMwNgptNF9icGF0c3Vic3RzbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAogICAgICAgWyQjXSwgMSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKICAgICAgIFskI10sIDIsIFttNF91bnF1b3RlKG00X2J1aWx0aW4oW3BhdHN1YnN0XSwgW1skMV1dLCBbJDJdKSldLAogICAgICAgWyQjXSwgMywgW200X3VucXVvdGUobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pKV0sCiAgICAgICBbXyQwKCRAbTRfaWYobTRfZXZhbCgkIyAmIDEpLCAwLCBbLF0pKV0pClQyMywxMDIKbTRfbG9jYXRpb24oQVNfTUVTU0FHRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo4MDEKRjcsNAptNF9kZWNyZGVjcgpUMTIsOTMKbTRfdGV4dF93cmFwXyQwKG00X2VzY2FwZShbJDFdKSwgWyQyXSwgbTRfZGVmYXVsdF9xdW90ZWQoWyQzXSwgWyQyXSksCiAgICAgbTRfZGVmYXVsdF9xdW90ZWQoWyQ0XSwgWzc5XSkpClQxMiw5MwptNF9zZXRfZW1wdHltNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sCgkgIFttNF9pZihtNF9pbmRpcihbX200X3NldF9zaXplKCQxKV0pLCBbMF0sIFskMl0sIFskM10pXSwgWyQyXSkKVDE1LDM2Cm00X3NldF9jb250ZW50c200X3NldF9tYXBfc2VwKFskMV0sIFtdLCBbXSwgW1skMl1dKQpUMzIsMTAyCm00X2xvY2F0aW9uKF9BU19ESVJOQU1FX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6OTc4ClQxNSw1NQpfQVNfVFJfU0hfSU5ESVJgQVNfRUNITyhbIl9BU19FU0NBUEUoW1skMV1dLCBbYF0sIFtcXSkiXSkgfCAkYXNfdHJfc2hgClQyMCwxMDIKbTRfbG9jYXRpb24oQVNfQ0FTRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo1MTcKVDEwLDE2OAptNF9jb21iaW5lbTRfaWYoWyQyXSwgW10sIFtdLCBtNF9ldmFsKFskIyA+IDNdKSwgWzFdLApbbTRfbWFwX2FyZ3Nfc2VwKFttNF9tYXBfYXJnc19zZXAobTRfZHF1b3RlKF0sIFspW1skM11dLCBbXSwgW1skMV1dLF1dbTRfZHF1b3RlKG00X2RxdW90ZShtNF9zaGlmdDMoJEApKSlbWyldLCBbWyQxXV0sICQyKV0pClQ5LDMzOQpBU19WQVJfSUZBU19MSVRFUkFMX1dPUkRfSUYoWyQxXSwKICBbQVNfSUYobTRfaWZ2YWwoWyQyXSwgW1t0ZXN0ICJ4JCQxIiA9IHhbXSQyXV0sIFtbJHskMTorZmFsc2V9IDpdXSldLAogIFtBU19WQVJfQ09QWShbYXNfdmFsXSwgWyQxXSkKICAgQVNfSUYobTRfaWZ2YWwoWyQyXSwgW1t0ZXN0ICJ4JGFzX3ZhbCIgPSB4W10kMl1dLCBbWyR7YXNfdmFsOitmYWxzZX0gOl1dKV0sCiAgW0FTX0lGKG00X2lmdmFsKFskMl0sCiAgICBbW2V2YWwgdGVzdCBcInhcJCIkMSJcIiA9IHgiX0FTX0VTQ0FQRShbJDJdLCBbYF0sIFtcIiRdKSJdXSwKICAgIFtbZXZhbCBcJHskMTorZmFsc2V9IDpdXSldKSwKWyQzXSwgWyQ0XSkKVDE4LDIwMgptNF9jcl9ub3Rfc3ltYm9sczEBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyolJicoKSQrLC4vMDEyMzQ1Njc4OTo7PD0+P0BbXF1eYHt8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxOCwxOTIKbTRfY3Jfbm90X3N5bWJvbHMyAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMqJSYnKCkkKywuLzo7PD0+P0BbXF1eYHt8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQyMywxMDIKbTRfbG9jYXRpb24oQVNfRElSTkFNRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDo5NjkKRjEyLDgKbTRfYnBhdHN1YnN0cGF0c3Vic3QKVDMxLDEwMgptNF9sb2NhdGlvbihfQVNfU0hFTExfU0FOSVRJWkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6NDE5ClQ3LDIKbTRfZWNobyRAClQyMCwxCkFTX09SSUdJTkFMX1NURElOX0ZEMApUMjUsMTExCm00X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm9fbTRfc3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSwgWyQyW11fbTRfZGVmbihbbTRfdG1wLSQxXSkkM10sIFskNFtdXSlfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSkKVDE0LDEwMgpfQVNfTUVfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfQkFTRU5BTUVfUFJFUEFSRV0pYXNfbWU9YEFTX0JBU0VOQU1FKCIkWzBdIilgCltdX200X2RlZnVuX2VwaShbJDBdKQpUMjYsMTAzCm00X2xvY2F0aW9uKF9BU19QQVRIX1dBTEspL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTMwMApUNyw5MQptNF9hcmdubTRfYXNzZXJ0KFswIDwgJDFdKW00X3B1c2hkZWYoW18kMF0sIFtfbTRfcG9wZGVmKFtfJDBdKV1tNF9kcXVvdGUoWyRdbTRfaW5jcihbJDFdKSkpXyQwKCRAKQpUMjksMTAzCm00X2xvY2F0aW9uKF9BU19FQ0hPX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MTAxMQpUOCwyNwptNF9pZnZhbG00X2lmKFskMV0sIFtdLCBbJDNdLCBbJDJdKQpUNywxOTcKbTRfY29weW00X2lmZGVmKFskMl0sIFttNF9mYXRhbChbJDA6IHdvbid0IG92ZXJ3cml0ZSBkZWZpbmVkIG1hY3JvOiAkMl0pXSwKCSAgW200X3N0YWNrX2ZvcmVhY2hfc2VwKFskMV0sIFttNF9wdXNoZGVmKFskMl0sXSwgWyldKV0pbTRfaWZkZWYoW200X2xvY2F0aW9uKCQxKV0sIFttNF9kZWZpbmUoW200X2xvY2F0aW9uKCQyKV0sIG00X2xvY2F0aW9uKV0pClQxMSwzMQpfQVNfSUZfRUxTRW00X2lmbmJsYW5rKFskMV0sCltlbHNlCiAgJDEKXSkKVDI2LDI5MgpfQVNfUEFUSF9TRVBBUkFUT1JfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSkjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KICBQQVRIX1NFUEFSQVRPUj06CiAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgewogICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCiAgfQpmaQpbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE0LDExMwptNF9leHBhbmRfb25jZW00X3Byb3ZpZGVfaWYobTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWyQxXSksCgkgICAgICAgW10sCgkgICAgICAgW200X3Byb3ZpZGUobTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWyQxXSkpW10kMV0pClQxNCw5NgpfbTRfYnBhdHN1YnN0c200X2lmKFskI10sIDIsIFskMV0sCiAgICAgICBbJDAobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pLAoJICAgbTRfc2hpZnQzKCRAKSldKQpUMTMsNDEKbTRfcHJvdmlkZV9pZm00X2lmZGVmKFttNF9wcm92aWRlKCQxKV0sCgkgIFskMl0sIFskM10pClQxNiw4MzQKX0FTX0xOX1NfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQppZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlCmVsc2UKICBybSAtZiBjb25mJCQuZGlyCiAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbApmaQppZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCiAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCiAgICBhc19sbl9zPSdsbiAtcycKICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6CiAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgogICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCiAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLgogICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAogICAgICBhc19sbl9zPSdjcCAtcCcKICBlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgogICAgYXNfbG5fcz1sbgogIGVsc2UKICAgIGFzX2xuX3M9J2NwIC1wJwogIGZpCmVsc2UKICBhc19sbl9zPSdjcCAtcCcKZmkKcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQpybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCltdX200X2RlZnVuX2VwaShbJDBdKQpUOCwxMDc1CkFTX1VOQU1FewpjYXQgPDxfQVNVTkFNRQptNF90ZXh0X2JveChbUGxhdGZvcm0uXSkKCmhvc3RuYW1lID0gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCnVuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAp1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKdW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCnVuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAoKL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYAoKL2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgfHwgZWNobyB1bmtub3duYAovdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCi91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKL3Vzci9iaW4vaG9zdGluZm8gICAgICA9IGAoL3Vzci9iaW4vaG9zdGluZm8pIDI+L2Rldi9udWxsICAgICAgfHwgZWNobyB1bmtub3duYAovYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGwgICAgICAgICAgfHwgZWNobyB1bmtub3duYAoKX0FTVU5BTUUKCl9BU19QQVRIX1dBTEsoWyRQQVRIXSwgW0FTX0VDSE8oWyJQQVRIOiAkYXNfZGlyIl0pXSkKfQpUNywxNgpBU19MTl9TJGFzX2xuX3MgJDEgJDJbXQpUNywxMjkKQVNfTE5fU19tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfTE5fU19QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTgsMjA3Cl9BU19UUl9DUFBfUFJFUEFSRV9tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfQ1JfUFJFUEFSRV0pIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgphc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW1teXyRhc19jcl9hbG51bV1dJV8lZyciCltdX200X2RlZnVuX2VwaShbJDBdKQpUOSw3NQpBU19FU0NBUEVfJDAoWyQxXSwgbTRfaWYoWyQyXSwgW10sIFtbYF0sIFtcIiRdXSwgW200X3N1YnN0cihbJDJdLCBbMF0sIFsxXSksIFskMl1dKSkKVDIwLDQKX200X2RpdmVydF9kaXZlcnNpb25LSUxMClQyNCwxMDIKbTRfbG9jYXRpb24oX0FTX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6MjkwClQyMiwxMDMKbTRfbG9jYXRpb24oQVNfRUNIT19OKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjEwMDEKVDMwLDEwMwptNF9sb2NhdGlvbihfQVNfVFJfU0hfUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxNzg3ClQyMywxMDMKbTRfbG9jYXRpb24oQVNfTUtESVJfUCkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxMjUwCkYxMiw4Cl9tNF91bmRpdmVydHVuZGl2ZXJ0ClQ3LDU0Cl9tNF9jZHJtNF9pZihbJCNdLCAxLCBbXSwKICAgICAgIFssIG00X2RxdW90ZShtNF9zaGlmdCgkQCkpXSkKVDEwLDg2Cm00X3RvdXBwZXJtNF90cmFuc2xpdChbWyQxXV0sIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5el0sCgkJICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpdKQpUOCwxOQptNF9jdXJyeSQxKG00X3NoaWZ0KCRALClfJDAKVDE2LDU2Cl9BU19UUl9DUFBfSU5ESVJgQVNfRUNITyhbIl9BU19FU0NBUEUoW1skMV1dLCBbYF0sIFtcXSkiXSkgfCAkYXNfdHJfY3BwYApUMTcsMjgKbTRfZGVmYXVsdF9uYmxhbmttNF9pZmJsYW5rKFskMV0sIFskMl0sIFskMV0pClQyOCwxMDIKbTRfbG9jYXRpb24oX0FTX0RJUk5BTUVfU0VEKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00Ojk0OQpUMTgsNTQwCl9BU19UUl9DUFBfTElURVJBTG00X3RyYW5zbGl0KFtbJDFdXSwKICBbKltdXVthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjKiUmJygpJCssLi86Ozw9Pj9AW1xdXmB7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LV0sCiAgW1BbXV1bQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19dKQpUMTIsNDgKbTRfcmVfZXNjYXBlbTRfYnBhdHN1YnN0KFskMV0sCgkgICAgICBbW11bKisuP1xeJF1dLCBbXFxcJl0pClQxMiwyNgptNF9ub3JtYWxpemVtNF9zdHJpcChtNF9mbGF0dGVuKFskMV0pKQpUMTgsNDAKX200X3NldF9kaWZmZXJlbmNlbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFtdLCBbLFskMl1dKQpGMywzCmRubGRubApUMjcsMjA1MgpfQVNfVkVSU0lPTl9DT01QQVJFX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pW2FzX2F3a19zdHJ2ZXJzY21wPScKICAjIFVzZSBvbmx5IGF3ayBmZWF0dXJlcyB0aGF0IHdvcmsgd2l0aCA3dGggZWRpdGlvbiBVbml4IGF3ayAoMTk3OCkuCiAgIyBNeSwgd2hhdCBhbiBvbGQgYXdrIHlvdSBoYXZlLCBNci4gU29sYXJpcyEKICBFTkQgewogICAgd2hpbGUgKGxlbmd0aCh2MSkgJiYgbGVuZ3RoKHYyKSkgewogICAgICAjIFNldCBkMSB0byBiZSB0aGUgbmV4dCB0aGluZyB0byBjb21wYXJlIGZyb20gdjEsIGFuZCBsaWtld2lzZSBmb3IgZDIuCiAgICAgICMgTm9ybWFsbHkgdGhpcyBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIGJ1dCBpZiB2MSBhbmQgdjIgY29udGFpbiBkaWdpdHMsCiAgICAgICMgY29tcGFyZSB0aGVtIGFzIGludGVnZXJzIGFuZCBmcmFjdGlvbnMgYXMgc3RydmVyc2NtcCBkb2VzLgogICAgICBpZiAodjEgfiAvXlswLTldLyAmJiB2MiB+IC9eWzAtOV0vKSB7CgkjIFNwbGl0IHYxIGFuZCB2MiBpbnRvIHRoZWlyIGxlYWRpbmcgZGlnaXQgc3RyaW5nIGNvbXBvbmVudHMgZDEgYW5kIGQyLAoJIyBhbmQgYWR2YW5jZSB2MSBhbmQgdjIgcGFzdCB0aGUgbGVhZGluZyBkaWdpdCBzdHJpbmdzLgoJZm9yIChsZW4xID0gMTsgc3Vic3RyKHYxLCBsZW4xICsgMSkgfiAvXlswLTldLzsgbGVuMSsrKSBjb250aW51ZQoJZm9yIChsZW4yID0gMTsgc3Vic3RyKHYyLCBsZW4yICsgMSkgfiAvXlswLTldLzsgbGVuMisrKSBjb250aW51ZQoJZDEgPSBzdWJzdHIodjEsIDEsIGxlbjEpOyB2MSA9IHN1YnN0cih2MSwgbGVuMSArIDEpCglkMiA9IHN1YnN0cih2MiwgMSwgbGVuMik7IHYyID0gc3Vic3RyKHYyLCBsZW4yICsgMSkKCWlmIChkMSB+IC9eMC8pIHsKCSAgaWYgKGQyIH4gL14wLykgewoJICAgICMgQ29tcGFyZSB0d28gZnJhY3Rpb25zLgoJICAgIHdoaWxlIChkMSB+IC9eMC8gJiYgZDIgfiAvXjAvKSB7CgkgICAgICBkMSA9IHN1YnN0cihkMSwgMik7IGxlbjEtLQoJICAgICAgZDIgPSBzdWJzdHIoZDIsIDIpOyBsZW4yLS0KCSAgICB9CgkgICAgaWYgKGxlbjEgIT0gbGVuMiAmJiAhIChsZW4xICYmIGxlbjIgJiYgc3Vic3RyKGQxLCAxLCAxKSA9PSBzdWJzdHIoZDIsIDEsIDEpKSkgewoJICAgICAgIyBUaGUgdHdvIGNvbXBvbmVudHMgZGlmZmVyIGluIGxlbmd0aCwgYW5kIHRoZSBjb21tb24gcHJlZml4CgkgICAgICAjIGNvbnRhaW5zIG9ubHkgbGVhZGluZyB6ZXJvcy4gIENvbnNpZGVyIHRoZSBsb25nZXIgdG8gYmUgbGVzcy4KCSAgICAgIGQxID0gLWxlbjEKCSAgICAgIGQyID0gLWxlbjIKCSAgICB9IGVsc2UgewoJICAgICAgIyBPdGhlcndpc2UsIGNvbXBhcmUgYXMgc3RyaW5ncy4KCSAgICAgIGQxID0gIngiIGQxCgkgICAgICBkMiA9ICJ4IiBkMgoJICAgIH0KCSAgfSBlbHNlIHsKCSAgICAjIEEgZnJhY3Rpb24gaXMgbGVzcyB0aGFuIGFuIGludGVnZXIuCgkgICAgZXhpdCAxCgkgIH0KCX0gZWxzZSB7CgkgIGlmIChkMiB+IC9eMC8pIHsKCSAgICAjIEFuIGludGVnZXIgaXMgZ3JlYXRlciB0aGFuIGEgZnJhY3Rpb24uCgkgICAgZXhpdCAyCgkgIH0gZWxzZSB7CgkgICAgIyBDb21wYXJlIHR3byBpbnRlZ2Vycy4KCSAgICBkMSArPSAwCgkgICAgZDIgKz0gMAoJICB9Cgl9CiAgICAgIH0gZWxzZSB7CgkjIFRoZSBub3JtYWwgY2FzZSwgd2l0aG91dCB3b3JyeWluZyBhYm91dCBkaWdpdHMuCglkMSA9IHN1YnN0cih2MSwgMSwgMSk7IHYxID0gc3Vic3RyKHYxLCAyKQoJZDIgPSBzdWJzdHIodjIsIDEsIDEpOyB2MiA9IHN1YnN0cih2MiwgMikKICAgICAgfQogICAgICBpZiAoZDEgPCBkMikgZXhpdCAxCiAgICAgIGlmIChkMSA+IGQyKSBleGl0IDIKICAgIH0KICAgICMgQmV3YXJlIFNvbGFyaXMgL3Vzci94Z3A0L2Jpbi9hd2sgKGF0IGxlYXN0IHRocm91Z2ggU29sYXJpcyAxMCksCiAgICAjIHdoaWNoIG1pc2hhbmRsZXMgc29tZSBjb21wYXJpc29ucyBvZiBlbXB0eSBzdHJpbmdzIHRvIGludGVnZXJzLgogICAgaWYgKGxlbmd0aCh2MikpIGV4aXQgMQogICAgaWYgKGxlbmd0aCh2MSkpIGV4aXQgMgogIH0KJ11bXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE0LDExNgpBU19MSU5FTk9fUFVTSF9tNF9kZWZ1bl9wcm8oWyQwXSlhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrW11fbTRfZGVmdW5fZXBpKFskMF0pCkYxMiw4Cl9tNF91bmRlZmluZXVuZGVmaW5lClQxMCw3OQpfbTRfc2hpZnRubTRfaWYoWyQxXSwgMSwgW200X3NoaWZ0KF0sCiAgICAgICBbJDAobTRfZGVjcihbJDFdKV0pLCBtNF9zaGlmdChtNF9zaGlmdCgkQCkpKQpUMjAsMTcwCl9tNF92ZXJzaW9uX3VubGV0dGVybTRfYnBhdHN1YnN0KG00X2JwYXRzdWJzdChtNF90cmFuc2xpdChbW1tbMCwkMV1dXV0sIFsuLV0sIFssLF0pLFtbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl1dWytdLAoJICAgICAgWysxLC0xLFswcjM2OlwmXV0pLCBbLDBdLCBbLFswcjEwOjBdXSkKVDcsNjMzCkFTX0lOSVQjIFdyYXAgb3VyIGNsZWFudXAgcHJpb3IgdG8gbTRzdWdhcidzIGNsZWFudXAuCm00X3dyYXAoW19BU19DTEVBTlVQXSkKbTRfaW5pdAptNF9wcm92aWRlKFtBU19JTklUXSkKCiMgRm9yYmlkZGVuIHRva2VucyBhbmQgZXhjZXB0aW9ucy4KbTRfcGF0dGVybl9mb3JiaWQoW15fP0FTX10pCgojIEJhbmdzaGUgYW5kIG1pbmltYWwgaW5pdGlhbGl6YXRpb24uCm00X2RpdmVydF90ZXh0KFtCSU5TSF0sIFtAJTpAISAvYmluL3NoXSkKbTRfZGl2ZXJ0X3RleHQoW0hFQURFUi1DT01NRU5UXSwKCSAgICAgICBbQCU6QCBHZW5lcmF0ZWQgZnJvbSBfX2ZpbGVfXyBieSBtNF9QQUNLQUdFX1NUUklORy5dKQptNF9kaXZlcnRfdGV4dChbTTRTSC1TQU5JVElaRV0sIFtfQVNfU0hFTExfU0FOSVRJWkVdKQptNF9kaXZlcnRfdGV4dChbTTRTSC1JTklULUZOXSwgW200X3RleHRfYm94KFtNNHNoIFNoZWxsIEZ1bmN0aW9ucy5dKV0pCgojIExldCdzIGdvIQptNF9kaXZlcnQoW0JPRFldKWRubAptNF90ZXh0X2JveChbTWFpbiBib2R5IG9mIHNjcmlwdC5dKQpfQVNfREVURUNUX1JFUVVJUkVEKFtfQVNfU0hFTExfRk5fV09SS10pZG5sCkFTX1JFUVVJUkUoW19BU19VTlNFVF9QUkVQQVJFXSwgW10sIFtNNFNILUlOSVQtRk5dKWRubAoKVDExLDEzNgptNF91bmRpdmVydG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFskI10sIFsxXSwgW19tNF91bmRpdmVydChfbTRfZGl2ZXJ0KFskMV0pKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDE1LDc2Cl9BU19CT1hfTElURVJBTEFTX0VDSE8oWyJfQVNfRVNDQVBFKG00X2RxdW90ZShtNF9leHBhbmQoW200X3RleHRfYm94KCRAKV0pKSwgW2BdLCBbXCIkXSkiXSkKVDEwLDQxMgptNF9yZXF1aXJlbTRfaWZkZWYoW19tNF9leHBhbmRpbmcoJDEpXSwKICBbbTRfZmF0YWwoWyQwOiBjaXJjdWxhciBkZXBlbmRlbmN5IG9mICQxXSldKW00X2lmKF9tNF9kaXZlcnRfZHVtcCwgW10sCiAgW200X2ZhdGFsKFskMCgkMSk6IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgYW4gXWRubAptNF9pZihbJDBdLCBbbTRfcmVxdWlyZV0sIFtbbTRfZGVmdW5dXSwgW1tBQ19ERUZVTl1dKVsnZCBtYWNyb10pXSltNF9wcm92aWRlX2lmKFskMV0sIFttNF9zZXRfY29udGFpbnMoW19tNF9wcm92aWRlXSwgWyQxXSwKICAgIFtfbTRfcmVxdWlyZV9jaGVjayhbJDFdLCBfbTRfZGVmbihbbTRfcHJvdmlkZSgkMSldKSwgWyQwXSldLCBbbTRfaWdub3JlXSldLAogIFtfbTRfcmVxdWlyZV9jYWxsXSkoWyQxXSwgWyQyXSwgX200X2RpdmVydF9kdW1wKQpUNywxMTkKbTRfY2FzZW00X2lmKFskI10sIDAsIFtdLAogICAgICAgWyQjXSwgMSwgW10sCiAgICAgICBbJCNdLCAyLCBbJDJdLAogICAgICAgWyQxXSwgWyQyXSwgWyQzXSwKICAgICAgIFskMChbJDFdLCBtNF9zaGlmdDMoJEApKV0pClQxMSw1NQptNF9zaW5jbHVkZW00X2luY2x1ZGVfdW5pcXVlKFskMV0pZG5sCm00X2J1aWx0aW4oW3NpbmNsdWRlXSwgWyQxXSkKVDI1LDIKX0FTX0xJVEVSQUxfSEVSRURPQ19JRl9OTyQyClQ5LDI1NQptNF9jcl9hbGwBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyolJicoKSQrLC4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KVDE5LDYyCm00X3ZlcnNpb25fdW5sZXR0ZXJtNF9zdWJzdHIobTRfbWFwX2FyZ3MoWy5tNF9ldmFsXSwgbTRfdW5xdW90ZShfJDAoWyQxXSkpKSwgWzNdKQpUMTcsMzIKbTRfZGVmaW5lX2RlZmF1bHRtNF9pZm5kZWYoWyQxXSwgW200X2RlZmluZSgkQCldKQpUMTEsMTYwCm00X3VuZGVmaW5lbTRfaWYoWyQjXSwgWzBdLCBbWyQwXV0sCiAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X3VuZGVmaW5lKFskMV0pXSwKCQkJICAgIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0pXSwKICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKQpUMTUsMTIKbTRfUEFDS0FHRV9OQU1FR05VIEF1dG9jb25mCkYxMCw3Cm00X2J1aWx0aW5idWlsdGluClQxMCwyNjYKQVNfUkVRVUlSRV9tNF9kZWZ1bl9wcm8oWyQwXSltNF9kZWZpbmUoW19tNF9kaXZlcnRfZGVzaXJlZF0sIFttNF9kZWZhdWx0X3F1b3RlZChbJDNdLCBbTTRTSC1JTklUXSldKW00X2lmKG00X2V2YWwoX200X2RpdmVydF9kdW1wIC0gMCA8PSBfbTRfZGl2ZXJ0KF9tNF9kaXZlcnRfZGVzaXJlZCwgWy1dKSksCiAgICAgICAxLCBbbTRfcmVxdWlyZShdLAoJICBbbTRfZGl2ZXJ0X3JlcXVpcmUoX200X2RpdmVydF9kZXNpcmVkLF0pIFskMV0sIFskMl0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxNCw0NAptNF9kaXZlcnRfb25jZW00X2V4cGFuZF9vbmNlKFttNF9kaXZlcnRfdGV4dChbJDFdLCBbJDJdKV0pClQxMSwxNDYKX200X2V4cGFuZF9tNF9pZihbJDRdLCBbfT49LV0sCiAgICAgICBbbTRfY2hhbmdlcXVvdGUoWy09PHskMl0sIFspfT49LV0pJDNtNF9jaGFuZ2VxdW90ZShbLCBdKV0sCiAgICAgICBbJDAoWyQxXSwgWygkMl0sIC09PHsoJDIkMSl9Pj0tLCBbfT49LV0pbTRfaWdub3JlJDJdKQpUMjksMTAyCm00X2xvY2F0aW9uKF9BU19CQVNFTkFNRV9TRUQpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6ODkzClQxNyw2NApfbTRfZGl2ZXJ0X3Vuc2FmZW00X2ZhdGFsKFskMDogY2Fubm90IGNoYW5nZSBkaXZlcnNpb24gdG8gYCQxJyBpbnNpZGUgbTRfZXhwYW5kXSkKVDgsOTkKX200X2NvbmRtNF9pZigoJDEpLCBbKCQyKV0sIFskM10sCiAgICAgICBbJCNdLCBbM10sIFtdLAogICAgICAgWyQjXSwgWzRdLCBbJDRdLAogICAgICAgWyQwKG00X3NoaWZ0MygkQCkpXSkKVDE2LDAKbTRfcGF0dGVybl9hbGxvdwpUMTcsMjUzCm00X2RpdmVydF9yZXF1aXJlbTRfaWZkZWYoW19tNF9leHBhbmRpbmcoJDIpXSwKICBbbTRfZmF0YWwoWyQwOiBjaXJjdWxhciBkZXBlbmRlbmN5IG9mICQyXSldKW00X2lmKF9tNF9kaXZlcnRfZHVtcCwgW10sCiAgW200X2ZhdGFsKFskMCgkMik6IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgYW4gbTRfZGVmdW4nZCBtYWNyb10pXSltNF9wcm92aWRlX2lmKFskMl0sIFtdLAogIFtfbTRfcmVxdWlyZV9jYWxsKFskMl0sIFskM10sIF9tNF9kaXZlcnQoWyQxXSwgWy1dKSldKQpGOSw2Cm00X3N5c3ZhbHN5c3ZhbApUMTMsOTEKQVNfU0VUX1NUQVRVU19tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfQVNfRVhJVF9QUkVQQVJFXSlbXWFzX2ZuX3NldF9zdGF0dXMgJDFbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDIyLDUyNwpfQVNfVkFSX0FQUEVORF9QUkVQQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX0ZVTkNUSU9OX0RFU0NSSUJFKFthc19mbl9hcHBlbmRdLCBbVkFSIFZBTFVFXSwKW0FwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbgpWQVIuICBUYWtlIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0aXplZApsaW5lYXIgZ3Jvd3RoIG92ZXIgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMKZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUgaW1wbGVtZW50YXRpb25zLl0pCkFTX0lGKFtfQVNfUlVOKFsiQVNfRVNDQVBFKG00X3F1b3RlKF9BU19WQVJfQVBQRU5EX1dPUktTKSkiXSldLApbZXZhbCAnYXNfZm5fYXBwZW5kICgpCiAgewogICAgZXZhbCAkW10xKz1cJFtdMgogIH0nXSwKW2FzX2ZuX2FwcGVuZCAoKQogIHsKICAgIGV2YWwgJFtdMT1cJCRbXTFcJFtdMgogIH1dKSAjIGFzX2ZuX2FwcGVuZApbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDE3LDAKbTRfcGF0dGVybl9mb3JiaWQKVDksNjkKbTRfYXNzZXJ0bTRfaWYobTRfZXZhbChbJDFdKSwgMCwKICAgICAgIFttNF9mYXRhbChbYXNzZXJ0IGZhaWxlZDogJDFdLCBbJDJdKV0pCkYxMCw3Cm00X3B1c2hkZWZwdXNoZGVmClQyMCw1MwptNF9kaXZlcnRfc3RhY2tfcHVzaG00X3B1c2hkZWYoW19tNF9kaXZlcnRfc3RhY2tdLCBtNF9sb2NhdGlvbls6ICQxOiAkMl0pClQxNywxMDUKX200X2RlZmluZV9jcl9ub3RtNF9kZWZpbmUoW200X2NyX25vdF8kMV0sCgkgICBtNF90cmFuc2xpdChtNF9kcXVvdGUobTRfZGVmbihbbTRfY3JfYWxsXSkpLAoJCSAgICAgICBtNF9kZWZuKFttNF9jcl8kMV0pKSkKVDE5LDIxCl9BU19WQVJfQVJJVEhfV09SS1N0ZXN0ICQoKCAxICsgMSApKSA9IDIKVDIzLDM5Cm00X2V4cGFuc2lvbl9zdGFja19wdXNobTRfcHVzaGRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFskMV0pClQxNCwxOTkKQVNfU0VUX0NBVEZJTEVjYXNlICQyIGluIEAlOkAoKAouKSBBU19WQVJfU0VUKFskMV0sIFskM10pOzsKKikKICBjYXNlICQzIGluIEAlOkAoKCgKICAuKSBBU19WQVJfU0VUKFskMV0sIFskMl0pOzsKICBbW1xcL11dKiB8ID86W1tcXC9dXSogKSBBU19WQVJfU0VUKFskMV0sIFskM10pOzsKICAqKSBBU19WQVJfU0VUKFskMV0sIFskMi8kM10pOzsKICBlc2FjOzsKZXNhY1tdClQzNCwxMDMKbTRfbG9jYXRpb24oX0FTX1ZBUl9BUklUSF9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjE5MzAKVDEzLDI2Cm00X2NyX2xldHRlcnNhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egpUNywxMwpBU19FQ0hPJGFzX2VjaG8gJDFbXQpUNywxMjQKQVNfRUNIT19tNF9kZWZ1bl9wcm8oWyQwXSlBU19SRVFVSVJFKFtfJDBfUFJFUEFSRV0pW11fbTRfcG9wZGVmKFskMF0pbTRfaW5kaXIoWyQwXW00X2lmKFskI10sIFswXSwgW10sIFssJEBdKSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDEwLDM2Cl9tNF9leHBhbmQkMF8oWyQxXSwgWyhdLCAtPTx7KCQxKX0+PS0sIFt9Pj0tXSkKVDI2LDEwNApfQVNfREVURUNUX1NVR0dFU1RFRF9QUlVORW00X3NldF9jb250YWlucyhbX0FTX0RFVEVDVF9SRVFVSVJFRF9CT0RZXSwgWyQxXSwKCQkgW200X3NldF9yZW1vdmUoW19BU19ERVRFQ1RfU1VHR0VTVEVEX0JPRFldLCBbJDFdKV0pClQxMSwxNDkKbTRfbWFwX2FyZ3NtNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIFsxXSwgW10sCiAgICAgICBbJCNdLCBbMl0sIFskMShbJDJdKVtdXSwKICAgICAgIFtfbTRfZm9yZWFjaChbJDEoXSwgWyldLCAkQCldKQpUMTksMjg4Cl9tNF9zZXRfY29udGVudHNfMWNtNF9pZmRlZihbX200X3NldChbJDFdKV0sCgkgIFttNF9zZXRfY29udGFpbnMoWyQxXSwgX200X2RlZm4oW19tNF9zZXQoWyQxXSldKSwKCQkgICBbbTRfcHVzaGRlZihbX200X3NldF8oJDEpXSwgX200X2RlZm4oW19tNF9zZXQoWyQxXSldKSldLAoJCSAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKAogICAgICBbX200X3NldChbJDFdKV0pWyldKV0pX200X3BvcGRlZihbX200X3NldChbJDFdKV0pJDAoWyQxXSldLAoJICBbX200X3BvcGRlZihbX200X3NldF9jbGVhbnVwKCQxKV0pXSkKVDcsNjUKX200X21pbm00X2V2YWwoKChbJDFdKSA8IChbJDJdKSkgKiAoWyQxXSkgKyAoKFskMV0pID49IChbJDJdKSkgKiAoWyQyXSkpClQxNCwxODAKQVNfSEVMUF9TVFJJTkdtNF90ZXh0X3dyYXAoWyQyXSwgbTRfY29uZChbWyQzXV0sIFtdLCBbICAgICAgICAgICAgICAgICAgICAgICAgICBdLAoJCQkgICAgW200X2V2YWwoWyQzXSswKV0sIFswXSwgW1skM11dLAoJCQkgICAgW200X2Zvcm1hdChbWyUqc11dLCBbJDNdLCBbXSldKSwKCSAgICAgIG00X2V4cGFuZChbICAkMSBdKSwgWyQ0XSkKRjgsNQptNF9zaGlmdHNoaWZ0ClQxNiw0NTIKX200X3JlcXVpcmVfY2FsbG00X3B1c2hkZWYoW19tNF9kaXZlcnRfZ3Jvd10sIG00X2RlY3IoX200X2RpdmVydF9ncm93KSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSltNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0aW5nXSwgWyQxXSltNF9kaXZlcnRfcHVzaChfbTRfZGl2ZXJ0X2dyb3csIFstXSltNF9pZihbJDJdLCBbXSwgWyQxXSwgWyQyXSkKbTRfcHJvdmlkZV9pZihbJDFdLCBbbTRfc2V0X3JlbW92ZShbX200X3Byb3ZpZGVdLCBbJDFdKV0sCiAgW200X3dhcm4oW3N5bnRheF0sIFskMSBpcyBtNF9yZXF1aXJlJ2QgYnV0IG5vdCBtNF9kZWZ1bidkXSldKV9tNF9kaXZlcnRfcmF3KCQzKV9tNF91bmRpdmVydChfbTRfZGl2ZXJ0X2dyb3cpbTRfZGl2ZXJ0X3BvcChfbTRfZGl2ZXJ0X2dyb3cpX200X3BvcGRlZihbX200X2RpdmVydF9ncm93XSwKW19tNF9kaXZlcnRpbmcoWyQxXSldLCBbX200X2RpdmVydGluZ10pClQxMSw3MApfbTRfZm9yZWFjaG00X2lmKFskI10sIFszXSwgW10sCiAgICAgICBbJDFbJDRdJDJbXSQwKFskMV0sIFskMl0sIG00X3NoaWZ0MygkQCkpXSkKVDcsNjUKX200X21heG00X2V2YWwoKChbJDFdKSA+IChbJDJdKSkgKiAoWyQxXSkgKyAoKFskMV0pIDw9IChbJDJdKSkgKiAoWyQyXSkpCkY4LDgKX19maWxlX19fX2ZpbGVfXwpUMTgsMgpfQVNfTElURVJBTF9JRl9ZRVMkMwpGMTAsNgptNF9icmVnZXhwcmVnZXhwClQxNCwxMDMKX0FTX1RSX1BSRVBBUkVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbX0FTX1RSX1NIX1BSRVBBUkVdKUFTX1JFUVVJUkUoW19BU19UUl9DUFBfUFJFUEFSRV0pW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMiw0NwpBU19WQVJfQVJJVEhhc19mbl9hcml0aCAkMiAmJiBBU19WQVJfU0VUKFskMV0sIFskYXNfdmFsXSlbXQpUMTIsMTk3CkFTX1ZBUl9BUklUSF9tNF9kZWZ1bl9wcm8oWyQwXSlfQVNfREVURUNUX1NVR0dFU1RFRChbX0FTX1ZBUl9BUklUSF9XT1JLU10pQVNfUkVRVUlSRShbX0FTX1ZBUl9BUklUSF9QUkVQQVJFXSwgW10sIFtNNFNILUlOSVQtRk5dKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQxMCw4MgpBU19ESVJOQU1FJGFzX2Rpcm5hbWUgLS0gJDEgfHwKX0FTX0RJUk5BTUVfRVhQUihbJDFdKSAyPi9kZXYvbnVsbCB8fApfQVNfRElSTkFNRV9TRUQoWyQxXSlbXQpUMTAsMTI0CkFTX0RJUk5BTUVfbTRfZGVmdW5fcHJvKFskMF0pQVNfUkVRVUlSRShbXyQwX1BSRVBBUkVdKVtdX200X3BvcGRlZihbJDBdKW00X2luZGlyKFskMF1tNF9pZihbJCNdLCBbMF0sIFtdLCBbLCRAXSkpW11fbTRfZGVmdW5fZXBpKFskMF0pClQzMywxMDIKbTRfbG9jYXRpb24oX0FTX0JBU0VOQU1FX1BSRVBBUkUpL2hvbWUveHh4eHh4eHh4L3h4eC94eHh4eHh4eC94eHh4eC9idWlsZC90b29scy9wYWNrYWdlcy9hdXRvY29uZi9hdXRvY29uZi0yLjY4L2xpYi9tNHN1Z2FyL200c2gubTQ6OTIxClQxMyw0MgptNF9tYXBhbGxfc2VwbTRfaWYoWyQzXSwgW10sIFtdLCBbXyQwKFskMV0sIFskMl0sICQzKV0pClQ5LDI2Cm00X2lmbmRlZm00X2lmZGVmKFskMV0sIFskM10sIFskMl0pClQxOCwxNDQKQVNfVkVSU0lPTl9DT01QQVJFYXNfYXJnX3YxPSQxCmFzX2FyZ192Mj0kMgphd2sgIiRhc19hd2tfc3RydmVyc2NtcCIgdjE9IiRhc19hcmdfdjEiIHYyPSIkYXNfYXJnX3YyIiAvZGV2L251bGwKQVNfQ0FTRShbJD9dLAoJWzFdLCBbJDNdLAoJWzBdLCBbJDRdLAoJWzJdLCBbJDVdKVtdClQxOCwxMjQKQVNfVkVSU0lPTl9DT01QQVJFX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW18kMF9QUkVQQVJFXSlbXV9tNF9wb3BkZWYoWyQwXSltNF9pbmRpcihbJDBdbTRfaWYoWyQjXSwgWzBdLCBbXSwgWywkQF0pKVtdX200X2RlZnVuX2VwaShbJDBdKQpUMTMsNDcKbTRfY29weV9mb3JjZW00X2lmZGVmKFskMl0sIFtfbTRfdW5kZWZpbmUoWyQyXSldKW00X2NvcHkoJEApClQ3LDEwOAptNF9qb2lubTRfaWYoWyQjXSwgWzFdLCBbXSwKICAgICAgIFskI10sIFsyXSwgW1skMl1dLAogICAgICAgW200X2lmKFskMl0sIFtdLCBbXSwgW1skMl1fXSkkMChbJDFdLCBtNF9zaGlmdDIoJEApKV0pClQyMywyOTQyCl9BU19ERVRFQ1RfQkVUVEVSX1NIRUxMX200X2RlZnVuX3BybyhbJDBdKW00X3NldF9tYXAoW19BU19ERVRFQ1RfU1VHR0VTVEVEX0JPRFldLCBbX0FTX0RFVEVDVF9TVUdHRVNURURfUFJVTkVdKW00X3B1c2hkZWYoW0FTX0VYSVRdLCBbZXhpdCBtNF9kZWZhdWx0KF1tNF9kcXVvdGUoWyRdWzFdKVssIDEpXSlpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgPSB4OyB0aGVuCiAgYXNfYm91cm5lX2NvbXBhdGlibGU9IkFTX0VTQ0FQRShfbTRfZXhwYW5kKFtfQVNfQk9VUk5FX0NPTVBBVElCTEVdKSkiCiAgX0FTX0RFVEVDVF9FWFBBTkQoW2FzX3JlcXVpcmVkXSwgW19BU19ERVRFQ1RfUkVRVUlSRURfQk9EWV0pCiAgX0FTX0RFVEVDVF9FWFBBTkQoW2FzX3N1Z2dlc3RlZF0sIFtfQVNfREVURUNUX1NVR0dFU1RFRF9CT0RZXSkKICBBU19JRihbX0FTX1JVTihbIiRhc19yZXF1aXJlZCJdKV0sCglbYXNfaGF2ZV9yZXF1aXJlZD15ZXNdLAoJW2FzX2hhdmVfcmVxdWlyZWQ9bm9dKQogIEFTX0lGKFt0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMgJiYgX0FTX1JVTihbIiRhc19zdWdnZXN0ZWQiXSldLAogICAgW10sCiAgICBbX0FTX1BBVEhfV0FMSyhbL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdLAogICAgICBbY2FzZSAkYXNfZGlyIGluIEAlOkAoCgkgLyopCgkgICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCgkgICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhpc3QsIHRvIHNhdmUgc2V2ZXJhbCBmb3Jrcy4KCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQoJICAgICBBU19JRihbeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmCgkJICAgIF9BU19SVU4oWyIkYXNfcmVxdWlyZWQiXSwgWyIkYXNfc2hlbGwiXSldLAoJCSAgIFtDT05GSUdfU0hFTEw9JGFzX3NoZWxsIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCgkJICAgbTRfc2V0X2VtcHR5KFtfQVNfREVURUNUX1NVR0dFU1RFRF9CT0RZXSwgW2JyZWFrIDJdLAoJCSAgICAgW0FTX0lGKFtfQVNfUlVOKFsiJGFzX3N1Z2dlc3RlZCJdLCBbIiRhc19zaGVsbCJdKV0sCgkJCSAgICBbYnJlYWsgMl0pXSldKQoJICAgZG9uZTs7CiAgICAgICBlc2FjXSwKICAgICAgW0FTX0lGKFt7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4ZSI7IH0gJiYKCSAgICAgIF9BU19SVU4oWyIkYXNfcmVxdWlyZWQiXSwgWyIkU0hFTEwiXSldLAoJICAgICBbQ09ORklHX1NIRUxMPSRTSEVMTCBhc19oYXZlX3JlcXVpcmVkPXllc10pXSkKCiAgICAgIEFTX0lGKFt0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geF0sCglbIyBXZSBjYW5ub3QgeWV0IGFzc3VtZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCgkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgoJIyBQcmVzZXJ2ZSAtdiBhbmQgLXggdG8gdGhlIHJlcGxhY2VtZW50IHNoZWxsLgoJQkFTSF9FTlY9L2Rldi9udWxsCglFTlY9L2Rldi9udWxsCgkodW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYKCWV4cG9ydCBDT05GSUdfU0hFTEwKCWNhc2UgJC0gaW4gQCU6QCAoKCgoCgkgICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OwoJICAqdiogKSBhc19vcHRzPS12IDs7CgkgICp4KiApIGFzX29wdHM9LXggOzsKCSAgKiApIGFzX29wdHM9IDs7Cgllc2FjCglleGVjICIkQ09ORklHX1NIRUxMIiAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkW0BdIn1dKQoKZG5sIFVuZm9ydHVuYXRlbHksICRhc19tZSBpc24ndCBhdmFpbGFibGUgaGVyZS4KICAgIEFTX0lGKFt0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHhub10sCiAgICAgIFtBU19FQ0hPKFsiJFtdMDogVGhpcyBzY3JpcHQgcmVxdWlyZXMgYSBzaGVsbCBtb3JlIG1vZGVybiB0aGFuIGFsbCJdKQogIEFTX0VDSE8oWyIkW10wOiB0aGUgc2hlbGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iXSkKICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9OK3NldH0gPSB4c2V0IDsgdGhlbgogICAgQVNfRUNITyhbIiRbXTA6IEluIHBhcnRpY3VsYXIsIHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1Z3MgYW5kIHNob3VsZCJdKQogICAgQVNfRUNITyhbIiRbXTA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iXSkKICBlbHNlCiAgICBBU19FQ0hPKCJtNF90ZXh0X3dyYXAoW1BsZWFzZSB0ZWxsIF1fbTRfZGVmbihbbTRfUEFDS0FHRV9CVUdSRVBPUlRdKQptNF9pZnNldChbQUNfUEFDS0FHRV9CVUdSRVBPUlRdLCBbbTRfaWYoX200X2RlZm4oW200X1BBQ0tBR0VfQlVHUkVQT1JUXSksCl9tNF9kZWZuKFtBQ19QQUNLQUdFX0JVR1JFUE9SVF0pLCBbXSwgW2FuZCBfbTRfZGVmbihbQUNfUEFDS0FHRV9CVUdSRVBPUlRdKV0pXSkKW2Fib3V0IHlvdXIgc3lzdGVtLCBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcyBtZXNzYWdlLgpUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1biB0aGUgc2NyaXB0IHVuZGVyIHN1Y2ggYQpzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuXSwgWyRbXTA6IF0sIFtdLCBbNjJdKSIpCiAgZmkKICBBU19FWElUXSldKQpmaQpTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQpleHBvcnQgU0hFTEwKIyBVbnNldCBtb3JlIHZhcmlhYmxlcyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9vbHMuCkNMSUNPTE9SX0ZPUkNFPSBHUkVQX09QVElPTlM9CnVuc2V0IENMSUNPTE9SX0ZPUkNFIEdSRVBfT1BUSU9OUwpfbTRfcG9wZGVmKFtBU19FWElUXSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDI2LDEwMwptNF9sb2NhdGlvbihBU19NRV9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjEwODYKRjcsNgptNF9leGl0bTRleGl0ClQxMiw4MwptNF9zZXRfdW5pb25tNF9zZXRfbGlzdGMoWyQxXSltNF9pZihbJDFdLCBbJDJdLCBbXSwKICBbbTRfc2V0X21hcF9zZXAoWyQyXSwgW18kMChbJDFdLF0sIFspXSldKQpUMjAsNzMKQVNfQk9VUk5FX0NPTVBBVElCTEUjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUKRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaApfJDAKClQxNiwyCl9tNF9kaXZlcnQoS0lMTCktMQpUMTAsMTAwCm00X2ZvcmVhY2htNF9pZihbJDJdLCBbXSwgW10sCiAgICAgICBbbTRfcHVzaGRlZihbJDFdKV8kMChbbTRfZGVmaW5lKFskMV0sXSwgWykkM10sIFtdLAogICQyKW00X3BvcGRlZihbJDFdKV0pClQ5LDI2NQpfQVNfUVVPVEVtNF9jb25kKFttNF9pbmRleChbJDFdLCBbXF0pXSwgWy0xXSwgW19BU19RVU9URV9NT0RFUk5dLAoJIFttNF9ldmFsKG00X2luZGV4KG00X3RyYW5zbGl0KFtbJDFdXSwgWyRdLCBbXF0pLCBbXFxdKSA+PSAwKV0sClsxXSwgW19BU19RVU9URV9NT0RFUk5dLAoJIFttNF9ldmFsKG00X2luZGV4KG00X3RyYW5zbGl0KFtbJDFdXSwgWyJdLCBbYF0pLCBbXGBdKSA+PSAwKV0sZG5sIgpbMV0sIFtfQVNfUVVPVEVfT0xEXSwKCSBbX0FTX1FVT1RFX01PREVSTl0pKFskMV0pCkYxMSw4Cm00X3RyYWNlb2ZmdHJhY2VvZmYKVDgsMzMKbTRfYXBwbHltNF9pZihbJDJdLCBbXSwgWyQxXSwgWyQxKCQyKV0pW10KVDMwLDAKbTRfaW5jbHVkZShtNHN1Z2FyL3ZlcnNpb24ubTQpClQyNiwxMDMKbTRfbG9jYXRpb24oQVNfVkFSX0FQUEVORCkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxOTIxClQxNCw3MwpfbTRfbWFwYWxsX3NlcG00X2FwcGx5KFskMV0sIFskM10pX200X2ZvcmVhY2goW200X2FwcGx5KFskMltdJDFdLF0sIFspXSwgbTRfc2hpZnQyKCRAKSkKVDksMTMyCm00X2RpdmVydG00X3BvcGRlZihbX200X2RpdmVydF9zdGFja10pbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0sIFskMV0pbTRfZGl2ZXJ0X3N0YWNrX3B1c2goWyQwXSwgWyQxXSlfbTRfZGl2ZXJ0X3JhdyhfbTRfZGl2ZXJ0KFskMV0pKQpGMTAsNwptNF90cmFjZW9udHJhY2VvbgpUMTMsNTIKbTRfY3JfTGV0dGVyc2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoKVDcsMTQ2CkFTX0NBU0VfbTRfZGVmdW5fcHJvKFskMF0pY2FzZSAkMSBpbltdbTRfbWFwX2FyZ3NfcGFpcihbXyQwXSwgW18kMF9ERUZBVUxUXSwKICAgbTRfc2hpZnQoJEBtNF9pZihtNF9ldmFsKFskIyAmIDFdKSwgWzFdLCBbLF0pKSkKZXNhY1tdX200X2RlZnVuX2VwaShbJDBdKQpUOSw3NQptNF9iZWZvcmVtNF9wcm92aWRlX2lmKFskMl0sCgkgICAgICAgW200X3dhcm4oW3N5bnRheF0sIFskMiB3YXMgY2FsbGVkIGJlZm9yZSAkMV0pXSkKVDEwLDE0MwptNF9tYXBfc2VwbTRfcHVzaGRlZihbbTRfU2VwXSwgW200X2RlZmluZShbbTRfU2VwXSwgX200X2RlZm4oW200X3VucXVvdGVdKSldKV9tNF9mb3JlYWNoKFtfbTRfYXBwbHkoW200X1NlcChbJDJdKVtdJDFdLF0sIFspXSwgW10sICQzKW00X3BvcGRlZihbbTRfU2VwXSkKVDEyLDU1Cm00X2NvcHlfdW5tNG00X2NvcHkoWyQxXSwgbTRfYnBhdHN1YnN0KFskMV0sIFtebTRfXCguKlwpXSwgW1tcMV1dKSkKVDEwLDg2Cm00X3RvbG93ZXJtNF90cmFuc2xpdChbWyQxXV0sIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl0sCgkJICAgICBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpdKQpUNyw5MwpfQVNfQk9YbTRfaWYobTRfaW5kZXgobTRfdHJhbnNsaXQoW1skMV1dLCBbYFwiXSwgWyQkJF0pLCBbJF0pLAogIFstMV0sIFskMF9MSVRFUkFMXSwgWyQwX0lORElSXSkoJEApClQ4LDE4OQpfbTRfd3JhcG00X2lmZGVmKFskMF90ZXh0XSwKCSAgW200X2RlZmluZShbJDBfdGV4dF0sIFskMV1fbTRfZGVmbihbJDBfdGV4dF0pWyQyXSldLAoJICBbbTRfYnVpbHRpbihbbTR3cmFwXSwgW200X3VucXVvdGUoCiAgX200X2RlZm4oWyQwX3RleHRdKV9tNF9wb3BkZWYoWyQwX3RleHRdKSldKW00X2RlZmluZShbJDBfdGV4dF0sIFskMSQyXSldKQpGOSw2Cm00X2RlZmluZWRlZmluZQpUMTAsMjcKbTRfZGVmYXVsdG00X2lmKFskMV0sIFtdLCBbJDJdLCBbJDFdKQpUOSw1Cl9tNF9jdXJyeVskMV0pClQxMywyMApBU19WQVJfQVBQRU5EYXNfZm5fYXBwZW5kICQxICQyW10KVDEzLDE1NQpBU19WQVJfQVBQRU5EX200X2RlZnVuX3BybyhbJDBdKUFTX1JFUVVJUkUoW19BU19WQVJfQVBQRU5EX1BSRVBBUkVdLCBbXSwgW000U0gtSU5JVC1GTl0pW11fbTRfcG9wZGVmKFskMF0pbTRfaW5kaXIoWyQwXW00X2lmKFskI10sIFswXSwgW10sIFssJEBdKSlbXV9tNF9kZWZ1bl9lcGkoWyQwXSkKVDI5LDEwMwptNF9sb2NhdGlvbihfQVNfRVhQUl9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjEwNzMKVDgsMTk4Cl9tNF9xbGVubTRfZGVmaW5lKFttNF9xbGVuLSQxXSwKbTRfaWYobTRfaW5kZXgoWyQxXSwgW0BdKSwgWy0xXSwgW200X2xlbihbJDFdKV0sCiAgICAgIFttNF9sZW4obTRfYnBhdHN1YnN0KFtbJDFdXSwKCQkJICAgW0BcKFwoPDpcfDo+XHxTfFx8JTpcfFx7Olx8Olx9XClcKEBcKVx8JnRAXCldLAoJCQkgICBbXDNdKSldKSlfbTRfZGVmbihbbTRfcWxlbi0kMV0pClQxMCw3MgptNF9yZXZlcnNlbTRfaWYoWyQjXSwgWzBdLCBbXSwgWyQjXSwgWzFdLCBbWyQxXV0sCiAgICAgICBbJDAobTRfc2hpZnQoJEApKSwgWyQxXV0pClQxMywxCkFTX01FU1NBR0VfRkQxClQ0MCwxMDMKbTRfbG9jYXRpb24oX0FTX1ZFUlNJT05fQ09NUEFSRV9QUkVQQVJFKS9ob21lL3h4eHh4eHh4eC94eHgveHh4eHh4eHgveHh4eHgvYnVpbGQvdG9vbHMvcGFja2FnZXMvYXV0b2NvbmYvYXV0b2NvbmYtMi42OC9saWIvbTRzdWdhci9tNHNoLm00OjE2NzkKVDMwLDEwMwptNF9sb2NhdGlvbihBU19MSU5FTk9fUFJFUEFSRSkvaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzaC5tNDoxMTMxClQxMCwyOTQKX200X2VzY2FwZW00X2NoYW5nZXF1b3RlKFstPTx7KF0sWyl9Pj0tXSltNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KG00X2JwYXRzdWJzdChtNF9icGF0c3Vic3QoCgkgIC09PHsoLT08eygtPTx7KC09PHsoLT08eygkMSl9Pj0tKX0+PS0pfT49LSl9Pj0tKX0+PS0sCgktPTx7KCMpfT49LSwgLT08eyhAJTpAKX0+PS0pLAogICAgICAtPTx7KFxbKX0+PS0sIC09PHsoQDw6QCl9Pj0tKSwKICAgIC09PHsoXF0pfT49LSwgLT08eyhAOj5AKX0+PS0pLAogIC09PHsoXCQpfT49LSwgLT08eyhAU3xAKX0+PS0pbTRfY2hhbmdlcXVvdGUoWyxdKQpUMTYsMTI4Cl9tNF9kaXZlcnRfc3RhY2svaG9tZS94eHh4eHh4eHgveHh4L3h4eHh4eHh4L3h4eHh4L2J1aWxkL3Rvb2xzL3BhY2thZ2VzL2F1dG9jb25mL2F1dG9jb25mLTIuNjgvbGliL200c3VnYXIvbTRzdWdhci5tNDozMjU5OiBtNF9kaXZlcnRfcHVzaDogS0lMTApUMTEsNTQKQVNfVkFSX0NPUFlBU19MSVRFUkFMX1dPUkRfSUYoWyQxW10kMl0sIFskMT0kJDJdLCBbZXZhbCAkMT1cJCQyXSkKVDE3LDIyOQptNF9jcl9ub3RfbGV0dGVycwECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjKiUmJygpJCssLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9ge3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KVDE3LDExNwptNF9pbmNsdWRlX3VuaXF1ZW00X2lmZGVmKFttNF9pbmNsdWRlKCQxKV0sCgkgIFttNF93YXJuKFtzeW50YXhdLCBbZmlsZSBgJDEnIGluY2x1ZGVkIHNldmVyYWwgdGltZXNdKV0pZG5sCm00X2RlZmluZShbbTRfaW5jbHVkZSgkMSldKQpUOCw3NwptNF9zdHJpcG00X2JwYXRzdWJzdHMoWyQxIF0sCgkgICAgICAgW1sJIF0rXSwgWyBdLAoJICAgICAgIFteLiA/XCguKlwpIC4kXSwgW1tbXDFdXV0pClQ5LDQKbTRfZHF1b3RlWyRAXQpELTEsMAoKIyBFbmQgb2YgZnJvemVuIHN0YXRlIGZpbGUK