IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IGdlbmVyYWwgZmlsdGVyIGV4ZWN1dGlvbi4KCmlmIChlY2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzKSB8IGdyZXAgYyA+L2Rldi9udWxsOyB0aGVuCiAgIyBTdGFyZGVudCBWaXN0cmEgU1ZSNCBncmVwIGxhY2tzIC1lLCBzYXlzIGdoYXppQGNhaXAucnV0Z2Vycy5lZHUuCiAgaWYgKGVjaG8gLW4gdGVzdGluZzsgZWNobyAxLDIsMykgfCBzZWQgcy8tbi94bi8gfCBncmVwIHhuID4vZGV2L251bGw7IHRoZW4KICAgIGFjX249IGFjX2M9JwonIGFjX3Q9JyAgICAgICAgJwogIGVsc2UKICAgIGFjX249LW4gYWNfYz0gYWNfdD0KICBmaQplbHNlCiAgYWNfbj0gYWNfYz0nXGMnIGFjX3Q9CmZpCgojIFNvbWUgZm9sZCBwcm9ncmFtcyAobGlrZSBTdW5PUzQgYW5kIEZyZWVCU0QpIGRvbid0IGhhdmUgYW4gb3B0aW9uIHRvIHdyYXAgYXQKIyBzcGFjZXMuCmVjaG8gYWJjIHwgZm9sZCAtYiAtcyAtdyAyMCA+L2Rldi9udWxsIDI+JjEgfHwgewogIGVjaG8gIlNraXBwaW5nIHRlc3Q6IGZvbGQgcHJvZ3JhbSBub3QgUE9TSVggY29tcGxpYW50IgogIEV4aXQgNzcKfQoKIyBTb21lIGZvbGQgcHJvZ3JhbXMgKGxpa2UgTmV0QlNEIDUuMCkgcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyB3aGVuIHdyYXBwaW5nLgplY2hvIGFiIGNkIHwgZm9sZCAtYiAtcyAtdyAzIHwgZ3JlcCAnICcgPi9kZXYvbnVsbCB8fCB7CiAgZWNobyAiU2tpcHBpbmcgdGVzdDogZm9sZCBwcm9ncmFtIHRyaW1zIHRyYWlsaW5nIHNwYWNlcyIKICBFeGl0IDc3Cn0KCiMgU29tZSBmb2xkIHByb2dyYW1zIChsaWtlIEhQLVVYKSBpbnNlcnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQsIGlmIHRoZSBsYXN0CiMgbGluZSB3YXMgbm90IHRlcm1pbmF0ZWQgd2l0aCBhIG5ld2xpbmUgYW5kIHRoZSAtcyBvcHRpb24gd2FzIGdpdmVuLgpmb2xkb3V0cHV0Y291bnQ9YGVjaG8gJGFjX24gImFiYyRhY19jIiB8IGZvbGQgLWIgLXMgLXcgMjAgfCB3YyAtY2AKZm9sZG91dHB1dGNvdW50PWBlY2hvICIkZm9sZG91dHB1dGNvdW50IiB8IHNlZCAtZSAncy9bIAldLy9nJ2AKdGVzdCAiJGZvbGRvdXRwdXRjb3VudCIgPSAzIHx8IHsKICBlY2hvICJTa2lwcGluZyB0ZXN0OiBmb2xkIHByb2dyYW0gaW5zZXJ0cyBleHRyYSBuZXdsaW5lIgogIEV4aXQgNzcKfQoKY2F0IDw8XEVPRiA+IG1maS10ZXN0MS5wbwojIEhFQURFUi4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogQm9ubmllIFR5bGVyXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoKIzogbWFycmllZC1tZW46NAojLCBmdXp6eQptc2dpZCAiVGhlIHdvcmxkIGlzIGZ1bGwgb2YgbWFycmllZCBtZW4iCm1zZ3N0ciAiU28gdmllbGUgdmVyaGVpcmF0ZXRlIE3kbm5lciIKCiM6IG1hcnJpZWQtbWVuOjUKbXNnaWQgIndpdGggd2l2ZXMgd2hvIG5ldmVyIHVuZGVyc3RhbmQiCm1zZ3N0ciAidW5kIGlocmUgRnJhdWVuIHZlcnN0ZWhlbiBzaWUgbmljaHQiCgojOiBtYXJyaWVkLW1lbjo2Cm1zZ2lkICJUaGV5J3JlIGxvb2tpbmcgZm9yIHNvbWVvbmUgdG8gc2hhcmUiCm1zZ3N0ciAiIgoKIyBzY2h3ZXIgenUg/GJlcnNldHplbi4uLgojOiBtYXJyaWVkLW1lbjo3Cm1zZ2lkICJ0aGUgZXhjaXRlbWVudCBvZiBhIGxvdmUgYWZmYWlyIgptc2dzdHIgIiIKCiM6IG1hcnJpZWQtbWVuOjgKbXNnaWQgIkp1c3QgYXMgc29vbiBhcyB0aGV5IGZpbmQgeW91Igptc2dzdHIgIiIKCiM6IG1hcnJpZWQtbWVuOjkKbXNnaWQgIlRoZXkgd2FybiB5b3UgYW5kIGRhcm4geW91Igptc2dzdHIgIiIKCiN+IG1zZ2lkICJZb3UgZmx5IG9uIHRoZSB3aW5ncyBvZiByb21hbmNlIgojfiBtc2dzdHIgIkRpZSBGbPxnZWwgZGVyIGZyaXNjaGVuIExpZWJlIGhlYmVuIGRpY2ggenVtIEhpbW1lbCIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiRvxyIGRpZSBhbmRlcmVuIgoKIyBFdHdhcyBmcmVpZSDcYmVyc2V0enVuZy4KI34gbXNnaWQgIllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybCIKI34gbXNnc3RyICJiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidCIKRU9GCgo6ICR7TVNHRklMVEVSPW1zZ2ZpbHRlcn0KTENfQUxMPUMgXAoke01TR0ZJTFRFUn0gLWkgbWZpLXRlc3QxLnBvIC1vIG1maS10ZXN0MS5vdXQgZm9sZCAtYiAtcyAtdyAyMCA+bWZpLXRlc3QxLmVyciAyPiYxCnJlc3VsdD0kPwpjYXQgbWZpLXRlc3QxLmVyciB8IGdyZXAgLXYgJ3dhcm5pbmc6IExvY2FsZSBjaGFyc2V0JyB8IGdyZXAgLXYgJ14gJwp0ZXN0ICRyZXN1bHQgPSAwIHx8IHsgRXhpdCAxOyB9CgpjYXQgPDxcRU9GID4gbWZpLXRlc3QxLm9rCiMgSEVBREVSLgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBcbiIKIkJvbm5pZSBUeWxlclxuIgoiQ29udGVudC1UeXBlOiBcbiIKInRleHQvcGxhaW47IFxuIgoiY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY1xuIgoib2Rpbmc6IDhiaXRcbiIKCiM6IG1hcnJpZWQtbWVuOjQKIywgZnV6enkKbXNnaWQgIlRoZSB3b3JsZCBpcyBmdWxsIG9mIG1hcnJpZWQgbWVuIgptc2dzdHIgIiIKIlNvIHZpZWxlIFxuIgoidmVyaGVpcmF0ZXRlIE3kbm5lciIKCiM6IG1hcnJpZWQtbWVuOjUKbXNnaWQgIndpdGggd2l2ZXMgd2hvIG5ldmVyIHVuZGVyc3RhbmQiCm1zZ3N0ciAiIgoidW5kIGlocmUgRnJhdWVuIFxuIgoidmVyc3RlaGVuIHNpZSBuaWNodCIKCiM6IG1hcnJpZWQtbWVuOjYKbXNnaWQgIlRoZXkncmUgbG9va2luZyBmb3Igc29tZW9uZSB0byBzaGFyZSIKbXNnc3RyICIiCgojIHNjaHdlciB6dSD8YmVyc2V0emVuLi4uCiM6IG1hcnJpZWQtbWVuOjcKbXNnaWQgInRoZSBleGNpdGVtZW50IG9mIGEgbG92ZSBhZmZhaXIiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OAptc2dpZCAiSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OQptc2dpZCAiVGhleSB3YXJuIHlvdSBhbmQgZGFybiB5b3UiCm1zZ3N0ciAiIgoKI34gbXNnaWQgIllvdSBmbHkgb24gdGhlIHdpbmdzIG9mIHJvbWFuY2UiCiN+IG1zZ3N0ciAiIgojfiAiRGllIEZs/GdlbCBkZXIgXG4iCiN+ICJmcmlzY2hlbiBMaWViZSBcbiIKI34gImhlYmVuIGRpY2ggenVtIFxuIgojfiAiSGltbWVsIgoKIywgZnV6enkKI34gbXNnaWQgIkluIHRoZSBleWVzIG9mIHRoZSB3b3JsZCIKI34gbXNnc3RyICJG/HIgZGllIGFuZGVyZW4iCgojIEV0d2FzIGZyZWllINxiZXJzZXR6dW5nLgojfiBtc2dpZCAiWW91J3JlIGp1c3QgYW5vdGhlciBjcmF6eSBnaXJsIgojfiBtc2dzdHIgIiIKI34gImJpc3QgZHUgYmxv3yBlaW4gXG4iCiN+ICJ2ZXJy/GNrdGVzIGR1bW1lcyBcbiIKI34gIkRpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiIgojfiAiZGFzIGVpbmVuIFxuIgojfiAidmVyaGVpcmF0ZXRlbiBNYW5uIFxuIgojfiAibGllYnQiCkVPRgoKOiAke0RJRkY9ZGlmZn0KJHtESUZGfSBtZmktdGVzdDEub2sgbWZpLXRlc3QxLm91dApyZXN1bHQ9JD8KCmV4aXQgJHJlc3VsdAo=