Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBIaWdoIER5bmFtaWMgUmFuZ2UgYml0bWFwIGNvbnZlcnNpb24gcm91dGluZXMKLy8KLy8gRGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBieQovLyAtIEhlcnbpIERyb2xvbiAoZHJvbG9uQGluZm9uaWUuZnIpCi8vCi8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZyZWVJbWFnZSAzCi8vCi8vIENPVkVSRUQgQ09ERSBJUyBQUk9WSURFRCBVTkRFUiBUSElTIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5UWQovLyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgV0FSUkFOVElFUwovLyBUSEFUIFRIRSBDT1ZFUkVEIENPREUgSVMgRlJFRSBPRiBERUZFQ1RTLCBNRVJDSEFOVEFCTEUsIEZJVCBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLy8gT1IgTk9OLUlORlJJTkdJTkcuIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIENPVkVSRUQKLy8gQ09ERSBJUyBXSVRIIFlPVS4gU0hPVUxEIEFOWSBDT1ZFUkVEIENPREUgUFJPVkUgREVGRUNUSVZFIElOIEFOWSBSRVNQRUNULCBZT1UgKE5PVAovLyBUSEUgSU5JVElBTCBERVZFTE9QRVIgT1IgQU5ZIE9USEVSIENPTlRSSUJVVE9SKSBBU1NVTUUgVEhFIENPU1QgT0YgQU5ZIE5FQ0VTU0FSWQovLyBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLiBUSElTIERJU0NMQUlNRVIgT0YgV0FSUkFOVFkgQ09OU1RJVFVURVMgQU4gRVNTRU5USUFMCi8vIFBBUlQgT0YgVEhJUyBMSUNFTlNFLiBOTyBVU0UgT0YgQU5ZIENPVkVSRUQgQ09ERSBJUyBBVVRIT1JJWkVEIEhFUkVVTkRFUiBFWENFUFQgVU5ERVIKLy8gVEhJUyBESVNDTEFJTUVSLgovLwovLyBVc2UgYXQgeW91ciBvd24gcmlzayEKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKI2lmbmRlZiBUT05FX01BUFBJTkdfSAojZGVmaW5lIFRPTkVfTUFQUElOR19ICgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgoKQk9PTCBDb252ZXJ0SW5QbGFjZVJHQkZUb1l4eShGSUJJVE1BUCAqZGliKTsKQk9PTCBDb252ZXJ0SW5QbGFjZVl4eVRvUkdCRihGSUJJVE1BUCAqZGliKTsKRklCSVRNQVAqIENvbnZlcnRSR0JGVG9ZKEZJQklUTUFQICpzcmMpOwoKQk9PTCBMdW1pbmFuY2VGcm9tWXh5KEZJQklUTUFQICpkaWIsIGZsb2F0ICptYXhMdW0sIGZsb2F0ICptaW5MdW0sIGZsb2F0ICp3b3JsZEx1bSk7CkJPT0wgTHVtaW5hbmNlRnJvbVkoRklCSVRNQVAgKmRpYiwgZmxvYXQgKm1heEx1bSwgZmxvYXQgKm1pbkx1bSwgZmxvYXQgKkxhdiwgZmxvYXQgKkxsYXYpOwoKdm9pZCBOb3JtYWxpemVZKEZJQklUTUFQICpZLCBmbG9hdCBtaW5QcmN0LCBmbG9hdCBtYXhQcmN0KTsKCkZJQklUTUFQKiBDbGFtcENvbnZlcnRSR0JGVG8yNChGSUJJVE1BUCAqc3JjKTsKCiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZgoKI2VuZGlmIC8vIFRPTkVfTUFQUElOR19ICg==