LyoKICogV2luZUZpbGUKICogTm9yd2VnaWFuIEJva23lbCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1LTIwMDYgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJyZXNvdXJjZS5oIgoKTEFOR1VBR0UgTEFOR19OT1JXRUdJQU4sIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTAoKLyogTWVudSAqLwoKSURNX1dJTkVGSUxFIE1FTlUgRklYRUQgSU1QVVJFCnsKICAgIFBPUFVQICImRmlsIiAgewogICAgICAgIE1FTlVJVEVNICImxXBuZVx0RW50ZXIiLCAgICAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICImRmx5dHQuLi5cdEY3IiwgICAgICAgICAgICAgICAgSURfRklMRV9NT1ZFCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIuLi5cdEY4IiwgICAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIiZJIHV0a2xpcHBzdGF2bGVuLi4uXHRGOSIsICAgICAgICAxMTgKICAgICAgICBNRU5VSVRFTSAiJlNsZXR0XHREZWwiLCAgICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJHaSAmbnl0dCBuYXZuLi4uIiwgICAgICAgICAgICAgICAgICAxMDkKICAgICAgICBNRU5VSVRFTSAiJkVnZW5za2FwZXIuLi5cdEFsdCtFbnRlciIsICAgSURfRURJVF9QUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIksmb21wcmltZXIuLi4iLCAgICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAiRGUma29tcHJpbWVyLi4uIiwgICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLavgmci4uLiIsICAgICAgICAgICAgICAgICAgICAgSURfRVhFQ1VURQogICAgICAgIE1FTlVJVEVNICJTa3JpdiAmdXQuLi4iLCAgICAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiVGlsa255dHQuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiT3BwciZldCBrYXRhbG9nLi4uIiwgICAgICAgIDExMQogICAgICAgIE1FTlVJVEVNICJTJvhrLi4uIiwgICAgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiJlZlbGcgZmlsZXIuLi4iLCAgICAgICAgICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIiZBdnNsdXR0XHRBbHQrWCIsICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICImQXZzbHV0dCIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZTdGFzam9uIiAgewogICAgICAgIE1FTlVJVEVNICImS29waWVyIHN0YXNqb24uLi4iLCAgICAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICJHaSB2b2wmdW1uYXZuLi4uIiwgICAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0ZXIgc3Rhc2pvbi4uLiIsICAgICAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiT3BwcmV0dCBzeXN0ZSZtZGlzay4uLiIsIC0xIC8qVE9ETyovCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLb2JsZSB0aWwgJm5ldHR2ZXJrc3N0YXNqb24iLCAgICAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICJLb2JsZSAmZnJhIG5ldHR2ZXJrc3N0YXNqb24iLCAgIElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJEZWwgc29tLi4uIiwgICAgICAgICAgICAgICAgIDI1NAogICAgICAgIE1FTlVJVEVNICJGamUmcm4gZGVsdCByZXNzdXJzLi4uIiwgICAgICAgICAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVmVsZyAmc3Rhc2pvbi4uLiIsICAgICAgICAgICAgMjUxCiAgICB9CgogICAgUE9QVVAgIkthdGFsb2dlJnIiICB7CiAgICAgICAgTUVOVUlURU0gIiZOZXN0ZSBuaXblXHQrIiwgICAgICAgICAgICAgIDMwMQogICAgICAgIE1FTlVJVEVNICJVdHZpZCB0JnJlXHQqIiwgICAgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIlV0dmlkICZhbGxlXHRTdHJnKyoiLCAgICAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICJTbOUgc2FtbWVuICZ0cmVcdC0iLCAgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNYXJrZXIgdW5kZXJlbGVtZW50ZXIiLCAgICAgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZWaXMiICB7CiAgICAgICAgTUVOVUlURU0gIlQmcmUgb2cga2F0YWxvZyIsICAgICAgICAgNDEzCiAgICAgICAgTUVOVUlURU0gIkt1biB0ciZlIiwgICAgICAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiS3VuIGthdGFsJm9nIiwgICAgICAgICAgICAgNDEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkRlJmwgb3BwIHZpc25pbmciLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOYXZuIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImQWxsZSBmaWxkZXRhbGplciIsICAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkRlbCZ2aXNlIGRldGFsamVyLi4uIiwgICAgICAgICBJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvcnRlciBldHRlciBuYXZuIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXIgZXR0ZXIgJnR5cGUiLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIlNvcnRlciBldHRlciBzdCb4cnJlbHNlIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXIgZXR0ZXIgJmRhdG8iLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkZpbHRyZXIgbWVkICcmJy4uLiIsICAgICAgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImSW5uc3RpbGxpbmdlciIgIHsKICAgICAgICBNRU5VSVRFTSAiJkJla3JlZnRlbHNlLi4uIiwgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiU2tyaSZmdC4uLiIsICAgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICJUaWxwYXNzICZ2ZXJrdPh5bGluamVuLi4uIiwgICAgICAgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlZlcmsmdPh5bGluamUiLCAgICAgICAgICAgICAgICAgICAgSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICJTdGFzJmpvbnNsaW5qZSIsICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZTdGF0dXNsaW5qZSIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIkYmdWxsc2tqZXJtXHRDdHJsK1NoaWZ0K1MiLCAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1lciB2ZWQgb3Bwc3RhcnQiLCAgICAgICAgICAgIDUwNAogICAgICAgIE1FTlVJVEVNICJMYWdyZSBpbm4mc3RpbGxpbmdlciB2ZWQgYXZzbHV0dGluZyIsICAgICAgNTExCiAgICB9CgoKICAgIFBPUFVQICImU2lra2VyaGV0IiAgewogICAgICAgIE1FTlVJVEVNICJUaWxnJmFuZy4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZMb2dnZvhyaW5nLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImRWllci4uLiIsICAgICAgICAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICJWaW5kJnUiICB7CiAgICAgICAgTUVOVUlURU0gIk55dHQgJnZpbmR1IiwgICAgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiS29ydHN0b2trXHRDdHJsK0Y1IiwgICAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiU3RpbGwgJnZhbm5yZXR0IiwgICAgICAgICAgSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJTdGlsbCAmbG9kZHJldHRcdEN0cmwrRjQiLCAgIElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJPcmRuZSBhdXRvbWF0aXNrIiwgICAgICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICJPcmRuZSAmc3ltYm9sZXIiLCAgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIk9wcGRhdGUmclx0RjUiLCAgICAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIiZIamVscCIgIHsKICAgICAgICBNRU5VSVRFTSAiRW1uZXIgaSAmaGplbHBcdEYxIiwgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZT+GsgaSBoamVscC4uLlx0RjEiLCAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiQnImdWsgYXYgaGplbHBcdEYxIiwgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mb3JtYXNqb24gb20gRmlsYmVoYW5kbGluZy4uLiIsICAgICBJRF9BQk9VVAogICAgfQp9CgoKSUREX0VYRUNVVEUgRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2r4ciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImS29tbWFuZG86IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBDT05UUk9MICAgICAgICAgIiZTb20gc3ltYm9sIiwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImSGplbHAiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlZlbGcgcGxhc3NlcmluZ3MiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJlN0aToiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkJsYSIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9ESUFMT0dfVklFV19UWVBFIERJQUxPRyBESVNDQVJEQUJMRSAxNSwgMTMsIDE2MSwgOTcKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRXR0ZXIgZmlsdHlwZSIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiJk5hdm46IiwtMSw3LDgsMjIsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfVklFV19QQVRURVJOLDMxLDcsNjMsMTIsRVNfQVVUT0hTQ1JPTEwKICAgIEdST1VQQk9YICAgICAgICAiRmlsdHlwZSIsLTEsNywyMyw4Nyw1NgogICAgQ09OVFJPTCAgICAgICAgICImS2F0YWxvZ2VyIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1tZXIiLElEQ19WSUVXX1RZUEVfUFJPR1JBTVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw0Myw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJEb2t1Jm1lbnRlciIsSURDX1ZJRVdfVFlQRV9ET0NVTUVOVFMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw1NCw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICImQW5kcmUgZmlsZXIiLElEQ19WSUVXX1RZUEVfT1RIRVJTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNjUsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiVmkmcyBza2p1bHRlL3N5c3RlbWZpbGVyIixJRENfVklFV19UWVBFX0hJRERFTiwKICAgICAgICAgICAgICAgICAgICAiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsODEsMTA2LDkKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTA0LDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxMDQsMjQsNTAsMTQKRU5ECgpJRERfRElBTE9HX1BST1BFUlRJRVMgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNDgsIDIxNQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZ2Vuc2thcGVyIGZvciAlcyIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTkxLDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxOTEsMjksNTAsMTQKICAgIExURVhUICAgICAgICAgICAiJkZpbG5hdm46IiwtMSw3LDcsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9GSUxFTkFNRSw3MSw3LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJkZ1bGwgc3RpOiIsLTEsNywxOCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1BBVEgsNzEsMTgsMTIwLDksIEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiU2lzdCBlbmRyZXQ6IiwtMSw3LDI5LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfTEFTVENIQU5HRSw3MSwyOSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnNqb246IiwtMSw3LDQwLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfVkVSU0lPTiw3MSw0MCwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZLb3BpcmV0dDoiLC0xLDcsNTEsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9DT1BZUklHSFQsNzEsNTEsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdPhycmVsc2U6IiwtMSw3LDYyLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfU0laRSw3MSw2MiwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkF0dHJpYnV0dGVyIiwtMSw3LDc5LDE1OCw0NgogICAgQ09OVFJPTCAgICAgICAgICJTayZyaXZlYmVza3l0dGV0IixJRENfQ0hFQ0tfUkVBRE9OTFksIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNyw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIlNrJmp1bHQiLElEQ19DSEVDS19ISURERU4sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5Miw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZBcmtpdiIsSURDX0NIRUNLX0FSQ0hJVkUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImU3lzdGVtIixJRENfQ0hFQ0tfU1lTVEVNLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOTIsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiS29tcHImaW1lcnQiLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIiZWZXJzam9uaW5mb3JtYXNqb24iLC0xLDcsMTI5LDIzNCw3OQogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9UWVBFUywxMywxMzksMTA3LDYzLExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9WQUxVRVMsMTIzLDEzOSwxMTEsNjMsRVNfTVVMVElMSU5FIHwgRVNfUkVBRE9OTFkgfCBXU19WU0NST0xMCkVORAoKClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICJBa3RpdmVyZXIgc2tyaWZ0aW5uc3RpbGxpbmdlciIKICAgIElEU19GT05UX1NFTF9FUlJPUiAgICAgICJGZWlsIHZlZCB2YWxnIGF2IG55IHNrcmlmdC4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJGaWxiZWhhbmRsaW5nIgogICAgSURTX0VSUk9SICAgICAgICAgICAgICAgIkZlaWwiCiAgICBJRFNfUk9PVF9GUyAgICAgICAgICAgICAiUm90Zmlsc3lzdGVtIgogICAgSURTX1VOSVhGUyAgICAgICAgICAgICAgIlVuaXgtZmlsc3lzdGVtIgogICAgSURTX0RFU0tUT1AgICAgICAgICAgICAgIlNrcml2ZWJvcmQiCiAgICBJRFNfU0hFTEwgICAgICAgICAgICAgICAiU2thbGwiCiAgICBJRFNfVElUTEVGTVQgICAgICAgICAgICAiJXMgLSAlcyIKICAgIElEU19OT19JTVBMICAgICAgICAgICAgICJJa2tlIGltcGxlbWVudGVydCBlbm7lIgogICAgSURTX1dJTkVfRklMRSAgICAgICAgICAgIkZpbGJlaGFuZGxpbmciCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19DT0xfTkFNRSAgICAgICAgICAgICJOYXZuIgogICAgSURTX0NPTF9TSVpFICAgICAgICAgICAgIlN0+HJyZWxzZSIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICJDLWRhdG8iCiAgICBJRFNfQ09MX0FEQVRFICAgICAgICAgICAiQS1kYXRvIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIk0tZGF0byIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICJJbmRla3MvSW5vZGUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiS29ibGluZ2VyIgogICAgSURTX0NPTF9BVFRSICAgICAgICAgICAgIkF0dHJpYnV0dGVyIgogICAgSURTX0NPTF9TRUMgICAgICAgICAgICAgIlNpa2tlcmhldCIKCiAgICBJRFNfRlJFRV9TUEFDRV9GTVQgICAgICAiJXMgYXYgJXMgbGVkaWciCn0K