LyoKICogQ29weXJpZ2h0IDIwMDUgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCgpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CiAgICBJRFNfSFRNTERJU0FCTEVEICAgICJIVE1MLXRlZ25pbmcgZXIgZm9yIPh5ZWJsaWtrZXQgZGVha3RpdmVydC4iCiAgICBJRFNfSFRNTERPQ1VNRU5UICAgICJIVE1MLWRva3VtZW50IgogICAgSURTX0RPV05MT0FESU5HICAgICAiTGFzdGVyIG5lZCAuIC4gLiIKICAgIElEU19JTlNUQUxMSU5HICAgICAgIkluc3RhbGxlcmVyIC4gLiAuIgogICAgfQogICAgCiAgICBJRF9EV0xfRElBTE9HIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDg1CiAgICBTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfQ0VOVEVSIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKICAgIENBUFRJT04gIkluc3RhbGxlcmUgV2luZSBHZWNrbyIKICAgIEZPTlQgOCwgIk1TIFNoZWxsIERsZyIKICAgIHsKICAgIExURVhUICJEZXR0ZSBwcm9ncmFtbWVyIHBy+HZlciDlIHZpc2UgZW4gSFRNTC1zaWRlLiBXaW5lIHRyZW5nZXIgR2Vja28gIiBcCiAgICAiKE1vemlsbGFzIEhUTUwtbW90b3IpIGZvciDlIHZpc2UgZGVubmUgc2lkZW4uIFZlbGcgq0luc3RhbGxlcrsgaHZpcyAiIFwKICAgICJkdSB2aWwgYXQgV2luZSBza2FsIGxhc3RlIG5lZCBvZyBpbnN0YWxsZXJlIEdlY2tvIGF1dG9tYXRpc2suIiwgSURfRFdMX1NUQVRVUywgMTAsIDEwLCAyNDAsIDMwLCBTU19DRU5URVIKICAgIENPTlRST0wgIlByb2dyZXNzIiwgSURfRFdMX1BST0dSRVNTLCBQUk9HUkVTU19DTEFTU0EsIFdTX0JPUkRFUnxQQlNfU01PT1RILCAxMCwgNDAsIDI0MCwgMTIKICAgIFBVU0hCVVRUT04gIkF2YnJ5dCIsIElEQ0FOQ0VMLCAxNDAsIDYwLCA1MCwgMTUsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiSW5zdGFsbGVyIiwgSURfRFdMX0lOU1RBTEwsIDIwMCwgNjAsIDUwLCAxNSwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KCi8qIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBpbiBzaGRvY2xjLmRsbCAqLwoKSURSX0JST1dTRV9DT05URVhUX01FTlUgTUVOVQp7CiAgICBQT1BVUCAiU3RhbmRhcmQiCiAgICB7CiAgICAgICAgTUVOVUlURU0gIlRpbCZiYWtlIiwgICAgICAgICAgICAgICAgICBJRE1fQkFDSwogICAgICAgIE1FTlVJVEVNICImRnJhbSIsICAgICAgICAgICAgICAgSURNX0ZPUldBUkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTGFncmUgYmFrZ3J1bm4gJnNvbSAuIC4gLiIsIElETV9TQVZFQkFDS0dST1VOREFTCiAgICAgICAgTUVOVUlURU0gIkJydWsgc29tIGJhayZncnVubiIsICAgICBJRE1fU0VUQVNCQUNLR1JPVU5ECiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIgYmFrZ3J1bm4iLCAgICAgICBJRE1fQ09QWUJBQ0tHUk9VTkQKICAgICAgICBNRU5VSVRFTSAiQnJ1ayBzb20gc2tyaXZlYm9yJmRzb2JqZWt0IiwgICBJRE1fU0VUQVNERVNLVE9QSVRFTQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJNZXJrICZhbHQiLCAgICAgICAgICAgIElETV9TRUxFQ1RBTEwKICAgICAgICBNRU5VSVRFTSAiJkxpbSBpbm4iLCAgICAgICAgICAgICAgICAgSURNX1BBU1RFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkxhZyBzJm5hcnZlaSIsICAgICAgIElETV9DUkVBVEVTSE9SVENVVAogICAgICAgIE1FTlVJVEVNICJMZWdnIHRpbCBpICZmYXZvcml0dGVyIiwgICAgIElETV9BRERUT0ZBVk9VUklURVMKICAgICAgICBNRU5VSVRFTSAiJlZpcyBraWxkZWtvZGUiLCAgICAgICAgICAgSURNX1ZJRVdTT1VSQ0UKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSyZvZGluZyIsICAgICAgICAgICAgICBJRE1fRU5DT0RJTkcgCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNrciZpdiB1dCIsICAgICAgICAgICAgICAgICBJRE1fUFJJTlQKICAgICAgICBNRU5VSVRFTSAiT3BwZGF0ZSZyIiwgICAgICAgICAgICAgICBJRE1fUkVGUkVTSCAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRWdlbnNrYSZwZXIiLCAgICAgICAgICAgIElETV9QUk9QRVJUSUVTCiAgICB9CgogICAgUE9QVVAgIkJpbGRlIgogICAgewogICAgICAgIE1FTlVJVEVNICLFcG5lIGsmb2JsaW5nIiwgICAgICAgICAgICAgICBJRE1fT1BFTkxJTksKICAgICAgICBNRU5VSVRFTSAixXBuZSBrb2JsaW5nIGkgJm55dHQgdmluZHUiLCBJRE1fT1BFTklOTkVXV0lORE9XCiAgICAgICAgTUVOVUlURU0gIkwmYWdyZSBt5Wwgc29tIC4gLiAuIiwgICAgICAgSURNX1NBVkVUQVJHRVRBUwogICAgICAgIE1FTlVJVEVNICJTa3JpdiAmdXQgbeVsIiwgICAgICAgICAgICBJRE1fUFJJTlRUQVJHRVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZpcyBiaWxkZSIsICAgICAgICAgICAgSURNX1NIT1dQSUNUVVJFCiAgICAgICAgTUVOVUlURU0gIkxhZ3JlIGJpbGRlICZzb20gLiAuIC4iLCAgICAgIElETV9TQVZFUElDVFVSRUFTCiAgICAgICAgTUVOVUlURU0gIlNlbmQgYmlsZGUgdmlhICZlLXBvc3QgLiAuIC4iLCAgICAgICBJRE1fRU1BSUxQSUNUVVJFCiAgICAgICAgTUVOVUlURU0gIlNrciZpdiB1dCBiaWxkZSAuIC4gLiIsICAgICAgICBJRE1fUFJJTlRQSUNUVVJFCiAgICAgICAgTUVOVUlURU0gIiZH5SB0aWwgbWluZSBiaWxkZXIiLCAgICAgICBJRE1fR09UT01ZUElDVFVSRVMKICAgICAgICBNRU5VSVRFTSAiQnJ1ayBzb20gYmFrJmdydW5uIiwgICAgICAgSURNX1NFVEFTQkFDS0dST1VORAogICAgICAgIE1FTlVJVEVNICJCcnVrIHNvbSBza3JpdmVib3ImZHNvYmpla3QgLiAuIC4iLCAgSURNX1NFVEFTREVTS1RPUElURU0KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiS2xpcHAgdSZ0IiwgICAgICAgICAgICAgICAgICAgICBJRE1fQ1VUCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIiLCAgICAgICAgICAgICAgICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiS29waWVyIHNuYXImdmVpQ29weSBTaG9yJnRjdXQiLCAgICAgICAgICAgSURNX0NPUFlTSE9SVENVVAogICAgICAgIE1FTlVJVEVNICImTGltIGlubiIsICAgICAgICAgICAgICAgICAgIElETV9QQVNURSAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTGVnZyB0aWwgaSAmZmF2b3JpdHRlciAuIC4gLiIsICAgICBJRE1fQUREVE9GQVZPVVJJVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkVnZW5za2FwZSZyIiwgICAgICAgICAgICAgIElETV9QUk9QRVJUSUVTCiAgICB9CgogICAgUE9QVVAgIktvbnRyb2xsZXIiCiAgICB7CiAgICAgICAgTUVOVUlURU0gIkFuJmdyZSIsICAgICAgIElETV9VTkRPIAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLbGlwcCB1JnQiLCAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICImS29waWVyIiwgICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJkxpbSBpbm4iLCAgICAgIElETV9QQVNURQogICAgICAgIE1FTlVJVEVNICImU2xldHQiLCAgICAgSURNX0RFTEVURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJNZXJrICZhbHQiLCBJRE1fU0VMRUNUQUxMCiAgICB9CgogICAgUE9QVVAgIlRhYmVsbCIKICAgIHsKICAgICAgICBQT1BVUCAiJk1lcmsiCiAgICAgICAgewogICAgICAgICAgICBNRU5VSVRFTSAiJkNlbGxlIiwgICAgICAgICBJRE1fQ0VMTCAKICAgICAgICAgICAgTUVOVUlURU0gIiZSYWQiLCAgICAgICAgICBJRE1fUk9XCiAgICAgICAgICAgIE1FTlVJVEVNICImS29sb25uZSIsICAgICAgIElETV9DT0xVTU4KICAgICAgICAgICAgTUVOVUlURU0gIiZUYWJlbGwiLCAgICAgICAgSURNX1RBQkxFCiAgICAgICAgfQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFZ2Vuc2thcGVyIGZvciAmY2VsbGUiLCAgSURNX0NFTExQUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gIkVnZW5za2FwZXIgZm9yICZ0YWJlbGwiLCBJRE1fVEFCTEVQUk9QRVJUSUVTCiAgICB9CgogICAgUE9QVVAgIjFEU2lkZXZlbGdpbmciCiAgICB7CiAgICAgICAgTUVOVUlURU0gIktsaXBwIHUmdCIsICAgICAgICBJRE1fQ1VUCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIiLCAgICAgICBJRE1fQ09QWQogICAgICAgIE1FTlVJVEVNICJMaW0gaW5uIiwgICAgICAgSURNX1BBU1RFCiAgICAgICAgTUVOVUlURU0gIk1lcmsgJmFsdCIsIElETV9TRUxFQ1RBTEwgCiAgICAgICAgTUVOVUlURU0gIiZTa3JpdiB1dCIsICAgICAgSURNX1BSSU5UCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICB9CgogICAgUE9QVVAgIkFua2VyIgogICAgewogICAgICAgIE1FTlVJVEVNICImxXBuZSIsICAgICAgICAgICAgICAgIElETV9PUEVOTElOSwogICAgICAgIE1FTlVJVEVNICLFcG5lIGkgJm55dHQgdmluZHUiLCAgSURNX09QRU5JTk5FV1dJTkRPVwogICAgICAgIE1FTlVJVEVNICJMJmFncmUgbeVsIHNvbSAuIC4gLiIsICAgSURNX1NBVkVUQVJHRVRBUwogICAgICAgIE1FTlVJVEVNICImU2tyaXYgdXQgbeVsIiwgICAgICAgIElETV9QUklOVFRBUkdFVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLbGlwcCB1dCIsICAgICAgICAgICAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICImS29waWVyIiwgICAgICAgICAgICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiS29waWVyIHNuYXJ2ZSZpIiwgICAgICAgSURNX0NPUFlTSE9SVENVVAogICAgICAgIE1FTlVJVEVNICImTGltIGlubiIsICAgICAgICAgICAgICAgSURNX1BBU1RFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkxlZ2cgdGlsIGkgJmZhdm9yaXR0ZXIgLiAuIC4iLCBJRE1fQUREVE9GQVZPVVJJVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkVnZW5za2FwZSZyIiwgICAgICAgICAgSURNX1BST1BFUlRJRVMKICAgIH0KCiAgICBQT1BVUCAiVWtqZW50IHNhbW1lbmhlbmciCiAgICB7CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICB9CgogICAgUE9QVVAgIkRZTlNSQy1iaWxkZSIKICAgIHsKICAgICAgICBNRU5VSVRFTSAixXBuZSBrJm9ibGluZyIsICAgICAgICAgICAgICAgSURNX09QRU5MSU5LCiAgICAgICAgTUVOVUlURU0gIsVwbmUga29ibGluZyBpICZueXR0IHZpbmR1IiwgSURNX09QRU5JTk5FV1dJTkRPVwogICAgICAgIE1FTlVJVEVNICJMJmFncmUgbeVsIHNvbSAuIC4gLiIsICAgICAgIElETV9TQVZFVEFSR0VUQVMKICAgICAgICBNRU5VSVRFTSAiU2tyaXYgJnV0IG3lbCIsICAgICAgICAgICAgSURNX1BSSU5UVEFSR0VUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWaXMgYmlsZGUiLCAgICAgICAgICAgIElETV9TSE9XUElDVFVSRQogICAgICAgIE1FTlVJVEVNICJMYWdyZSB2aWRlbyAmc29tIC4gLiAuIiwgICAgICAgIElETV9TQVZFUElDVFVSRUFTCiAgICAgICAgTUVOVUlURU0gIkJydWsgc29tIGJha2dydW5uIiwgICAgICAgSURNX1NFVEFTQkFDS0dST1VORAogICAgICAgIE1FTlVJVEVNICJCcnVrIHNvbSBza3JpdmVib3ImZHNlbGVtZW50IC4gLiAuIiwgIElETV9TRVRBU0RFU0tUT1BJVEVNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktsaXBwIHUmdCIsICAgICAgICAgICAgICAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICImS29waWVyIiwgICAgICAgICAgICAgICAgICAgIElETV9DT1BZCiAgICAgICAgTUVOVUlURU0gIktvcGllciBzbmFyJnZlaSIsICAgICAgICAgICBJRE1fQ09QWVNIT1JUQ1VUCiAgICAgICAgTUVOVUlURU0gIiZMaW0gaW5uIiwgICAgICAgICAgICAgICAgICAgSURNX1BBU1RFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkxlZ2cgdGlsIGkgJmZhdm9yaXR0ZXIgLiAuIC4iLCAgICAgSURNX0FERFRPRkFWT1VSSVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTcGlsbCBhdiIsICAgICAgICAgICAgICAgICAgICAgSURNX1BMQVkKICAgICAgICBNRU5VSVRFTSAiU3RvcHAiLCAgICAgICAgICAgICAgICAgICAgIElETV9TVE9QCiAgICAgICAgTUVOVUlURU0gIkVnZW5za2FwZSZyIiwgICAgICAgICAgICAgIElETV9QUk9QRVJUSUVTCiAgICB9CgogICAgUE9QVVAgIkFSVC1iaWxkZSIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiJsVwbmUga29ibGluZyIsICAgICAgICAgICAgICAgSURNX09QRU5MSU5LCiAgICAgICAgTUVOVUlURU0gIsVwbmUga29ibGluZyBpICZueXR0IHZpbmR1IiwgSURNX09QRU5JTk5FV1dJTkRPVwogICAgICAgIE1FTlVJVEVNICJMJmFncmUgbeVsIHNvbSAuIC4gLiIsICAgICAgIElETV9TQVZFVEFSR0VUQVMKICAgICAgICBNRU5VSVRFTSAiU2tyaXYgJnV0IG3lbCIsICAgICAgICAgICAgSURNX1BSSU5UVEFSR0VUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWaXMgYmlsZGUiLCAgICAgICAgICAgIElETV9TSE9XUElDVFVSRQogICAgICAgIE1FTlVJVEVNICJMYWdyZSBiaWxkZSAmc29tIC4gLiAuIiwgICAgICBJRE1fU0FWRVBJQ1RVUkVBUwogICAgICAgIE1FTlVJVEVNICJCcnVrIHNvbSBiYWsmZ3J1bm4iLCAgICAgICBJRE1fU0VUQVNCQUNLR1JPVU5ECiAgICAgICAgTUVOVUlURU0gIkJydWsgc29tIHNrcml2ZWJvciZkb2JqZWt0IC4gLiAuIiwgIElETV9TRVRBU0RFU0tUT1BJVEVNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktsaXBwIHUmdCIsICAgICAgICAgICAgICAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICImS29waWVyIiwgICAgICAgICAgICAgICAgICAgIElETV9DT1BZCiAgICAgICAgTUVOVUlURU0gIktvcGllciBzJm5hcnZlaSIsICAgICAgICAgICBJRE1fQ09QWVNIT1JUQ1VUCiAgICAgICAgTUVOVUlURU0gIiZMaW0gaW5uIiwgICAgICAgICAgICAgICAgICAgSURNX1BBU1RFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkxlZ2cgdGlsIGkgJkZhdm9yaXR0ZXIgLiAuIC4iLCAgICAgSURNX0FERFRPRkFWT1VSSVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTcGlsbCBhdiIsICAgICAgICAgICAgICAgICAgICAgSURNX1BMQVkKICAgICAgICBNRU5VSVRFTSAiU3RvcHAiLCAgICAgICAgICAgICAgICAgICAgIElETV9TVE9QCiAgICAgICAgTUVOVUlURU0gIlNwb2wgdGlsYmFrZSIsICAgICAgICAgICAgICAgICAgIElETV9SRVdJTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRWdlbnNrYXBlJnIiLCAgICAgICAgICAgICAgSURNX1BST1BFUlRJRVMKICAgIH0KCiAgICBQT1BVUCAiRmVpbHP4a2luZyIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiU3BvcmluZ3NtZXJrZWxhcHBlciIsICAgICAgICAgSURNX1RSQUNFVEFHUyAKICAgICAgICBNRU5VSVRFTSAiUmVzc3Vyc2ZlaWwiLCAgSURNX1JFU09VUkNFRkFJTFVSRVMKICAgICAgICBNRU5VSVRFTSAiRHVtcCBzcG9yaW5nc2luZm9ybWFzam9uIiwgSURNX0RVTVBUUkFDS0lOR0lORk8KICAgICAgICBNRU5VSVRFTSAiRmVpbHP4a2luZ3NwYXVzZSIsICAgICAgICBJRE1fREVCVUdCUkVBSwogICAgICAgIE1FTlVJVEVNICJGZWlsc/hraW5nc3Zpc25pbmciLCAgICAgICAgIElETV9ERUJVR1ZJRVcKICAgICAgICBNRU5VSVRFTSAiRHVtcCAnVHJlZSciLCAgICAgICAgICBJRE1fRFVNUFRSRUUKICAgICAgICBNRU5VSVRFTSAiRHVtcCAnTGluZXMnIiwgICAgICAgICBJRE1fRFVNUExJTkVTCiAgICAgICAgTUVOVUlURU0gIkR1bXAgJ0Rpc3BsYXlUcmVlJyIsICAgSURNX0RVTVBESVNQTEFZVFJFRQogICAgICAgIE1FTlVJVEVNICJEdW1wICdGb3JtYXRDYWNoZXMnIiwgIElETV9EVU1QRk9STUFUQ0FDSEVTCiAgICAgICAgTUVOVUlURU0gIkR1bXAgJ0xheW91dFJlY3RzJyIsICAgSURNX0RVTVBMQVlPVVRSRUNUUwogICAgICAgIE1FTlVJVEVNICJNaW5uZW92ZXJ25WtlciIsICAgICBJRE1fTUVNT1JZTU9OSVRPUgogICAgICAgIE1FTlVJVEVNICJZdGVsc2VzbeVsZXJlIiwgSURNX1BFUkZPUk1BTkNFTUVURVJTCiAgICAgICAgTUVOVUlURU0gIkxhZ3JlIEhUTUwiLCAgICAgICAgICBJRE1fU0FWRUhUTUwKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkJsYS12aXNuaW5nIiwgICAgICAgSURNX0JST1dTRVZJRVcKICAgICAgICBNRU5VSVRFTSAiUiZlZGlnZXJpbmdzLXZpc25pbmciLCAgICAgICAgIElETV9FRElUVklFVwogICAgfQoKICAgIFBPUFVQICJMb2RkcmV0dCBydWxsZWZlbHQiCiAgICB7CiAgICAgICAgTUVOVUlURU0gIlJ1bGwgaGVyIiwgIElETV9TQ1JPTExIRVJFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlRvcHAiLCAgICAgICAgICBJRE1fVE9QCiAgICAgICAgTUVOVUlURU0gIkJ1bm4iLCAgICAgICBJRE1fQk9UVE9NCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNpZGUgb3BwIiwgICAgICBJRE1fUEFHRVVQCiAgICAgICAgTUVOVUlURU0gIlNpZGUgbmVkIiwgICAgSURNX1BBR0VET1dOCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlJ1bGwgb3BwIiwgICAgSURNX1NDUk9MTFVQCiAgICAgICAgTUVOVUlURU0gIlJ1bGwgbmVkIiwgIElETV9TQ1JPTExET1dOCiAgICB9CgogICAgUE9QVVAgIlZhbm5yZXR0IHJ1bGxlZmVsdCIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiUnVsbCBoZXIiLCAgSURNX1NDUk9MTEhFUkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVmVuc3RyZSBrYW50IiwgICAgSURNX0xFRlRFREdFCiAgICAgICAgTUVOVUlURU0gIkj4eXJlIGthbnQiLCAgIElETV9SSUdIVEVER0UKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU2lkZSB2ZW5zdHJlIiwgICAgSURNX1BBR0VMRUZUCiAgICAgICAgTUVOVUlURU0gIlNpZGUgaPh5cmUiLCAgIElETV9QQUdFUklHSFQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiUnVsbCB0aWwgdmVuc3RyZSIsICBJRE1fU0NST0xMTEVGVAogICAgICAgIE1FTlVJVEVNICJSdWxsIHRpbCBo+HlyZSIsIElETV9TQ1JPTExSSUdIVAogICAgfQp9Cg==