LyoKICogV2luZUZpbGUKICogRGFuaXNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDggSmVucyBBbGJyZXRzZW4gPGplbnNAYWxicmV0c2VuLmRrPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfREFOSVNILCBTVUJMQU5HX0RFRkFVTFQKCi8qIE1lbnUgKi8KCklETV9XSU5FRklMRSBNRU5VCnsKICAgIFBPUFVQICImRmlsIiAgewogICAgICAgIE1FTlVJVEVNICImxWJlblx0RW50ZXIiLCAgICAgICAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZGbHl0Li4uXHRGNyIsICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9NT1ZFCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIuLi5cdEY4IiwgICAgICAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIiZQ5SBrbGlwcGVib3JkZXQuLi5cdEY5IiwgICAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIiZTbGV0XHREZWwiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiT21k+GIuLi4iLCAgICAgICAgICAgICAgICAgICAgICAgICAxMDkKICAgICAgICBNRU5VSVRFTSAiJkVnZW5za2FwZXIuLi5cdEFsdCtFbnRlciIsICAgICAgICBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSyZvbXByaW1lci4uLiIsICAgICAgICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAiRGUma29tcHJpbWVyLi4uIiwgICAgICAgICAgICAgICAgICAxMjAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiS/gmci4uLiIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9SVU4KICAgICAgICBNRU5VSVRFTSAiJlVkc2tyaXYuLi4iLCAgICAgICAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiQXNzb2NpZXIuLi4iLCAgICAgICAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiT3ByJmV0IGZvbGRlci4uLiIsICAgICAgICAgICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiUyb4Zy4uLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiJlbmbGcgZmlsZXIuLi4iLCAgICAgICAgICAgICAgICAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICImQWZzbHV0XHRBbHQrWCIsICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICImQWZzbHV0IiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZW5kaWYKICAgIH0KCiAgICBQT1BVUCAiJkRpc2tldHRlIiAgewogICAgICAgIE1FTlVJVEVNICImS29waWVyIGRpc2tldHRlLi4uIiwgICAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICJT5nQgdm9sJnVtZW5hdm4uLi4iLCAgICAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0ZXIgZGlza2V0dGUuLi4iLCAgICAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiT3ByZXQgc3lzdGUmbWRpc2tldHRlLi4uIiwgICAgICAgICAtMSAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRpbHNsdXQgbmV0duZya3NkcmV2IiwgICAgICAgICAgICBJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAiRnJha29ibCAmbmV0duZya3NkcmV2IiwgICAgICAgICAgICBJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGVsIHNvbS4uLiIsICAgICAgICAgICAgICAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiRmplJnJuIGRlbHQgcmVzb3Vyc2UuLi4iLCAgICAgICAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVuZsZyAmZW5oZWQuLi4iLCAgICAgICAgICAgICAgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiS2F0YWxvZ2UmciIgIHsKICAgICAgICBNRU5VSVRFTSAiJk7mc3RlIG5pdmVhdVx0KyIsICAgICAgICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiVWR2aWQgdCZy5lx0KiIsICAgICAgICAgICAgICAgICAgICAzMDIKICAgICAgICBNRU5VSVRFTSAiVWR2aWQgJmFsbGVcdFN0cmcrKiIsICAgICAgICAgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiS29sYXBzICZ0cuZcdC0iLCAgICAgICAgICAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1hcmtlciB1bmRlcmVsZW1lbnRlciIsICAgICAgICAgICA1MDUKICAgIH0KCiAgICBQT1BVUCAiJlZpcyIgIHsKICAgICAgICBNRU5VSVRFTSAiVCZy5iBvZyBmb2xkZXIiLCAgICAgICAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiS3VuIHRyJuYiLCAgICAgICAgICAgICAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiS3VuICZmb2xkZXIiLCAgICAgICAgICAgICAgICAgICAgICA0MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZpc25pbmcgb3BkZWxpbmciLCAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOYXZuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIiZBbGxlIGZpbGRldGFsamVyIiwgICAgICAgICAgICAgICAgSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJEZWwmdmlzZSBkZXRhbGplci4uLiIsICAgICAgICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29ydGVyIGVmdGVyIG5hdm4iLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9OQU1FCiAgICAgICAgTUVOVUlURU0gIlNvcnRlciBlZnRlciAmdHlwZSIsICAgICAgICAgICAgICAgSURfVklFV19TT1JUX1RZUEUKICAgICAgICBNRU5VSVRFTSAiU29ydGVyIGVmdGVyIHN0JvhycmVsc2UiLCAgICAgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXIgZWZ0ZXIgJmRhdG8iLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkZpbHRyZXIgbWVkICcmJy4uLiIsICAgICAgICAgICAgICAgSURfVklFV19GSUxURVIKICAgIH0KCiAgICBQT1BVUCAiJkluZHN0aWxsaW5nZXIiICB7CiAgICAgICAgTUVOVUlURU0gIiZCZWty5mZ0ZWxzZS4uLiIsICAgICAgICAgICAgICAgICAgNTAxCiAgICAgICAgTUVOVUlURU0gIlNrcmkmZnR0eXBlLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiVGlscGFzICZ25nJrdPhqc2xpbmllbi4uLiIsICAgICAgICA1MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVuZyayZ0+GpsaW5pZSIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZFbmhlZHNsaW5pZSIsICAgICAgICAgICAgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJlN0YXR1c2xpbmllIiwgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIkYmdWxkc2vmcm1cdEN0cmwrU2hpZnQrUyIsICAgICAgICAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1lciB2ZWQgc3RhcnQiLCAgICAgICAgICAgICAgIDUwNAogICAgICAgIE1FTlVJVEVNICJHZW0gaW5kJnN0aWxsaW5nZXIgdmVkIGFmc2x1dG5pbmciLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlNpa2tlcmhlZCIgIHsKICAgICAgICBNRU5VSVRFTSAiVGlsZyZhbmcuLi4iLCAgICAgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICImTG9nZvhyaW5nLi4uIiwgICAgICAgICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIiZFamVyLi4uIiwgICAgICAgICAgICAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiVmluZCZ1ZSIgIHsKICAgICAgICBNRU5VSVRFTSAiTnl0ICZ2aW5kdWUiLCAgICAgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIktvcnRzdGFrXHRDdHJsK0Y1IiwgICAgICAgICAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiU3RpbCAmdmFuZHJldCIsICAgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIlN0aWwgJmxvZHJldFx0Q3RybCtGNCIsICAgICAgICAgICAgSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIk9yZG5lIGF1dG9tYXRpc2siLCAgICAgICAgICAgICAgICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICJPcmRuZSAmc3ltYm9sZXIiLCAgICAgICAgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIk9wZGF0ZSZyXHRGNSIsICAgICAgICAgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICImSGrmbHAiICB7CiAgICAgICAgTUVOVUlURU0gIkVtbmVyIGkgJmhq5mxwXHRGMSIsICAgICAgICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImU/hnIGkgaGrmbHAuLi5cdEYxIiwgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiQnImdWcgYWYgaGrmbHBcdEYxIiwgICAgICAgICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmZvcm1hdGlvbiBvbSBGaWxiZWhhbmRsaW5nLi4uIixJRF9BQk9VVAogICAgfQp9CgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVuZsZyBkZXN0aW5hdGlvbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImU3RpOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsbGVyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZHZW5uZW1zZSIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9ESUFMT0dfVklFV19UWVBFIERJQUxPRyAxNSwgMTMsIDE2MSwgOTcKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWZ0ZXIgZmlsdHlwZSIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiJk5hdm46IiwtMSw3LDgsMjIsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfVklFV19QQVRURVJOLDMxLDcsNjMsMTIsRVNfQVVUT0hTQ1JPTEwKICAgIEdST1VQQk9YICAgICAgICAiRmlsdHlwZSIsLTEsNywyMyw4Nyw1NgogICAgQ09OVFJPTCAgICAgICAgICImS2F0YWxvZ2VyIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1tZXIiLElEQ19WSUVXX1RZUEVfUFJPR1JBTVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw0Myw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJEb2t1Jm1lbnRlciIsSURDX1ZJRVdfVFlQRV9ET0NVTUVOVFMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw1NCw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICImQW5kcmUgZmlsZXIiLElEQ19WSUVXX1RZUEVfT1RIRVJTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNjUsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiVmkmcyBza2p1bHRlL3N5c3RlbWZpbGVyIixJRENfVklFV19UWVBFX0hJRERFTiwKICAgICAgICAgICAgICAgICAgICAiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsODEsMTA2LDkKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTA0LDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxsZXIiLElEQ0FOQ0VMLDEwNCwyNCw1MCwxNApFTkQKCklERF9ESUFMT0dfUFJPUEVSVElFUyBESUFMT0cgIDAsIDAsIDI0OCwgMjE1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVnZW5za2FwZXIgZm9yICVzIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTEsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGxlciIsSURDQU5DRUwsMTkxLDI5LDUwLDE0CiAgICBMVEVYVCAgICAgICAgICAgIiZGaWxuYXZuOiIsLTEsNyw3LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfRklMRU5BTUUsNzEsNywxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZGdWxsIHN0aToiLC0xLDcsMTgsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9QQVRILDcxLDE4LDEyMCw5LCBFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlNpZHN0IOZuZHJldDoiLC0xLDcsMjksNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9MQVNUQ0hBTkdFLDcxLDI5LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVmVyc2lvbjoiLC0xLDcsNDAsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9WRVJTSU9OLDcxLDQwLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJk9waGF2c3JldDoiLC0xLDcsNTEsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9DT1BZUklHSFQsNzEsNTEsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdPhycmVsc2U6IiwtMSw3LDYyLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfU0laRSw3MSw2MiwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkF0dHJpYnV0dGVyIiwtMSw3LDc5LDE1OCw0NgogICAgQ09OVFJPTCAgICAgICAgICJTayZyaXZlYmVza3l0dGV0IixJRENfQ0hFQ0tfUkVBRE9OTFksIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNyw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIlNrJmp1bHQiLElEQ19DSEVDS19ISURERU4sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5Miw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZBcmtpdiIsSURDX0NIRUNLX0FSQ0hJVkUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImU3lzdGVtIixJRENfQ0hFQ0tfU1lTVEVNLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOTIsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiS29tcHImaW1lcmV0IixJRENfQ0hFQ0tfQ09NUFJFU1NFRCwiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMTEsNjgsOQogICAgR1JPVVBCT1ggICAgICAgICImVmVyc2lvbmluZm9ybWF0aW9uIiwtMSw3LDEyOSwyMzQsNzkKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVFlQRVMsMTMsMTM5LDEwNyw2MyxMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVkFMVUVTLDEyMywxMzksMTExLDYzLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgV1NfVlNDUk9MTApFTkQKCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiQWt0aXZlciBza3JpZnRpbmRzdGlsbGluZ2VyIgogICAgSURTX0ZPTlRfU0VMX0VSUk9SICAgICAgIkZlamwgdmVkIHZhbGcgYWYgbnkgc2tyaWZ0dHlwZS4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJGaWxiZWhhbmRsaW5nIgogICAgSURTX0VSUk9SICAgICAgICAgICAgICAgIkZlamwiCiAgICBJRFNfUk9PVF9GUyAgICAgICAgICAgICAiUm9kZmlsc3lzdGVtIgogICAgSURTX1VOSVhGUyAgICAgICAgICAgICAgIlVuaXgtZmlsc3lzdGVtIgogICAgSURTX0RFU0tUT1AgICAgICAgICAgICAgIlNrcml2ZWJvcmQiCiAgICBJRFNfU0hFTEwgICAgICAgICAgICAgICAiU2thbCIKICAgIElEU19USVRMRUZNVCAgICAgICAgICAgICIlcyAtICVzIgogICAgSURTX05PX0lNUEwgICAgICAgICAgICAgIklra2UgaW1wbGVtZW50ZXJldCBlbmRudSIKICAgIElEU19XSU5FX0ZJTEUgICAgICAgICAgICJGaWxiZWhhbmRsaW5nIgp9CgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfQ09MX05BTUUgICAgICAgICAgICAiTmF2biIKICAgIElEU19DT0xfU0laRSAgICAgICAgICAgICJTdPhycmVsc2UiCiAgICBJRFNfQ09MX0NEQVRFICAgICAgICAgICAiQy1kYXRvIgogICAgSURTX0NPTF9BREFURSAgICAgICAgICAgIkEtZGF0byIKICAgIElEU19DT0xfTURBVEUgICAgICAgICAgICJNLWRhdG8iCiAgICBJRFNfQ09MX0lEWCAgICAgICAgICAgICAiSW5kZWtzL0lub2RlIgogICAgSURTX0NPTF9MSU5LUyAgICAgICAgICAgIkdlbnZlamUiCiAgICBJRFNfQ09MX0FUVFIgICAgICAgICAgICAiQXR0cmlidXR0ZXIiCiAgICBJRFNfQ09MX1NFQyAgICAgICAgICAgICAiU2lra2VyaGVkIgoKICAgIElEU19GUkVFX1NQQUNFX0ZNVCAgICAgICIlcyBhZiAlcyBsZWRpZyIKfQo=