Li4gU2VxdWVuY2VzL1ZpZXdzLy9pdGVyYXRvcl9yYW5nZQoKaXRlcmF0b3JfcmFuZ2UKPT09PT09PT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHRlbXBsYXRlPAogICAgICAgICAgdHlwZW5hbWUgRmlyc3QKICAgICAgICAsIHR5cGVuYW1lIExhc3QKICAgICAgICA+CiAgICBzdHJ1Y3QgaXRlcmF0b3JfcmFuZ2UKICAgIHsKICAgICAgICAvLyB8dW5zcGVjaWZpZWR8CiAgICAgICAgLy8gfC4uLnwKICAgIH07CgoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KCkEgdmlldyBpbnRvIHN1YnNldCBvZiBzZXF1ZW5jZSBlbGVtZW50cyBpZGVudGlmaWVkIGJ5IGEgcGFpciBvZiBpdGVyYXRvcnMuCgoKSGVhZGVyCi0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICAjaW5jbHVkZSA8Ym9vc3QvbXBsL2ZvbGQuaHBwPgoKCk1vZGVsIG9mCi0tLS0tLS0tCgoqIGBGb3J3YXJkYF9fLCBgQmlkaXJlY3Rpb25hbGBfXywgb3IgfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8LCBkZXBlbmRpbmcgb24gdGhlIGNhdGVnb3J5CiAgb2YgdGhlIHVuZGVybGF5aW5nIGl0ZXJhdG9ycy4KCl9fIGBGb3J3YXJkIFNlcXVlbmNlYF8KX18gYEJpZGlyZWN0aW9uYWwgU2VxdWVuY2VgXwoKCgpQYXJhbWV0ZXJzCi0tLS0tLS0tLS0KCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgUGFyYW1ldGVyICAgICB8IFJlcXVpcmVtZW50ICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgYGBGaXJzdGBgLCAgICB8IHxGb3J3YXJkIEl0ZXJhdG9yfCAgICAgICAgICAgICAgICB8IEl0ZXJhdG9ycyBpZGVudGlmeWluZyB0aGUgdmlldydzIGJvdW5kYXJpZXMuICB8CnwgYGBMYXN0YGAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhwcmVzc2lvbiBzZW1hbnRpY3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnxTZW1hbnRpY3MgZGlzY2xhaW1lci4uLnwgfEZvcndhcmQgU2VxdWVuY2V8LgoKSW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgYGB2YGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBpdGVyYXRvcl9yYW5nZWBgLCBgYGZpcnN0YGAgYW5kIGBgbGFzdGBgIGFyZSAKaXRlcmF0b3JzIGludG8gYSB8Rm9yd2FyZCBTZXF1ZW5jZXwsIGFuZCBbYGBmaXJzdGBgLCBgYGxhc3RgYCkgZm9ybSBhIHZhbGlkIHJhbmdlLgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNlbWFudGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCAuLiBwYXJzZWQtbGl0ZXJhbDo6ICAgICAgICAgICAgICAgICAgICAgICB8IEEgbGF6eSBzZXF1ZW5jZSBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSByYW5nZSAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtgYGZpcnN0YGAsIGBgbGFzdGBgKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICBpdGVyYXRvcl9yYW5nZTxmaXJzdCxsYXN0PiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICBpdGVyYXRvcl9yYW5nZTxmaXJzdCxsYXN0Pjo6dHlwZSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCkV4YW1wbGUKLS0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICB0eXBlZGVmIHJhbmdlX2M8aW50LDAsMTAwPiByOwogICAgdHlwZWRlZiBhZHZhbmNlX2M8IGJlZ2luPHI+Ojp0eXBlLDEwID46OnR5cGUgZmlyc3Q7CiAgICB0eXBlZGVmIGFkdmFuY2VfYzwgZW5kPHI+Ojp0eXBlLC0xMCA+Ojp0eXBlIGxhc3Q7CiAgICAKICAgIEJPT1NUX01QTF9BU1NFUlQoKCBlcXVhbDwgCiAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxmaXJzdCxsYXN0PgogICAgICAgICwgcmFuZ2VfYzxpbnQsMTAsOTA+CiAgICAgICAgPiApKTsKCgpTZWUgYWxzbwotLS0tLS0tLQoKfFNlcXVlbmNlc3wsIHxWaWV3c3wsIHxmaWx0ZXJfdmlld3wsIHx0cmFuc2Zvcm1fdmlld3wsIHxqb2ludF92aWV3fCwgfHppcF92aWV3fCwgfG1heF9lbGVtZW50fAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK