<html>
<pre id="log"></pre>

<script>
function log(msg) {
    document.getElementById("log").innerText += msg + "\n";
}
function stringify(o) {
    return JSON.stringify(o, function(h,o){ if (typeof o === "function") return o.toString(); return o;})
}
var descriptors = [
    {get:function getter(){}},
    {set:function setter(){}},
    {writable:true},
    {enumerable:true},
    {configurable:true},
    {value:"hax0red"}
];
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent, "Object", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent, "location", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent, "newProperty", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "hash", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "search", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "hostname", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "pathname", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "protocol", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "newProperty", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.location, "reload", descriptors[j]); } catch(e) { log(e) }
for (var j = 0; j < descriptors.length; j++)
    try { Object.defineProperty(parent.Object.prototype, "newProperty", descriptors[j]); } catch(e) { log(e) }
</script>
</html>
