LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIFN05HVibGkgRmF2ZXJnZXMgLSA8d3d3LnN0YXVibGkuY29tPgogKiBQaWVycmUgQVVCRVJUICBwLmF1YmVydEBzdGF1YmxpLmNvbQogKgogKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogKiBwcm9qZWN0LgogKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAogKiBNQSAwMjExMS0xMzA3IFVTQQogKi8KLyogVmlkZW8gc3VwcG9ydCBmb3IgdGhlIEVDQ1ggZGF1Z2h0ZXIgYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwoKCiNpbmNsdWRlIDxjb21tb24uaD4KI2luY2x1ZGUgPGNvbmZpZy5oPgoKI2lmZGVmIENPTkZJR19WSURFT19TRUQxMzgwNgojaW5jbHVkZSA8c2VkMTM4MDYuaD4KCgoKLyogU2NyZWVuIGNvbmZpZ3VyYXRpb25zOiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFNEMTM4MDYgZGVwZW5kcyBvbgogICBzY3JlZW4gYW5kIG9uIGRpc3BsYXkgbW9kZS4gV2UgaGFuZGxlIG9ubHkgOGJwcCBhbmQgMTYgYnBwIG1vZGVzICAgICAgICAgICovCgovKiBFQ0NYIGJvYXJkIGlzIHN1cHBsaWVkIHdpdGggYSBORUMgTkw2NDQ4QkMyMCBzY3JlZW4gICAgICAgICAgICAgICAgICAgICAgICovCiNpZmRlZiBDT05GSUdfTkVDX05MNjQ0OEJDMjAKI2RlZmluZSBESVNQTEFZX1dJRFRIICAgNjQwCiNkZWZpbmUgRElTUExBWV9IRUlHSFQgIDQ4MAoKI2lmZGVmIENPTkZJR19WSURFT19TRUQxMzgwNl84QlBQCnN0YXRpYyBjb25zdCBTMURfUkVHUyBpbml0X3JlZ3MgW10gPSAKewogICAgezB4MDAwMSwweDAwfSwgICAvLyBNaXNjZWxsYW5lb3VzIFJlZ2lzdGVyCiAgICB7MHgwMUZDLDB4MDB9LCAgIC8vIERpc3BsYXkgTW9kZSBSZWdpc3RlcgogICAgezB4MDAwNCwweDFifSwgICAvLyBHZW5lcmFsIElPIFBpbnMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAwCiAgICB7MHgwMDA1LDB4MDB9LCAgIC8vIEdlbmVyYWwgSU8gUGlucyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEKICAgIHsweDAwMDgsMHhlNX0sICAgLy8gR2VuZXJhbCBJTyBQaW5zIENvbnRyb2wgUmVnaXN0ZXIgMAogICAgezB4MDAwOSwweDFmfSwgICAvLyBHZW5lcmFsIElPIFBpbnMgQ29udHJvbCBSZWdpc3RlciAxCiAgICB7MHgwMDEwLDB4MDJ9LCAgIC8vIE1lbW9yeSBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDE0LDB4MTB9LCAgIC8vIExDRCBQaXhlbCBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDE4LDB4MDJ9LCAgIC8vIENSVC9UViBQaXhlbCBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDFDLDB4MDJ9LCAgIC8vIE1lZGlhUGx1ZyBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDFFLDB4MDF9LCAgIC8vIENQVSBUbyBNZW1vcnkgV2FpdCBTdGF0ZSBTZWxlY3QgUmVnaXN0ZXIKICAgIHsweDAwMjEsMHgwNH0sICAgLy8gRFJBTSBSZWZyZXNoIFJhdGUgUmVnaXN0ZXIKICAgIHsweDAwMkEsMHgwMH0sICAgLy8gRFJBTSBUaW1pbmdzIENvbnRyb2wgUmVnaXN0ZXIgMAogICAgezB4MDAyQiwweDAxfSwgICAvLyBEUkFNIFRpbWluZ3MgQ29udHJvbCBSZWdpc3RlciAxCiAgICB7MHgwMDIwLDB4ODB9LCAgIC8vIE1lbW9yeSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDMwLDB4MjV9LCAgIC8vIFBhbmVsIFR5cGUgUmVnaXN0ZXIKICAgIHsweDAwMzEsMHgwMH0sICAgLy8gTU9EIFJhdGUgUmVnaXN0ZXIKICAgIHsweDAwMzIsMHg0Rn0sICAgLy8gTENEIEhvcml6b250YWwgRGlzcGxheSBXaWR0aCBSZWdpc3RlcgogICAgezB4MDAzNCwweDEzfSwgICAvLyBMQ0QgSG9yaXpvbnRhbCBOb24tRGlzcGxheSBQZXJpb2QgUmVnaXN0ZXIKICAgIHsweDAwMzUsMHgwMX0sICAgLy8gVEZUIEZQTElORSBTdGFydCBQb3NpdGlvbiBSZWdpc3RlcgogICAgezB4MDAzNiwweDBCfSwgICAvLyBURlQgRlBMSU5FIFB1bHNlIFdpZHRoIFJlZ2lzdGVyCiAgICB7MHgwMDM4LDB4REZ9LCAgIC8vIExDRCBWZXJ0aWNhbCBEaXNwbGF5IEhlaWdodCBSZWdpc3RlciAwCiAgICB7MHgwMDM5LDB4MDF9LCAgIC8vIExDRCBWZXJ0aWNhbCBEaXNwbGF5IEhlaWdodCBSZWdpc3RlciAxCiAgICB7MHgwMDNBLDB4MkN9LCAgIC8vIExDRCBWZXJ0aWNhbCBOb24tRGlzcGxheSBQZXJpb2QgUmVnaXN0ZXIKICAgIHsweDAwM0IsMHgwMH0sICAgLy8gVEZUIEZQRlJBTUUgU3RhcnQgUG9zaXRpb24gUmVnaXN0ZXIKICAgIHsweDAwM0MsMHgwMX0sICAgLy8gVEZUIEZQRlJBTUUgUHVsc2UgV2lkdGggUmVnaXN0ZXIKICAgIHsweDAwNDAsMHgwM30sICAgLy8gTENEIERpc3BsYXkgTW9kZSBSZWdpc3RlcgogICAgezB4MDA0MSwweDAyfSwgICAvLyBMQ0QgTWlzY2VsbGFuZW91cyBSZWdpc3RlcgogICAgezB4MDA0MiwweDAwfSwgICAvLyBMQ0QgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDAKICAgIHsweDAwNDMsMHgwMH0sICAgLy8gTENEIERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAxCiAgICB7MHgwMDQ0LDB4MDB9LCAgIC8vIExDRCBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMgogICAgezB4MDA0NiwweDQwfSwgICAvLyBMQ0QgTWVtb3J5IEFkZHJlc3MgT2Zmc2V0IFJlZ2lzdGVyIDAKICAgIHsweDAwNDcsMHgwMX0sICAgLy8gTENEIE1lbW9yeSBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAxCiAgICB7MHgwMDQ4LDB4MDB9LCAgIC8vIExDRCBQaXhlbCBQYW5uaW5nIFJlZ2lzdGVyCiAgICB7MHgwMDRBLDB4MDB9LCAgIC8vIExDRCBEaXNwbGF5IEZJRk8gSGlnaCBUaHJlc2hvbGQgQ29udHJvbCBSZWdpc3RlcgogICAgezB4MDA0QiwweDAwfSwgICAvLyBMQ0QgRGlzcGxheSBGSUZPIExvdyBUaHJlc2hvbGQgQ29udHJvbCBSZWdpc3RlcgogICAgezB4MDA1MCwweDRGfSwgICAvLyBDUlQvVFYgSG9yaXpvbnRhbCBEaXNwbGF5IFdpZHRoIFJlZ2lzdGVyCiAgICB7MHgwMDUyLDB4MTN9LCAgIC8vIENSVC9UViBIb3Jpem9udGFsIE5vbi1EaXNwbGF5IFBlcmlvZCBSZWdpc3RlcgogICAgezB4MDA1MywweDAxfSwgICAvLyBDUlQvVFYgSFJUQyBTdGFydCBQb3NpdGlvbiBSZWdpc3RlcgogICAgezB4MDA1NCwweDBCfSwgICAvLyBDUlQvVFYgSFJUQyBQdWxzZSBXaWR0aCBSZWdpc3RlcgogICAgezB4MDA1NiwweERGfSwgICAvLyBDUlQvVFYgVmVydGljYWwgRGlzcGxheSBIZWlnaHQgUmVnaXN0ZXIgMAogICAgezB4MDA1NywweDAxfSwgICAvLyBDUlQvVFYgVmVydGljYWwgRGlzcGxheSBIZWlnaHQgUmVnaXN0ZXIgMQogICAgezB4MDA1OCwweDJCfSwgICAvLyBDUlQvVFYgVmVydGljYWwgTm9uLURpc3BsYXkgUGVyaW9kIFJlZ2lzdGVyCiAgICB7MHgwMDU5LDB4MDl9LCAgIC8vIENSVC9UViBWUlRDIFN0YXJ0IFBvc2l0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDVBLDB4MDF9LCAgIC8vIENSVC9UViBWUlRDIFB1bHNlIFdpZHRoIFJlZ2lzdGVyCiAgICB7MHgwMDVCLDB4MDB9LCAgIC8vIFRWIE91dHB1dCBDb250cm9sIFJlZ2lzdGVyCiAgICB7MHgwMDYwLDB4MDN9LCAgIC8vIENSVC9UViBEaXNwbGF5IE1vZGUgUmVnaXN0ZXIKICAgIHsweDAwNjIsMHgwMH0sICAgLy8gQ1JUL1RWIERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAwCiAgICB7MHgwMDYzLDB4MDB9LCAgIC8vIENSVC9UViBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMQogICAgezB4MDA2NCwweDAwfSwgICAvLyBDUlQvVFYgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDIKICAgIHsweDAwNjYsMHg0MH0sICAgLy8gQ1JUL1RWIE1lbW9yeSBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAwCiAgICB7MHgwMDY3LDB4MDF9LCAgIC8vIENSVC9UViBNZW1vcnkgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMQogICAgezB4MDA2OCwweDAwfSwgICAvLyBDUlQvVFYgUGl4ZWwgUGFubmluZyBSZWdpc3RlcgogICAgezB4MDA2QSwweDAwfSwgICAvLyBDUlQvVFYgRGlzcGxheSBGSUZPIEhpZ2ggVGhyZXNob2xkIENvbnRyb2wgUmVnaXN0ZXIKICAgIHsweDAwNkIsMHgwMH0sICAgLy8gQ1JUL1RWIERpc3BsYXkgRklGTyBMb3cgVGhyZXNob2xkIENvbnRyb2wgUmVnaXN0ZXIKICAgIHsweDAwNzAsMHgwMH0sICAgLy8gTENEIEluay9DdXJzb3IgQ29udHJvbCBSZWdpc3RlcgogICAgezB4MDA3MSwweDAwfSwgICAvLyBMQ0QgSW5rL0N1cnNvciBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyCiAgICB7MHgwMDcyLDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWCBQb3NpdGlvbiBSZWdpc3RlciAwCiAgICB7MHgwMDczLDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWCBQb3NpdGlvbiBSZWdpc3RlciAxCiAgICB7MHgwMDc0LDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWSBQb3NpdGlvbiBSZWdpc3RlciAwCiAgICB7MHgwMDc1LDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWSBQb3NpdGlvbiBSZWdpc3RlciAxCiAgICB7MHgwMDc2LDB4MDB9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIEJsdWUgQ29sb3IgMCBSZWdpc3RlcgogICAgezB4MDA3NywweDAwfSwgICAvLyBMQ0QgSW5rL0N1cnNvciBHcmVlbiBDb2xvciAwIFJlZ2lzdGVyCiAgICB7MHgwMDc4LDB4MDB9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIFJlZCBDb2xvciAwIFJlZ2lzdGVyCiAgICB7MHgwMDdBLDB4MUZ9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIEJsdWUgQ29sb3IgMSBSZWdpc3RlcgogICAgezB4MDA3QiwweDNGfSwgICAvLyBMQ0QgSW5rL0N1cnNvciBHcmVlbiBDb2xvciAxIFJlZ2lzdGVyCiAgICB7MHgwMDdDLDB4MUZ9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIFJlZCBDb2xvciAxIFJlZ2lzdGVyCiAgICB7MHgwMDdFLDB4MDB9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIEZJRk8gVGhyZXNob2xkIFJlZ2lzdGVyCiAgICB7MHgwMDgwLDB4MDB9LCAgIC8vIENSVC9UViBJbmsvQ3Vyc29yIENvbnRyb2wgUmVnaXN0ZXIKICAgIHsweDAwODEsMHgwMH0sICAgLy8gQ1JUL1RWIEluay9DdXJzb3IgU3RhcnQgQWRkcmVzcyBSZWdpc3RlcgogICAgezB4MDA4MiwweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFggUG9zaXRpb24gUmVnaXN0ZXIgMAogICAgezB4MDA4MywweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFggUG9zaXRpb24gUmVnaXN0ZXIgMQogICAgezB4MDA4NCwweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFkgUG9zaXRpb24gUmVnaXN0ZXIgMAogICAgezB4MDA4NSwweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFkgUG9zaXRpb24gUmVnaXN0ZXIgMQogICAgezB4MDA4NiwweDAwfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBCbHVlIENvbG9yIDAgUmVnaXN0ZXIKICAgIHsweDAwODcsMHgwMH0sICAgLy8gQ1JUL1RWIEluay9DdXJzb3IgR3JlZW4gQ29sb3IgMCBSZWdpc3RlcgogICAgezB4MDA4OCwweDAwfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBSZWQgQ29sb3IgMCBSZWdpc3RlcgogICAgezB4MDA4QSwweDFGfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBCbHVlIENvbG9yIDEgUmVnaXN0ZXIKICAgIHsweDAwOEIsMHgzRn0sICAgLy8gQ1JUL1RWIEluay9DdXJzb3IgR3JlZW4gQ29sb3IgMSBSZWdpc3RlcgogICAgezB4MDA4QywweDFGfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBSZWQgQ29sb3IgMSBSZWdpc3RlcgogICAgezB4MDA4RSwweDAwfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBGSUZPIFRocmVzaG9sZCBSZWdpc3RlcgogICAgezB4MDEwMCwweDAwfSwgICAvLyBCaXRCbHQgQ29udHJvbCBSZWdpc3RlciAwCiAgICB7MHgwMTAxLDB4MDB9LCAgIC8vIEJpdEJsdCBDb250cm9sIFJlZ2lzdGVyIDEKICAgIHsweDAxMDIsMHgwMH0sICAgLy8gQml0Qmx0IFJPUCBDb2RlL0NvbG9yIEV4cGFuc2lvbiBSZWdpc3RlcgogICAgezB4MDEwMywweDAwfSwgICAvLyBCaXRCbHQgT3BlcmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMTA0LDB4MDB9LCAgIC8vIEJpdEJsdCBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAwCiAgICB7MHgwMTA1LDB4MDB9LCAgIC8vIEJpdEJsdCBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAxCiAgICB7MHgwMTA2LDB4MDB9LCAgIC8vIEJpdEJsdCBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAyCiAgICB7MHgwMTA4LDB4MDB9LCAgIC8vIEJpdEJsdCBEZXN0aW5hdGlvbiBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDAKICAgIHsweDAxMDksMHgwMH0sICAgLy8gQml0Qmx0IERlc3RpbmF0aW9uIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMQogICAgezB4MDEwQSwweDAwfSwgICAvLyBCaXRCbHQgRGVzdGluYXRpb24gU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAyCiAgICB7MHgwMTBDLDB4MDB9LCAgIC8vIEJpdEJsdCBNZW1vcnkgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMAogICAgezB4MDEwRCwweDAwfSwgICAvLyBCaXRCbHQgTWVtb3J5IEFkZHJlc3MgT2Zmc2V0IFJlZ2lzdGVyIDEKICAgIHsweDAxMTAsMHgwMH0sICAgLy8gQml0Qmx0IFdpZHRoIFJlZ2lzdGVyIDAKICAgIHsweDAxMTEsMHgwMH0sICAgLy8gQml0Qmx0IFdpZHRoIFJlZ2lzdGVyIDEKICAgIHsweDAxMTIsMHgwMH0sICAgLy8gQml0Qmx0IEhlaWdodCBSZWdpc3RlciAwCiAgICB7MHgwMTEzLDB4MDB9LCAgIC8vIEJpdEJsdCBIZWlnaHQgUmVnaXN0ZXIgMQogICAgezB4MDExNCwweDAwfSwgICAvLyBCaXRCbHQgQmFja2dyb3VuZCBDb2xvciBSZWdpc3RlciAwCiAgICB7MHgwMTE1LDB4MDB9LCAgIC8vIEJpdEJsdCBCYWNrZ3JvdW5kIENvbG9yIFJlZ2lzdGVyIDEKICAgIHsweDAxMTgsMHgwMH0sICAgLy8gQml0Qmx0IEZvcmVncm91bmQgQ29sb3IgUmVnaXN0ZXIgMAogICAgezB4MDExOSwweDAwfSwgICAvLyBCaXRCbHQgRm9yZWdyb3VuZCBDb2xvciBSZWdpc3RlciAxCiAgICB7MHgwMUUwLDB4MDB9LCAgIC8vIExvb2stVXAgVGFibGUgTW9kZSBSZWdpc3RlcgogICAgezB4MDFFMiwweDAwfSwgICAvLyBMb29rLVVwIFRhYmxlIEFkZHJlc3MgUmVnaXN0ZXIKICAgIHsweDAxRTQsMHgwMH0sICAgLy8gTG9vay1VcCBUYWJsZSBEYXRhIFJlZ2lzdGVyCiAgICB7MHgwMUYwLDB4MTB9LCAgIC8vIFBvd2VyIFNhdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlcgogICAgezB4MDFGMSwweDAwfSwgICAvLyBQb3dlciBTYXZlIFN0YXR1cyBSZWdpc3RlcgogICAgezB4MDFGNCwweDAwfSwgICAvLyBDUFUtdG8tTWVtb3J5IEFjY2VzcyBXYXRjaGRvZyBUaW1lciBSZWdpc3RlcgogICAgezB4MDFGQywweDAxfSwgICAvLyBEaXNwbGF5IE1vZGUgUmVnaXN0ZXIKICAgIHswLCAwfQp9OwojZW5kaWYgLyogQ09ORklHX1ZJREVPX1NFRDEzODA2XzhCUFAgKi8KCiNpZmRlZiBDT05GSUdfVklERU9fU0VEMTM4MDZfMTZCUFAKCnN0YXRpYyBjb25zdCBTMURfUkVHUyBpbml0X3JlZ3MgW10gPSAKewogICAgezB4MDAwMSwweDAwfSwgICAvLyBNaXNjZWxsYW5lb3VzIFJlZ2lzdGVyCiAgICB7MHgwMUZDLDB4MDB9LCAgIC8vIERpc3BsYXkgTW9kZSBSZWdpc3RlcgogICAgezB4MDAwNCwweDFifSwgICAvLyBHZW5lcmFsIElPIFBpbnMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAwCiAgICB7MHgwMDA1LDB4MDB9LCAgIC8vIEdlbmVyYWwgSU8gUGlucyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDEKICAgIHsweDAwMDgsMHhlNX0sICAgLy8gR2VuZXJhbCBJTyBQaW5zIENvbnRyb2wgUmVnaXN0ZXIgMAogICAgezB4MDAwOSwweDFmfSwgICAvLyBHZW5lcmFsIElPIFBpbnMgQ29udHJvbCBSZWdpc3RlciAxCiAgICB7MHgwMDEwLDB4MDJ9LCAgIC8vIE1lbW9yeSBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDE0LDB4MTB9LCAgIC8vIExDRCBQaXhlbCBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDE4LDB4MDJ9LCAgIC8vIENSVC9UViBQaXhlbCBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDFDLDB4MDJ9LCAgIC8vIE1lZGlhUGx1ZyBDbG9jayBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDFFLDB4MDF9LCAgIC8vIENQVSBUbyBNZW1vcnkgV2FpdCBTdGF0ZSBTZWxlY3QgUmVnaXN0ZXIKICAgIHsweDAwMjEsMHgwNH0sICAgLy8gRFJBTSBSZWZyZXNoIFJhdGUgUmVnaXN0ZXIKICAgIHsweDAwMkEsMHgwMH0sICAgLy8gRFJBTSBUaW1pbmdzIENvbnRyb2wgUmVnaXN0ZXIgMAogICAgezB4MDAyQiwweDAxfSwgICAvLyBEUkFNIFRpbWluZ3MgQ29udHJvbCBSZWdpc3RlciAxCiAgICB7MHgwMDIwLDB4ODB9LCAgIC8vIE1lbW9yeSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDMwLDB4MjV9LCAgIC8vIFBhbmVsIFR5cGUgUmVnaXN0ZXIKICAgIHsweDAwMzEsMHgwMH0sICAgLy8gTU9EIFJhdGUgUmVnaXN0ZXIKICAgIHsweDAwMzIsMHg0Rn0sICAgLy8gTENEIEhvcml6b250YWwgRGlzcGxheSBXaWR0aCBSZWdpc3RlcgogICAgezB4MDAzNCwweDEzfSwgICAvLyBMQ0QgSG9yaXpvbnRhbCBOb24tRGlzcGxheSBQZXJpb2QgUmVnaXN0ZXIKICAgIHsweDAwMzUsMHgwMX0sICAgLy8gVEZUIEZQTElORSBTdGFydCBQb3NpdGlvbiBSZWdpc3RlcgogICAgezB4MDAzNiwweDBCfSwgICAvLyBURlQgRlBMSU5FIFB1bHNlIFdpZHRoIFJlZ2lzdGVyCiAgICB7MHgwMDM4LDB4REZ9LCAgIC8vIExDRCBWZXJ0aWNhbCBEaXNwbGF5IEhlaWdodCBSZWdpc3RlciAwCiAgICB7MHgwMDM5LDB4MDF9LCAgIC8vIExDRCBWZXJ0aWNhbCBEaXNwbGF5IEhlaWdodCBSZWdpc3RlciAxCiAgICB7MHgwMDNBLDB4MkN9LCAgIC8vIExDRCBWZXJ0aWNhbCBOb24tRGlzcGxheSBQZXJpb2QgUmVnaXN0ZXIKICAgIHsweDAwM0IsMHgwMH0sICAgLy8gVEZUIEZQRlJBTUUgU3RhcnQgUG9zaXRpb24gUmVnaXN0ZXIKICAgIHsweDAwM0MsMHgwMX0sICAgLy8gVEZUIEZQRlJBTUUgUHVsc2UgV2lkdGggUmVnaXN0ZXIKICAgIHsweDAwNDAsMHgwNX0sICAgLy8gTENEIERpc3BsYXkgTW9kZSBSZWdpc3RlcgogICAgezB4MDA0MSwweDAyfSwgICAvLyBMQ0QgTWlzY2VsbGFuZW91cyBSZWdpc3RlcgogICAgezB4MDA0MiwweDAwfSwgICAvLyBMQ0QgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDAKICAgIHsweDAwNDMsMHgwMH0sICAgLy8gTENEIERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAxCiAgICB7MHgwMDQ0LDB4MDB9LCAgIC8vIExDRCBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMgogICAgezB4MDA0NiwweDgwfSwgICAvLyBMQ0QgTWVtb3J5IEFkZHJlc3MgT2Zmc2V0IFJlZ2lzdGVyIDAKICAgIHsweDAwNDcsMHgwMn0sICAgLy8gTENEIE1lbW9yeSBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAxCiAgICB7MHgwMDQ4LDB4MDB9LCAgIC8vIExDRCBQaXhlbCBQYW5uaW5nIFJlZ2lzdGVyCiAgICB7MHgwMDRBLDB4MDB9LCAgIC8vIExDRCBEaXNwbGF5IEZJRk8gSGlnaCBUaHJlc2hvbGQgQ29udHJvbCBSZWdpc3RlcgogICAgezB4MDA0QiwweDAwfSwgICAvLyBMQ0QgRGlzcGxheSBGSUZPIExvdyBUaHJlc2hvbGQgQ29udHJvbCBSZWdpc3RlcgogICAgezB4MDA1MCwweDRGfSwgICAvLyBDUlQvVFYgSG9yaXpvbnRhbCBEaXNwbGF5IFdpZHRoIFJlZ2lzdGVyCiAgICB7MHgwMDUyLDB4MTN9LCAgIC8vIENSVC9UViBIb3Jpem9udGFsIE5vbi1EaXNwbGF5IFBlcmlvZCBSZWdpc3RlcgogICAgezB4MDA1MywweDAxfSwgICAvLyBDUlQvVFYgSFJUQyBTdGFydCBQb3NpdGlvbiBSZWdpc3RlcgogICAgezB4MDA1NCwweDBCfSwgICAvLyBDUlQvVFYgSFJUQyBQdWxzZSBXaWR0aCBSZWdpc3RlcgogICAgezB4MDA1NiwweERGfSwgICAvLyBDUlQvVFYgVmVydGljYWwgRGlzcGxheSBIZWlnaHQgUmVnaXN0ZXIgMAogICAgezB4MDA1NywweDAxfSwgICAvLyBDUlQvVFYgVmVydGljYWwgRGlzcGxheSBIZWlnaHQgUmVnaXN0ZXIgMQogICAgezB4MDA1OCwweDJCfSwgICAvLyBDUlQvVFYgVmVydGljYWwgTm9uLURpc3BsYXkgUGVyaW9kIFJlZ2lzdGVyCiAgICB7MHgwMDU5LDB4MDl9LCAgIC8vIENSVC9UViBWUlRDIFN0YXJ0IFBvc2l0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMDVBLDB4MDF9LCAgIC8vIENSVC9UViBWUlRDIFB1bHNlIFdpZHRoIFJlZ2lzdGVyCiAgICB7MHgwMDVCLDB4MDB9LCAgIC8vIFRWIE91dHB1dCBDb250cm9sIFJlZ2lzdGVyCiAgICB7MHgwMDYwLDB4MDV9LCAgIC8vIENSVC9UViBEaXNwbGF5IE1vZGUgUmVnaXN0ZXIKICAgIHsweDAwNjIsMHgwMH0sICAgLy8gQ1JUL1RWIERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAwCiAgICB7MHgwMDYzLDB4MDB9LCAgIC8vIENSVC9UViBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMQogICAgezB4MDA2NCwweDAwfSwgICAvLyBDUlQvVFYgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDIKICAgIHsweDAwNjYsMHg4MH0sICAgLy8gQ1JUL1RWIE1lbW9yeSBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAwCiAgICB7MHgwMDY3LDB4MDJ9LCAgIC8vIENSVC9UViBNZW1vcnkgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMQogICAgezB4MDA2OCwweDAwfSwgICAvLyBDUlQvVFYgUGl4ZWwgUGFubmluZyBSZWdpc3RlcgogICAgezB4MDA2QSwweDAwfSwgICAvLyBDUlQvVFYgRGlzcGxheSBGSUZPIEhpZ2ggVGhyZXNob2xkIENvbnRyb2wgUmVnaXN0ZXIKICAgIHsweDAwNkIsMHgwMH0sICAgLy8gQ1JUL1RWIERpc3BsYXkgRklGTyBMb3cgVGhyZXNob2xkIENvbnRyb2wgUmVnaXN0ZXIKICAgIHsweDAwNzAsMHgwMH0sICAgLy8gTENEIEluay9DdXJzb3IgQ29udHJvbCBSZWdpc3RlcgogICAgezB4MDA3MSwweDAwfSwgICAvLyBMQ0QgSW5rL0N1cnNvciBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyCiAgICB7MHgwMDcyLDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWCBQb3NpdGlvbiBSZWdpc3RlciAwCiAgICB7MHgwMDczLDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWCBQb3NpdGlvbiBSZWdpc3RlciAxCiAgICB7MHgwMDc0LDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWSBQb3NpdGlvbiBSZWdpc3RlciAwCiAgICB7MHgwMDc1LDB4MDB9LCAgIC8vIExDRCBDdXJzb3IgWSBQb3NpdGlvbiBSZWdpc3RlciAxCiAgICB7MHgwMDc2LDB4MDB9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIEJsdWUgQ29sb3IgMCBSZWdpc3RlcgogICAgezB4MDA3NywweDAwfSwgICAvLyBMQ0QgSW5rL0N1cnNvciBHcmVlbiBDb2xvciAwIFJlZ2lzdGVyCiAgICB7MHgwMDc4LDB4MDB9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIFJlZCBDb2xvciAwIFJlZ2lzdGVyCiAgICB7MHgwMDdBLDB4MUZ9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIEJsdWUgQ29sb3IgMSBSZWdpc3RlcgogICAgezB4MDA3QiwweDNGfSwgICAvLyBMQ0QgSW5rL0N1cnNvciBHcmVlbiBDb2xvciAxIFJlZ2lzdGVyCiAgICB7MHgwMDdDLDB4MUZ9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIFJlZCBDb2xvciAxIFJlZ2lzdGVyCiAgICB7MHgwMDdFLDB4MDB9LCAgIC8vIExDRCBJbmsvQ3Vyc29yIEZJRk8gVGhyZXNob2xkIFJlZ2lzdGVyCiAgICB7MHgwMDgwLDB4MDB9LCAgIC8vIENSVC9UViBJbmsvQ3Vyc29yIENvbnRyb2wgUmVnaXN0ZXIKICAgIHsweDAwODEsMHgwMH0sICAgLy8gQ1JUL1RWIEluay9DdXJzb3IgU3RhcnQgQWRkcmVzcyBSZWdpc3RlcgogICAgezB4MDA4MiwweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFggUG9zaXRpb24gUmVnaXN0ZXIgMAogICAgezB4MDA4MywweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFggUG9zaXRpb24gUmVnaXN0ZXIgMQogICAgezB4MDA4NCwweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFkgUG9zaXRpb24gUmVnaXN0ZXIgMAogICAgezB4MDA4NSwweDAwfSwgICAvLyBDUlQvVFYgQ3Vyc29yIFkgUG9zaXRpb24gUmVnaXN0ZXIgMQogICAgezB4MDA4NiwweDAwfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBCbHVlIENvbG9yIDAgUmVnaXN0ZXIKICAgIHsweDAwODcsMHgwMH0sICAgLy8gQ1JUL1RWIEluay9DdXJzb3IgR3JlZW4gQ29sb3IgMCBSZWdpc3RlcgogICAgezB4MDA4OCwweDAwfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBSZWQgQ29sb3IgMCBSZWdpc3RlcgogICAgezB4MDA4QSwweDFGfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBCbHVlIENvbG9yIDEgUmVnaXN0ZXIKICAgIHsweDAwOEIsMHgzRn0sICAgLy8gQ1JUL1RWIEluay9DdXJzb3IgR3JlZW4gQ29sb3IgMSBSZWdpc3RlcgogICAgezB4MDA4QywweDFGfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBSZWQgQ29sb3IgMSBSZWdpc3RlcgogICAgezB4MDA4RSwweDAwfSwgICAvLyBDUlQvVFYgSW5rL0N1cnNvciBGSUZPIFRocmVzaG9sZCBSZWdpc3RlcgogICAgezB4MDEwMCwweDAwfSwgICAvLyBCaXRCbHQgQ29udHJvbCBSZWdpc3RlciAwCiAgICB7MHgwMTAxLDB4MDB9LCAgIC8vIEJpdEJsdCBDb250cm9sIFJlZ2lzdGVyIDEKICAgIHsweDAxMDIsMHgwMH0sICAgLy8gQml0Qmx0IFJPUCBDb2RlL0NvbG9yIEV4cGFuc2lvbiBSZWdpc3RlcgogICAgezB4MDEwMywweDAwfSwgICAvLyBCaXRCbHQgT3BlcmF0aW9uIFJlZ2lzdGVyCiAgICB7MHgwMTA0LDB4MDB9LCAgIC8vIEJpdEJsdCBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAwCiAgICB7MHgwMTA1LDB4MDB9LCAgIC8vIEJpdEJsdCBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAxCiAgICB7MHgwMTA2LDB4MDB9LCAgIC8vIEJpdEJsdCBTb3VyY2UgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAyCiAgICB7MHgwMTA4LDB4MDB9LCAgIC8vIEJpdEJsdCBEZXN0aW5hdGlvbiBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDAKICAgIHsweDAxMDksMHgwMH0sICAgLy8gQml0Qmx0IERlc3RpbmF0aW9uIFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMQogICAgezB4MDEwQSwweDAwfSwgICAvLyBCaXRCbHQgRGVzdGluYXRpb24gU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAyCiAgICB7MHgwMTBDLDB4MDB9LCAgIC8vIEJpdEJsdCBNZW1vcnkgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMAogICAgezB4MDEwRCwweDAwfSwgICAvLyBCaXRCbHQgTWVtb3J5IEFkZHJlc3MgT2Zmc2V0IFJlZ2lzdGVyIDEKICAgIHsweDAxMTAsMHgwMH0sICAgLy8gQml0Qmx0IFdpZHRoIFJlZ2lzdGVyIDAKICAgIHsweDAxMTEsMHgwMH0sICAgLy8gQml0Qmx0IFdpZHRoIFJlZ2lzdGVyIDEKICAgIHsweDAxMTIsMHgwMH0sICAgLy8gQml0Qmx0IEhlaWdodCBSZWdpc3RlciAwCiAgICB7MHgwMTEzLDB4MDB9LCAgIC8vIEJpdEJsdCBIZWlnaHQgUmVnaXN0ZXIgMQogICAgezB4MDExNCwweDAwfSwgICAvLyBCaXRCbHQgQmFja2dyb3VuZCBDb2xvciBSZWdpc3RlciAwCiAgICB7MHgwMTE1LDB4MDB9LCAgIC8vIEJpdEJsdCBCYWNrZ3JvdW5kIENvbG9yIFJlZ2lzdGVyIDEKICAgIHsweDAxMTgsMHgwMH0sICAgLy8gQml0Qmx0IEZvcmVncm91bmQgQ29sb3IgUmVnaXN0ZXIgMAogICAgezB4MDExOSwweDAwfSwgICAvLyBCaXRCbHQgRm9yZWdyb3VuZCBDb2xvciBSZWdpc3RlciAxCiAgICB7MHgwMUUwLDB4MDF9LCAgIC8vIExvb2stVXAgVGFibGUgTW9kZSBSZWdpc3RlcgogICAgezB4MDFFMiwweDAwfSwgICAvLyBMb29rLVVwIFRhYmxlIEFkZHJlc3MgUmVnaXN0ZXIKICAgIHsweDAxRTQsMHgwMH0sICAgLy8gTG9vay1VcCBUYWJsZSBEYXRhIFJlZ2lzdGVyCiAgICB7MHgwMUYwLDB4MTB9LCAgIC8vIFBvd2VyIFNhdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlcgogICAgezB4MDFGMSwweDAwfSwgICAvLyBQb3dlciBTYXZlIFN0YXR1cyBSZWdpc3RlcgogICAgezB4MDFGNCwweDAwfSwgICAvLyBDUFUtdG8tTWVtb3J5IEFjY2VzcyBXYXRjaGRvZyBUaW1lciBSZWdpc3RlcgogICAgezB4MDFGQywweDAxfSwgICAvLyBEaXNwbGF5IE1vZGUgUmVnaXN0ZXIKICAgIHswLCAwfQp9OwoKI2VuZGlmIC8qIENPTkZJR19WSURFT19TRUQxMzgwNl8xNkJQUCAqLwojZW5kaWYgLyogQ09ORklHX05FQ19OTDY0NDhCQzIwICovCgoKCiNpZmRlZiBDT05GSUdfQ09OU09MRV9FWFRSQV9JTkZPCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIHZpZGVvX2dldF9pbmZvX3N0ciAtLSBzZXR1cCBhIGJvYXJkIHN0cmluZzogdHlwZSwgc3BlZWQsIGV0Yy4KICogbGluZV9udW1iZXI9IGxvY2F0aW9uIHRvIHBsYWNlIGluZm8gc3RyaW5nIGJlc2lkZSBsb2dvCiAqIGluZm89IGJ1ZmZlciBmb3IgaW5mbyBzdHJpbmcKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8Kdm9pZCB2aWRlb19nZXRfaW5mb19zdHIgKGludCBsaW5lX251bWJlciwgY2hhciAqaW5mbykKewogICAgaWYgKGxpbmVfbnVtYmVyID09IDEpIHsKICAgICAgICBzdHJjcHkgKGluZm8sICIgUlBYQ2xhc3NpYyBib2FyZCIpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaW5mbyBbMF0gPSAnXDAnOwogICAgfQoKfQojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogYm9hcmRfdmlkZW9faW5pdCAtLSBpbml0IGRlIGwnRVBTT04sIGNvbmZpZyBkdSBDUwogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwp1bnNpZ25lZCBpbnQgYm9hcmRfdmlkZW9faW5pdCAodm9pZCkKewogICAgdm9sYXRpbGUgaW1tYXBfdCAgICAgKmltbWFwICA9IChpbW1hcF90ICopQ0ZHX0lNTVI7CiAgICB2b2xhdGlsZSBtZW1jdGw4eHhfdCAqbWVtY3RsID0gJmltbWFwLT5pbV9tZW1jdGw7CgogICAgLyogUHJvZ3JhbSBFQ0NYIHJlZ2lzdGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAqKEVDQ1hfQ1NSMTIpIHw9IEVDQ1hfODYwOwogICAgKihFQ0NYX0NTUjgpIHw9IEVDQ1hfQkUgfCBFQ0NYX0NTMjsKICAgICooRUNDWF9DU1I4KSB8PSBFQ0NYX0VORVBTT047CiAgICAKICAgIG1lbWN0bC0+bWVtY19vcjIgPSBTRUQxMzgwNl9PUjsKICAgIG1lbWN0bC0+bWVtY19icjIgPSBTRUQxMzgwNl9SRUdfQUREUiB8IFNFRDEzODA2X0FDQ0VTOwoKICAgIHJldHVybiAoU0VEMTM4MDZfUkVHX0FERFIpOwp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIGJvYXJkX3ZhbGlkYXRlX3NjcmVlbiAtLSAKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8Kdm9pZCBib2FyZF92YWxpZGF0ZV9zY3JlZW4gKHVuc2lnbmVkIGludCBiYXNlKQp7CiAgICAvKiBBY3RpdmF0ZSB0aGUgcGFuZWwgYmlhcyBwb3dlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKShiYXNlICsgUkVHX0dQSU9fQ1RSTCkgPSAweDgwOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogYm9hcmRfZ2V0X3JlZ3MgLS0gCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCmNvbnN0IFMxRF9SRUdTICpib2FyZF9nZXRfcmVncyAodm9pZCkKewogICAgcmV0dXJuIChpbml0X3JlZ3MpOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogYm9hcmRfZ2V0X3dpZHRoIC0tIAogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwppbnQgYm9hcmRfZ2V0X3dpZHRoICh2b2lkKQp7CiAgICByZXR1cm4gKERJU1BMQVlfV0lEVEgpOwp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIGJvYXJkX2dldF9oZWlnaHQgLS0gCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCmludCBib2FyZF9nZXRfaGVpZ2h0ICh2b2lkKQp7CiAgICByZXR1cm4gKERJU1BMQVlfSEVJR0hUKTsKfQoKI2VuZGlmIC8qIENPTkZJR19WSURFT19TRUQxMzgwNiAqLwo=