LyoKICogIFRFU1QgU1VJVEUgRk9SIE1CL1dDIEZVTkNUSU9OUyBJTiBDIExJQlJBUlkKICoKICoJIEZJTEU6CWRhdF9tYnNydG93Y3MuYwogKgogKgkgTUJTUlRPV0NTOiAgc2l6ZV90IG1ic3J0b3djcyAod2NoYXJfdCAqd3MsIGNoYXIgKipzLCBzaXplX3QgbiwKICoJCQkJICAgICAgIG1ic3RhdGVfdCAqcHMpOwogKi8KCgpUU1RfTUJTUlRPV0NTIHRzdF9tYnNydG93Y3NfbG9jIFtdID0gewogIHsKICAgIHsgVG1ic3J0b3djcywgVFNUX0xPQ19kZSB9LAogICAgewogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gIzAxIC0tLS0tLS0tLS0tLS0tLS0tKi8KCXsKCSAgewoJICAgIHsgMSwgICL85PYiLAkgICAgNCwJCQkgMCwwIH0sCgkgICAgeyAxLCAgIvzk9iIsCSAgICAzLAkJCSAwLDAgfSwKCSAgICB7IDEsICAi/OT2IiwJICAgIDIsCQkJIDAsMCB9LAoJICB9Cgl9LAoJewoJICB7CgkgICAgeyAwLDEsMywgeyAweDAwRkMsMHgwMEU0LDB4MDBGNiwweDAwMDAgfQkgICAgIH0sCgkgICAgeyAwLDEsMywgeyAweDAwRkMsMHgwMEU0LDB4MDBGNiwweDAwMDAgfQkgICAgIH0sCgkgICAgeyAwLDEsMiwgeyAweDAwRkMsMHgwMEU0LDB4MDBGNiwweDAwMDAgfQkgICAgIH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAvKi0tLS0tLS0tLS0tLS0tLS0tICMwMiAtLS0tLS0tLS0tLS0tLS0tLSovCgl7CgkgIHsKCSAgICB7IDEsICAi/OT2IiwJICAgIDQsCQkJIDAsMCB9LAoJICAgIHsgMSwgICIiLAkJICAgIDEsCQkJIDAsMCB9LAoJICAgIHsgMCwgICL85PYiLAkgICAgNCwJCQkgMCwwIH0sCgkgIH0KCX0sCgl7CgkgIHsKCSAgICB7IDAsMSwzLCB7IDB4MDBGQywweDAwRTQsMHgwMEY2LDB4MDAwMCB9CSAgICAgfSwKCSAgICB7IDAsMSwwLCB7IDB4MDAwMCB9CQkJICAgICB9LAoJICAgIHsgMCwxLDMsIHsgMHgwMDAwIH0JCQkgICAgIH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAvKi0tLS0tLS0tLS0tLS0tLS0tIEVORCAtLS0tLS0tLS0tLS0tLS0tLSovCgkuaXNfbGFzdCA9IDEKICAgICAgfQogICAgfQogIH0sCgogIHsKICAgIHsgVG1ic3J0b3djcywgVFNUX0xPQ19lblVTIH0sCiAgICB7CiAgICAgIHsgLyotLS0tLS0tLS0tLS0tLS0tLSAjMDEgLS0tLS0tLS0tLS0tLS0tLS0qLwoJewoJICB7CgkgICAgeyAxLCAgIkFCQyIsCSAgICA0LAkJCSAwLDAgfSwKCSAgICB7IDEsICAiQUJDIiwJICAgIDMsCQkJIDAsMCB9LAoJICAgIHsgMSwgICJBQkMiLAkgICAgMiwJCQkgMCwwIH0sCgkgIH0KCX0sCgl7CgkgIHsKCSAgICB7IDAsMSwzLCB7IDB4MDA0MSwweDAwNDIsMHgwMDQzLDB4MDAwMCB9CSAgICAgfSwKCSAgICB7IDAsMSwzLCB7IDB4MDA0MSwweDAwNDIsMHgwMDQzLDB4MDAwMCB9CSAgICAgfSwKCSAgICB7IDAsMSwyLCB7IDB4MDA0MSwweDAwNDIsMHgwMDQzLDB4MDAwMCB9CSAgICAgfSwKCSAgfQoJfQogICAgICB9LAogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gIzAyIC0tLS0tLS0tLS0tLS0tLS0tKi8KCXsKCSAgewoJICAgIHsgMSwgICJBQkMiLAkgICAgNCwJCQkgMCwwIH0sCgkgICAgeyAxLCAgIiIsCQkgICAgMSwJCQkgMCwwIH0sCgkgICAgeyAwLCAgIkFCQyIsCSAgICA0LAkJCSAwLDAgfSwKCSAgfQoJfSwKCXsKCSAgewoJICAgIHsgMCwxLDMsIHsgMHgwMDQxLDB4MDA0MiwweDAwNDMsMHgwMDAwIH0JICAgICB9LAoJICAgIHsgMCwxLDAsIHsgMHgwMDAwIH0JCQkgICAgIH0sCgkgICAgeyAwLDEsMywgeyAweDAwMDAgfQkJCSAgICAgfSwKCSAgfQoJfQogICAgICB9LAogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gRU5EIC0tLS0tLS0tLS0tLS0tLS0tKi8KCS5pc19sYXN0ID0gMQogICAgICB9CiAgICB9CiAgfSwKCiAgewogICAgeyBUbWJzcnRvd2NzLCBUU1RfTE9DX2V1Y0pQIH0sCiAgICB7CiAgICAgIHsgLyotLS0tLS0tLS0tLS0tLS0tLSAjMDEgLS0tLS0tLS0tLS0tLS0tLS0qLwoJewoJICB7CgkgICAgeyAxLCAgIlwyNDRcMjQyXDI0NFwyNDRcMjQ0XDI0NkFCQyIsICAgICAgNywgMCwwIH0sCgkgICAgeyAxLCAgIlwyNDRcMjQyXDI0NFwyNDRcMjQ0XDI0NkFCQyIsICAgICAgNiwgMCwwIH0sCgkgICAgeyAxLCAgIlwyNDRcMjQyXDI0NFwyNDRcMjQ0XDI0NkFCQyIsICAgICAgNCwgMCwwIH0sCgkgIH0KCX0sCgl7CgkgIHsKCSAgICB7IDAsMSw2LCB7IDB4MzA0MiwweDMwNDQsMHgzMDQ2LDB4MDA0MSwweDAwNDIsMHgwMDQzLDB4MDAwMCB9fSwKCSAgICB7IDAsMSw2LCB7IDB4MzA0MiwweDMwNDQsMHgzMDQ2LDB4MDA0MSwweDAwNDIsMHgwMDQzLDB4MDAwMCB9fSwKCSAgICB7IDAsMSw0LCB7IDB4MzA0MiwweDMwNDQsMHgzMDQ2LDB4MDA0MSwweDAwMDAgfQkJICAgfSwKCSAgfQoJfQogICAgICB9LAogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gIzAyIC0tLS0tLS0tLS0tLS0tLS0tKi8KCXsKCSAgewoJICAgIHsgMSwgICJcMjQ0XDI0MlwyNDRcMjQ0XDI0NFwyNDZBQkMiLCAgICAgIDcsIDAsMCB9LAoJICAgIHsgMSwgICIiLAkJICAgICAgMSwgMCwwIH0sCgkgICAgeyAwLCAgIlwyNDRcMjQyXDI0NFwyNDRcMjQ0XDI0NkFCQyIsICAgICAgNywgMCwwIH0sCgkgIH0KCX0sCgl7CgkgIHsKCSAgICB7IDAsMSw2LCB7IDB4MzA0MiwweDMwNDQsMHgzMDQ2LDB4MDA0MSwweDAwNDIsMHgwMDQzLDB4MDAwMCB9fSwKCSAgICB7IDAsMSwwLCB7IDB4MDAwMCB9CQkJCQkgICB9LAoJICAgIHsgMCwxLDYsIHsgMHgwMDAwIH0JCQkJCSAgIH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAvKi0tLS0tLS0tLS0tLS0tLS0tIEVORCAtLS0tLS0tLS0tLS0tLS0tLSovCgkuaXNfbGFzdCA9IDEKICAgICAgfQogICAgfQogIH0sCiAgewogICAgeyBUbWJzcnRvd2NzLCBUU1RfTE9DX2VuZCB9CiAgfQp9Owo=