IwojIE5PVEU6CiMgICBUaGlzIGZpbGUgaXMgTk9UIGxvYWRlZCBieSB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS4gIEl0IGp1c3Qgc2VydmVzIGFzCiMgICBhIHRlbXBsYXRlIGZvciB0aW1lem9uZXMgeW91IGNvdWxkIG5lZWQuICBTZWUgdGhlIGBEYXRlL1RpbWUgU3VwcG9ydCcKIyAgIGFwcGVuZGl4IGluIHRoZSBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiMKIyBzcmMvdGltZXpvbmUvdHpuYW1lcy9FdXJvcGUudHh0CiMKCkJTVCAgICAgIDM2MDAgRCAgIyBCcml0aXNoIFN1bW1lciBUaW1lCiAgICAgICAgICAgICAgICAgIyBCcmF6aWwgU3RhbmRhcmQgVGltZQogICAgICAgICAgICAgICAgICMgQmVyaW5nIFN1bW1lciBUaW1lCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9Mb25kb24pCkNFU1QgICAgIDcyMDAgRCAgIyBDZW50cmFsIEV1cm9wZSBTdW1tZXIgVGltZQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvQ2V1dGEpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9BbXN0ZXJkYW0pCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9BbmRvcnJhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQmVsZ3JhZGUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9CZXJsaW4pCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9CcnVzc2VscykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0J1ZGFwZXN0KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQ29wZW5oYWdlbikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0dpYnJhbHRhcikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0x1eGVtYm91cmcpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9NYWRyaWQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9NYWx0YSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL01vbmFjbykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL09zbG8pCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9QYXJpcykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1ByYWd1ZSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1JvbWUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9TdG9ja2hvbG0pCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9UaXJhbmUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9WYWR1eikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1ZpZW5uYSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1dhcnNhdykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1p1cmljaCkKQ0VUICAgICAgMzYwMCAgICAjIENlbnRyYWwgRXVyb3BlIFRpbWUKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL0FsZ2llcnMpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFmcmljYS9DZXV0YSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0Ftc3RlcmRhbSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0FuZG9ycmEpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9CZWxncmFkZSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0JlcmxpbikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0JydXNzZWxzKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQnVkYXBlc3QpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9Db3BlbmhhZ2VuKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvR2licmFsdGFyKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTHV4ZW1ib3VyZykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL01hZHJpZCkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL01hbHRhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTW9uYWNvKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvT3NsbykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1BhcmlzKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvUHJhZ3VlKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvUm9tZSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1N0b2NraG9sbSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1RpcmFuZSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1ZhZHV6KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVmllbm5hKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvV2Fyc2F3KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvWnVyaWNoKQpDRVREU1QgICA3MjAwIEQgICMgQ2VudHJhbCBFdXJvcGUgU3VtbWVyIFRpbWUKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL0NldXRhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQW1zdGVyZGFtKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQW5kb3JyYSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0JlbGdyYWRlKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQmVybGluKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQnJ1c3NlbHMpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9CdWRhcGVzdCkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0NvcGVuaGFnZW4pCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9HaWJyYWx0YXIpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9MdXhlbWJvdXJnKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTWFkcmlkKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTWFsdGEpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9Nb25hY28pCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9Pc2xvKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvUGFyaXMpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9QcmFndWUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9Sb21lKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvU3RvY2tob2xtKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVGlyYW5lKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVmFkdXopCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9WaWVubmEpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9XYXJzYXcpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9adXJpY2gpCkVFU1QgICAgMTA4MDAgRCAgIyBFYXN0LUVneXB0IFN1bW1lcnRpbWUKICAgICAgICAgICAgICAgICAjIEVhc3Rlcm4gRXVyb3BlIFN1bW1lciBUaW1lCiAgICAgICAgICAgICAgICAgIyAgICAgKEFmcmljYS9DYWlybykKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9BbW1hbikKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9CZWlydXQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvRGFtYXNjdXMpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvR2F6YSkKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9OaWNvc2lhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQXRoZW5zKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQnVjaGFyZXN0KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQ2hpc2luYXUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9IZWxzaW5raSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0lzdGFuYnVsKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvS2FsaW5pbmdyYWQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9LaWV2KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTWluc2spCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9SaWdhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvU2ltZmVyb3BvbCkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1NvZmlhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVGFsbGlubikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1V6aGdvcm9kKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVmlsbml1cykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1phcG9yb3poeWUpCkVFVCAgICAgIDcyMDAgICAgIyBFYXN0LUVneXB0IFRpbWUKICAgICAgICAgICAgICAgICAjIEVhc3Rlcm4gRXVyb3BlIFRpbWUKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL0NhaXJvKQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvVHJpcG9saSkKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9BbW1hbikKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9CZWlydXQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvRGFtYXNjdXMpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvR2F6YSkKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9OaWNvc2lhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQXRoZW5zKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQnVjaGFyZXN0KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQ2hpc2luYXUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9IZWxzaW5raSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0lzdGFuYnVsKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvS2FsaW5pbmdyYWQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9LaWV2KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTWluc2spCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9SaWdhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvU2ltZmVyb3BvbCkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1NvZmlhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVGFsbGlubikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1V6aGdvcm9kKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVmlsbml1cykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1phcG9yb3poeWUpCkVFVERTVCAgMTA4MDAgRCAgIyBFYXN0LUVneXB0IFN1bW1lcnRpbWUKICAgICAgICAgICAgICAgICAjIEVhc3Rlcm4gRXVyb3BlIFN1bW1lciBUaW1lCiAgICAgICAgICAgICAgICAgIyAgICAgKEFmcmljYS9DYWlybykKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9BbW1hbikKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9CZWlydXQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvRGFtYXNjdXMpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvR2F6YSkKICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9OaWNvc2lhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQXRoZW5zKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQnVjaGFyZXN0KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvQ2hpc2luYXUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9IZWxzaW5raSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0lzdGFuYnVsKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvS2FsaW5pbmdyYWQpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9LaWV2KQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTWluc2spCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9SaWdhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvU2ltZmVyb3BvbCkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1NvZmlhKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVGFsbGlubikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1V6aGdvcm9kKQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvVmlsbml1cykKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1phcG9yb3poeWUpCkdNVCAgICAgICAgIDAgICAgIyBHcmVlbndpY2ggTWVhbiBUaW1lCiAgICAgICAgICAgICAgICAgIyAgICAgKEFmcmljYS9BYmlkamFuKQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvQmFtYWtvKQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvQmFuanVsKQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvQmlzc2F1KQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvQ29uYWtyeSkKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL0Rha2FyKQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvTG9tZSkKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL01vbnJvdmlhKQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvTm91YWtjaG90dCkKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL091YWdhZG91Z291KQogICAgICAgICAgICAgICAgICMgICAgIChBZnJpY2EvU2FvX1RvbWUpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFtZXJpY2EvRGFubWFya3NoYXZuKQogICAgICAgICAgICAgICAgICMgICAgIChBdGxhbnRpYy9SZXlramF2aWspCiAgICAgICAgICAgICAgICAgIyAgICAgKEF0bGFudGljL1N0X0hlbGVuYSkKICAgICAgICAgICAgICAgICAjICAgICAoRXRjL0dNVCkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0R1YmxpbikKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0xvbmRvbikKIyBDT05GTElDVCEgSVNUIGlzIG5vdCB1bmlxdWUKIyBPdGhlciB0aW1lem9uZXM6CiMgLSBJU1Q6IEluZGlhbiBTdGFuZGFyZCBUaW1lIChBc2lhKQojIC0gSVNUOiBJc3JhZWwgU3RhbmRhcmQgVGltZSAoQXNpYSkKSVNUICAgICAgMzYwMCBEICAjIElyaXNoIFN1bW1lciBUaW1lCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9EdWJsaW4pCk1FU1QgICAgIDcyMDAgRCAgIyBNaWRkbGUgRXVyb3BlIFN1bW1lciBUaW1lIChub3QgaW4gemljKQpNRVQgICAgICAzNjAwICAgICMgTWlkZGxlIEV1cm9wZSBUaW1lIChub3QgaW4gemljKQpNRVREU1QgICA3MjAwIEQgICMgTWlkZGxlIEV1cm9wZSBTdW1tZXIgVGltZSAobm90IGluIHppYykKTUVaICAgICAgMzYwMCAgICAjIE1pdHRlbGV1cm9w5GlzY2hlIFplaXQgKEdlcm1hbikgKG5vdCBpbiB6aWMpCk1TRCAgICAgMTQ0MDAgRCAgIyBNb3Njb3cgRGF5bGlnaHQgVGltZQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvTW9zY293KQpNU0sgICAgIDEwODAwICAgICMgTW9zY293IFRpbWUKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL01vc2NvdykKU0FNU1QgICAxODAwMCBEICAjIFNhbWFyYSBTdW1tZXIgVGltZQogICAgICAgICAgICAgICAgICMgICAgIChFdXJvcGUvU2FtYXJhKQpTQU1UICAgIDE0NDAwICAgICMgU2FtYXJhIFRpbWUKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL1NhbWFyYSkKV0VTVCAgICAgMzYwMCBEICAjIFdlc3Rlcm4gRXVyb3BlIFN1bW1lciBUaW1lCiAgICAgICAgICAgICAgICAgIyAgICAgKEFmcmljYS9DYXNhYmxhbmNhKQogICAgICAgICAgICAgICAgICMgICAgIChBdGxhbnRpYy9DYW5hcnkpCiAgICAgICAgICAgICAgICAgIyAgICAgKEF0bGFudGljL0ZhZXJvZSkKICAgICAgICAgICAgICAgICAjICAgICAoQXRsYW50aWMvTWFkZWlyYSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0xpc2JvbikKV0VUICAgICAgICAgMCAgICAjIFdlc3Rlcm4gRXVyb3BlIFRpbWUKICAgICAgICAgICAgICAgICAjICAgICAoQWZyaWNhL0Nhc2FibGFuY2EpCiAgICAgICAgICAgICAgICAgIyAgICAgKEFmcmljYS9FbF9BYWl1bikKICAgICAgICAgICAgICAgICAjICAgICAoQXRsYW50aWMvQ2FuYXJ5KQogICAgICAgICAgICAgICAgICMgICAgIChBdGxhbnRpYy9GYWVyb2UpCiAgICAgICAgICAgICAgICAgIyAgICAgKEF0bGFudGljL01hZGVpcmEpCiAgICAgICAgICAgICAgICAgIyAgICAgKEV1cm9wZS9MaXNib24pCldFVERTVCAgIDM2MDAgRCAgIyBXZXN0ZXJuIEV1cm9wZSBTdW1tZXIgVGltZQogICAgICAgICAgICAgICAgICMgICAgIChBdGxhbnRpYy9DYW5hcnkpCiAgICAgICAgICAgICAgICAgIyAgICAgKEF0bGFudGljL0ZhZXJvZSkKICAgICAgICAgICAgICAgICAjICAgICAoQXRsYW50aWMvTWFkZWlyYSkKICAgICAgICAgICAgICAgICAjICAgICAoRXVyb3BlL0xpc2JvbikK