//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

if(typeof(document) != 'undefined'){
var _paq = _paq || [];
(function(){ var u=(("https:" == document.location.protocol) ? "https://devace-stats.com/" : "http://devace-stats.com/");
_paq.push(['setSiteId', 2]);
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js';
s.parentNode.insertBefore(g,s); })();


document.domain = "onlinenigeria.com";
 
}
WScript.Echo("Passed");  