IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IC0tbmV3bGluZSBvcHRpb24uCgppZiAoZWNobyAidGVzdGluZ1xjIjsgZWNobyAxLDIsMykgfCBncmVwIGMgPi9kZXYvbnVsbDsgdGhlbgogICMgU3RhcmRlbnQgVmlzdHJhIFNWUjQgZ3JlcCBsYWNrcyAtZSwgc2F5cyBnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1LgogIGlmIChlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDMpIHwgc2VkIHMvLW4veG4vIHwgZ3JlcCB4biA+L2Rldi9udWxsOyB0aGVuCiAgICBhY19uPSBhY19jPScKJyBhY190PScgICAgICAgICcKICBlbHNlCiAgICBhY19uPS1uIGFjX2M9IGFjX3Q9CiAgZmkKZWxzZQogIGFjX249IGFjX2M9J1xjJyBhY190PQpmaQoKY2F0IDw8XEVPRiA+IG1maS10ZXN0OC5wbwojIEhFQURFUi4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogQm9ubmllIFR5bGVyXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoKIzogbWFycmllZC1tZW46NAojLCBmdXp6eQptc2dpZCAiVGhlIHdvcmxkIGlzIGZ1bGwgb2YgbWFycmllZCBtZW4iCm1zZ3N0ciAiU28gdmllbGUgdmVyaGVpcmF0ZXRlIE3kbm5lciIKCiM6IG1hcnJpZWQtbWVuOjUKbXNnaWQgIndpdGggd2l2ZXMgd2hvIG5ldmVyIHVuZGVyc3RhbmQiCm1zZ3N0ciAidW5kIGlocmUgRnJhdWVuIHZlcnN0ZWhlbiBzaWUgbmljaHQiCgojOiBtYXJyaWVkLW1lbjo2Cm1zZ2lkICJUaGV5J3JlIGxvb2tpbmcgZm9yIHNvbWVvbmUgdG8gc2hhcmUiCm1zZ3N0ciAiIgoKIyBzY2h3ZXIgenUg/GJlcnNldHplbi4uLgojOiBtYXJyaWVkLW1lbjo3Cm1zZ2lkICJ0aGUgZXhjaXRlbWVudCBvZiBhIGxvdmUgYWZmYWlyIgptc2dzdHIgIiIKCiM6IG1hcnJpZWQtbWVuOjgKbXNnaWQgIkp1c3QgYXMgc29vbiBhcyB0aGV5IGZpbmQgeW91Igptc2dzdHIgIiIKCiM6IG1hcnJpZWQtbWVuOjkKbXNnaWQgIlRoZXkgd2FybiB5b3UgYW5kIGRhcm4geW91Igptc2dzdHIgIiIKCiN+IG1zZ2lkICJZb3UgZmx5IG9uIHRoZSB3aW5ncyBvZiByb21hbmNlIgojfiBtc2dzdHIgIkRpZSBGbPxnZWwgZGVyIGZyaXNjaGVuIExpZWJlIGhlYmVuIGRpY2ggenVtIEhpbW1lbCIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiRvxyIGRpZSBhbmRlcmVuIgoKIyBFdHdhcyBmcmVpZSDcYmVyc2V0enVuZy4KI34gbXNnaWQgIllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybCIKI34gbXNnc3RyICJiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidCIKRU9GCgpjYXQgPDxcRU9GID4gZmlsdGVyLnNoCiMhL2Jpbi9zaApjYXQKaWYgdGVzdCAiJE1TR0ZJTFRFUl9NU0dJRCIgPSAidGhlIGV4Y2l0ZW1lbnQgb2YgYSBsb3ZlIGFmZmFpciI7IHRoZW4KICBlY2hvICRhY19uICJub24tdGVybWluYXRlZCBsaW5lJGFjX2MiCmVsc2UKICBlY2hvIHRlcm1pbmF0ZWQgbGluZQpmaQpFT0YKCjogJHtNU0dGSUxURVI9bXNnZmlsdGVyfQpjYXNlICIkaG9zdF9vcyIgaW4KICBtaW5ndyopIENPTkZJR19TSEVMTD0nc2gnIDs7CiAgKikgOiAke0NPTkZJR19TSEVMTD0ke1NIRUxMLS9iaW4vc2h9fSA7Owplc2FjCkxDX0FMTD1DICR7TVNHRklMVEVSfSAtLW5ld2xpbmUgLWkgbWZpLXRlc3Q4LnBvIC1vIG1maS10ZXN0OC5vdXQgXAogICAgICAke0NPTkZJR19TSEVMTH0gZmlsdGVyLnNoID5tZmktdGVzdDguZXJyIDI+JjEKcmVzdWx0PSQ/CmNhdCBtZmktdGVzdDguZXJyIHwgZ3JlcCAtdiAnd2FybmluZzogTG9jYWxlIGNoYXJzZXQnIHwgZ3JlcCAtdiAnXiAnCnRlc3QgJHJlc3VsdCA9IDAgfHwgeyBFeGl0IDE7IH0KY2F0IG1maS10ZXN0OC5lcnIgfCBncmVwICdtc2dmaWx0ZXI6IGZpbHRlciBvdXRwdXQgaXMgbm90IHRlcm1pbmF0ZWQgd2l0aCBhIG5ld2xpbmUnID4vZGV2L251bGwKdGVzdCAkcmVzdWx0ID0gMCB8fCB7IEV4aXQgMTsgfQoKY2F0IDw8XEVPRiA+IG1maS10ZXN0OC5vawojIEhFQURFUi4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogQm9ubmllIFR5bGVyXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiXG4iCiJ0ZXJtaW5hdGVkIGxpbmUiCgojOiBtYXJyaWVkLW1lbjo0CiMsIGZ1enp5Cm1zZ2lkICJUaGUgd29ybGQgaXMgZnVsbCBvZiBtYXJyaWVkIG1lbiIKbXNnc3RyICIiCiJTbyB2aWVsZSB2ZXJoZWlyYXRldGUgTeRubmVyXG4iCiJ0ZXJtaW5hdGVkIGxpbmUiCgojOiBtYXJyaWVkLW1lbjo1Cm1zZ2lkICJ3aXRoIHdpdmVzIHdobyBuZXZlciB1bmRlcnN0YW5kIgptc2dzdHIgIiIKInVuZCBpaHJlIEZyYXVlbiB2ZXJzdGVoZW4gc2llIG5pY2h0XG4iCiJ0ZXJtaW5hdGVkIGxpbmUiCgojOiBtYXJyaWVkLW1lbjo2Cm1zZ2lkICJUaGV5J3JlIGxvb2tpbmcgZm9yIHNvbWVvbmUgdG8gc2hhcmUiCm1zZ3N0ciAiIgoiXG4iCiJ0ZXJtaW5hdGVkIGxpbmUiCgojIHNjaHdlciB6dSD8YmVyc2V0emVuLi4uCiM6IG1hcnJpZWQtbWVuOjcKbXNnaWQgInRoZSBleGNpdGVtZW50IG9mIGEgbG92ZSBhZmZhaXIiCm1zZ3N0ciAiIgoiXG4iCiJub24tdGVybWluYXRlZCBsaW5lIgoKIzogbWFycmllZC1tZW46OAptc2dpZCAiSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UiCm1zZ3N0ciAiIgoiXG4iCiJ0ZXJtaW5hdGVkIGxpbmUiCgojOiBtYXJyaWVkLW1lbjo5Cm1zZ2lkICJUaGV5IHdhcm4geW91IGFuZCBkYXJuIHlvdSIKbXNnc3RyICIiCiJcbiIKInRlcm1pbmF0ZWQgbGluZSIKCiN+IG1zZ2lkICJZb3UgZmx5IG9uIHRoZSB3aW5ncyBvZiByb21hbmNlIgojfiBtc2dzdHIgIiIKI34gIkRpZSBGbPxnZWwgZGVyIGZyaXNjaGVuIExpZWJlIGhlYmVuIGRpY2ggenVtIEhpbW1lbFxuIgojfiAidGVybWluYXRlZCBsaW5lIgoKIywgZnV6enkKI34gbXNnaWQgIkluIHRoZSBleWVzIG9mIHRoZSB3b3JsZCIKI34gbXNnc3RyICIiCiN+ICJG/HIgZGllIGFuZGVyZW5cbiIKI34gInRlcm1pbmF0ZWQgbGluZSIKCiMgRXR3YXMgZnJlaWUg3GJlcnNldHp1bmcuCiN+IG1zZ2lkICJZb3UncmUganVzdCBhbm90aGVyIGNyYXp5IGdpcmwiCiN+IG1zZ3N0ciAiIgojfiAiYmlzdCBkdSBibG/fIGVpbiB2ZXJy/GNrdGVzIGR1bW1lcyBEaW5nXG4iCiN+ICJ0ZXJtaW5hdGVkIGxpbmUiCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiIgojfiAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidFxuIgojfiAidGVybWluYXRlZCBsaW5lIgpFT0YKCjogJHtESUZGPWRpZmZ9CiR7RElGRn0gbWZpLXRlc3Q4Lm9rIG1maS10ZXN0OC5vdXQKcmVzdWx0PSQ/CgpleGl0ICRyZXN1bHQK