LyoKICogV2luZUZpbGUKICogRGFuaXNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDggSmVucyBBbGJyZXRzZW4gPGplbnNAYWxicmV0c2VuLmRrPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0RBTklTSCwgU1VCTEFOR19ERUZBVUxUCgovKiBNZW51ICovCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewogICAgUE9QVVAgIiZGaWwiICB7CiAgICAgICAgTUVOVUlURU0gIibFYmVuXHRFbnRlciIsICAgICAgICAgICAgICAgICAgICAgSURfQUNUSVZBVEUKICAgICAgICBNRU5VSVRFTSAiJkZseXQuLi5cdEY3IiwgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX01PVkUKICAgICAgICBNRU5VSVRFTSAiJktvcGllci4uLlx0RjgiLCAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJlDlIGtsaXBwZWJvcmRldC4uLlx0RjkiLCAgICAgICAgICAxMTgKICAgICAgICBNRU5VSVRFTSAiJlNsZXRcdERlbCIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJPbWT4Yi4uLiIsICAgICAgICAgICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImRWdlbnNrYXBlci4uLlx0QWx0K0VudGVyIiwgICAgICAgIElEX0VESVRfUFJPUEVSVElFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLJm9tcHJpbWVyLi4uIiwgICAgICAgICAgICAgICAgICAgIDExOQogICAgICAgIE1FTlVJVEVNICJEZSZrb21wcmltZXIuLi4iLCAgICAgICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJL+CZyLi4uIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VYRUNVVEUKICAgICAgICBNRU5VSVRFTSAiJlVkc2tyaXYuLi4iLCAgICAgICAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiQXNzb2NpZXIuLi4iLCAgICAgICAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiT3ByJmV0IGZvbGRlci4uLiIsICAgICAgICAgICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiUyb4Zy4uLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiJlbmbGcgZmlsZXIuLi4iLCAgICAgICAgICAgICAgICAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICImQWZzbHV0XHRBbHQrWCIsICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICImQWZzbHV0IiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZW5kaWYKICAgIH0KCiAgICBQT1BVUCAiJkRpc2tldHRlIiAgewogICAgICAgIE1FTlVJVEVNICImS29waWVyIGRpc2tldHRlLi4uIiwgICAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICJT5nQgdm9sJnVtZW5hdm4uLi4iLCAgICAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0ZXIgZGlza2V0dGUuLi4iLCAgICAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiT3ByZXQgc3lzdGUmbWRpc2tldHRlLi4uIiwgICAgICAgICAtMSAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRpbHNsdXQgbmV0duZya3NkcmV2IiwgICAgICAgICAgICBJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAiRnJha29ibCAmbmV0duZya3NkcmV2IiwgICAgICAgICAgICBJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGVsIHNvbS4uLiIsICAgICAgICAgICAgICAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiRmplJnJuIGRlbHQgcmVzb3Vyc2UuLi4iLCAgICAgICAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVuZsZyAmZW5oZWQuLi4iLCAgICAgICAgICAgICAgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiS2F0YWxvZ2UmciIgIHsKICAgICAgICBNRU5VSVRFTSAiJk7mc3RlIG5pdmVhdVx0KyIsICAgICAgICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiVWR2aWQgdCZy5lx0KiIsICAgICAgICAgICAgICAgICAgICAzMDIKICAgICAgICBNRU5VSVRFTSAiVWR2aWQgJmFsbGVcdFN0cmcrKiIsICAgICAgICAgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiS29sYXBzICZ0cuZcdC0iLCAgICAgICAgICAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1hcmtlciB1bmRlcmVsZW1lbnRlciIsICAgICAgICAgICA1MDUKICAgIH0KCiAgICBQT1BVUCAiJlZpcyIgIHsKICAgICAgICBNRU5VSVRFTSAiVCZy5iBvZyBmb2xkZXIiLCAgICAgICAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiS3VuIHRyJuYiLCAgICAgICAgICAgICAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiS3VuICZmb2xkZXIiLCAgICAgICAgICAgICAgICAgICAgICA0MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZpc25pbmcgb3BkZWxpbmciLCAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOYXZuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIiZBbGxlIGZpbGRldGFsamVyIiwgICAgICAgICAgICAgICAgSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJEZWwmdmlzZSBkZXRhbGplci4uLiIsICAgICAgICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29ydGVyIGVmdGVyIG5hdm4iLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9OQU1FCiAgICAgICAgTUVOVUlURU0gIlNvcnRlciBlZnRlciAmdHlwZSIsICAgICAgICAgICAgICAgSURfVklFV19TT1JUX1RZUEUKICAgICAgICBNRU5VSVRFTSAiU29ydGVyIGVmdGVyIHN0JvhycmVsc2UiLCAgICAgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXIgZWZ0ZXIgJmRhdG8iLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkZpbHRyZXIgbWVkICcmJy4uLiIsICAgICAgICAgICAgICAgSURfVklFV19GSUxURVIKICAgIH0KCiAgICBQT1BVUCAiJkluZHN0aWxsaW5nZXIiICB7CiAgICAgICAgTUVOVUlURU0gIiZCZWty5mZ0ZWxzZS4uLiIsICAgICAgICAgICAgICAgICAgNTAxCiAgICAgICAgTUVOVUlURU0gIlNrcmkmZnR0eXBlLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiVGlscGFzICZ25nJrdPhqc2xpbmllbi4uLiIsICAgICAgICA1MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVuZyayZ0+GpsaW5pZSIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZFbmhlZHNsaW5pZSIsICAgICAgICAgICAgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJlN0YXR1c2xpbmllIiwgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIkYmdWxkc2vmcm1cdEN0cmwrU2hpZnQrUyIsICAgICAgICAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1lciB2ZWQgc3RhcnQiLCAgICAgICAgICAgICAgIDUwNAogICAgICAgIE1FTlVJVEVNICJHZW0gaW5kJnN0aWxsaW5nZXIgdmVkIGFmc2x1dG5pbmciLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlNpa2tlcmhlZCIgIHsKICAgICAgICBNRU5VSVRFTSAiVGlsZyZhbmcuLi4iLCAgICAgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICImTG9nZvhyaW5nLi4uIiwgICAgICAgICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIiZFamVyLi4uIiwgICAgICAgICAgICAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiVmluZCZ1ZSIgIHsKICAgICAgICBNRU5VSVRFTSAiTnl0ICZ2aW5kdWUiLCAgICAgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIktvcnRzdGFrXHRDdHJsK0Y1IiwgICAgICAgICAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiU3RpbCAmdmFuZHJldCIsICAgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIlN0aWwgJmxvZHJldFx0Q3RybCtGNCIsICAgICAgICAgICAgSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIk9yZG5lIGF1dG9tYXRpc2siLCAgICAgICAgICAgICAgICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICJPcmRuZSAmc3ltYm9sZXIiLCAgICAgICAgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIk9wZGF0ZSZyXHRGNSIsICAgICAgICAgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICImSGrmbHAiICB7CiAgICAgICAgTUVOVUlURU0gIkVtbmVyIGkgJmhq5mxwXHRGMSIsICAgICAgICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImU/hnIGkgaGrmbHAuLi5cdEYxIiwgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiQnImdWcgYWYgaGrmbHBcdEYxIiwgICAgICAgICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmZvcm1hdGlvbiBvbSBGaWxiZWhhbmRsaW5nLi4uIixJRF9BQk9VVAogICAgfQp9CgoKSUREX0VYRUNVVEUgRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS/hyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZLb21tYW5kbzoiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIENPTlRST0wgICAgICAgICAiJlNvbSBzeW1ib2wiLCAyMTQsICJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUCwzLCA0NSwgNzEsIDEyCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxsZXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkhq5mxwIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJW5mxnIGRlc3RpbmF0aW9uIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZTdGk6IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxsZXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkdlbm5lbXNlIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX0RJQUxPR19WSUVXX1RZUEUgRElBTE9HIERJU0NBUkRBQkxFIDE1LCAxMywgMTYxLCA5NwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZnRlciBmaWx0eXBlIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImTmF2bjoiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJGaWx0eXBlIiwtMSw3LDIzLDg3LDU2CiAgICBDT05UUk9MICAgICAgICAgIiZLYXRhbG9nZXIiLElEQ19WSUVXX1RZUEVfRElSRUNUT1JJRVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMywzMiw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICImUHJvZ3JhbW1lciIsSURDX1ZJRVdfVFlQRV9QUk9HUkFNUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDQzLDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIkRva3UmbWVudGVyIixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZBbmRyZSBmaWxlciIsSURDX1ZJRVdfVFlQRV9PVEhFUlMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw2NSw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJWaSZzIHNranVsdGUvc3lzdGVtZmlsZXIiLElEQ19WSUVXX1RZUEVfSElEREVOLAogICAgICAgICAgICAgICAgICAgICJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw4MSwxMDYsOQogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMDQsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGxlciIsSURDQU5DRUwsMTA0LDI0LDUwLDE0CkVORAoKSUREX0RJQUxPR19QUk9QRVJUSUVTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ4LCAyMTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWdlbnNrYXBlciBmb3IgJXMiCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5MSw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsbGVyIixJRENBTkNFTCwxOTEsMjksNTAsMTQKICAgIExURVhUICAgICAgICAgICAiJkZpbG5hdm46IiwtMSw3LDcsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9GSUxFTkFNRSw3MSw3LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJkZ1bGwgc3RpOiIsLTEsNywxOCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1BBVEgsNzEsMTgsMTIwLDksIEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiU2lkc3Qg5m5kcmV0OiIsLTEsNywyOSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0xBU1RDSEFOR0UsNzEsMjksMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJWZXJzaW9uOiIsLTEsNyw0MCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1ZFUlNJT04sNzEsNDAsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImT3BoYXZzcmV0OiIsLTEsNyw1MSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0NPUFlSSUdIVCw3MSw1MSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlN0+HJyZWxzZToiLC0xLDcsNjIsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9TSVpFLDcxLDYyLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQXR0cmlidXR0ZXIiLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIlNrJnJpdmViZXNreXR0ZXQiLElEQ19DSEVDS19SRUFET05MWSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiU2smanVsdCIsSURDX0NIRUNLX0hJRERFTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJkFya2l2IixJRENfQ0hFQ0tfQVJDSElWRSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZTeXN0ZW0iLElEQ19DSEVDS19TWVNURU0sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5MiwxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICJLb21wciZpbWVyZXQiLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIiZWZXJzaW9uaW5mb3JtYXRpb24iLC0xLDcsMTI5LDIzNCw3OQogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9UWVBFUywxMywxMzksMTA3LDYzLExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9WQUxVRVMsMTIzLDEzOSwxMTEsNjMsRVNfTVVMVElMSU5FIHwgRVNfUkVBRE9OTFkgfCBXU19WU0NST0xMCkVORAoKClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICJBa3RpdmVyIHNrcmlmdGluZHN0aWxsaW5nZXIiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRmVqbCB2ZWQgdmFsZyBhZiBueSBza3JpZnR0eXBlLiIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX1dJTkVGSUxFICAgICAgICAgICAgIkZpbGJlaGFuZGxpbmciCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiRmVqbCIKICAgIElEU19ST09UX0ZTICAgICAgICAgICAgICJSb2RmaWxzeXN0ZW0iCiAgICBJRFNfVU5JWEZTICAgICAgICAgICAgICAiVW5peC1maWxzeXN0ZW0iCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiU2tyaXZlYm9yZCIKICAgIElEU19TSEVMTCAgICAgICAgICAgICAgICJTa2FsIgogICAgSURTX1RJVExFRk1UICAgICAgICAgICAgIiVzIC0gJXMiCiAgICBJRFNfTk9fSU1QTCAgICAgICAgICAgICAiSWtrZSBpbXBsZW1lbnRlcmV0IGVuZG51IgogICAgSURTX1dJTkVfRklMRSAgICAgICAgICAgIkZpbGJlaGFuZGxpbmciCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19DT0xfTkFNRSAgICAgICAgICAgICJOYXZuIgogICAgSURTX0NPTF9TSVpFICAgICAgICAgICAgIlN0+HJyZWxzZSIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICJDLWRhdG8iCiAgICBJRFNfQ09MX0FEQVRFICAgICAgICAgICAiQS1kYXRvIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIk0tZGF0byIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICJJbmRla3MvSW5vZGUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiR2VudmVqZSIKICAgIElEU19DT0xfQVRUUiAgICAgICAgICAgICJBdHRyaWJ1dHRlciIKICAgIElEU19DT0xfU0VDICAgICAgICAgICAgICJTaWtrZXJoZWQiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIGFmICVzIGxlZGlnIgp9Cg==