IyBUaGlzIGlzIGEgc3BlY2lhbGl6ZWQgdGVzdCBmb3IgY2hlY2tpbmcsIHdoZW4gUENSRTIgaXMgY29tcGlsZWQgd2l0aCB0aGUKIyBFQkNESUMgb3B0aW9uIGJ1dCBpbiBhbiBBU0NJSSBlbnZpcm9ubWVudCwgdGhhdCBuZXdsaW5lLCB3aGl0ZSBzcGFjZSwgYW5kIFxjCiMgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nLiBJdCBjYXRjaGVzIGNhc2VzIHdoZXJlIGV4cGxpY2l0IHZhbHVlcyBzdWNoIGFzIDB4MGEKIyBoYXZlIGJlZW4gdXNlZCBpbnN0ZWFkIG9mIG5hbWVzIGxpa2UgQ0hBUl9MRi4gTmVlZGxlc3MgdG8gc2F5LCBpdCBpcyBub3QgYQojIGdlbnVpbmUgRUJDRElDIHRlc3QhIEluIHBhdHRlcm5zLCBhbHBoYWJldGljIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3cgYQojIGJhY2tzbGFzaCBtdXN0IGJlIGluIEVCQ0RJQyBjb2RlLiBJbiBkYXRhLCBOTCwgTkVMLCBMRiwgRVNDLCBhbmQgREVMIG11c3QgYmUKIyBpbiBFQkNESUMsIGJ1dCBjYW4gb2YgY291cnNlIGJlIHNwZWNpZmllZCBhcyBlc2NhcGVzLgoKIyBUZXN0IGRlZmF1bHQgbmV3bGluZSBhbmQgdmFyaWF0aW9ucwoKL15BL20KICAgIEFCQwogMDogQQogICAgMTJceDE1QUJDCiAwOiBBCgovXkEvbSxuZXdsaW5lPWFueQogICAgMTJceDE1QUJDCiAwOiBBCiAgICAxMlx4MGRBQkMKIDA6IEEKICAgIDEyXHgwZFx4MTVBQkMKIDA6IEEKICAgIDEyXHgyNUFCQwogMDogQQoKL15BL20sbmV3bGluZT1hbnljcmxmCiAgICAxMlx4MTVBQkMKIDA6IEEKICAgIDEyXHgwZEFCQwogMDogQQogICAgMTJceDBkXHgxNUFCQwogMDogQQogICAgKiogRmFpbApObyBtYXRjaAogICAgMTJceDI1QUJDCk5vIG1hdGNoCgojIFRlc3QgXGgKCi9eQVyILwogICAgQSBCCiAwOiBBXHgyMAogICAgQVx4NDFCIAogMDogQUEKCiMgVGVzdCBcSAoKL15BXMgvCiAgICBBQgogMDogQUIKICAgIEFceDQyQiAKIDA6IEFCCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBIEIKTm8gbWF0Y2gKICAgIEFceDQxQiAKTm8gbWF0Y2gKCiMgVGVzdCBcUgoKL15BXNkvCiAgICBBXHgxNUIKIDA6IEFceDE1CiAgICBBXHgwZEIKIDA6IEFceDBkCiAgICBBXHgyNUIKIDA6IEFceDI1CiAgICBBXHgwYkIKIDA6IEFceDBiCiAgICBBXHgwY0IKIDA6IEFceDBjCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBIEIKTm8gbWF0Y2gKCiMgVGVzdCBcdgoKL15BXKUvCiAgICBBXHgxNUIKIDA6IEFceDE1CiAgICBBXHgwZEIKIDA6IEFceDBkCiAgICBBXHgyNUIKIDA6IEFceDI1CiAgICBBXHgwYkIKIDA6IEFceDBiCiAgICBBXHgwY0IKIDA6IEFceDBjCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBIEIKTm8gbWF0Y2gKCiMgVGVzdCBcVgoKL15BXOUvCiAgICBBIEIKIDA6IEFceDIwCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBXHgxNUIKTm8gbWF0Y2gKICAgIEFceDBkQgpObyBtYXRjaAogICAgQVx4MjVCCk5vIG1hdGNoCiAgICBBXHgwYkIKTm8gbWF0Y2gKICAgIEFceDBjQgpObyBtYXRjaAogICAgCiMgRm9yIHJlcGVhdGVkIGl0ZW1zLCB1c2UgYW4gYXRvbWljIGdyb3VwIHNvIHRoYXQgdGhlIG91dHB1dCBpcyB0aGUgc2FtZQojIGZvciBERkEgbWF0Y2hpbmcgKG90aGVyd2lzZSBpdCBtYXkgc2hvdyBtdWx0aXBsZSBtYXRjaGVzKS4KCiMgVGVzdCBcaCsKCi9eQSg/PlyIKykvCiAgICBBIEIKIDA6IEFceDIwCgojIFRlc3QgXEgrCgovXkEoPz5cyCspLwogICAgQUIKIDA6IEFCCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBIEIKTm8gbWF0Y2gKCiMgVGVzdCBcUisKCi9eQSg/PlzZKykvCiAgICBBXHgxNUIKIDA6IEFceDE1CiAgICBBXHgwZEIKIDA6IEFceDBkCiAgICBBXHgyNUIKIDA6IEFceDI1CiAgICBBXHgwYkIKIDA6IEFceDBiCiAgICBBXHgwY0IKIDA6IEFceDBjCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBIEIKTm8gbWF0Y2gKCiMgVGVzdCBcdisKCi9eQSg/PlylKykvCiAgICBBXHgxNUIKIDA6IEFceDE1CiAgICBBXHgwZEIKIDA6IEFceDBkCiAgICBBXHgyNUIKIDA6IEFceDI1CiAgICBBXHgwYkIKIDA6IEFceDBiCiAgICBBXHgwY0IKIDA6IEFceDBjCiAgICAqKiBGYWlsCk5vIG1hdGNoCiAgICBBIEIKTm8gbWF0Y2gKCiMgVGVzdCBcVisKCi9eQSg/PlzlKykvCiAgICBBIEIKIDA6IEFceDIwQgogICAgKiogRmFpbApObyBtYXRjaAogICAgQVx4MTVCCk5vIG1hdGNoCiAgICBBXHgwZEIKTm8gbWF0Y2gKICAgIEFceDI1QgpObyBtYXRjaAogICAgQVx4MGJCCk5vIG1hdGNoCiAgICBBXHgwY0IKTm8gbWF0Y2gKICAgIAojIFRlc3QgXGMgZnVuY3Rpb25hbGl0eSAKICAgIAovXINAXINBXINiXINDXINkXINFXINmXINHXINoXINJXINKXINLXINsXINtXINOXINPXINwXINxXINyXINTXINUXIN1XINWXINXXINYXIN5XINaLwogICAgXHgwMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDA4XHgwOVx4MGFceDBiXHgwY1x4MGRceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYKIDA6IFx4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MDlceDBhXHgwYlx4MGNceDBkXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYQoKL1yDW1yDXFyDXVyDXlyDXy8KICAgIFx4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmCiAwOiBceDFiXHgxY1x4MWRceDFlXHgxZgogICAgCi9cgz8vCiAgICBBXHhmZkIKIDA6IFx4ZmYKCi9cgyYvCkZhaWxlZDogZXJyb3IgMTY4IGF0IG9mZnNldCAyOiBcY1x4MjBtdXN0XHgyMGJlXHgyMGZvbGxvd2VkXHgyMGJ5XHgyMGFceDIwbGV0dGVyXHgyMG9yXHgyMG9uZVx4MjBvZlx4MjBbXF1eX1x4M2YKCiMgRW5kCg==