Li4gU2VxdWVuY2VzL0ludHJpbnNpYyBNZXRhZnVuY3Rpb25zLy9wb3BfZnJvbnQKCnBvcF9mcm9udAo9PT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHRlbXBsYXRlPAogICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKICAgICAgICA+CiAgICBzdHJ1Y3QgcG9wX2Zyb250CiAgICB7CiAgICAgICAgdHlwZWRlZiB8dW5zcGVjaWZpZWR8IHR5cGU7CiAgICB9OwoKCgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKYGBwb3BfZnJvbnRgYCBwZXJmb3JtcyBhIHJlbW92YWwgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2Ugd2l0aCBndWFyYW50ZWVkIHxPKDEpfApjb21wbGV4aXR5LgoKCkhlYWRlcgotLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgI2luY2x1ZGUgPGJvb3N0L21wbC9wb3BfZnJvbnQuaHBwPgoKCgpNb2RlbCBvZgotLS0tLS0tLQoKfFRhZyBEaXNwYXRjaGVkIE1ldGFmdW5jdGlvbnwKCgpQYXJhbWV0ZXJzCi0tLS0tLS0tLS0KCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgUGFyYW1ldGVyICAgICB8IFJlcXVpcmVtZW50ICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgYGBTZXF1ZW5jZWBgICB8IHxGcm9udCBFeHRlbnNpYmxlIFNlcXVlbmNlfCAgICAgICB8IEEgc2VxdWVuY2UgdG8gZXJhc2UgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbS4gICB8CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhwcmVzc2lvbiBzZW1hbnRpY3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkZvciBhbnkgfEZyb250IEV4dGVuc2libGUgU2VxdWVuY2V8IGBgc2BgOgoKLi4gcGFyc2VkLWxpdGVyYWw6OgoKICAgIHR5cGVkZWYgcG9wX2Zyb250PHM+Ojp0eXBlIHI7IAoKOlJldHVybiB0eXBlOgogICAgfEZyb250IEV4dGVuc2libGUgU2VxdWVuY2V8LgoKOlByZWNvbmRpdGlvbjoKICAgIGBgZW1wdHk8cz46OnZhbHVlID09IGZhbHNlYGAuCgo6U2VtYW50aWNzOgogICAgRXF1aXZhbGVudCB0byBgYGVyYXNlPHMsYmVnaW48cz46OnR5cGU+Ojp0eXBlO2BgLgoKOlBvc3Rjb25kaXRpb246CiAgICBgYHNpemU8cj46OnZhbHVlID09IHNpemU8cz46OnZhbHVlIC0gMWBgLgoKCkNvbXBsZXhpdHkKLS0tLS0tLS0tLQoKQW1vcnRpemVkIGNvbnN0YW50IHRpbWUuCgoKRXhhbXBsZQotLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHR5cGVkZWYgdmVjdG9yPGxvbmc+Ojp0eXBlIHR5cGVzMTsKICAgIHR5cGVkZWYgdmVjdG9yPGludCxsb25nPjo6dHlwZSB0eXBlczI7CiAgICB0eXBlZGVmIHZlY3RvcjxjaGFyLGludCxsb25nPjo6dHlwZSB0eXBlczM7CiAgICAKICAgIHR5cGVkZWYgcG9wX2Zyb250PHR5cGVzMT46OnR5cGUgcmVzdWx0MTsKICAgIHR5cGVkZWYgcG9wX2Zyb250PHR5cGVzMj46OnR5cGUgcmVzdWx0MjsKICAgIHR5cGVkZWYgcG9wX2Zyb250PHR5cGVzMz46OnR5cGUgcmVzdWx0MzsKICAgICAgICAKICAgIEJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIHNpemU8cmVzdWx0MT46OnZhbHVlLCA9PSwgMCApOwogICAgQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTiggc2l6ZTxyZXN1bHQyPjo6dmFsdWUsID09LCAxICk7CiAgICBCT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKCBzaXplPHJlc3VsdDM+Ojp2YWx1ZSwgPT0sIDIgKTsKICAgICAgICAKICAgIEJPT1NUX01QTF9BU1NFUlQoKCBpc19zYW1lPCBmcm9udDxyZXN1bHQyPjo6dHlwZSwgbG9uZyA+ICkpOwogICAgQk9PU1RfTVBMX0FTU0VSVCgoIGlzX3NhbWU8IGZyb250PHJlc3VsdDM+Ojp0eXBlLCBpbnQgPiApKTsKCgpTZWUgYWxzbwotLS0tLS0tLQoKfEZyb250IEV4dGVuc2libGUgU2VxdWVuY2V8LCB8ZXJhc2V8LCB8cHVzaF9mcm9udHwsIHxmcm9udHwsIHxwb3BfYmFja3wKCgouLiBjb3B5cmlnaHQ6OiBDb3B5cmlnaHQgqSAgMjAwMS0yMDA5IEFsZWtzZXkgR3VydG92b3kgYW5kIERhdmlkIEFicmFoYW1zCiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCg==