Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IFN5bnRhY29yZSBMTEMgqSAyMDE2LTIwMjEKLy8gCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAovLyBTUERYLUZpbGVDb250cmlidXRvcjogU3ludGFjb3JlIExMQwovLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLy8gQGZpbGUgICAgICAgPHNjcjFfcmlzY3ZfaXNhX2RlY29kaW5nLnN2aD4KLy8vIEBicmllZiAgICAgIFJJU0MtViBJU0EgZGVmaW5pdGlvbnMgZmlsZQovLy8KCmBpZm5kZWYgU0NSMV9SSVNDVl9JU0FfREVDT0RJTkdfU1ZICmBkZWZpbmUgU0NSMV9SSVNDVl9JU0FfREVDT0RJTkdfU1ZICgpgaW5jbHVkZSAic2NyMV9hcmNoX2Rlc2NyaXB0aW9uLnN2aCIKYGluY2x1ZGUgInNjcjFfYXJjaF90eXBlcy5zdmgiCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSW5zdHJ1Y3Rpb24gdHlwZXMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vdHlwZWRlZiBlbnVtIGxvZ2ljIFsxOjBdIHsKcGFyYW1ldGVyICAgIFNDUjFfSU5TVFJfUlZDMCAgICAgPSAyJ2IwMDsKcGFyYW1ldGVyICAgIFNDUjFfSU5TVFJfUlZDMSAgICAgPSAyJ2IwMTsKcGFyYW1ldGVyICAgIFNDUjFfSU5TVFJfUlZDMiAgICAgPSAyJ2IxMDsKcGFyYW1ldGVyICAgIFNDUjFfSU5TVFJfUlZJICAgICAgPSAyJ2IxMTsKLy99IHR5cGVfc2NyMV9pbnN0cl90eXBlX2U7CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gUlYzMkkgb3Bjb2RlcyAoYml0cyA2OjIpCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovL3R5cGVkZWYgZW51bSBsb2dpYyBbNjoyXSB7CnBhcmFtZXRlciAgICBTQ1IxX09QQ09ERV9MT0FEICAgICAgICA9IDUnYjAwMDAwOwpwYXJhbWV0ZXIgICAgU0NSMV9PUENPREVfTUlTQ19NRU0gICAgPSA1J2IwMDAxMTsKcGFyYW1ldGVyICAgIFNDUjFfT1BDT0RFX09QX0lNTSAgICAgID0gNSdiMDAxMDA7CnBhcmFtZXRlciAgICBTQ1IxX09QQ09ERV9BVUlQQyAgICAgICA9IDUnYjAwMTAxOwpwYXJhbWV0ZXIgICAgU0NSMV9PUENPREVfU1RPUkUgICAgICAgPSA1J2IwMTAwMDsKcGFyYW1ldGVyICAgIFNDUjFfT1BDT0RFX09QICAgICAgICAgID0gNSdiMDExMDA7CnBhcmFtZXRlciAgICBTQ1IxX09QQ09ERV9MVUkgICAgICAgICA9IDUnYjAxMTAxOwpwYXJhbWV0ZXIgICAgU0NSMV9PUENPREVfQlJBTkNIICAgICAgPSA1J2IxMTAwMDsKcGFyYW1ldGVyICAgIFNDUjFfT1BDT0RFX0pBTFIgICAgICAgID0gNSdiMTEwMDE7CnBhcmFtZXRlciAgICBTQ1IxX09QQ09ERV9KQUwgICAgICAgICA9IDUnYjExMDExOwpwYXJhbWV0ZXIgICAgU0NSMV9PUENPREVfU1lTVEVNICAgICAgPSA1J2IxMTEwMDsKLy99IHR5cGVfc2NyMV9ydmlfb3Bjb2RlX2U7CgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIElBTFUgbWFpbiBvcGVyYW5kcwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbG9jYWxwYXJhbSBTQ1IxX0lBTFVfT1BfQUxMX05VTV9FID0gMjsKbG9jYWxwYXJhbSBTQ1IxX0lBTFVfT1BfV0lEVEhfRSAgID0gJGNsb2cyKFNDUjFfSUFMVV9PUF9BTExfTlVNX0UpOwp0eXBlZGVmIGVudW0gbG9naWMgW1NDUjFfSUFMVV9PUF9XSURUSF9FLTE6MF0gewogICAgU0NSMV9JQUxVX09QX1JFR19JTU0sICAgICAgICAgIC8vIG9wMSA9IHJzMTsgb3AyID0gaW1tCiAgICBTQ1IxX0lBTFVfT1BfUkVHX1JFRyAgICAgICAgICAgLy8gb3AxID0gcnMxOyBvcDIgPSByczIKfSB0eXBlX3NjcjFfaWFsdV9vcF9zZWxfZTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBJQUxVIG1haW4gY29tbWFuZHMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmBpZmRlZiBTQ1IxX1JWTV9FWFQKbG9jYWxwYXJhbSBTQ1IxX0lBTFVfQ01EX0FMTF9OVU1fRSAgICA9IDIzOwpgZWxzZSAvLyB+U0NSMV9SVk1fRVhUCmxvY2FscGFyYW0gU0NSMV9JQUxVX0NNRF9BTExfTlVNX0UgICAgPSAxNTsKYGVuZGlmIC8vIH5TQ1IxX1JWTV9FWFQKbG9jYWxwYXJhbSBTQ1IxX0lBTFVfQ01EX1dJRFRIX0UgICAgICA9ICRjbG9nMihTQ1IxX0lBTFVfQ01EX0FMTF9OVU1fRSk7CnR5cGVkZWYgZW51bSBsb2dpYyBbU0NSMV9JQUxVX0NNRF9XSURUSF9FLTE6MF0gewogICAgU0NSMV9JQUxVX0NNRF9OT05FICA9ICcwLCAgIC8vIElBTFUgZGlzYWJsZQogICAgU0NSMV9JQUxVX0NNRF9BTkQsICAgICAgICAgIC8vIG9wMSAmIG9wMgogICAgU0NSMV9JQUxVX0NNRF9PUiwgICAgICAgICAgIC8vIG9wMSB8IG9wMgogICAgU0NSMV9JQUxVX0NNRF9YT1IsICAgICAgICAgIC8vIG9wMSBeIG9wMgogICAgU0NSMV9JQUxVX0NNRF9BREQsICAgICAgICAgIC8vIG9wMSArIG9wMgogICAgU0NSMV9JQUxVX0NNRF9TVUIsICAgICAgICAgIC8vIG9wMSAtIG9wMgogICAgU0NSMV9JQUxVX0NNRF9TVUJfTFQsICAgICAgIC8vIG9wMSA8IG9wMgogICAgU0NSMV9JQUxVX0NNRF9TVUJfTFRVLCAgICAgIC8vIG9wMSB1PCBvcDIKICAgIFNDUjFfSUFMVV9DTURfU1VCX0VRLCAgICAgICAvLyBvcDEgPSBvcDIKICAgIFNDUjFfSUFMVV9DTURfU1VCX05FLCAgICAgICAvLyBvcDEgIT0gb3AyCiAgICBTQ1IxX0lBTFVfQ01EX1NVQl9HRSwgICAgICAgLy8gb3AxID49IG9wMgogICAgU0NSMV9JQUxVX0NNRF9TVUJfR0VVLCAgICAgIC8vIG9wMSB1Pj0gb3AyCiAgICBTQ1IxX0lBTFVfQ01EX1NMTCwgICAgICAgICAgLy8gb3AxIDw8IG9wMgogICAgU0NSMV9JQUxVX0NNRF9TUkwsICAgICAgICAgIC8vIG9wMSA+PiBvcDIKICAgIFNDUjFfSUFMVV9DTURfU1JBICAgICAgICAgICAvLyBvcDEgPj4+IG9wMgpgaWZkZWYgU0NSMV9SVk1fRVhUCiAgICAsCiAgICBTQ1IxX0lBTFVfQ01EX01VTCwgICAgICAgICAgLy8gbG93KHVuc2lnKG9wMSkgKiB1bnNpZyhvcDIpKQogICAgU0NSMV9JQUxVX0NNRF9NVUxIVSwgICAgICAgIC8vIGhpZ2godW5zaWcob3AxKSAqIHVuc2lnKG9wMikpCiAgICBTQ1IxX0lBTFVfQ01EX01VTEhTVSwgICAgICAgLy8gaGlnaChvcDEgKiB1bnNpZyhvcDIpKQogICAgU0NSMV9JQUxVX0NNRF9NVUxILCAgICAgICAgIC8vIGhpZ2gob3AxICogb3AyKQogICAgU0NSMV9JQUxVX0NNRF9ESVYsICAgICAgICAgIC8vIG9wMSAvIG9wMgogICAgU0NSMV9JQUxVX0NNRF9ESVZVLCAgICAgICAgIC8vIG9wMSB1LyBvcDIKICAgIFNDUjFfSUFMVV9DTURfUkVNLCAgICAgICAgICAvLyBvcDEgJSBvcDIKICAgIFNDUjFfSUFMVV9DTURfUkVNVSAgICAgICAgICAvLyBvcDEgdSUgb3AyCmBlbmRpZiAgLy8gU0NSMV9SVk1fRVhUCn0gdHlwZV9zY3IxX2lhbHVfY21kX3NlbF9lOwoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIElBTFUgU1VNMiBvcGVyYW5kcyAocmVzdWx0IGlzIEpVTVAvQlJBTkNIIHRhcmdldCwgTE9BRC9TVE9SRSBhZGRyZXNzKQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbG9jYWxwYXJhbSBTQ1IxX1NVTTJfT1BfQUxMX05VTV9FICAgID0gMjsKbG9jYWxwYXJhbSBTQ1IxX1NVTTJfT1BfV0lEVEhfRSAgICAgID0gJGNsb2cyKFNDUjFfU1VNMl9PUF9BTExfTlVNX0UpOwp0eXBlZGVmIGVudW0gbG9naWMgW1NDUjFfU1VNMl9PUF9XSURUSF9FLTE6MF0gewogICAgU0NSMV9TVU0yX09QX1BDX0lNTSwgICAgICAgIC8vIG9wMSA9IGN1cnJfcGM7IG9wMiA9IGltbSAoQVVJUEMsIHRhcmdldCBuZXdfcGMgZm9yIEpBTCBhbmQgYnJhbmNoZXMpCiAgICBTQ1IxX1NVTTJfT1BfUkVHX0lNTSAgICAgICAgLy8gb3AxID0gcnMxOyBvcDIgPSBpbW0gKHRhcmdldCBuZXdfcGMgZm9yIEpBTFIsIExPQUQvU1RPUkUgYWRkcmVzcykKYGlmZGVmIFNDUjFfWFBST1BfRU4KICAgICwKICAgIFNDUjFfU1VNMl9PUF9FUlJPUiA9ICd4CmBlbmRpZiAvLyBTQ1IxX1hQUk9QX0VOCn0gdHlwZV9zY3IxX2lhbHVfc3VtMl9vcF9zZWxfZTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBMU1UgY29tbWFuZHMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvY2FscGFyYW0gU0NSMV9MU1VfQ01EX0FMTF9OVU1fRSAgID0gOTsKbG9jYWxwYXJhbSBTQ1IxX0xTVV9DTURfV0lEVEhfRSAgICAgPSAkY2xvZzIoU0NSMV9MU1VfQ01EX0FMTF9OVU1fRSk7CnR5cGVkZWYgZW51bSBsb2dpYyBbU0NSMV9MU1VfQ01EX1dJRFRIX0UtMTowXSB7CiAgICBTQ1IxX0xTVV9DTURfTk9ORSA9ICcwLAogICAgU0NSMV9MU1VfQ01EX0xCLAogICAgU0NSMV9MU1VfQ01EX0xILAogICAgU0NSMV9MU1VfQ01EX0xXLAogICAgU0NSMV9MU1VfQ01EX0xCVSwKICAgIFNDUjFfTFNVX0NNRF9MSFUsCiAgICBTQ1IxX0xTVV9DTURfU0IsCiAgICBTQ1IxX0xTVV9DTURfU0gsCiAgICBTQ1IxX0xTVV9DTURfU1cKfSB0eXBlX3NjcjFfbHN1X2NtZF9zZWxfZTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBDU1Igb3BlcmFuZHMKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvY2FscGFyYW0gU0NSMV9DU1JfT1BfQUxMX05VTV9FICAgPSAyOwpsb2NhbHBhcmFtIFNDUjFfQ1NSX09QX1dJRFRIX0UgICAgID0gJGNsb2cyKFNDUjFfQ1NSX09QX0FMTF9OVU1fRSk7CnR5cGVkZWYgZW51bSBsb2dpYyBbU0NSMV9DU1JfT1BfV0lEVEhfRS0xOjBdIHsKICAgIFNDUjFfQ1NSX09QX0lNTSwKICAgIFNDUjFfQ1NSX09QX1JFRwp9IHR5cGVfc2NyMV9jc3Jfb3Bfc2VsX2U7CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQ1NSIGNvbW1hbmRzCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpsb2NhbHBhcmFtIFNDUjFfQ1NSX0NNRF9BTExfTlVNX0UgICA9IDQ7CmxvY2FscGFyYW0gU0NSMV9DU1JfQ01EX1dJRFRIX0UgICAgID0gJGNsb2cyKFNDUjFfQ1NSX0NNRF9BTExfTlVNX0UpOwp0eXBlZGVmIGVudW0gbG9naWMgW1NDUjFfQ1NSX0NNRF9XSURUSF9FLTE6MF0gewogICAgU0NSMV9DU1JfQ01EX05PTkUgPSAnMCwKICAgIFNDUjFfQ1NSX0NNRF9XUklURSwKICAgIFNDUjFfQ1NSX0NNRF9TRVQsCiAgICBTQ1IxX0NTUl9DTURfQ0xFQVIKfSB0eXBlX3NjcjFfY3NyX2NtZF9zZWxfZTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBNUFJGIHJkIHdyaXRlYmFjayBzb3VyY2UKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvY2FscGFyYW0gU0NSMV9SRF9XQl9BTExfTlVNX0UgPSA3Owpsb2NhbHBhcmFtIFNDUjFfUkRfV0JfV0lEVEhfRSAgID0gJGNsb2cyKFNDUjFfUkRfV0JfQUxMX05VTV9FKTsKdHlwZWRlZiBlbnVtIGxvZ2ljIFtTQ1IxX1JEX1dCX1dJRFRIX0UtMTowXSB7CiAgICBTQ1IxX1JEX1dCX05PTkUgPSAnMCwKICAgIFNDUjFfUkRfV0JfSUFMVSwgICAgICAgICAgICAvLyBJQUxVIG1haW4gcmVzdWx0CiAgICBTQ1IxX1JEX1dCX1NVTTIsICAgICAgICAgICAgLy8gSUFMVSBTVU0yIHJlc3VsdCAoQVVJUEMpCiAgICBTQ1IxX1JEX1dCX0lNTSwgICAgICAgICAgICAgLy8gTFVJCiAgICBTQ1IxX1JEX1dCX0lOQ19QQywgICAgICAgICAgLy8gSkFMKFIpCiAgICBTQ1IxX1JEX1dCX0xTVSwgICAgICAgICAgICAgLy8gTG9hZCBmcm9tIERNRU0KICAgIFNDUjFfUkRfV0JfQ1NSICAgICAgICAgICAgICAvLyBSZWFkIENTUgp9IHR5cGVfc2NyMV9yZF93Yl9zZWxfZTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBJRFUgdG8gRVhVIGZ1bGwgY29tbWFuZCBzdHJ1Y3R1cmUKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvY2FscGFyYW0gU0NSMV9HUFJfRklFTERfV0lEVEggPSA1OwoKdHlwZWRlZiBzdHJ1Y3QgcGFja2VkIHsKICAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyX3J2YzsgICAgICAvLyB1c2VkIHdpdGggYSBkaWZmZXJlbnQgbWVhbmluZyBmb3IgSUZVIGFjY2VzcyBmYXVsdCBleGNlcHRpb24KICAgIHR5cGVfc2NyMV9pYWx1X29wX3NlbF9lICAgICAgICAgICAgIGlhbHVfb3A7CiAgICB0eXBlX3NjcjFfaWFsdV9jbWRfc2VsX2UgICAgICAgICAgICBpYWx1X2NtZDsKICAgIHR5cGVfc2NyMV9pYWx1X3N1bTJfb3Bfc2VsX2UgICAgICAgIHN1bTJfb3A7CiAgICB0eXBlX3NjcjFfbHN1X2NtZF9zZWxfZSAgICAgICAgICAgICBsc3VfY21kOwogICAgdHlwZV9zY3IxX2Nzcl9vcF9zZWxfZSAgICAgICAgICAgICAgY3NyX29wOwogICAgdHlwZV9zY3IxX2Nzcl9jbWRfc2VsX2UgICAgICAgICAgICAgY3NyX2NtZDsKICAgIHR5cGVfc2NyMV9yZF93Yl9zZWxfZSAgICAgICAgICAgICAgIHJkX3diX3NlbDsKICAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXBfcmVxOwogICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3JlcTsKICAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1yZXRfcmVxOwogICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVuY2VpX3JlcTsKICAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdmaV9yZXE7CiAgICBsb2dpYyBbU0NSMV9HUFJfRklFTERfV0lEVEgtMTowXSAgICByczFfYWRkcjsgICAgICAgLy8gYWxzbyB1c2VkIGFzIHppbW0gZm9yIENTUlJ4SSBpbnN0cnVjdGlvbnMKICAgIGxvZ2ljIFtTQ1IxX0dQUl9GSUVMRF9XSURUSC0xOjBdICAgIHJzMl9hZGRyOwogICAgbG9naWMgW1NDUjFfR1BSX0ZJRUxEX1dJRFRILTE6MF0gICAgcmRfYWRkcjsKICAgIGxvZ2ljIFtgU0NSMV9YTEVOLTE6MF0gICAgICAgICAgICAgIGltbTsgICAgICAgICAgICAvLyB1c2VkIGFzIHtmdW5jdDMsIENTUiBhZGRyZXNzfSBmb3IgQ1NSIGluc3RydWN0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgYXMgaW5zdHJ1Y3Rpb24gZmllbGQgZm9yIGlsbGVnYWwgaW5zdHJ1Y3Rpb24gZXhjZXB0aW9uCiAgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfcmVxOwogICAgdHlwZV9zY3IxX2V4Y19jb2RlX2UgICAgICAgICAgICAgICAgZXhjX2NvZGU7Cn0gdHlwZV9zY3IxX2V4dV9jbWRfczsKCmBlbmRpZiAvLyBTQ1IxX1JJU0NWX0lTQV9ERUNPRElOR19TVkgKCg==