IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IHNlZCBleGVjdXRpb24uCgppZiAoZWNobyAidGVzdGluZ1xjIjsgZWNobyAxLDIsMykgfCBncmVwIGMgPi9kZXYvbnVsbDsgdGhlbgogICMgU3RhcmRlbnQgVmlzdHJhIFNWUjQgZ3JlcCBsYWNrcyAtZSwgc2F5cyBnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1LgogIGlmIChlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDMpIHwgc2VkIHMvLW4veG4vIHwgZ3JlcCB4biA+L2Rldi9udWxsOyB0aGVuCiAgICBhY19uPSBhY19jPScKJyBhY190PScgICAgICAgICcKICBlbHNlCiAgICBhY19uPS1uIGFjX2M9IGFjX3Q9CiAgZmkKZWxzZQogIGFjX249IGFjX2M9J1xjJyBhY190PQpmaQoKIyBTb21lIHNlZCBwcm9ncmFtcyAoU29sYXJpcyBldGMuKSBvbWl0IHRoZSBsYXN0IGxpbmUgaWYgaXQgZW5kZWQgd2l0aG91dAojIGEgbmV3bGluZS4gV2UgbXVzdCBza2lwIHRoaXMgdGVzdCB3aGVuIHdlIGVuY291bnRlciBzdWNoIGEgYnJva2VuIHNlZC4Kc2Vkb3V0cHV0PWBlY2hvICRhY19uICJhYmMkYWNfYyIgfCBzZWQgLWUgcy94L3gvYAp0ZXN0IC1uICIkc2Vkb3V0cHV0IiB8fCB7CiAgZWNobyAiU2tpcHBpbmcgdGVzdDogc2VkIHByb2dyYW0gaXMgYnJva2VuIgogIEV4aXQgNzcKfQoKIyBTb21lIHNlZCBwcm9ncmFtcyAoSVJJWCwgT1NGLzEgZXRjLikgYWRkIGEgbmV3bGluZSB0byB0aGUgbGFzdCBsaW5lIGlmIGl0CiMgZG9lc24ndCBlbmQgd2l0aCBhIG5ld2xpbmUuCnNlZG91dHB1dGNvdW50PWBlY2hvICRhY19uICJhYmMkYWNfYyIgfCBzZWQgLWUgcy94L3gvIHwgd2MgLWNgCnNlZG91dHB1dGNvdW50PWBlY2hvICIkc2Vkb3V0cHV0Y291bnQiIHwgc2VkIC1lICdzL1sgCV0vL2cnYAp0ZXN0ICIkc2Vkb3V0cHV0Y291bnQiID0gMyB8fCB7CiAgZWNobyAiU2tpcHBpbmcgdGVzdDogc2VkIHByb2dyYW0gaW5zZXJ0cyBleHRyYSBuZXdsaW5lIgogIEV4aXQgNzcKfQoKY2F0IDw8XEVPRiA+IG1maS10ZXN0Mi5wbwojIEhFQURFUi4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogQm9ubmllIFR5bGVyXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoKIzogbWFycmllZC1tZW46NAojLCBmdXp6eQptc2dpZCAiVGhlIHdvcmxkIGlzIGZ1bGwgb2YgbWFycmllZCBtZW4iCm1zZ3N0ciAiU28gdmllbGUgdmVyaGVpcmF0ZXRlIE3kbm5lciIKCiM6IG1hcnJpZWQtbWVuOjUKbXNnaWQgIndpdGggd2l2ZXMgd2hvIG5ldmVyIHVuZGVyc3RhbmQiCm1zZ3N0ciAidW5kIGlocmUgRnJhdWVuIHZlcnN0ZWhlbiBzaWUgbmljaHQiCgojOiBtYXJyaWVkLW1lbjo2Cm1zZ2lkICJUaGV5J3JlIGxvb2tpbmcgZm9yIHNvbWVvbmUgdG8gc2hhcmUiCm1zZ3N0ciAiIgoKIyBzY2h3ZXIgenUg/GJlcnNldHplbi4uLgojOiBtYXJyaWVkLW1lbjo3Cm1zZ2lkICJ0aGUgZXhjaXRlbWVudCBvZiBhIGxvdmUgYWZmYWlyIgptc2dzdHIgIiIKCiM6IG1hcnJpZWQtbWVuOjgKbXNnaWQgIkp1c3QgYXMgc29vbiBhcyB0aGV5IGZpbmQgeW91Igptc2dzdHIgIiIKCiM6IG1hcnJpZWQtbWVuOjkKbXNnaWQgIlRoZXkgd2FybiB5b3UgYW5kIGRhcm4geW91Igptc2dzdHIgIiIKCiN+IG1zZ2lkICJZb3UgZmx5IG9uIHRoZSB3aW5ncyBvZiByb21hbmNlIgojfiBtc2dzdHIgIkRpZSBGbPxnZWwgZGVyIGZyaXNjaGVuIExpZWJlIGhlYmVuIGRpY2ggenVtIEhpbW1lbCIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiRvxyIGRpZSBhbmRlcmVuIgoKIyBFdHdhcyBmcmVpZSDcYmVyc2V0enVuZy4KI34gbXNnaWQgIllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybCIKI34gbXNnc3RyICJiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidCIKRU9GCgo6ICR7TVNHRklMVEVSPW1zZ2ZpbHRlcn0Kc2VkZXhwcjE9JzF7CnMvXi9cW1xbLwp9JwpzZWRleHByMj0nJHsKcy8kL1xdXF0vCn0nCkxDX0FMTD1DIFwKJHtNU0dGSUxURVJ9IC1pIG1maS10ZXN0Mi5wbyAtbyBtZmktdGVzdDIub3V0IHNlZCAtZSAiJHNlZGV4cHIxIiAtZSAiJHNlZGV4cHIyIiA+bWZpLXRlc3QyLmVyciAyPiYxCnJlc3VsdD0kPwpjYXQgbWZpLXRlc3QyLmVyciB8IGdyZXAgLXYgJ3dhcm5pbmc6IExvY2FsZSBjaGFyc2V0JyB8IGdyZXAgLXYgJ14gJwp0ZXN0ICRyZXN1bHQgPSAwIHx8IHsgRXhpdCAxOyB9CgpjYXQgPDxcRU9GID4gbWZpLXRlc3QyLm9rCiMgSEVBREVSLgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiW1tQcm9qZWN0LUlkLVZlcnNpb246IEJvbm5pZSBUeWxlclxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRdXVxuIgoKIzogbWFycmllZC1tZW46NAojLCBmdXp6eQptc2dpZCAiVGhlIHdvcmxkIGlzIGZ1bGwgb2YgbWFycmllZCBtZW4iCm1zZ3N0ciAiW1tTbyB2aWVsZSB2ZXJoZWlyYXRldGUgTeRubmVyXV0iCgojOiBtYXJyaWVkLW1lbjo1Cm1zZ2lkICJ3aXRoIHdpdmVzIHdobyBuZXZlciB1bmRlcnN0YW5kIgptc2dzdHIgIltbdW5kIGlocmUgRnJhdWVuIHZlcnN0ZWhlbiBzaWUgbmljaHRdXSIKCiM6IG1hcnJpZWQtbWVuOjYKbXNnaWQgIlRoZXkncmUgbG9va2luZyBmb3Igc29tZW9uZSB0byBzaGFyZSIKbXNnc3RyICIiCgojIHNjaHdlciB6dSD8YmVyc2V0emVuLi4uCiM6IG1hcnJpZWQtbWVuOjcKbXNnaWQgInRoZSBleGNpdGVtZW50IG9mIGEgbG92ZSBhZmZhaXIiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OAptc2dpZCAiSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OQptc2dpZCAiVGhleSB3YXJuIHlvdSBhbmQgZGFybiB5b3UiCm1zZ3N0ciAiIgoKI34gbXNnaWQgIllvdSBmbHkgb24gdGhlIHdpbmdzIG9mIHJvbWFuY2UiCiN+IG1zZ3N0ciAiW1tEaWUgRmz8Z2VsIGRlciBmcmlzY2hlbiBMaWViZSBoZWJlbiBkaWNoIHp1bSBIaW1tZWxdXSIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiW1tG/HIgZGllIGFuZGVyZW5dXSIKCiMgRXR3YXMgZnJlaWUg3GJlcnNldHp1bmcuCiN+IG1zZ2lkICJZb3UncmUganVzdCBhbm90aGVyIGNyYXp5IGdpcmwiCiN+IG1zZ3N0ciAiW1tiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmddXSIKCiN+IG1zZ2lkICJXaG8gbG92ZXMgYSBtYXJyaWVkIG1hbiIKI34gbXNnc3RyICJbW2RhcyBlaW5lbiB2ZXJoZWlyYXRldGVuIE1hbm4gbGllYnRdXSIKRU9GCgo6ICR7RElGRj1kaWZmfQoke0RJRkZ9IG1maS10ZXN0Mi5vayBtZmktdGVzdDIub3V0CnJlc3VsdD0kPwoKZXhpdCAkcmVzdWx0Cg==