LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkFycXVpdm8iICB7CiAgICAgICAgTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiLCAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciLCAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIsICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJkluIENsaXBib2FyZC4uLlx0RjkiLCAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlJm5vbWVhci4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiLCBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIsICAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIkRlc2NvbXByaW1pci4uLiIsICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFeGVjdSZ0YXIuLi4iLCAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZJbXByaW1pci4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICJBJnNzb2NpYXIuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3JpJmFyIHBhc3RhLi4uIiwgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlAmZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyIGFycXVpJnZvcy4uLiIsICAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJTYWkmclx0QWx0K1giLCAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzY28iICB7CiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICImTm9tZWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiwgICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICImR2VyYXIgZGlzY28gZGUgc2lzdGVtYS4uLiIsIC0xICAgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvbmVjdGEmciB1bmlkYWRlIGRlIHJlZGUiLCAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIixJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXBhcnRpbGhhciBjb21vLi4uIiwgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIiZSZW1vdmVyIGNvbXBhcnRpbGhhbWVudG8uLi4iLDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyICZ1bmlkYWRlLi4uIiwgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiwSZydm9yZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlBy83hpbW8gbu12ZWxcdCsiLCAgICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIsICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiwgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiwgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIsICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICImRXhpYmlyIiAgewogICAgICAgIE1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiLCAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiwgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiwgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOb21lIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiLCAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIsICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiLCAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iLCAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iLCAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiwgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiwgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3Dn9WVzIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWHn428uLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJkZvbnRlLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiLCAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIsICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkImYXJyYSBkZSAmc3RhdHVzIiwgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiVGVsYSBDaGVpYVx0Q3RybCtTaGlmdCtTIiwgICAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iLCAgICA1MDQKICAgICAgICBNRU5VSVRFTSAiJlNhbHZhciBjb25maWd1cmHn9WVzIGFvIHNhaXIiLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlNlZ3VyYW7nYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJkFjZXNzby4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZMb2dnaW5nLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImT3duZXIuLi4iLCAgICAgICAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiJkphbmVsYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJk5vdmEgamFuZWxhIiwgICAgICAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICImRW0gY2FzY2F0YVx0Q3RybCtGNSIsICAgICAgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIixJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IixJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIsICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIsICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImQXR1YWxpemFyXHRGNSIsICAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIkFqJnVkYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiwgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICJQZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIsICAgICAgICAgICAgIElEX0hFTFBfVVNJTkcKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvYnJlIG8gV2luZWZpbGUuLi4iLCAgICAgICAgSURfQUJPVVQKI2lmZGVmIF9fV0lORV9fCiAgICAgICAgTUVOVUlURU0gIlNvYnJlIG8gJldpbmUuLi4iLCAgICAgICAgICAgIElEX0FCT1VUX1dJTkUKI2VuZGlmCiAgICB9Cn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSURNX1dJTkVGSUxFIE1FTlUgRklYRUQgSU1QVVJFCnsKICAgIFBPUFVQICImRmljaGVpcm8iICB7CiAgICAgICAgTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiLCAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciLCAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIsICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJk5hIEFyZWEgZGUgVHJhbnNmZXJlbmNpYS4uLlx0RjkiLCAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlJm5vbWVhci4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiLCBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIsICAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIiZEZXNjb21wcmltaXIuLi4iLCAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFeGVjdSZ0YXIuLi4iLCAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZJbXByaW1pci4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICJBJnNzb2NpYXIuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3JpJmFyIHBhc3RhLi4uIiwgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlAmZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyIGZpY2hlaSZyb3MuLi4iLCAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJTYWkmclx0QWx0K1giLCAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzY28iICB7CiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICImTm9tZWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiwgICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICImR2VyYXIgZGlzY28gZGUgc2lzdGVtYS4uLiIsIC0xICAgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvbmVjdGEmciB1bmlkYWRlIGRlIHJlZGUiLCAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIixJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlBhcnRpbGhhciBjb21vLi4uIiwgICAgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIiZSZW1vdmVyIHBhcnRpbGhhLi4uIiwgICAgICAgIDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTZWxlY2Npb25hciAmdW5pZGFkZS4uLiIsICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiwSZydm9yZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlBy83hpbW8gbu12ZWxcdCsiLCAgICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIsICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiwgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiwgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIsICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICImRXhpYmlyIiAgewogICAgICAgIE1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiLCAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiwgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiwgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOb21lIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiLCAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIsICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiLCAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iLCAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iLCAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiwgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiwgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3Dn9WVzIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWHn428uLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJkZvbnRlLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiLCAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIsICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkImYXJyYSBkZSBlJnN0YWRvIiwgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiRWNy4yBDb21wbGVjdG9cdEN0cmwrU2hpZnQrUyIsICAgIElEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1pbmltaXphciBkdXJhbnRlIG8gdXNvIiwgICAgNTA0CiAgICAgICAgTUVOVUlURU0gIiZHcmF2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiw1MTEKICAgIH0KCgogICAgUE9QVVAgIiZTZWd1cmFu52EiICB7CiAgICAgICAgTUVOVUlURU0gIiZBY2Vzc28uLi4iLCAgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICImTG9nZ2luZy4uLiIsICAgICAgICAgICAgICAgICA2MDYKICAgICAgICBNRU5VSVRFTSAiJkRvbm8uLi4iLCAgICAgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIiZKYW5lbGEiICB7CiAgICAgICAgTUVOVUlURU0gIiZOb3ZhIGphbmVsYSIsICAgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiJkVtIGNhc2NhdGFcdEN0cmwrRjUiLCAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJmhvcml6b250YWxtZW50ZSIsSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmdmVydGljYWxtZW50ZVx0Q3RybCtGNCIsSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIk9yZ2FuaXphciBhdXRvbWF0aWNhbWVudGUiLCAgIElEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKICAgICAgICBNRU5VSVRFTSAiJk9yZ2FuaXphciDtY29uZXMiLCAgICAgICAgICAgSURfV0lORE9XX0FSUkFOR0UKICAgICAgICBNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICJBaiZ1ZGEiICB7CiAgICAgICAgTUVOVUlURU0gIiZU83BpY29zIGRhIGFqdWRhXHRGMSIsICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiUGVzcXVpc2FyLi4uIiwgICAgICAgICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImVXNhbmRvIGEgYWp1ZGEiLCAgICAgICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiNpZmRlZiBfX1dJTkVfXwogICAgICAgIE1FTlVJVEVNICJBY2VyY2EgZG8gJldpbmUuLi4iLCAgICAgICAgICBJRF9BQk9VVF9XSU5FCiNlbmRpZgogICAgfQp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkV4ZWN1dGFyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZDb21hbmRvOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgQ09OVFJPTCAgICAgICAgICImTWluaW1pemFkbyIsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImQWp1ZGEiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlNlbGVjaW9uYXIgZGVzdGlubyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImQ2FtaW5obzoiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImUHJvY3VyYXIiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiQXBsaWNhbmRvIGNvbmZpZ3VyYef1ZXMgZGUgZm9udGUiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRXJybyBlbnF1YW50byBzZWxlY2lvbmEgbm92YSBmb250ZS4iCn0KClNUUklOR1RBQkxFCnsKIElEU19XSU5FRklMRSAgICAgICAgICAgICAgICJXaW5lZmlsZSIKIElEU19FUlJPUiAgICAgICAgICAgICAgICAgICJFcnJvIgogSURTX1JPT1RfRlMgICAgICAgICAgICAgICAgInJvb3QgZnMiCiBJRFNfVU5JWEZTICAgICAgICAgICAgICAgICAidW5peGZzIgogSURTX0RFU0tUT1AgICAgICAgICAgICAgICAgIsFyZWEgZGUgdHJhYmFsaG8iCiBJRFNfU0hFTEwgICAgICAgICAgICAgICAgICAiU2hlbGwiCiBJRFNfVElUTEVGTVQgICAgICAgICAgICAgICAiJXMgLSAlcyIKIElEU19OT19JTVBMICAgICAgICAgICAgICAgICJBaW5kYSBu428gaW1wbGVtZW50YWRvIgogSURTX1dJTkUgICAgICAgICAgICAgICAgICAgIldJTkUiCiBJRFNfV0lORV9GSUxFICAgICAgICAgICAgICAiV2luZSBGaWxlIgp9CgpTVFJJTkdUQUJMRQp7CiBJRFNfQ09MX05BTUUgICAgICAgICAgICAgICAiTm9tZSIKIElEU19DT0xfU0laRSAgICAgICAgICAgICAgICJUYW1hbmhvIgogSURTX0NPTF9DREFURSAgICAgICAgICAgICAgIkNEYXRhIgogSURTX0NPTF9BREFURSAgICAgICAgICAgICAgIkFEYXRhIgogSURTX0NPTF9NREFURSAgICAgICAgICAgICAgIk1EYXRhIgogSURTX0NPTF9JRFggICAgICAgICAgICAgICAgIkluZGV4L0lub2RlIgogSURTX0NPTF9MSU5LUyAgICAgICAgICAgICAgIkxpZ2Hn9WVzIgogSURTX0NPTF9BVFRSICAgICAgICAgICAgICAgIkF0cmlidXRvcyIKIElEU19DT0xfU0VDICAgICAgICAgICAgICAgICJTZWd1cmFu52EiCn0K