Li4gRGF0YSBUeXBlcy9NaXNjZWxsYW5lb3VzLy9wYWlyIHwxMAoKcGFpcgo9PT09CgpTeW5vcHNpcwotLS0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICB0ZW1wbGF0ZTwKICAgICAgICAgIHR5cGVuYW1lIFQxCiAgICAgICAgLCB0eXBlbmFtZSBUMgogICAgICAgID4KICAgIHN0cnVjdCBwYWlyCiAgICB7CiAgICAgICAgdHlwZWRlZiBwYWlyIHR5cGU7CiAgICAgICAgdHlwZWRlZiBUMSBmaXJzdDsKICAgICAgICB0eXBlZGVmIFQyIHNlY29uZDsKICAgIH07CgoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KCkEgdHJhbnNwYXJlbnQgaG9sZGVyIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzLgoKCkhlYWRlcgotLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgI2luY2x1ZGUgPGJvb3N0L21wbC9wYWlyLmhwcD4KCgpFeGFtcGxlCi0tLS0tLS0KCkNvdW50IGEgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSB0b2dldGhlciB3aXRoIGEgbnVtYmVyIG9mIG5lZ2F0aXZlCmVsZW1lbnRzIGFtb25nIHRoZXNlLgoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICB0eXBlZGVmIGZvbGQ8CiAgICAgICAgICB2ZWN0b3JfYzxpbnQsLTEsMCw1LC03LC0yLDQsNSw3PgogICAgICAgICwgcGFpcjwgaW50XzwwPiwgaW50XzwwPiA+CiAgICAgICAgLCBwYWlyPCAKICAgICAgICAgICAgICBuZXh0PCBmaXJzdDxfMT4gPgogICAgICAgICAgICAsIGlmXzwgCiAgICAgICAgICAgICAgICAgIGxlc3M8IF8yLCBpbnRfPDA+ID4KICAgICAgICAgICAgICAgICwgbmV4dDwgc2Vjb25kPF8xPiA+CiAgICAgICAgICAgICAgICAsIHNlY29uZDxfMT4gCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgID4KICAgICAgICA+Ojp0eXBlIHA7CgogICAgQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggcDo6Zmlyc3Q6OnZhbHVlLCA9PSwgOCApOwogICAgQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggcDo6c2Vjb25kOjp2YWx1ZSwgPT0sIDMgKTsKCgpTZWUgYWxzbwotLS0tLS0tLQoKfERhdGEgVHlwZXN8LCB8U2VxdWVuY2VzfCwgfGZpcnN0fCwgfHNlY29uZHwKCgouLiBjb3B5cmlnaHQ6OiBDb3B5cmlnaHQgqSAgMjAwMS0yMDA5IEFsZWtzZXkgR3VydG92b3kgYW5kIERhdmlkIEFicmFoYW1zCiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCg==