PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0iQmlnNSI+CjxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgpmdW5jdGlvbiB0ZXN0KCkgewogICAgbGV0IHRlc3RDYXNlcyA9IFsKICAgICAgIHtzZWxlY3RvcjogIiNzdHlsZXNoZWV0LTEiLCBoYXNoOiAic2hhMjU2LWR1TkJ2Q216ckZjM1JWVnFTOHVmd2VCZjJRT3ExVEh1RWgzVVpXUDdacFU9In0sCiAgICAgICB7c2VsZWN0b3I6ICIjc2NyaXB0LTEiLCBoYXNoOiAic2hhMjU2LTBlRGs0bXk5cTNxY0NRVFowMmNsVlcwUnhETlBXOW45bFhUQ2R5R1k0SnM9In0sCiAgICBdOwogICAgV0kuZG9tTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9jdW1lbnROb2RlKSB7CiAgICAgICAgZm9yIChsZXQge3NlbGVjdG9yLCBoYXNofSBvZiB0ZXN0Q2FzZXMpIHsKICAgICAgICAgICAgZG9jdW1lbnROb2RlLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IsIGZ1bmN0aW9uKG5vZGVJZCkgewogICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOwogICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOwogICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGRvbU5vZGUsIGBHb3QgRE9NTm9kZSBmb3IgJHtzZWxlY3Rvcn1gKTsKICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChkb21Ob2RlLmNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2goKSA9PT0gaGFzaCwgYERPTU5vZGUgaGFzIGhhc2ggJHtoYXNofWApOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgIH0pOwp9Cjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KICAgIDxwPlRlc3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGhhc2ggc3VwcG9ydCBvbiBET00uRE9NTm9kZSBpbiBhIGRvY3VtZW50IHdpdGggY2hhcmFjdGVyIHNldCBCaWc1LjwvcD4KICAgIDxzdHlsZSBpZD0ic3R5bGVzaGVldC0xIj4jdGVzdDEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB9IC8qIKT0ICovPC9zdHlsZT4KICAgIDxzY3JpcHQgaWQ9InNjcmlwdC0xIj52YXIgdGhpc0lzQW5JbmxpbmVTY3JpcHQgPSB0cnVlOyAvLyCk9Dwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K