f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADgGAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHRva2VuOwpwa2dwYXRoIGdvL3Rva2VuOwpwcmlvcml0eSA3OwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IHNvcnQgc29ydCAic29ydCI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW5pdCB0b2tlbiBnb190b2tlbi4uaW1wb3J0IDcgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIHRpbWUgdGltZS4uaW1wb3J0IDQgb3Mgb3MuLmltcG9ydCA1IGZtdCBmbXQuLmltcG9ydCA2Owpjb25zdCBBREQgPHR5cGUgMSAiVG9rZW4iIDx0eXBlIC0xMT4KIGZ1bmMgKHRvayA8dHlwZSAxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChvcCA8dHlwZSAxPikgUHJlY2VkZW5jZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodG9rIDx0eXBlIDE+KSBJc0xpdGVyYWwgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHRvayA8dHlwZSAxPikgSXNPcGVyYXRvciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodG9rIDx0eXBlIDE+KSBJc0tleXdvcmQgKCkgPHR5cGUgLTE1PjsKPiA9IDEyIDsKY29uc3QgQUREX0FTU0lHTiA8dHlwZSAxPiA9IDIzIDsKY29uc3QgQU5EIDx0eXBlIDE+ID0gMTcgOwpjb25zdCBBTkRfQVNTSUdOIDx0eXBlIDE+ID0gMjggOwpjb25zdCBBTkRfTk9UIDx0eXBlIDE+ID0gMjIgOwpjb25zdCBBTkRfTk9UX0FTU0lHTiA8dHlwZSAxPiA9IDMzIDsKY29uc3QgQVJST1cgPHR5cGUgMT4gPSAzNiA7CmNvbnN0IEFTU0lHTiA8dHlwZSAxPiA9IDQyIDsKY29uc3QgQlJFQUsgPHR5cGUgMT4gPSA2MSA7CmNvbnN0IENBU0UgPHR5cGUgMT4gPSA2MiA7CmNvbnN0IENIQU4gPHR5cGUgMT4gPSA2MyA7CmNvbnN0IENIQVIgPHR5cGUgMT4gPSA4IDsKY29uc3QgQ09MT04gPHR5cGUgMT4gPSA1OCA7CmNvbnN0IENPTU1BIDx0eXBlIDE+ID0gNTIgOwpjb25zdCBDT01NRU5UIDx0eXBlIDE+ID0gMiA7CmNvbnN0IENPTlNUIDx0eXBlIDE+ID0gNjQgOwpjb25zdCBDT05USU5VRSA8dHlwZSAxPiA9IDY1IDsKY29uc3QgREVDIDx0eXBlIDE+ID0gMzggOwpjb25zdCBERUZBVUxUIDx0eXBlIDE+ID0gNjYgOwpjb25zdCBERUZFUiA8dHlwZSAxPiA9IDY3IDsKY29uc3QgREVGSU5FIDx0eXBlIDE+ID0gNDcgOwpjb25zdCBFTExJUFNJUyA8dHlwZSAxPiA9IDQ4IDsKY29uc3QgRUxTRSA8dHlwZSAxPiA9IDY4IDsKY29uc3QgRU9GIDx0eXBlIDE+ID0gMSA7CmNvbnN0IEVRTCA8dHlwZSAxPiA9IDM5IDsKY29uc3QgRkFMTFRIUk9VR0ggPHR5cGUgMT4gPSA2OSA7CmNvbnN0IEZMT0FUIDx0eXBlIDE+ID0gNiA7CmNvbnN0IEZPUiA8dHlwZSAxPiA9IDcwIDsKY29uc3QgRlVOQyA8dHlwZSAxPiA9IDcxIDsKdHlwZSA8dHlwZSAyICJGaWxlIiA8dHlwZSAzIHN0cnVjdCB7IC5nby90b2tlbi5zZXQgPHR5cGUgNCAqPHR5cGUgNSAiRmlsZVNldCIgPHR5cGUgNiBzdHJ1Y3QgeyAuZ28vdG9rZW4ubXV0ZXggPHR5cGUgNyAic3luYy5SV011dGV4IiA8dHlwZSA4IHN0cnVjdCB7IC5zeW5jLncgPHR5cGUgOSAic3luYy5NdXRleCIgPHR5cGUgMTAgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMTEgKjx0eXBlIDk+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSAxMT4pIExvY2sgKCk7Cj47IC5zeW5jLndyaXRlclNlbSA8dHlwZSAtNz47IC5zeW5jLnJlYWRlclNlbSA8dHlwZSAtNz47IC5zeW5jLnJlYWRlckNvdW50IDx0eXBlIC0zPjsgLnN5bmMucmVhZGVyV2FpdCA8dHlwZSAtMz47IH0+CiBmdW5jIChydyA8dHlwZSAxMiAqPHR5cGUgNz4+KSBSVW5sb2NrICgpOwogZnVuYyAocncgPHR5cGUgMTI+KSBVbmxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAxMj4pIFJMb2NrZXIgKCkgPHR5cGUgMTMgInN5bmMuTG9ja2VyIiA8dHlwZSAxNCBpbnRlcmZhY2UgeyBMb2NrICgpOyBVbmxvY2sgKCk7IH0+PjsKIGZ1bmMgKHJ3IDx0eXBlIDEyPikgUkxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAxMj4pIExvY2sgKCk7Cj47IC5nby90b2tlbi5iYXNlIDx0eXBlIC0xMT47IC5nby90b2tlbi5maWxlcyA8dHlwZSAxNSBbXSA8dHlwZSAxNiAqPHR5cGUgMj4+PjsgLmdvL3Rva2VuLmxhc3QgPHR5cGUgMTY+OyB9PgogZnVuYyAocyA8dHlwZSAxNyAqPHR5cGUgNT4+KSBCYXNlICgpIDx0eXBlIC0xMT47CiBmdW5jIChzIDx0eXBlIDE3PikgQWRkRmlsZSAoZmlsZW5hbWUgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+LCBzaXplIDx0eXBlIC0xMT4pIDx0eXBlIDE2PjsKIGZ1bmMgKHMgPHR5cGUgMTc+KSBJdGVyYXRlIChmIDx0eXBlIDE4ICg/IDx0eXBlIDE2PikgPHR5cGUgLTE1Pj4pOwogZnVuYyAocyA8dHlwZSAxNz4pIC5nby90b2tlbi5maWxlIChwIDx0eXBlIDE5ICJQb3MiIDx0eXBlIC0xMT4KIGZ1bmMgKHAgPHR5cGUgMTk+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47Cj4pIDx0eXBlIDE2PjsKIGZ1bmMgKHMgPHR5cGUgMTc+KSBGaWxlIChwIDx0eXBlIDE5PikgKGYgPHR5cGUgMTY+KTsKIGZ1bmMgKHMgPHR5cGUgMTc+KSBQb3NpdGlvbkZvciAocCA8dHlwZSAxOT4sIGFkanVzdGVkIDx0eXBlIC0xNT4pIChwb3MgPHR5cGUgMjAgIlBvc2l0aW9uIiA8dHlwZSAyMSBzdHJ1Y3QgeyBGaWxlbmFtZSA8dHlwZSAtMTY+OyBPZmZzZXQgPHR5cGUgLTExPjsgTGluZSA8dHlwZSAtMTE+OyBDb2x1bW4gPHR5cGUgLTExPjsgfT4KIGZ1bmMgKHBvcyA8dHlwZSAyMiAqPHR5cGUgMjA+PikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAocG9zIDx0eXBlIDIwPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4pOwogZnVuYyAocyA8dHlwZSAxNz4pIFBvc2l0aW9uIChwIDx0eXBlIDE5PikgKHBvcyA8dHlwZSAyMD4pOwogZnVuYyAocyA8dHlwZSAxNz4pIFJlYWQgKGRlY29kZSA8dHlwZSAyMyAoPyA8dHlwZSAyNCBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChzIDx0eXBlIDE3PikgV3JpdGUgKGVuY29kZSA8dHlwZSAyNSAoPyA8dHlwZSAyNiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5Pj4pIDx0eXBlIC0xOT47Cj4+OyAuZ28vdG9rZW4ubmFtZSA8dHlwZSAtMTY+OyAuZ28vdG9rZW4uYmFzZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4uc2l6ZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4ubGluZXMgPHR5cGUgMjcgW10gPHR5cGUgLTExPj47IC5nby90b2tlbi5pbmZvcyA8dHlwZSAyOCBbXSA8dHlwZSAyOSAiLmdvL3Rva2VuLmxpbmVJbmZvIiA8dHlwZSAzMCBzdHJ1Y3QgeyBPZmZzZXQgPHR5cGUgLTExPjsgRmlsZW5hbWUgPHR5cGUgLTE2PjsgTGluZSA8dHlwZSAtMTE+OyB9Pj4+OyB9PgogZnVuYyAoZiA8dHlwZSAxNj4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGYgPHR5cGUgMTY+KSBCYXNlICgpIDx0eXBlIC0xMT47CiBmdW5jIChmIDx0eXBlIDE2PikgU2l6ZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAxNj4pIExpbmVDb3VudCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAxNj4pIEFkZExpbmUgKG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKGYgPHR5cGUgMTY+KSBNZXJnZUxpbmUgKGxpbmUgPHR5cGUgLTExPik7CiBmdW5jIChmIDx0eXBlIDE2PikgU2V0TGluZXMgKGxpbmVzIDx0eXBlIDMxIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAtMTU+OwogZnVuYyAoZiA8dHlwZSAxNj4pIFNldExpbmVzRm9yQ29udGVudCAoY29udGVudCA8dHlwZSAzMiBbXSA8dHlwZSAtMjA+Pik7CiBmdW5jIChmIDx0eXBlIDE2PikgQWRkTGluZUluZm8gKG9mZnNldCA8dHlwZSAtMTE+LCBmaWxlbmFtZSA8dHlwZSAtMTY+LCBsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAxNj4pIFBvcyAob2Zmc2V0IDx0eXBlIC0xMT4pIDx0eXBlIDE5PjsKIGZ1bmMgKGYgPHR5cGUgMTY+KSBPZmZzZXQgKHAgPHR5cGUgMTk+KSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAxNj4pIExpbmUgKHAgPHR5cGUgMTk+KSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAxNj4pIC5nby90b2tlbi51bnBhY2sgKG9mZnNldCA8dHlwZSAtMTE+LCBhZGp1c3RlZCA8dHlwZSAtMTU+KSAoZmlsZW5hbWUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+LCBjb2x1bW4gPHR5cGUgLTExPik7CiBmdW5jIChmIDx0eXBlIDE2PikgLmdvL3Rva2VuLnBvc2l0aW9uIChwIDx0eXBlIDE5PiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKHBvcyA8dHlwZSAyMD4pOwogZnVuYyAoZiA8dHlwZSAxNj4pIFBvc2l0aW9uRm9yIChwIDx0eXBlIDE5PiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKHBvcyA8dHlwZSAyMD4pOwogZnVuYyAoZiA8dHlwZSAxNj4pIFBvc2l0aW9uIChwIDx0eXBlIDE5PikgKHBvcyA8dHlwZSAyMD4pOwo+Owp0eXBlIDx0eXBlIDU+Owpjb25zdCBHRVEgPHR5cGUgMT4gPSA0NiA7CmNvbnN0IEdPIDx0eXBlIDE+ID0gNzIgOwpjb25zdCBHT1RPIDx0eXBlIDE+ID0gNzMgOwpjb25zdCBHVFIgPHR5cGUgMT4gPSA0MSA7CmNvbnN0IEhpZ2hlc3RQcmVjID0gNyA7CmNvbnN0IElERU5UIDx0eXBlIDE+ID0gNCA7CmNvbnN0IElGIDx0eXBlIDE+ID0gNzQgOwpjb25zdCBJTExFR0FMIDx0eXBlIDE+ID0gMCA7CmNvbnN0IElNQUcgPHR5cGUgMT4gPSA3IDsKY29uc3QgSU1QT1JUIDx0eXBlIDE+ID0gNzUgOwpjb25zdCBJTkMgPHR5cGUgMT4gPSAzNyA7CmNvbnN0IElOVCA8dHlwZSAxPiA9IDUgOwpjb25zdCBJTlRFUkZBQ0UgPHR5cGUgMT4gPSA3NiA7CmNvbnN0IExBTkQgPHR5cGUgMT4gPSAzNCA7CmNvbnN0IExCUkFDRSA8dHlwZSAxPiA9IDUxIDsKY29uc3QgTEJSQUNLIDx0eXBlIDE+ID0gNTAgOwpjb25zdCBMRVEgPHR5cGUgMT4gPSA0NSA7CmNvbnN0IExPUiA8dHlwZSAxPiA9IDM1IDsKY29uc3QgTFBBUkVOIDx0eXBlIDE+ID0gNDkgOwpjb25zdCBMU1MgPHR5cGUgMT4gPSA0MCA7CmZ1bmMgTG9va3VwIChpZGVudCA8dHlwZSAtMTY+KSA8dHlwZSAxPjsKY29uc3QgTG93ZXN0UHJlYyA9IDAgOwpjb25zdCBNQVAgPHR5cGUgMT4gPSA3NyA7CmNvbnN0IE1VTCA8dHlwZSAxPiA9IDE0IDsKY29uc3QgTVVMX0FTU0lHTiA8dHlwZSAxPiA9IDI1IDsKY29uc3QgTkVRIDx0eXBlIDE+ID0gNDQgOwpjb25zdCBOT1QgPHR5cGUgMT4gPSA0MyA7CmZ1bmMgTmV3RmlsZVNldCAoKSA8dHlwZSAxNz47CmNvbnN0IE5vUG9zIDx0eXBlIDE5PiA9IDAgOwpjb25zdCBPUiA8dHlwZSAxPiA9IDE4IDsKY29uc3QgT1JfQVNTSUdOIDx0eXBlIDE+ID0gMjkgOwpjb25zdCBQQUNLQUdFIDx0eXBlIDE+ID0gNzggOwpjb25zdCBQRVJJT0QgPHR5cGUgMT4gPSA1MyA7CnR5cGUgPHR5cGUgMTk+Owp0eXBlIDx0eXBlIDIwPjsKY29uc3QgUVVPIDx0eXBlIDE+ID0gMTUgOwpjb25zdCBRVU9fQVNTSUdOIDx0eXBlIDE+ID0gMjYgOwpjb25zdCBSQU5HRSA8dHlwZSAxPiA9IDc5IDsKY29uc3QgUkJSQUNFIDx0eXBlIDE+ID0gNTYgOwpjb25zdCBSQlJBQ0sgPHR5cGUgMT4gPSA1NSA7CmNvbnN0IFJFTSA8dHlwZSAxPiA9IDE2IDsKY29uc3QgUkVNX0FTU0lHTiA8dHlwZSAxPiA9IDI3IDsKY29uc3QgUkVUVVJOIDx0eXBlIDE+ID0gODAgOwpjb25zdCBSUEFSRU4gPHR5cGUgMT4gPSA1NCA7CmNvbnN0IFNFTEVDVCA8dHlwZSAxPiA9IDgxIDsKY29uc3QgU0VNSUNPTE9OIDx0eXBlIDE+ID0gNTcgOwpjb25zdCBTSEwgPHR5cGUgMT4gPSAyMCA7CmNvbnN0IFNITF9BU1NJR04gPHR5cGUgMT4gPSAzMSA7CmNvbnN0IFNIUiA8dHlwZSAxPiA9IDIxIDsKY29uc3QgU0hSX0FTU0lHTiA8dHlwZSAxPiA9IDMyIDsKY29uc3QgU1RSSU5HIDx0eXBlIDE+ID0gOSA7CmNvbnN0IFNUUlVDVCA8dHlwZSAxPiA9IDgyIDsKY29uc3QgU1VCIDx0eXBlIDE+ID0gMTMgOwpjb25zdCBTVUJfQVNTSUdOIDx0eXBlIDE+ID0gMjQgOwpjb25zdCBTV0lUQ0ggPHR5cGUgMT4gPSA4MyA7CmNvbnN0IFRZUEUgPHR5cGUgMT4gPSA4NCA7CnR5cGUgPHR5cGUgMT47CmNvbnN0IFVuYXJ5UHJlYyA9IDYgOwpjb25zdCBWQVIgPHR5cGUgMT4gPSA4NSA7CmNvbnN0IFhPUiA8dHlwZSAxPiA9IDE5IDsKY29uc3QgWE9SX0FTU0lHTiA8dHlwZSAxPiA9IDMwIDsKY2hlY2tzdW0gOTAxRTAyMURCMDg5QkNBNjUxNDk2MTI3QzhCRkEyODM1QTc1OTRBMDsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAABfGAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAACTGAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAvBgAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAANwYAAABAAAAAAAAAAAAAAABAAAAAAAAAA==