LyoKICogIFRFU1QgU1VJVEUgRk9SIE1CL1dDIEZVTkNUSU9OUyBJTiBDTElCUkFSWQogKgogKgkgRklMRToJZGF0X3N3c2NhbmYuYwogKgogKgkgU1dTQ0FORjogIGludAlzd3NjYW5mIChjb25zdCB3Y2hhcl90ICpzLCBjb25zdCB3Y2hhcl90ICpmbXQsIC4uLik7CiAqLwoKCiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlICJ0c3RfdHlwZXMuaCIKI2luY2x1ZGUgInRnbl9sb2NkZWYuaCIKCgpUU1RfU1dTQ0FORiB0c3Rfc3dzY2FuZl9sb2MgW10gPQp7CiAgewogICAgeyBUc3dzY2FuZiwgVFNUX0xPQ19kZSB9LAogICAgewogICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAwMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgIHsgeyB7CgkweDAwMkQsIDB4MDAzMSwJCTB4MDAzQSwJICAgLyogJWQ6IC0xICAgKi8KCTB4MDAzMiwJCQkweDAwM0EsCSAgIC8qICV1OiAgMiAgICovCgkweDAwMzMsIDB4MDAyQywgMHgwMDMzLCAweDAwM0EsCSAgIC8qICVmOiAgMy4zICovCgkweDAwRTQsCQkJMHgwMDNBLAkgICAvKiAlYzogJ+QnICAqLwoJMHgwMEM0LCAweDAwREMsIDB4MDAwMCwgMHgwMDAwLAkgICAvKiAlczogIsTcIiAqLwogICAgICB9LAoJICBMIiVkOiV1OiVmOiVjOiVzIiwgMAogICAgICB9LAoJeyAvKiBUaGUgZmllbGRzIGFyZTogZXJyX3ZhbCwgcmV0X2ZsYWcsIHJldF92YWwsCgkgICAgIHZhbF9pbnQsIHZhbF91bnMsIHZhbF9mbHQsIHZhbF9jLCB2YWxfcywgdmFsX1MuICAqLwoJICAwLDEsNSwKCSAgLTEsIDIsIDMuMywgJ+QnLCAixNwiLCB7IDB4MDAwMCwgfSwKCX0sCiAgICAgIH0sCiAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgeyB7IHsKCTB4MDBFNCwgMHgwMEM0LCAweDAwMDAJCSAgICAgICAvKiAi5MQiICovCiAgICAgIH0sCgkgIEwiJWxjIiwgJ0MnCiAgICAgIH0sCgl7IDAsMSwxLAoJICAwLDAsMCwwLCIiLCB7IDB4MDBFNCwgMHgwMDAwIH0sCgl9LAogICAgICB9LAogICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAwMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgIHsgeyB7CgkweDAwRTQsIDB4MDBDNCwgMHgwMDAwCQkgICAgICAgLyogIuTEIiAqLwogICAgICB9LAoJICBMIiVscyIsICdTJwogICAgICB9LAoJeyAwLDEsMSwKCSAgMCwwLDAsMCwiIiwgeyAweDAwRTQsIDB4MDBDNCwgMHgwMDAwIH0sCgl9LAogICAgICB9LAogICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAwNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgIC8qIDxOT19XQUlWRVI+IHggMiAqLwogICAgICB7IHsgewoJMHgwMEU0LCAweDAwQzQsIDB4MDAwMAkJICAgICAgIC8qICLkxCIgKi8KICAgICAgfSwKCSAgTCIxJWQ6MiVkOjMlZDo0JWQ6NSVkOjYlZDo3JWQ6OCVkOjklZCIsIDAKICAgICAgfSwKCXsgMCwxLDAsCgkgIDAsMCwwLDAsIiIsIHsgMHgwMDAwIH0sCgl9LAogICAgICB9LAogICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgIHsgLmlzX2xhc3QgPSAxfQkvKiBMYXN0IGVsZW1lbnQuICAqLwogICAgfQogIH0sCiAgewogICAgeyBUc3dzY2FuZiwgVFNUX0xPQ19lblVTIH0sCiAgICB7CiAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgeyB7IHsgMHgwMDJELCAweDAwMzEsCQkJCQkgICAgMHgwMDNBLAoJICAgIDB4MDAzMiwJCQkJCQkgICAgMHgwMDNBLAoJICAgIDB4MDAzNSwgMHgwMDM0LCAweDAwMkUsIDB4MDAzMywgMHgwMDQ1LCAweDAwMkQsIDB4MDAzMSwgMHgwMDNBLAoJICAgIDB4MDA0MSwJCQkJCQkgICAgMHgwMDNBLAoJICAgIDB4MDA2MSwgMHgwMDYyLCAweDAwMDAsCQkJCSAgICAweDAwMDAsCiAgICAgIH0sCgkgIEwiJWQ6JXU6JWY6JWM6JXMiLCAwCiAgICAgIH0sCgl7IDAsMSw1LAoJICAtMSwgMiwgNS40MywgJ0EnLCAiYWIiLCB7IDB4MDAwMCB9LAoJfSwKICAgICAgfSwKICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gMDIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgICAvKiA8Tk9fV0FJVkVSPiB4IDIgKi8KICAgICAgeyB7IHsKCTB4MDA2MywgMHgwMDY0LCAweDAwMDAKICAgICAgfSwKCSAgTCIlQyIsICdDJwogICAgICB9LAoJeyAwLDEsMSwKCSAgMCwwLDAsMCwiIiwgeyAweDAwNjMsIDB4MDAwMCB9LAoJfSwKICAgICAgfSwKICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gMDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgICB7IHsgewoJMHgwMDYzLCAweDAwNjQsIDB4MDAwMAogICAgICB9LAoJICBMIiVTIiwgJ1MnCiAgICAgIH0sCgl7IDAsMSwxLAoJICAwLDAsMCwwLCIiLCB7IDB4MDA2MywgMHgwMDY0LCAweDAwMDAgfSwKCX0sCiAgICAgIH0sCiAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgeyAuaXNfbGFzdCA9IDF9CS8qIExhc3QgZWxlbWVudC4gICovCiAgICB9CiAgfSwKICB7CiAgICB7IFRzd3NjYW5mLCBUU1RfTE9DX2V1Y0pQIH0sCiAgICB7CiAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgeyB7IHsgMHgwMDJELCAweDAwMzEsCSAgICAweDAwM0EsCgkgICAgMHgwMDMyLAkJICAgIDB4MDAzQSwKCSAgICAweDAwMzMsIDB4MDAyRSwgMHgwMDMzLCAweDAwM0EsCgkgICAgMHgwMDYyLAkJICAgIDB4MDAzQSwKCSAgICAweDAwNjEsIDB4MDA2MiwgMHgwMDAwLCAweDAwMDAsCiAgICAgIH0sCgkgIEwiJWQ6JXU6JWY6JWM6JXMiLCAwCiAgICAgIH0sCgl7IDAsMSw1LAoJICAtMSwgMiwgMy4zLCAnYicsICJhYiIsIHsgMHgwMDAwIH0KCX0sCiAgICAgIH0sCiAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgeyB7IHsKCTB4MzBBMiwgMHgzMEE0LCAweDAwMDAKICAgICAgfSwKCSAgTCIlbHMiLCAnUycKICAgICAgfSwKCXsgMCwxLDEsCgkgIDAsMCwwLDAsIiIsIHsgMHgzMEEyLCAweDMwQTQsIDB4MDAwMCB9Cgl9LAogICAgICB9LAogICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAwMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgIHsgeyB7CgkweDAwMzEsCQkJMHgwMDNBLAoJMHgwMDMwLAkJCTB4MDAzQSwKCTB4MDAzMywgMHgwMDJFLCAweDAwMzksIDB4MDAzQSwKCTB4MDA2MSwJCQkweDAwM0EsCgkweDAwNjMsIDB4MDA2NCwgMHgwMDAwLCAweDAwMDAsCiAgICAgIH0sCgkgIEwiJTIkZDolMSR1OiUzJGY6JTQkYzolNSRzIiwgMAogICAgICB9LAoJeyAwLDEsNSwKCSAgMCwgMSwgMy45LCAnYScsICJjZCIsIHsgMHgwMDAwIH0KCX0sCiAgICAgIH0sCiAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICAgeyAuaXNfbGFzdCA9IDF9CS8qIExhc3QgZWxlbWVudC4gICovCiAgICB9CiAgfSwKICB7CiAgICB7IFRzd3NjYW5mLCBUU1RfTE9DX2VuZCB9CiAgfQp9Owo=