PDA

View Full Version : An error message on the home page



joint
10-12-2014, 12:26 PM
Hi


I get an error when I enter the site > http://www.broadcastingworld.com
I use Chrome browser.


Google Safe Browsing recently detected malware (http://data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%0A%3Chtml%20i18n-values=%22dir%3Atextdirection;.style.fontSize%3Afo ntsize%22%3E%0A%20%20%3Chead%3E%0A%20%20%20%20%3Cm eta%20charset=%22utf-8%22%3E%0A%20%20%20%20%3Cmeta%20name=%22viewport%2 2%0A%20%20%20%20%20%20%20%20content=%22initial-scale=1,%20minimum-scale=1,%20width=device-width%22%3E%0A%20%20%20%20%3Ctitle%20i18n-content=%22tabTitle%22%3E%3C/title%3E%0A%20%20%20%20%3Cstyle%3E/*%20Copyright%202014%20The%20Chromium%20Authors.%2 0All%20rights%20reserved.%0A%20%20%20Use%20of%20th is%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A%20%20%20found %20in%20the%20LICENSE%20file.%20*/%0A%0Aa%20%7B%0A%20%20color%3A%20%23585858;%0A%7D% 0A%0Abody%20%7B%0A%20%20background-color%3A%20%23f7f7f7;%0A%20%20color%3A%20%23585858 ;%0A%20%20font-size%3A%20125%25;%0A%7D%0A%0Abody.safe-browsing%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20color%3A% 20white;%0A%7D%0A%0Abutton%20%7B%0A%20%20backgroun d%3A%20rgb(76,%20142,%20250);%0A%20%20border%3A%20 0;%0A%20%20border-radius%3A%202px;%0A%20%20box-sizing%3A%20border-box;%0A%20%20color%3A%20%23fff;%0A%20%20cursor%3A% 20pointer;%0A%20%20float%3A%20right;%0A%20%20font-size%3A%20.875em;%0A%20%20height%3A%2036px;%0A%20% 20margin%3A%20-6px%200%200;%0A%20%20outline%3A%200;%0A%20%20paddi ng%3A%208px%2024px;%0A%20%20transition%3A%20box-shadow%20200ms%20cubic-bezier(0.4,%200,%200.2,%201);%0A%7D%0A%0A%5Bdir='r tl'%5D%20button%20%7B%0A%20%20float%3A%20left;%0A% 7D%0A%0Abutton%3Aactive%20%7B%0A%20%20background%3 A%20rgb(50,%20102,%20213);%0A%7D%0A%0Abutton%3Ahov er%20%7B%0A%20%20box-shadow%3A%200%201px%203px%20rgba(0,%200,%200,%20.5 0);%0A%7D%0A%0A%23details%20%7B%0A%20%20color%3A%2 0%23696969;%0A%20%20margin%3A%2045px%200%2050px;%0 A%7D%0A%0A%23details%20p%3Anot(%3Afirst-of-type)%20%7B%0A%20%20margin-top%3A%2020px;%0A%7D%0A%0A%23error-code%20%7B%0A%20%20color%3A%20black;%0A%20%20opaci ty%3A%20.35;%0A%20%20text-transform%3A%20uppercase;%0A%7D%0A%0Ah1%20%7B%0A%2 0%20-webkit-margin-after%3A%2016px;%0A%20%20color%3A%20%23585858;%0A% 20%20font-size%3A%201.6em;%0A%20%20font-weight%3A%20normal;%0A%20%20line-height%3A%201.25em;%0A%7D%0A%0Ah2%20%7B%0A%20%20fo nt-size%3A%201.2em;%0A%20%20font-weight%3A%20normal;%0A%7D%0A%0A.hidden%20%7B%0A%20 %20display%3A%20none;%0A%7D%0A%0A.icon%20%7B%0A%20 %20background-repeat%3A%20no-repeat;%0A%20%20background-size%3A%20100%25;%0A%20%20height%3A%2072px;%0A%20% 20margin%3A%200%200%2040px;%0A%20%20width%3A%2072p x;%0A%7D%0A%0Ainput%5Btype=checkbox%5D%20%7B%0A%20 %20visibility%3A%20hidden;%0A%7D%0A%0A.interstitia l-wrapper%20%7B%0A%20%20box-sizing%3A%20border-box;%0A%20%20font-size%3A%201em;%0A%20%20line-height%3A%201.6em;%0A%20%20margin%3A%20100px%20aut o%200;%0A%20%20max-width%3A%20600px;%0A%20%20width%3A%20100%25;%0A%7D %0A%0A%23malware-opt-in%20%7B%0A%20%20font-size%3A%20.875em;%0A%20%20margin-top%3A%2039px;%0A%7D%0A%0A.nav-wrapper%20%7B%0A%20%20margin-top%3A%2051px;%0A%7D%0A%0A.nav-wrapper%3A%3Aafter%20%7B%0A%20%20clear%3A%20both;% 0A%20%20content%3A%20'';%0A%20%20display%3A%20tabl e;%0A%20%20width%3A%20100%25;%0A%7D%0A%0A%23opt-in-label%20%7B%0A%20%20-webkit-margin-start%3A%2032px;%0A%7D%0A%0A.safe-browsing%20%3A-webkit-any(%0A%20%20%20%20a,%20%23details,%20%23details-button,%20h1,%20h2,%20p,%20.small-link)%20%7B%0A%20%20color%3A%20white;%0A%7D%0A%0A. safe-browsing%20button%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20border%3A %201px%20solid%20white;%0A%7D%0A%0A.safe-browsing%20button%3Aactive%20%7B%0A%20%20backgroun d-color%3A%20rgb(206,%2052,%2038);%0A%20%20border-color%3A%20rgba(255,%20255,%20255,%20.6);%0A%7D%0A %0A.safe-browsing%20button%3Ahover%20%7B%0A%20%20box-shadow%3A%200%202px%203px%20rgba(0,%200,%200,%20.5 );%0A%7D%0A%0A.safe-browsing%20.icon%20%7B%0A%20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url('data%3Aimage/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAAB V7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c cllPAAABVFJREFUeNrs2stvG0UYAPBvJ7aQvc67UUWSkhx6QEJ CNFB6aaXwB3DiiISglCpNEzelIVEbKNCGVC2tWoEg4oaQOCD+C JDgwAkpkADlJSGSNGnsOA+/mtheZkYed11i7673m/XYzkSjfcgZe3/+Pu88VjMMA/ZL6UIktHmY1kVaDY/rYv69lQZiH/BbWnuq8GX35N/7sKpA1cSRhkTqCEcKEqkzHHQkUoc4qEikTnHQkEgd46AgkTrHc Y1EGgDHFRJpEJyKkUgD4VSERBoMxzESaUAcR0ikQXFsI5EGxrG FRBocxxKJ7OOURyL7OOWRiGyczOoKLI0Pw+7qPfSrySXicO+dc Xjw9x/SkASQPJwLZyA19yMsX8BFYjjLF8cg8cP3sDwxCg/++l0GUgFIGo5AYVssJI5z6Tykf53nx9nNDVieDMtAkrKq8T8cU TCQCji//Fx0XhISPlApHAykUjhmpMXxs6hI6ECxr7+0vPhKkKxwRDHi27D y6R11gQ4MhSF0fNDydU6Q7OJwoEP9kHr5dYhGo2oCaT4/HJy6iobkFCc78hZAUIdIJALr6+vqAWEicZwp5ziapvHKkGKxmH pAGEgFnIXKcPhnoFuWahsbG+oBFSGdeMEREhaOqG6QtPzjL1Kf gTEyu7A6cxni331j+Vr/wcehqaOz0Al0iyOOWens7ITW1lZHPp4AOUWy1Z5DHHGuvb3dCZ JGwKPC0+3SFVvpJguHVZZqW1tbavwGyUBygyOOGdL29rZ6QG6R MHDEdnNz0xaS50BFSDa6AA9x+tBwRGVA8XhcPSB+wTs7kIk5GA 4kEgDpNBqOOMeQEqxtlYByyQQdPozZ6ucUom49Ar6ProGWR8XA sYNEagGnUKIRIHdmOBIWjjjHgJLJZHWBXOGYkLTbM0WR5BZHHO +FRGoKp4C0BsataZp2UTQcsc+AUqmUt0BOcNjdynh6wBZS7tZV joSFI/YZUJreEDwBYjhLFCdFcawelc/xW/kEZE8OQ+6Z56wfr6dI2ZtXeNph4Yh9EUVEJZwcxeH9HNpPgteG wbCBlKNIuzffL0Jyi2PeJ1JxLp6H1PxP9EqMstXofQIMgSM+nM 8H2smzoFEky/9fuw87N97laYeFIxWI4SxSnOTCnHWasN+c0cm9e8h+P5BTowBH jlpHUmQN0tff42mHhSMFiOH8i4FjiiTfG2HQbCHdh9S1y3zrFk daBC1Nvw3J+TmrrKBp1QcwMmlvbEWR/KfPATnyvGW7WZpu6c8/Q8GRAnTglVOg6Tr9Rsv80cjRWOToDgaeNN0eGxoDMnC0bNukuw cCp8OucR6NoCUsoMCTT0HfjY8pUghyLOwfqWzKgjjFMaVb4Myb QJ49tmfbWncvhKY+gKa2dgycFTPQoAwkEgwVhT/09kNTpTimdNMpkm/gWFHbpPsQtCDiEEIGzUB/YiMFKVL/hxQpn25A08oXnnCHY0q35pFx8NNI4mnV0wutU9OoOLqu3zWvao iC/iBV8rcF+OeT2wCvDvG0w5zPMTIZSHz1BegvviQFZy8gKUh86BS N8pVOzMkurFt5KZxSdzH0dBNrUl1dXTWFU+42LwWpo6ODI9UKj lU/SAoSW7hj0VQLOHY6ip4gqYpjtyctBamtrY0jVRNndnb2Lta6mB QktkbOoklVHKdjMU+QVMKpZLAqBamlpYWnnGo4lY7mpSGxaFIJ x810hxSk5uZmDqUKjtv5IClIoVCIQ6mAgzFhJh2pmjhYM4pSkG gHjkNVEwdzylUKUjAY5FDVwsGek5aKVA0cGZP2UpACgQCvXuOU mjDbL6bynwADAOgw3IMgh3WtAAAAAElFTkSuQmCC')%201x);% 0A%7D%0A%0A.small-link%20%7B%0A%20%20color%3A%20%23696969;%0A%20%20f ont-size%3A%20.875em;%0A%7D%0A%0A.ssl%20.icon%20%7B%0A %20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url('data%3Aimage/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAAB 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 7kk9d+h/hVgAKkEjZejxYUeAAAAAElFTkSuQmCC')%201x);%0A%7D%0A% 0A.styled-checkbox%20%7B%0A%20%20float%3A%20left;%0A%20%20he ight%3A%2016px;%0A%20%20margin-top%3A%20.36em;%0A%20%20position%3A%20relative;%0A %20%20width%3A%2016px;%0A%7D%0A%0A%5Bdir='rtl'%5D% 20.styled-checkbox%20%7B%0A%20%20float%3A%20right;%0A%7D%0A% 0A.styled-checkbox%20label%20%7B%0A%20%20background-color%3A%20white;%0A%20%20border-radius%3A%202px;%0A%20%20height%3A%2016px;%0A%20%2 0left%3A%200;%0A%20%20position%3A%20absolute;%0A%2 0%20right%3A%200;%0A%20%20top%3A%200;%0A%20%20widt h%3A%2016px;%0A%7D%0A%0A.styled-checkbox%20label%3A%3Aafter%20%7B%0A%20%20backgrou nd%3A%20transparent;%0A%20%20border%3A%202px%20sol id%20rgb(217,%2069,%2061);%0A%20%20border-right-width%3A%200;%0A%20%20border-top-width%3A%200;%0A%20%20content%3A%20'';%0A%20%20hei ght%3A%204px;%0A%20%20left%3A%203px;%0A%20%20opaci ty%3A%200.3;%0A%20%20position%3A%20absolute;%0A%20 %20top%3A%204px;%0A%20%20transform%3A%20rotate(-45deg);%0A%20%20width%3A%209px;%0A%7D%0A%0A.styled-checkbox%20input%5Btype=checkbox%5D%3Achecked%20+% 20label%3A%3Aafter%20%7B%0A%20%20opacity%3A%201;%0 A%7D%0A%0A@media%20(max-width%3A%20700px)%20%7B%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20padding%3A%200%2010%25 ;%0A%20%20%7D%0A%7D%0A%0A@media%20(max-height%3A%20600px)%20%7B%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20margin-top%3A%2013%25;%0A%20%20%7D%0A%7D%0A%0A@media%20(m ax-width%3A%20400px)%20%7B%0A%20%20button,%0A%20%20%5 Bdir='rtl'%5D%20button%20%7B%0A%20%20%20%20float%3 A%20none;%0A%20%20%20%20font-size%3A%201em;%0A%20%20%20%20width%3A%20100%25;%0A %20%20%7D%0A%0A%20%20%23details%20%7B%0A%20%20%20% 20margin%3A%2020px%200%2020px%200;%0A%20%20%7D%0A% 0A%20%20%23details%20p%3Anot(%3Afirst-of-type)%20%7B%0A%20%20%20%20margin-top%3A%2010px;%0A%20%20%7D%0A%0A%20%20%23details-button%20%7B%0A%20%20%20%20display%3A%20block;%0A% 20%20%20%20padding-top%3A%2014px;%0A%20%20%20%20text-align%3A%20center;%0A%20%20%20%20width%3A%20100%25 ;%0A%20%20%7D%0A%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20padding%3A%200%205%25; %0A%20%20%7D%0A%0A%20%20%23malware-opt-in%20%7B%0A%20%20%20%20margin-top%3A%2024px;%0A%20%20%7D%0A%0A%20%20.nav-wrapper%20%7B%0A%20%20%20%20margin-top%3A%2030px;%0A%20%20%7D%0A%0A%20%20.small-link%20%7B%0A%20%20%20%20font-size%3A%201em;%0A%20%20%7D%0A%7D%0A%3C/style%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Copyright%20(c)%202013%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20@fileoverview%20Assertion%20support.%0 A%20*/%0A%0A/**%0A%20*%20Simple%20common%20assertion%20API%0A%2 0*%20@param%20%7B*%7D%20condition%20The%20conditio n%20to%20test.%20%20Note%20that%20this%20may%20be% 20used%20to%0A%20*%20%20%20%20%20test%20whether%20 a%20value%20is%20defined%20or%20not,%20and%20we%20 don't%20want%20to%20force%20a%0A%20*%20%20%20%20%2 0cast%20to%20Boolean.%0A%20*%20@param%20%7Bstring= %7D%20opt_message%20A%20message%20to%20use%20in%20 any%20error.%0A%20*/%0Afunction%20assert(condition,%20opt_message)%20% 7B%0A%20%20'use%20strict';%0A%20%20if%20(!conditio n)%20%7B%0A%20%20%20%20var%20msg%20=%20'Assertion% 20failed';%0A%20%20%20%20if%20(opt_message)%0A%20% 20%20%20%20%20msg%20=%20msg%20+%20'%3A%20'%20+%20o pt_message;%0A%20%20%20%20throw%20new%20Error(msg) ;%0A%20%20%7D%0A%7D%0A%0A%0A/**%0A%20*%20The%20global%20object.%0A%20*%20@type% 20%7B!Object%7D%0A%20*%20@const%0A%20*/%0Avar%20global%20=%20this;%0A%0A/**%0A%20*%20Alias%20for%20document.getElementById. %0A%20*%20@param%20%7Bstring%7D%20id%20The%20ID%20 of%20the%20element%20to%20find.%0A%20*%20@return%2 0%7BHTMLElement%7D%20The%20found%20element%20or%20 null%20if%20not%20found.%0A%20*/%0Afunction%20$(id)%20%7B%0A%20%20return%20documen t.getElementById(id);%0A%7D%0A%0A/**%0A%20*%20Add%20an%20accessible%20message%20to%2 0the%20page%20that%20will%20be%20announced%20to%0A %20*%20users%20who%20have%20spoken%20feedback%20on ,%20but%20will%20be%20invisible%20to%20all%0A%20*% 20other%20users.%20It's%20removed%20right%20away%2 0so%20it%20doesn't%20clutter%20the%20DOM.%0A%20*%2 0@param%20%7Bstring%7D%20msg%20The%20text%20to%20b e%20pronounced.%0A%20*/%0Afunction%20announceAccessibleMessage(msg)%20%7B %0A%20%20var%20element%20=%20document.createElemen t('div');%0A%20%20element.setAttribute('aria-live',%20'polite');%0A%20%20element.style.position %20=%20'relative';%0A%20%20element.style.left%20=% 20'-9999px';%0A%20%20element.style.height%20=%20'0px'; %0A%20%20element.innerText%20=%20msg;%0A%20%20docu ment.body.appendChild(element);%0A%20%20window.set Timeout(function()%20%7B%0A%20%20%20%20document.bo dy.removeChild(element);%0A%20%20%7D,%200);%0A%7D% 0A%0A/**%0A%20*%20Calls%20chrome.send%20with%20a%20callb ack%20and%20restores%20the%20original%20afterwards .%0A%20*%20@param%20%7Bstring%7D%20name%20The%20na me%20of%20the%20message%20to%20send.%0A%20*%20@par am%20%7B!Array%7D%20params%20The%20parameters%20to %20send.%0A%20*%20@param%20%7Bstring%7D%20callback Name%20The%20name%20of%20the%20function%20that%20t he%20backend%20calls.%0A%20*%20@param%20%7B!Functi on%7D%20callback%20The%20function%20to%20call.%0A% 20*/%0Afunction%20chromeSend(name,%20params,%20callbac kName,%20callback)%20%7B%0A%20%20var%20old%20=%20g lobal%5BcallbackName%5D;%0A%20%20global%5Bcallback Name%5D%20=%20function()%20%7B%0A%20%20%20%20//%20restore%0A%20%20%20%20global%5BcallbackName%5D% 20=%20old;%0A%0A%20%20%20%20var%20args%20=%20Array .prototype.slice.call(arguments);%0A%20%20%20%20re turn%20callback.apply(global,%20args);%0A%20%20%7D ;%0A%20%20chrome.send(name,%20params);%0A%7D%0A%0A/**%0A%20*%20Returns%20the%20scale%20factors%20supp orted%20by%20this%20platform.%0A%20*%20@return%20% 7Barray%7D%20The%20supported%20scale%20factors.%0A %20*/%0Afunction%20getSupportedScaleFactors()%20%7B%0A% 20%20var%20supportedScaleFactors%20=%20%5B%5D;%0A% 20%20if%20(cr.isMac%20%7C%7C%20cr.isChromeOS)%20%7 B%0A%20%20%20%20supportedScaleFactors.push(1);%0A% 20%20%20%20supportedScaleFactors.push(2);%0A%20%20 %7D%20else%20%7B%0A%20%20%20%20//%20Windows%20must%20be%20restarted%20to%20display% 20at%20a%20different%20scale%20factor.%0A%20%20%20 %20supportedScaleFactors.push(window.devicePixelRa tio);%0A%20%20%7D%0A%20%20return%20supportedScaleF actors;%0A%7D%0A%0A/**%0A%20*%20Generates%20a%20CSS%20url%20string.%0A %20*%20@param%20%7Bstring%7D%20s%20The%20URL%20to% 20generate%20the%20CSS%20url%20for.%0A%20*%20@retu rn%20%7Bstring%7D%20The%20CSS%20url%20string.%0A%2 0*/%0Afunction%20url(s)%20%7B%0A%20%20//%20http%3A//www.w3.org/TR/css3-values/%23uris%0A%20%20//%20Parentheses,%20commas,%20whitespace%20character s,%20single%20quotes%20(')%20and%20double%0A%20%20//%20quotes%20(%22)%20appearing%20in%20a%20URI%20mus t%20be%20escaped%20with%20a%20backslash%0A%20%20va r%20s2%20=%20s.replace(/(%5C(%7C%5C)%7C%5C,%7C%5Cs%7C%5C'%7C%5C%22%7C%5C%5 C)/g,%20'%5C%5C$1');%0A%20%20//%20WebKit%20has%20a%20bug%20when%20it%20comes%20to %20URLs%20that%20end%20with%20%5C%0A%20%20//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid=28885%0A%20%20if%20(/%5C%5C%5C%5C$/.test(s2))%20%7B%0A%20%20%20%20//%20Add%20a%20space%20to%20work%20around%20the%20We bKit%20bug.%0A%20%20%20%20s2%20+=%20'%20';%0A%20%2 0%7D%0A%20%20return%20'url(%22'%20+%20s2%20+%20'%2 2)';%0A%7D%0A%0A/**%0A%20*%20Returns%20the%20URL%20of%20the%20image ,%20or%20an%20image%20set%20of%20URLs%20for%20the% 20profile%20avatar.%0A%20*%20Default%20avatars%20h ave%20resources%20available%20for%20multiple%20sca lefactors,%20whereas%0A%20*%20the%20GAIA%20profile %20image%20only%20comes%20in%20one%20size.%0A%0A%2 0*%20@param%20%7Bstring%7D%20url%20The%20path%20of %20the%20image.%0A%20*%20@return%20%7Bstring%7D%20 The%20url,%20or%20an%20image%20set%20of%20URLs%20o f%20the%20avatar%20image.%0A%20*/%0Afunction%20getProfileAvatarIcon(path)%20%7B%0A% 20%20var%20chromeThemePath%20=%20'chrome%3A//theme';%0A%20%20var%20isDefaultAvatar%20=%0A%20%20 %20%20%20%20(path.slice(0,%20chromeThemePath.lengt h)%20==%20chromeThemePath);%0A%20%20return%20isDef aultAvatar%20%3F%20imageset(path%20+%20'@scalefact orx')%3A%20url(path);%0A%7D%0A%0A/**%0A%20*%20Generates%20a%20CSS%20-webkit-image-set%20for%20a%20chrome%3A//%20url.%0A%20*%20An%20entry%20in%20the%20image%20s et%20is%20added%20for%20each%20of%20getSupportedSc aleFactors().%0A%20*%20The%20scale-factor-specific%20url%20is%20generated%20by%20replacing%2 0the%20first%20instance%20of%0A%20*%20'scalefactor '%20in%20%7Cpath%7C%20with%20the%20numeric%20scale %20factor.%0A%20*%20@param%20%7Bstring%7D%20path%2 0The%20URL%20to%20generate%20an%20image%20set%20fo r.%0A%20*%20%20%20%20%20'scalefactor'%20should%20b e%20a%20substring%20of%20%7Cpath%7C.%0A%20*%20@ret urn%20%7Bstring%7D%20The%20CSS%20-webkit-image-set.%0A%20*/%0Afunction%20imageset(path)%20%7B%0A%20%20var%20s upportedScaleFactors%20=%20getSupportedScaleFactor s();%0A%0A%20%20var%20replaceStartIndex%20=%20path .indexOf('scalefactor');%0A%20%20if%20(replaceStar tIndex%20%3C%200)%0A%20%20%20%20return%20url(path) ;%0A%0A%20%20var%20s%20=%20'';%0A%20%20for%20(var% 20i%20=%200;%20i%20%3C%20supportedScaleFactors.len gth;%20++i)%20%7B%0A%20%20%20%20var%20scaleFactor% 20=%20supportedScaleFactors%5Bi%5D;%0A%20%20%20%20 var%20pathWithScaleFactor%20=%20path.substr(0,%20r eplaceStartIndex)%20+%20scaleFactor%20+%0A%20%20%2 0%20%20%20%20%20path.substr(replaceStartIndex%20+% 20'scalefactor'.length);%0A%0A%20%20%20%20s%20+=%2 0url(pathWithScaleFactor)%20+%20'%20'%20+%20scaleF actor%20+%20'x';%0A%0A%20%20%20%20if%20(i%20!=%20s upportedScaleFactors.length%20-%201)%0A%20%20%20%20%20%20s%20+=%20',%20';%0A%20%2 0%7D%0A%20%20return%20'-webkit-image-set('%20+%20s%20+%20')';%0A%7D%0A%0A/**%0A%20*%20Parses%20query%20parameters%20from%20L ocation.%0A%20*%20@param%20%7Bstring%7D%20location %20The%20URL%20to%20generate%20the%20CSS%20url%20f or.%0A%20*%20@return%20%7Bobject%7D%20Dictionary%2 0containing%20name%20value%20pairs%20for%20URL%0A% 20*/%0Afunction%20parseQueryParams(location)%20%7B%0A% 20%20var%20params%20=%20%7B%7D;%0A%20%20var%20quer y%20=%20unescape(location.search.substring(1));%0A %20%20var%20vars%20=%20query.split('&');%0A%20%20for%20(var%20i%20=%200;%20i%20%3C%20va rs.length;%20i++)%20%7B%0A%20%20%20%20var%20pair%2 0=%20vars%5Bi%5D.split('=');%0A%20%20%20%20params% 5Bpair%5B0%5D%5D%20=%20pair%5B1%5D;%0A%20%20%7D%0A %20%20return%20params;%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20by%20appendi ng%20or%20replacing%20the%20given%20query%20key%20 and%20value.%0A%20*%20Not%20supporting%20URL%20wit h%20username%20and%20password.%0A%20*%20@param%20% 7Bobject%7D%20location%20The%20original%20URL.%0A% 20*%20@param%20%7Bstring%7D%20key%20The%20query%20 parameter%20name.%0A%20*%20@param%20%7Bstring%7D%2 0value%20The%20query%20parameter%20value.%0A%20*%2 0@return%20%7Bstring%7D%20The%20constructed%20new% 20URL.%0A%20*/%0Afunction%20setQueryParam(location,%20key,%20val ue)%20%7B%0A%20%20var%20query%20=%20parseQueryPara ms(location);%0A%20%20query%5BencodeURIComponent(k ey)%5D%20=%20encodeURIComponent(value);%0A%0A%20%2 0var%20newQuery%20=%20'';%0A%20%20for%20(var%20q%2 0in%20query)%20%7B%0A%20%20%20%20newQuery%20+=%20( newQuery%20%3F%20'&'%20%3A%20'%3F')%20+%20q%20+%20'='%20+%20query%5Bq %5D;%0A%20%20%7D%0A%0A%20%20return%20location.orig in%20+%20location.pathname%20+%20newQuery%20+%20lo cation.hash;%0A%7D%0A%0Afunction%20findAncestorByC lass(el,%20className)%20%7B%0A%20%20return%20findA ncestor(el,%20function(el)%20%7B%0A%20%20%20%20if% 20(el.classList)%0A%20%20%20%20%20%20return%20el.c lassList.contains(className);%0A%20%20%20%20return %20null;%0A%20%20%7D);%0A%7D%0A%0A/**%0A%20*%20Return%20the%20first%20ancestor%20for% 20which%20the%20%7B@code%20predicate%7D%20returns% 20true.%0A%20*%20@param%20%7BNode%7D%20node%20The% 20node%20to%20check.%0A%20*%20@param%20%7Bfunction (Node)%20%3A%20boolean%7D%20predicate%20The%20func tion%20that%20tests%20the%0A%20*%20%20%20%20%20nod es.%0A%20*%20@return%20%7BNode%7D%20The%20found%20 ancestor%20or%20null%20if%20not%20found.%0A%20*/%0Afunction%20findAncestor(node,%20predicate)%20%7 B%0A%20%20var%20last%20=%20false;%0A%20%20while%20 (node%20!=%20null%20&&%20!(last%20=%20predicate(node)))%20%7B%0A%20%20%2 0%20node%20=%20node.parentNode;%0A%20%20%7D%0A%20% 20return%20last%20%3F%20node%20%3A%20null;%0A%7D%0 A%0Afunction%20swapDomNodes(a,%20b)%20%7B%0A%20%20 var%20afterA%20=%20a.nextSibling;%0A%20%20if%20(af terA%20==%20b)%20%7B%0A%20%20%20%20swapDomNodes(b, %20a);%0A%20%20%20%20return;%0A%20%20%7D%0A%20%20v ar%20aParent%20=%20a.parentNode;%0A%20%20b.parentN ode.replaceChild(a,%20b);%0A%20%20aParent.insertBe fore(b,%20afterA);%0A%7D%0A%0A/**%0A%20*%20Disables%20text%20selection%20and%20dr agging,%20with%20optional%20whitelist%20callbacks. %0A%20*%20@param%20%7Bfunction(Event)%3Aboolean=%7 D%20opt_allowSelectStart%20Unless%20this%20functio n%0A%20*%20%20%20%20is%20defined%20and%20returns%2 0true,%20the%20onselectionstart%20event%20will%20b e%0A%20*%20%20%20%20surpressed.%0A%20*%20@param%20 %7Bfunction(Event)%3Aboolean=%7D%20opt_allowDragSt art%20Unless%20this%20function%0A%20*%20%20%20%20i s%20defined%20and%20returns%20true,%20the%20ondrag start%20event%20will%20be%20surpressed.%0A%20*/%0Afunction%20disableTextSelectAndDrag(opt_allowSe lectStart,%20opt_allowDragStart)%20%7B%0A%20%20//%20Disable%20text%20selection.%0A%20%20document.on selectstart%20=%20function(e)%20%7B%0A%20%20%20%20 if%20(!(opt_allowSelectStart%20&&%20opt_allowSelectStart.call(this,%20e)))%0A%20%20 %20%20%20%20e.preventDefault();%0A%20%20%7D;%0A%0A %20%20//%20Disable%20dragging.%0A%20%20document.ondragstar t%20=%20function(e)%20%7B%0A%20%20%20%20if%20(!(op t_allowDragStart%20&&%20opt_allowDragStart.call(this,%20e)))%0A%20%20%2 0%20%20%20e.preventDefault();%0A%20%20%7D;%0A%7D%0 A%0A/**%0A%20*%20Call%20this%20to%20stop%20clicks%20on% 20%3Ca%20href=%22%23%22%3E%20links%20from%20scroll ing%20to%20the%20top%20of%0A%20*%20the%20page%20(a nd%20possibly%20showing%20a%20%23%20in%20the%20lin k).%0A%20*/%0Afunction%20preventDefaultOnPoundLinkClicks()%20 %7B%0A%20%20document.addEventListener('click',%20f unction(e)%20%7B%0A%20%20%20%20var%20anchor%20=%20 findAncestor(e.target,%20function(el)%20%7B%0A%20% 20%20%20%20%20return%20el.tagName%20==%20'A';%0A%2 0%20%20%20%7D);%0A%20%20%20%20//%20Use%20getAttribute()%20to%20prevent%20URL%20nor malization.%0A%20%20%20%20if%20(anchor%20&&%20anchor.getAttribute('href')%20==%20'%23')%0A%20 %20%20%20%20%20e.preventDefault();%0A%20%20%7D);%0 A%7D%0A%0A/**%0A%20*%20Check%20the%20directionality%20of%20th e%20page.%0A%20*%20@return%20%7Bboolean%7D%20True% 20if%20Chrome%20is%20running%20an%20RTL%20UI.%0A%2 0*/%0Afunction%20isRTL()%20%7B%0A%20%20return%20docum ent.documentElement.dir%20==%20'rtl';%0A%7D%0A%0A/**%0A%20*%20Get%20an%20element%20that's%20known%20 to%20exist%20by%20its%20ID.%20We%20use%20this%20in stead%20of%20just%0A%20*%20calling%20getElementByI d%20and%20not%20checking%20the%20result%20because% 20this%20lets%20us%0A%20*%20satisfy%20the%20JSComp iler%20type%20system.%0A%20*%20@param%20%7Bstring% 7D%20id%20The%20identifier%20name.%0A%20*%20@retur n%20%7B!Element%7D%20the%20Element.%0A%20*/%0Afunction%20getRequiredElement(id)%20%7B%0A%20%2 0var%20element%20=%20$(id);%0A%20%20assert(element ,%20'Missing%20required%20element%3A%20'%20+%20id) ;%0A%20%20return%20element;%0A%7D%0A%0A//%20Handle%20click%20on%20a%20link.%20If%20the%20li nk%20points%20to%20a%20chrome%3A%20or%20file%3A%20 url,%20then%0A//%20call%20into%20the%20browser%20to%20do%20the%20n avigation.%0Adocument.addEventListener('click',%20 function(e)%20%7B%0A%20%20if%20(e.defaultPrevented )%0A%20%20%20%20return;%0A%0A%20%20var%20el%20=%20 e.target;%0A%20%20if%20(el.nodeType%20==%20Node.EL EMENT_NODE%20&&%0A%20%20%20%20%20%20el.webkitMatchesSelector('A,% 20A%20*'))%20%7B%0A%20%20%20%20while%20(el.tagName %20!=%20'A')%20%7B%0A%20%20%20%20%20%20el%20=%20el .parentElement;%0A%20%20%20%20%7D%0A%0A%20%20%20%2 0if%20((el.protocol%20==%20'file%3A'%20%7C%7C%20el .protocol%20==%20'about%3A')%20&&%0A%20%20%20%20%20%20%20%20(e.button%20==%200%20%7 C%7C%20e.button%20==%201))%20%7B%0A%20%20%20%20%20 %20chrome.send('navigateToUrl',%20%5B%0A%20%20%20% 20%20%20%20%20el.href,%0A%20%20%20%20%20%20%20%20e l.target,%0A%20%20%20%20%20%20%20%20e.button,%0A%2 0%20%20%20%20%20%20%20e.altKey,%0A%20%20%20%20%20% 20%20%20e.ctrlKey,%0A%20%20%20%20%20%20%20%20e.met aKey,%0A%20%20%20%20%20%20%20%20e.shiftKey%0A%20%2 0%20%20%20%20%5D);%0A%20%20%20%20%20%20e.preventDe fault();%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D);%0A% 0A/**%0A%20*%20Creates%20a%20new%20URL%20which%20is%2 0the%20old%20URL%20with%20a%20GET%20param%20of%20k ey=value.%0A%20*%20@param%20%7Bstring%7D%20url%20T he%20base%20URL.%20There%20is%20not%20sanity%20che cking%20on%20the%20URL%20so%0A%20*%20%20%20%20%20i t%20must%20be%20passed%20in%20a%20proper%20format. %0A%20*%20@param%20%7Bstring%7D%20key%20The%20key% 20of%20the%20param.%0A%20*%20@param%20%7Bstring%7D %20value%20The%20value%20of%20the%20param.%0A%20*% 20@return%20%7Bstring%7D%20The%20new%20URL.%0A%20*/%0Afunction%20appendParam(url,%20key,%20value)%20% 7B%0A%20%20var%20param%20=%20encodeURIComponent(ke y)%20+%20'='%20+%20encodeURIComponent(value);%0A%0 A%20%20if%20(url.indexOf('%3F')%20==%20-1)%0A%20%20%20%20return%20url%20+%20'%3F'%20+%20pa ram;%0A%20%20return%20url%20+%20'&'%20+%20param;%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20CSS%20-webkit-image-set%20for%20a%20favicon%20request.%0A%20*%20@param %20%7Bstring%7D%20url%20The%20url%20for%20the%20fa vicon.%0A%20*%20@param%20%7Bnumber=%7D%20opt_size% 20Optional%20preferred%20size%20of%20the%20favicon .%0A%20*%20@param%20%7Bstring=%7D%20opt_type%20Opt ional%20type%20of%20favicon%20to%20request.%20Vali d%20values%0A%20*%20%20%20%20%20are%20'favicon'%20 and%20'touch-icon'.%20Default%20is%20'favicon'.%0A%20*%20@retur n%20%7Bstring%7D%20-webkit-image-set%20for%20the%20favicon.%0A%20*/%0Afunction%20getFaviconImageSet(url,%20opt_size,% 20opt_type)%20%7B%0A%20%20var%20size%20=%20opt_siz e%20%7C%7C%2016;%0A%20%20var%20type%20=%20opt_type %20%7C%7C%20'favicon';%0A%20%20return%20imageset(% 0A%20%20%20%20%20%20'chrome%3A//'%20+%20type%20+%20'/size/'%20+%20size%20+%20'@scalefactorx/'%20+%20url);%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20for%20a%20fa vicon%20request%20for%20the%20current%20device%20p ixel%20ratio.%0A%20*%20The%20URL%20must%20be%20upd ated%20when%20the%20user%20moves%20the%20browser%2 0to%20a%20screen%20with%20a%0A%20*%20different%20d evice%20pixel%20ratio.%20Use%20getFaviconImageSet( )%20for%20the%20updating%20to%0A%20*%20occur%20aut omatically.%0A%20*%20@param%20%7Bstring%7D%20url%2 0The%20url%20for%20the%20favicon.%0A%20*%20@param% 20%7Bnumber=%7D%20opt_size%20Optional%20preferred% 20size%20of%20the%20favicon.%0A%20*%20@param%20%7B string=%7D%20opt_type%20Optional%20type%20of%20fav icon%20to%20request.%20Valid%20values%0A%20*%20%20 %20%20%20are%20'favicon'%20and%20'touch-icon'.%20Default%20is%20'favicon'.%0A%20*%20@retur n%20%7Bstring%7D%20Updated%20URL%20for%20the%20fav icon.%0A%20*/%0Afunction%20getFaviconUrlForCurrentDevicePixelRa tio(url,%20opt_size,%20opt_type)%20%7B%0A%20%20var %20size%20=%20opt_size%20%7C%7C%2016;%0A%20%20var% 20type%20=%20opt_type%20%7C%7C%20'favicon';%0A%20% 20return%20'chrome%3A//'%20+%20type%20+%20'/size/'%20+%20size%20+%20'@'%20+%0A%20%20%20%20%20%20win dow.devicePixelRatio%20+%20'x/'%20+%20url;%0A%7D%0A%0A/**%0A%20*%20Creates%20an%20element%20of%20a%20spec ified%20type%20with%20a%20specified%20class%20name .%0A%20*%20@param%20%7Bstring%7D%20type%20The%20no de%20type.%0A%20*%20@param%20%7Bstring%7D%20classN ame%20The%20class%20name%20to%20use.%0A%20*%20@ret urn%20%7BElement%7D%20The%20created%20element.%0A% 20*/%0Afunction%20createElementWithClassName(type,%20c lassName)%20%7B%0A%20%20var%20elm%20=%20document.c reateElement(type);%0A%20%20elm.className%20=%20cl assName;%0A%20%20return%20elm;%0A%7D%0A%0A/**%0A%20*%20webkitTransitionEnd%20does%20not%20alw ays%20fire%20(e.g.%20when%20animation%20is%20abort ed%0A%20*%20or%20when%20no%20paint%20happens%20dur ing%20the%20animation).%20This%20function%20sets%2 0up%0A%20*%20a%20timer%20and%20emulate%20the%20eve nt%20if%20it%20is%20not%20fired%20when%20the%20tim er%20expires.%0A%20*%20@param%20%7B!HTMLElement%7D %20el%20The%20element%20to%20watch%20for%20webkitT ransitionEnd.%0A%20*%20@param%20%7Bnumber%7D%20tim eOut%20The%20maximum%20wait%20time%20in%20millisec onds%20for%20the%0A%20*%20%20%20%20%20webkitTransi tionEnd%20to%20happen.%0A%20*/%0Afunction%20ensureTransitionEndEvent(el,%20timeO ut)%20%7B%0A%20%20var%20fired%20=%20false;%0A%20%2 0el.addEventListener('webkitTransitionEnd',%20func tion%20f(e)%20%7B%0A%20%20%20%20el.removeEventList ener('webkitTransitionEnd',%20f);%0A%20%20%20%20fi red%20=%20true;%0A%20%20%7D);%0A%20%20window.setTi meout(function()%20%7B%0A%20%20%20%20if%20(!fired) %0A%20%20%20%20%20%20cr.dispatchSimpleEvent(el,%20 'webkitTransitionEnd');%0A%20%20%7D,%20timeOut);%0 A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollTop%20get ter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc%2 0The%20document%20node%20where%20information%20wil l%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20* %20@return%20%7Bnumber%7D%20The%20Y%20document%20s croll%20offset.%0A%20*/%0Afunction%20scrollTopForDocument(doc)%20%7B%0A%2 0%20return%20doc.documentElement.scrollTop%20%7C%7 C%20doc.body.scrollTop;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollTop%20set ter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc%2 0The%20document%20node%20where%20information%20wil l%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20* %20@param%20%7Bnumber%7D%20value%20The%20target%20 Y%20scroll%20offset.%0A%20*/%0Afunction%20setScrollTopForDocument(doc,%20value )%20%7B%0A%20%20doc.documentElement.scrollTop%20=% 20doc.body.scrollTop%20=%20value;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollLeft%20ge tter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc% 20The%20document%20node%20where%20information%20wi ll%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20 *%20@return%20%7Bnumber%7D%20The%20X%20document%20 scroll%20offset.%0A%20*/%0Afunction%20scrollLeftForDocument(doc)%20%7B%0A% 20%20return%20doc.documentElement.scrollLeft%20%7C %7C%20doc.body.scrollLeft;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollLeft%20se tter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc% 20The%20document%20node%20where%20information%20wi ll%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20 *%20@param%20%7Bnumber%7D%20value%20The%20target%2 0X%20scroll%20offset.%0A%20*/%0Afunction%20setScrollLeftForDocument(doc,%20valu e)%20%7B%0A%20%20doc.documentElement.scrollLeft%20 =%20doc.body.scrollLeft%20=%20value;%0A%7D%0A%0A/**%0A%20*%20Replaces%20'&',%20'%3C',%20'%3E',%20'%22',%20and%20'''%20charac ters%20with%20their%20HTML%20encoding.%0A%20*%20@p aram%20%7Bstring%7D%20original%20The%20original%20 string.%0A%20*%20@return%20%7Bstring%7D%20The%20st ring%20with%20all%20the%20characters%20mentioned%2 0above%20replaced.%0A%20*/%0Afunction%20HTMLEscape(original)%20%7B%0A%20%20r eturn%20original.replace(/&/g,%20'&')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/%3C/g,%20'<')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/%3E/g,%20'>')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/%22/g,%20'"')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/'/g,%20'&%2339;');%0A%7D%0A%0A/**%0A%20*%20Shortens%20the%20provided%20string%20( if%20necessary)%20to%20a%20string%20of%20length%20 at%20most%0A%20*%20%7CmaxLength%7C.%0A%20*%20@para m%20%7Bstring%7D%20original%20The%20original%20str ing.%0A%20*%20@param%20%7Bnumber%7D%20maxLength%20 The%20maximum%20length%20allowed%20for%20the%20str ing.%0A%20*%20@return%20%7Bstring%7D%20The%20origi nal%20string%20if%20its%20length%20does%20not%20ex ceed%0A%20*%20%20%20%20%20%7CmaxLength%7C.%20Other wise%20the%20first%20%7CmaxLength%7C%20-%201%20characters%20with%20'...'%0A%20*%20%20%20%2 0%20appended.%0A%20*/%0Afunction%20elide(original,%20maxLength)%20%7B%0 A%20%20if%20(original.length%20%3C=%20maxLength)%0 A%20%20%20%20return%20original;%0A%20%20return%20o riginal.substring(0,%20maxLength%20-%201)%20+%20'%5Cu2026';%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20@fileoverview%20This%20file%20defines% 20a%20singleton%20which%20provides%20access%20to%2 0all%20data%0A%20*%20that%20is%20available%20as%20 soon%20as%20the%20page's%20resources%20are%20loade d%20(before%20DOM%0A%20*%20content%20has%20finishe d%20loading).%20This%20data%20includes%20both%20lo calized%20strings%20and%0A%20*%20any%20data%20that %20is%20important%20to%20have%20ready%20from%20a%2 0very%20early%20stage%20(e.g.%20things%0A%20*%20th at%20must%20be%20displayed%20right%20away).%0A%20*/%0A%0Avar%20loadTimeData;%0A%0A(function()%20%7B%0 A%20%20'use%20strict';%0A%0A%20%20function%20LoadT imeData()%20%7B%0A%20%20%7D%0A%0A%20%20LoadTimeDat a.prototype%20=%20%7B%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Sets%20the%20backing%20obj ect.%0A%20%20%20%20%20*%20@param%20%7BObject%7D%20 value%20The%20de-serialized%20page%20data.%0A%20%20%20%20%20*/%0A%20%20%20%20set%20data(value)%20%7B%0A%20%20%20 %20%20%20expect(!this.data_,%20'Re-setting%20data.');%0A%20%20%20%20%20%20this.data_% 20=%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20@return%20%7Bboolean%7D%20 True%20if%20%7Cid%7C%20is%20a%20key%20in%20the%20d ictionary.%0A%20%20%20%20%20*/%0A%20%20%20%20valueExists%3A%20function(id)%20%7B %0A%20%20%20%20%20%20return%20id%20in%20this.data_ ;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Fetches%20a%20value,%20exp ecting%20that%20it%20exists.%0A%20%20%20%20%20*%20 @param%20%7Bstring%7D%20id%20The%20key%20that%20id entifies%20the%20desired%20value.%0A%20%20%20%20%2 0*%20@return%20%7B*%7D%20The%20corresponding%20val ue.%0A%20%20%20%20%20*/%0A%20%20%20%20getValue%3A%20function(id)%20%7B%0A %20%20%20%20%20%20expect(this.data_,%20'No%20data. %20Did%20you%20remember%20to%20include%20strings.j s%3F');%0A%20%20%20%20%20%20var%20value%20=%20this .data_%5Bid%5D;%0A%20%20%20%20%20%20expect(typeof% 20value%20!=%20'undefined',%20'Could%20not%20find% 20value%20for%20'%20+%20id);%0A%20%20%20%20%20%20r eturn%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%2 0/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%2 0makes%20sure%20that%20the%20value%20is%20a%20stri ng.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%20i d%20The%20key%20that%20identifies%20the%20desired% 20string.%0A%20%20%20%20%20*%20@return%20%7Bstring %7D%20The%20corresponding%20string%20value.%0A%20% 20%20%20%20*/%0A%20%20%20%20getString%3A%20function(id)%20%7B%0 A%20%20%20%20%20%20var%20value%20=%20this.getValue (id);%0A%20%20%20%20%20%20expectIsType(id,%20value ,%20'string');%0A%20%20%20%20%20%20return%20value; %0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Returns%20a%20formatted%20 localized%20string%20where%20$1%20to%20$9%20are%20 replaced%20by%20the%0A%20%20%20%20%20*%20second%20 to%20the%20tenth%20argument.%0A%20%20%20%20%20*%20 @param%20%7Bstring%7D%20id%20The%20ID%20of%20the%2 0string%20we%20want.%0A%20%20%20%20%20*%20@param%2 0%7B...string%7D%20The%20extra%20values%20to%20inc lude%20in%20the%20formatted%20output.%0A%20%20%20% 20%20*%20@return%20%7Bstring%7D%20The%20formatted% 20string.%0A%20%20%20%20%20*/%0A%20%20%20%20getStringF%3A%20function(id)%20%7B% 0A%20%20%20%20%20%20var%20value%20=%20this.getStri ng(id);%0A%20%20%20%20%20%20if%20(!value)%0A%20%20 %20%20%20%20%20%20return;%0A%0A%20%20%20%20%20%20v ar%20varArgs%20=%20arguments;%0A%20%20%20%20%20%20 return%20value.replace(/%5C$%5B$1-9%5D/g,%20function(m)%20%7B%0A%20%20%20%20%20%20%20%20r eturn%20m%20==%20'$$'%20%3F%20'$'%20%3A%20varArgs% 5Bm%5B1%5D%5D;%0A%20%20%20%20%20%20%7D);%0A%20%20% 20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%2 0makes%20sure%20that%20the%20value%20is%20a%20bool ean.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%20 id%20The%20key%20that%20identifies%20the%20desired %20boolean.%0A%20%20%20%20%20*%20@return%20%7Bbool ean%7D%20The%20corresponding%20boolean%20value.%0A %20%20%20%20%20*/%0A%20%20%20%20getBoolean%3A%20function(id)%20%7B% 0A%20%20%20%20%20%20var%20value%20=%20this.getValu e(id);%0A%20%20%20%20%20%20expectIsType(id,%20valu e,%20'boolean');%0A%20%20%20%20%20%20return%20valu e;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%2 0makes%20sure%20that%20the%20value%20is%20an%20int eger.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%2 0id%20The%20key%20that%20identifies%20the%20desire d%20number.%0A%20%20%20%20%20*%20@return%20%7Bnumb er%7D%20The%20corresponding%20number%20value.%0A%2 0%20%20%20%20*/%0A%20%20%20%20getInteger%3A%20function(id)%20%7B% 0A%20%20%20%20%20%20var%20value%20=%20this.getValu e(id);%0A%20%20%20%20%20%20expectIsType(id,%20valu e,%20'number');%0A%20%20%20%20%20%20expect(value%2 0==%20Math.floor(value),%20'Number%20isn%5C't%20in teger%3A%20'%20+%20value);%0A%20%20%20%20%20%20ret urn%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Override%20values%20in%20l oadTimeData%20with%20the%20values%20found%20in%20% 7Creplacements%7C.%0A%20%20%20%20%20*%20@param%20% 7BObject%7D%20replacements%20The%20dictionary%20ob ject%20of%20keys%20to%20replace.%0A%20%20%20%20%20 */%0A%20%20%20%20overrideValues%3A%20function(replac ements)%20%7B%0A%20%20%20%20%20%20expect(typeof%20 replacements%20==%20'object',%0A%20%20%20%20%20%20 %20%20%20%20%20%20%20'Replacements%20must%20be%20a %20dictionary%20object.');%0A%20%20%20%20%20%20for %20(var%20key%20in%20replacements)%20%7B%0A%20%20% 20%20%20%20%20%20this.data_%5Bkey%5D%20=%20replace ments%5Bkey%5D;%0A%20%20%20%20%20%20%7D%0A%20%20%2 0%20%7D%0A%20%20%7D;%0A%0A%20%20/**%0A%20%20%20*%20Checks%20condition,%20displays%2 0error%20message%20if%20expectation%20fails.%0A%20 %20%20*%20@param%20%7B*%7D%20condition%20The%20con dition%20to%20check%20for%20truthiness.%0A%20%20%2 0*%20@param%20%7Bstring%7D%20message%20The%20messa ge%20to%20display%20if%20the%20check%20fails.%0A%2 0%20%20*/%0A%20%20function%20expect(condition,%20message)%2 0%7B%0A%20%20%20%20if%20(!condition)%0A%20%20%20%2 0%20%20console.error(message);%0A%20%20%7D%0A%0A%2 0%20/**%0A%20%20%20*%20Checks%20that%20the%20given%20va lue%20has%20the%20given%20type.%0A%20%20%20*%20@pa ram%20%7Bstring%7D%20id%20The%20id%20of%20the%20va lue%20(only%20used%20for%20error%20message).%0A%20 %20%20*%20@param%20%7B*%7D%20value%20The%20value%2 0to%20check%20the%20type%20on.%0A%20%20%20*%20@par am%20%7Bstring%7D%20type%20The%20type%20we%20expec t%20%7Cvalue%7C%20to%20be.%0A%20%20%20*/%0A%20%20function%20expectIsType(id,%20value,%20ty pe)%20%7B%0A%20%20%20%20expect(typeof%20value%20== %20type,%20'%5B'%20+%20value%20+%20'%5D%20('%20+%2 0id%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20')%20is%20not%20a%20'%20+%20type);%0A%20% 20%7D%0A%0A%20%20expect(!loadTimeData,%20'should%2 0only%20include%20this%20file%20once');%0A%20%20lo adTimeData%20=%20new%20LoadTimeData;%0A%7D)();%0A% 3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202013%20The%20Chromium%20Authors.%20 All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Should%20match%20SSLBlockingPageCommands%20in%2 0ssl_blocking_page.cc.%0Avar%20CMD_DONT_PROCEED%20 =%200;%0Avar%20CMD_PROCEED%20=%201;%0Avar%20CMD_MO RE%20=%202;%0Avar%20CMD_RELOAD%20=%203;%0Avar%20CM D_HELP%20=%204;%0A%0Avar%20keyPressState%20=%200;% 0A%0Afunction%20$(o)%20%7B%0A%20%20return%20docume nt.getElementById(o);%0A%7D%0A%0Afunction%20sendCo mmand(cmd)%20%7B%0A%20%20window.domAutomationContr oller.setAutomationId(1);%0A%20%20window.domAutoma tionController.send(cmd);%0A%7D%0A%0A//%20This%20allows%20errors%20to%20be%20skippped%20b y%20typing%20%22danger%22%20into%20the%20page.%0Af unction%20keyPressHandler(e)%20%7B%0A%20%20var%20s equence%20=%20'danger';%0A%20%20if%20(sequence.cha rCodeAt(keyPressState)%20==%20e.keyCode)%20%7B%0A% 20%20%20%20keyPressState++;%0A%20%20%20%20if%20(ke yPressState%20==%20sequence.length)%20%7B%0A%20%20 %20%20%20%20sendCommand(CMD_PROCEED);%0A%20%20%20% 20%20%20keyPressState%20=%200;%0A%20%20%20%20%7D%0 A%20%20%7D%20else%20%7B%0A%20%20%20%20keyPressStat e%20=%200;%0A%20%20%7D%0A%7D%0A%0Afunction%20share dSetup()%20%7B%0A%20%20document.addEventListener(' contextmenu',%20function(e)%20%7B%0A%20%20%20%20e. preventDefault();%0A%20%20%7D);%0A%20%20document.a ddEventListener('keypress',%20keyPressHandler);%0A %7D%0A%0Adocument.addEventListener('DOMContentLoad ed',%20sharedSetup);%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20 All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Must%20match%20the%20commands%20handled%20by%20 SafeBrowsingBlockingPage%3A%3ACommandReceived.%0Av ar%20SB_CMD_DO_REPORT%20=%20'doReport';%0Avar%20SB _CMD_DONT_REPORT%20=%20'dontReport';%0Avar%20SB_CM D_EXPANDED_SEE_MORE%20=%20'expandedSeeMore';%0Avar %20SB_CMD_LEARN_MORE_2%20=%20'learnMore2';%0Avar%2 0SB_CMD_PROCEED%20=%20'proceed';%0Avar%20SB_CMD_RE PORT_ERROR%20=%20'reportError';%0Avar%20SB_CMD_SHO W_DIAGNOSTIC%20=%20'showDiagnostic';%0Avar%20SB_CM D_SHOW_PRIVACY%20=%20'showPrivacy';%0Avar%20SB_CMD _TAKE_ME_BACK%20=%20'takeMeBack';%0A%0A//%20Other%20constants%20defined%20in%20safe_browsin g_blocking_page.cc.%0Avar%20SB_BOX_CHECKED%20=%20' boxchecked';%0Avar%20SB_DISPLAY_CHECK_BOX%20=%20'd isplaycheckbox';%0A%0A//%20This%20sets%20up%20the%20Extended%20Safe%20Brow sing%20Reporting%20opt-in.%0Afunction%20setupCheckbox()%20%7B%0A%20%20if% 20(loadTimeData.getBoolean('ssl')%20%7C%7C%20loadT imeData.getBoolean('phishing')%20%7C%7C%0A%20%20%2 0%20%20%20!loadTimeData.getBoolean(SB_DISPLAY_CHEC K_BOX))%20%7B%0A%20%20%20%20return;%0A%20%20%7D%0A %0A%20%20$('opt-in-label').innerHTML%20=%20loadTimeData.getString('op tInLink');%0A%20%20$('opt-in-checkbox').checked%20=%20loadTimeData.getBoolean(S B_BOX_CHECKED);%0A%20%20$('malware-opt-in').classList.remove('hidden');%0A%0A%20%20$('opt-in-checkbox').addEventListener('click',%20function()% 20%7B%0A%20%20%20%20sendCommand(%0A%20%20%20%20%20 %20%20%20$('opt-in-checkbox').checked%20%3F%20SB_CMD_DO_REPORT%20%3A% 20SB_CMD_DONT_REPORT);%0A%20%20%7D);%0A%7D%0A%0Afu nction%20setupMalwareFinchExperiment()%20%7B%0A%20 %20if%20(loadTimeData.getString('trialCondition')% 20!=%20'V3Advice')%0A%20%20%20%20return;%0A%20%20//%20Add%20all%20this%20dynamically%20instead%20of%2 0into%20the%20HTML%20because%20it's%20just%20a%0A% 20%20//%20short-lived%20experiment.%0A%20%20var%20heading%20=%20do cument.createElement('h2');%0A%20%20heading.innerT ext%20=%20loadTimeData.getString('adviceHeading'); %0A%20%20$('details').insertBefore(heading,%20$('d etails').firstChild);%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20 All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20This%20is%20the%20shared%20code%20for%20the%20n ew%20(Chrome%2037)%20security%20interstitials.%20I t%20is%0A//%20used%20for%20both%20SSL%20interstitials%20and%2 0Safe%20Browsing%20interstitials.%0A%0Avar%20expan dedDetails%20=%20false;%0A%0Afunction%20setupEvent s()%20%7B%0A%20%20var%20overridable%20=%20loadTime Data.getBoolean('overridable');%0A%20%20var%20ssl% 20=%20loadTimeData.getBoolean('ssl');%0A%0A%20%20i f%20(ssl)%20%7B%0A%20%20%20%20$('body').classList. add('ssl');%0A%20%20%7D%20else%20%7B%0A%20%20%20%2 0$('body').classList.add('safe-browsing');%0A%20%20%20%20setupMalwareFinchExperim ent();%0A%20%20%7D%0A%0A%20%20$('primary-button').addEventListener('click',%20function()%20 %7B%0A%20%20%20%20if%20(!ssl)%0A%20%20%20%20%20%20 sendCommand(SB_CMD_TAKE_ME_BACK);%0A%20%20%20%20el se%20if%20(overridable)%0A%20%20%20%20%20%20sendCo mmand(CMD_DONT_PROCEED);%0A%20%20%20%20else%0A%20% 20%20%20%20%20sendCommand(CMD_RELOAD);%0A%20%20%7D );%0A%0A%20%20if%20(overridable)%20%7B%0A%20%20%20 %20$('proceed-link').addEventListener('click',%20function(event) %20%7B%0A%20%20%20%20%20%20sendCommand(ssl%20%3F%2 0CMD_PROCEED%20%3A%20SB_CMD_PROCEED);%0A%20%20%20% 20%7D);%0A%20%20%7D%20else%20if%20(!ssl)%20%7B%0A% 20%20%20%20$('final-paragraph').classList.add('hidden');%0A%20%20%7D%0 A%0A%20%20if%20(ssl%20&&%20overridable)%20%7B%0A%20%20%20%20$('proceed-link').classList.add('small-link');%0A%20%20%7D%20else%20if%20($('help-link'))%20%7B%0A%20%20%20%20//%20Overridable%20SSL%20page%20doesn't%20have%20thi s%20link.%0A%20%20%20%20$('help-link').addEventListener('click',%20function(event) %20%7B%0A%20%20%20%20%20%20if%20(ssl)%0A%20%20%20% 20%20%20%20%20sendCommand(CMD_HELP);%0A%20%20%20%2 0%20%20else%20if%20(loadTimeData.getBoolean('phish ing'))%0A%20%20%20%20%20%20%20%20sendCommand(SB_CM D_LEARN_MORE_2);%0A%20%20%20%20%20%20else%0A%20%20 %20%20%20%20%20%20sendCommand(SB_CMD_SHOW_DIAGNOST IC);%0A%20%20%20%20%7D);%0A%20%20%7D%0A%0A%20%20if %20(ssl%20&&%20!overridable)%20%7B%0A%20%20%20%20$('error-code').textContent%20=%20loadTimeData.getString('e rrorCode');%0A%20%20%20%20$('error-code').classList.remove('hidden');%0A%20%20%7D%0A% 0A%20%20$('details-button').addEventListener('click',%20function(even t)%20%7B%0A%20%20%20%20var%20hiddenDetails%20=%20$ ('details').classList.toggle('hidden');%0A%20%20%2 0%20$('details-button').innerText%20=%20hiddenDetails%20%3F%0A%20 %20%20%20%20%20%20%20loadTimeData.getString('openD etails')%20%3A%0A%20%20%20%20%20%20%20%20loadTimeD ata.getString('closeDetails');%0A%20%20%20%20if%20 (!expandedDetails)%20%7B%0A%20%20%20%20%20%20//%20Record%20a%20histogram%20entry%20only%20the%20f irst%20time%20that%20details%20is%20opened.%0A%20% 20%20%20%20%20sendCommand(ssl%20%3F%20CMD_MORE%20% 3A%20SB_CMD_EXPANDED_SEE_MORE);%0A%20%20%20%20%20% 20expandedDetails%20=%20true;%0A%20%20%20%20%7D%0A %20%20%7D);%0A%0A%20%20preventDefaultOnPoundLinkCl icks();%0A%20%20setupCheckbox();%0A%7D%0A%0Adocume nt.addEventListener('DOMContentLoaded',%20setupEve nts);%0A%3C/script%3E%0A%20%20%3C/head%3E%0A%3Cbody%20id=%22body%22%20i18n-values=%22.style.fontFamily%3Afontfamily%22%3E%0A% 20%20%3Cdiv%20class=%22interstitial-wrapper%22%3E%0A%20%20%20%20%3Cdiv%20class=%22icon %22%20id=%22icon%22%3E%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22main-message%22%3E%0A%20%20%20%20%20%20%3Ch1%20i18n-content=%22heading%22%3E%3C/h1%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AprimaryParagraph%22%3E%3C/p%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22malware-opt-in%22%20class=%22hidden%22%3E%0A%20%20%20%20%20%20 %3Cdiv%20class=%22styled-checkbox%22%3E%0A%20%20%20%20%20%20%20%20%3Cinput% 20type=%22checkbox%22%20id=%22opt-in-checkbox%22%3E%0A%20%20%20%20%20%20%20%20%3Clabel% 20for=%22opt-in-checkbox%22%3E%3C/label%3E%0A%20%20%20%20%20%20%3C/div%3E%0A%20%20%20%20%20%20%3Cdiv%20id=%22opt-in-label%22%3E%3C/div%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20class=%22nav-wrapper%22%3E%0A%20%20%20%20%20%20%3Cbutton%20i18n-content=%22primaryButtonText%22%20id=%22primary-button%22%3E%3C/button%3E%0A%20%20%20%20%20%20%3Ca%20href=%22%23%2 2%20id=%22details-button%22%20class=%22small-link%22%0A%20%20%20%20%20%20%20%20%20%20i18n-content=%22openDetails%22%3E%3C/a%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22details%22%20c lass=%22hidden%22%3E%0A%20%20%20%20%20%20%3Cp%20i1 8n-values=%22.innerHTML%3AexplanationParagraph%22%3E% 3C/p%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AfinalParagraph%22%20id=%22f inal-paragraph%22%3E%3C/p%3E%0A%20%20%20%20%20%20%3Cp%20id=%22error-code%22%20class=%22hidden%22%3E%3C/p%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%3C/div%3E%0A%3C/body%3E%0A%3C/html%3E%3Cscript%3EloadTimeData.data%20=%20%7B%22b oxchecked%22%3Afalse,%22closeDetails%22%3A%22Hide% 20details%22,%22displaycheckbox%22%3Atrue,%22expla nationParagraph%22%3A%22Google%20Safe%20Browsing%2 0recently%20%5Cu003Ca%20href=%5C%22%23%5C%22%20id= %5C%22help-link%5C%22%3Edetected%20malware%5Cu003C/a%3E%20on%20www.broadcastingworld.com.%20Websites% 20that%20are%20normally%20safe%20are%20sometimes%2 0infected%20with%20malware.%20The%20malicious%20co ntent%20comes%20from%20files.broadcastingworld.net ,%20a%20known%20malware%20distributor.%22,%22final Paragraph%22%3A%22If%20you%20understand%20the%20ri sks%20to%20your%20security,%20you%20may%20%5Cu003C a%20href=%5C%22%23%5C%22%20id=%5C%22proceed-link%5C%22%3Evisit%20this%20unsafe%20site%5Cu003C/a%3E%20before%20the%20dangerous%20programs%20have% 20been%20removed.%22,%22fontfamily%22%3A%22'Segoe% 20UI',%20Tahoma,%20sans-serif%22,%22fontsize%22%3A%2275%25%22,%22heading%2 2%3A%22The%20site%20ahead%20contains%20malware%22, %22openDetails%22%3A%22Details%22,%22optInLink%22% 3A%22Automatically%20report%20details%20of%20possi ble%20security%20incidents%20to%20Google.%20%5Cu00 3Ca%20id=%5C%22privacy-link%5C%22%20href=%5C%22%5C%22%20onclick=%5C%22sen dCommand('showPrivacy');%20return%20false;%5C%22%2 0onmousedown=%5C%22return%20false;%5C%22%3EPrivacy %20policy%5Cu003C/a%3E%22,%22overridable%22%3Atrue,%22phishing%22%3A false,%22primaryButtonText%22%3A%22Back%20to%20saf ety%22,%22primaryParagraph%22%3A%22Attackers%20cur rently%20on%20%5Cu003Cstrong%3Efiles.broadcastingw orld.net%5Cu003C/strong%3E%20might%20attempt%20to%20install%20dange rous%20programs%20on%20your%20computer%20that%20st eal%20or%20delete%20your%20information%20(for%20ex ample,%20photos,%20passwords,%20messages,%20and%20 credit%20cards).%22,%22ssl%22%3Afalse,%22tabTitle% 22%3A%22Security%20error%22,%22textdirection%22%3A %22ltr%22,%22trialCondition%22%3A%22V3%22%7D;%3C/script%3E%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20@fileoverview%20This%20is%20a%20simple %20template%20engine%20inspired%20by%20JsTemplates %0A%20*%20optimized%20for%20i18n.%0A%20*%0A%20*%20 It%20currently%20supports%20three%20handlers%3A%0A %20*%0A%20*%20%20%20*%20i18n-content%20which%20sets%20the%20textContent%20of%20 the%20element.%0A%20*%0A%20*%20%20%20%20%20%3Cspan %20i18n-content=%22myContent%22%3E%3C/span%3E%0A%20*%0A%20*%20%20%20*%20i18n-options%20which%20generates%20%3Coption%3E%20eleme nts%20for%20a%20%3Cselect%3E.%0A%20*%0A%20*%20%20% 20%20%20%3Cselect%20i18n-options=%22myOptionList%22%3E%3C/select%3E%0A%20*%0A%20*%20%20%20*%20i18n-values%20is%20a%20list%20of%20attribute-value%20or%20property-value%20pairs.%0A%20*%20%20%20%20%20Properties%20a re%20prefixed%20with%20a%20'.'%20and%20can%20conta in%20nested%20properties.%0A%20*%0A%20*%20%20%20%2 0%20%3Cspan%20i18n-values=%22title%3AmyTitle;.style.fontSize%3AfontSi ze%22%3E%3C/span%3E%0A%20*%0A%20*%20This%20file%20is%20a%20cop y%20of%20i18n_template.js,%20with%20minor%20tweaks %20to%20support%20using%0A%20*%20load_time_data.js .%20It%20should%20replace%20i18n_template.js%20eve ntually.%0A%20*/%0A%0Avar%20i18nTemplate%20=%20(function()%20%7B%0 A%20%20/**%0A%20%20%20*%20This%20provides%20the%20handlers %20for%20the%20templating%20engine.%20The%20key%20 is%20used%20as%0A%20%20%20*%20the%20attribute%20na me%20and%20the%20value%20is%20the%20function%20tha t%20gets%20called%20for%20every%0A%20%20%20*%20sin gle%20node%20that%20has%20this%20attribute.%0A%20% 20%20*%20@type%20%7BObject%7D%0A%20%20%20*/%0A%20%20var%20handlers%20=%20%7B%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20handler%20sets%20th e%20textContent%20of%20the%20element.%0A%20%20%20% 20%20*%20@param%20%7BHTMLElement%7D%20element%20Th e%20node%20to%20modify.%0A%20%20%20%20%20*%20@para m%20%7Bstring%7D%20key%20The%20name%20of%20the%20v alue%20in%20the%20dictionary.%0A%20%20%20%20%20*%2 0@param%20%7BLoadTimeData%7D%20dictionary%20The%20 dictionary%20of%20strings%20to%20draw%20from.%0A%2 0%20%20%20%20*/%0A%20%20%20%20'i18n-content'%3A%20function(element,%20key,%20dictionar y)%20%7B%0A%20%20%20%20%20%20element.textContent%2 0=%20dictionary.getString(key);%0A%20%20%20%20%7D, %0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20handler%20adds%20op tions%20to%20a%20%3Cselect%3E%20element.%0A%20%20% 20%20%20*%20@param%20%7BHTMLElement%7D%20select%20 The%20node%20to%20modify.%0A%20%20%20%20%20*%20@pa ram%20%7Bstring%7D%20key%20The%20name%20of%20the%2 0value%20in%20the%20dictionary.%20It%20should%0A%2 0%20%20%20%20*%20%20%20%20%20identify%20an%20array %20of%20values%20to%20initialize%20an%20%3Coption% 3E.%20Each%20value,%0A%20%20%20%20%20*%20%20%20%20 %20if%20a%20pair,%20represents%20%5Bcontent,%20val ue%5D.%20Otherwise,%20it%20should%20be%20a%0A%20%2 0%20%20%20*%20%20%20%20%20content%20string%20with% 20no%20value.%0A%20%20%20%20%20*%20@param%20%7BLoa dTimeData%7D%20dictionary%20The%20dictionary%20of% 20strings%20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-options'%3A%20function(select,%20key,%20dictionary )%20%7B%0A%20%20%20%20%20%20var%20options%20=%20di ctionary.getValue(key);%0A%20%20%20%20%20%20option s.forEach(function(optionData)%20%7B%0A%20%20%20%2 0%20%20%20%20var%20option%20=%20typeof%20optionDat a%20==%20'string'%20%3F%0A%20%20%20%20%20%20%20%20 %20%20%20%20new%20Option(optionData)%20%3A%0A%20%2 0%20%20%20%20%20%20%20%20%20%20new%20Option(option Data%5B1%5D,%20optionData%5B0%5D);%0A%20%20%20%20% 20%20%20%20select.appendChild(option);%0A%20%20%20 %20%20%20%7D);%0A%20%20%20%20%7D,%0A%0A%20%20%20%2 0/**%0A%20%20%20%20%20*%20This%20is%20used%20to%20se t%20HTML%20attributes%20and%20DOM%20properties.%20 The%20syntax%20is%3A%0A%20%20%20%20%20*%20%20%20at tributename%3Akey;%0A%20%20%20%20%20*%20%20%20.dom Property%3Akey;%0A%20%20%20%20%20*%20%20%20.nested .dom.property%3Akey%0A%20%20%20%20%20*%20@param%20 %7BHTMLElement%7D%20element%20The%20node%20to%20mo dify.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%2 0attributeAndKeys%20The%20path%20of%20the%20attrib ute%20to%20modify%0A%20%20%20%20%20*%20%20%20%20%2 0followed%20by%20a%20colon,%20and%20the%20name%20o f%20the%20value%20in%20the%20dictionary.%0A%20%20% 20%20%20*%20%20%20%20%20Multiple%20attribute/key%20pairs%20may%20be%20separated%20by%20semicolo ns.%0A%20%20%20%20%20*%20@param%20%7BLoadTimeData% 7D%20dictionary%20The%20dictionary%20of%20strings% 20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-values'%3A%20function(element,%20attributeAndKeys, %20dictionary)%20%7B%0A%20%20%20%20%20%20var%20par ts%20=%20attributeAndKeys.replace(/%5Cs/g,%20'').split(/;/);%0A%20%20%20%20%20%20parts.forEach(function(part )%20%7B%0A%20%20%20%20%20%20%20%20if%20(!part)%0A% 20%20%20%20%20%20%20%20%20%20return;%0A%0A%20%20%2 0%20%20%20%20%20var%20attributeAndKeyPair%20=%20pa rt.match(/%5E(%5B%5E%3A%5D+)%3A(.+)$/);%0A%20%20%20%20%20%20%20%20if%20(!attributeAndKe yPair)%0A%20%20%20%20%20%20%20%20%20%20throw%20new %20Error('malformed%20i18n-values%3A%20'%20+%20attributeAndKeys);%0A%0A%20%20 %20%20%20%20%20%20var%20propName%20=%20attributeAn dKeyPair%5B1%5D;%0A%20%20%20%20%20%20%20%20var%20p ropExpr%20=%20attributeAndKeyPair%5B2%5D;%0A%0A%20 %20%20%20%20%20%20%20var%20value%20=%20dictionary. getValue(propExpr);%0A%0A%20%20%20%20%20%20%20%20//%20Allow%20a%20property%20of%20the%20form%20'.foo. bar'%20to%20assign%20a%20value%20into%0A%20%20%20% 20%20%20%20%20//%20element.foo.bar.%0A%20%20%20%20%20%20%20%20if%2 0(propName%5B0%5D%20==%20'.')%20%7B%0A%20%20%20%20 %20%20%20%20%20%20var%20path%20=%20propName.slice( 1).split('.');%0A%20%20%20%20%20%20%20%20%20%20var %20targetObject%20=%20element;%0A%20%20%20%20%20%2 0%20%20%20%20while%20(targetObject%20&&%20path.length%20%3E%201)%20%7B%0A%20%20%20%20%20% 20%20%20%20%20%20%20targetObject%20=%20targetObjec t%5Bpath.shift()%5D;%0A%20%20%20%20%20%20%20%20%20 %20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(targe tObject)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20 %20targetObject%5Bpath%5D%20=%20value;%0A%20%20%20 %20%20%20%20%20%20%20%20%20//%20In%20case%20we%20set%20innerHTML%20(ignoring%20 others)%20we%20need%20to%0A%20%20%20%20%20%20%20%2 0%20%20%20%20//%20recursively%20check%20the%20content.%0A%20%20%2 0%20%20%20%20%20%20%20%20%20if%20(path%20==%20'inn erHTML')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20 %20process(element,%20dictionary);%0A%20%20%20%20% 20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D %20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20elem ent.setAttribute(propName,%20value);%0A%20%20%20%2 0%20%20%20%20%7D%0A%20%20%20%20%20%20%7D);%0A%20%2 0%20%20%7D%0A%20%20%7D;%0A%0A%20%20var%20attribute Names%20=%20Object.keys(handlers);%0A%20%20var%20s elector%20=%20'%5B'%20+%20attributeNames.join('%5D ,%5B')%20+%20'%5D';%0A%0A%20%20/**%0A%20%20%20*%20Processes%20a%20DOM%20tree%20wit h%20the%20%7B@code%20dictionary%7D%20map.%0A%20%20 %20*%20@param%20%7BHTMLElement%7D%20node%20The%20r oot%20of%20the%20DOM%20tree%20to%20process.%0A%20% 20%20*%20@param%20%7BLoadTimeData%7D%20dictionary% 20The%20dictionary%20to%20draw%20from.%0A%20%20%20 */%0A%20%20function%20process(node,%20dictionary)%20 %7B%0A%20%20%20%20var%20elements%20=%20node.queryS electorAll(selector);%0A%20%20%20%20for%20(var%20e lement,%20i%20=%200;%20element%20=%20elements%5Bi% 5D;%20i++)%20%7B%0A%20%20%20%20%20%20for%20(var%20 j%20=%200;%20j%20%3C%20attributeNames.length;%20j+ +)%20%7B%0A%20%20%20%20%20%20%20%20var%20name%20=% 20attributeNames%5Bj%5D;%0A%20%20%20%20%20%20%20%2 0var%20attribute%20=%20element.getAttribute(name); %0A%20%20%20%20%20%20%20%20if%20(attribute%20!=%20 null)%0A%20%20%20%20%20%20%20%20%20%20handlers%5Bn ame%5D(element,%20attribute,%20dictionary);%0A%20% 20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A %0A%20%20return%20%7B%0A%20%20%20%20process%3A%20p rocess%0A%20%20%7D;%0A%7D());%0A%0A%0Ai18nTemplate .process(document,%20loadTimeData);%0A%3C/script%3E#) on www.broadcastingworld.com (http://www.broadcastingworld.com). Websites that are normally safe are sometimes infected with malware. The malicious content comes from files.broadcastingworld.net, a known malware distributor.
If you understand the risks to your security, you may visit this unsafe site (http://data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%0A%3Chtml%20i18n-values=%22dir%3Atextdirection;.style.fontSize%3Afo ntsize%22%3E%0A%20%20%3Chead%3E%0A%20%20%20%20%3Cm eta%20charset=%22utf-8%22%3E%0A%20%20%20%20%3Cmeta%20name=%22viewport%2 2%0A%20%20%20%20%20%20%20%20content=%22initial-scale=1,%20minimum-scale=1,%20width=device-width%22%3E%0A%20%20%20%20%3Ctitle%20i18n-content=%22tabTitle%22%3E%3C/title%3E%0A%20%20%20%20%3Cstyle%3E/*%20Copyright%202014%20The%20Chromium%20Authors.%2 0All%20rights%20reserved.%0A%20%20%20Use%20of%20th is%20source%20code%20is%20governed%20by%20a%20BSD-style%20license%20that%20can%20be%0A%20%20%20found %20in%20the%20LICENSE%20file.%20*/%0A%0Aa%20%7B%0A%20%20color%3A%20%23585858;%0A%7D% 0A%0Abody%20%7B%0A%20%20background-color%3A%20%23f7f7f7;%0A%20%20color%3A%20%23585858 ;%0A%20%20font-size%3A%20125%25;%0A%7D%0A%0Abody.safe-browsing%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20color%3A% 20white;%0A%7D%0A%0Abutton%20%7B%0A%20%20backgroun d%3A%20rgb(76,%20142,%20250);%0A%20%20border%3A%20 0;%0A%20%20border-radius%3A%202px;%0A%20%20box-sizing%3A%20border-box;%0A%20%20color%3A%20%23fff;%0A%20%20cursor%3A% 20pointer;%0A%20%20float%3A%20right;%0A%20%20font-size%3A%20.875em;%0A%20%20height%3A%2036px;%0A%20% 20margin%3A%20-6px%200%200;%0A%20%20outline%3A%200;%0A%20%20paddi ng%3A%208px%2024px;%0A%20%20transition%3A%20box-shadow%20200ms%20cubic-bezier(0.4,%200,%200.2,%201);%0A%7D%0A%0A%5Bdir='r tl'%5D%20button%20%7B%0A%20%20float%3A%20left;%0A% 7D%0A%0Abutton%3Aactive%20%7B%0A%20%20background%3 A%20rgb(50,%20102,%20213);%0A%7D%0A%0Abutton%3Ahov er%20%7B%0A%20%20box-shadow%3A%200%201px%203px%20rgba(0,%200,%200,%20.5 0);%0A%7D%0A%0A%23details%20%7B%0A%20%20color%3A%2 0%23696969;%0A%20%20margin%3A%2045px%200%2050px;%0 A%7D%0A%0A%23details%20p%3Anot(%3Afirst-of-type)%20%7B%0A%20%20margin-top%3A%2020px;%0A%7D%0A%0A%23error-code%20%7B%0A%20%20color%3A%20black;%0A%20%20opaci ty%3A%20.35;%0A%20%20text-transform%3A%20uppercase;%0A%7D%0A%0Ah1%20%7B%0A%2 0%20-webkit-margin-after%3A%2016px;%0A%20%20color%3A%20%23585858;%0A% 20%20font-size%3A%201.6em;%0A%20%20font-weight%3A%20normal;%0A%20%20line-height%3A%201.25em;%0A%7D%0A%0Ah2%20%7B%0A%20%20fo nt-size%3A%201.2em;%0A%20%20font-weight%3A%20normal;%0A%7D%0A%0A.hidden%20%7B%0A%20 %20display%3A%20none;%0A%7D%0A%0A.icon%20%7B%0A%20 %20background-repeat%3A%20no-repeat;%0A%20%20background-size%3A%20100%25;%0A%20%20height%3A%2072px;%0A%20% 20margin%3A%200%200%2040px;%0A%20%20width%3A%2072p x;%0A%7D%0A%0Ainput%5Btype=checkbox%5D%20%7B%0A%20 %20visibility%3A%20hidden;%0A%7D%0A%0A.interstitia l-wrapper%20%7B%0A%20%20box-sizing%3A%20border-box;%0A%20%20font-size%3A%201em;%0A%20%20line-height%3A%201.6em;%0A%20%20margin%3A%20100px%20aut o%200;%0A%20%20max-width%3A%20600px;%0A%20%20width%3A%20100%25;%0A%7D %0A%0A%23malware-opt-in%20%7B%0A%20%20font-size%3A%20.875em;%0A%20%20margin-top%3A%2039px;%0A%7D%0A%0A.nav-wrapper%20%7B%0A%20%20margin-top%3A%2051px;%0A%7D%0A%0A.nav-wrapper%3A%3Aafter%20%7B%0A%20%20clear%3A%20both;% 0A%20%20content%3A%20'';%0A%20%20display%3A%20tabl e;%0A%20%20width%3A%20100%25;%0A%7D%0A%0A%23opt-in-label%20%7B%0A%20%20-webkit-margin-start%3A%2032px;%0A%7D%0A%0A.safe-browsing%20%3A-webkit-any(%0A%20%20%20%20a,%20%23details,%20%23details-button,%20h1,%20h2,%20p,%20.small-link)%20%7B%0A%20%20color%3A%20white;%0A%7D%0A%0A. safe-browsing%20button%20%7B%0A%20%20background-color%3A%20rgb(206,%2052,%2038);%0A%20%20border%3A %201px%20solid%20white;%0A%7D%0A%0A.safe-browsing%20button%3Aactive%20%7B%0A%20%20backgroun d-color%3A%20rgb(206,%2052,%2038);%0A%20%20border-color%3A%20rgba(255,%20255,%20255,%20.6);%0A%7D%0A %0A.safe-browsing%20button%3Ahover%20%7B%0A%20%20box-shadow%3A%200%202px%203px%20rgba(0,%200,%200,%20.5 );%0A%7D%0A%0A.safe-browsing%20.icon%20%7B%0A%20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url('data%3Aimage/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAAB V7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c cllPAAABVFJREFUeNrs2stvG0UYAPBvJ7aQvc67UUWSkhx6QEJ CNFB6aaXwB3DiiISglCpNEzelIVEbKNCGVC2tWoEg4oaQOCD+C JDgwAkpkADlJSGSNGnsOA+/mtheZkYed11i7673m/XYzkSjfcgZe3/+Pu88VjMMA/ZL6UIktHmY1kVaDY/rYv69lQZiH/BbWnuq8GX35N/7sKpA1cSRhkTqCEcKEqkzHHQkUoc4qEikTnHQkEgd46AgkTrHc Y1EGgDHFRJpEJyKkUgD4VSERBoMxzESaUAcR0ikQXFsI5EGxrG FRBocxxKJ7OOURyL7OOWRiGyczOoKLI0Pw+7qPfSrySXicO+dc Xjw9x/SkASQPJwLZyA19yMsX8BFYjjLF8cg8cP3sDwxCg/++l0GUgFIGo5AYVssJI5z6Tykf53nx9nNDVieDMtAkrKq8T8cU TCQCji//Fx0XhISPlApHAykUjhmpMXxs6hI6ECxr7+0vPhKkKxwRDHi27D y6R11gQ4MhSF0fNDydU6Q7OJwoEP9kHr5dYhGo2oCaT4/HJy6iobkFCc78hZAUIdIJALr6+vqAWEicZwp5ziapvHKkGKxmH pAGEgFnIXKcPhnoFuWahsbG+oBFSGdeMEREhaOqG6QtPzjL1Kf gTEyu7A6cxni331j+Vr/wcehqaOz0Al0iyOOWens7ITW1lZHPp4AOUWy1Z5DHHGuvb3dCZ JGwKPC0+3SFVvpJguHVZZqW1tbavwGyUBygyOOGdL29rZ6QG6R MHDEdnNz0xaS50BFSDa6AA9x+tBwRGVA8XhcPSB+wTs7kIk5GA 4kEgDpNBqOOMeQEqxtlYByyQQdPozZ6ucUom49Ar6ProGWR8XA sYNEagGnUKIRIHdmOBIWjjjHgJLJZHWBXOGYkLTbM0WR5BZHHO +FRGoKp4C0BsataZp2UTQcsc+AUqmUt0BOcNjdynh6wBZS7tZV joSFI/YZUJreEDwBYjhLFCdFcawelc/xW/kEZE8OQ+6Z56wfr6dI2ZtXeNph4Yh9EUVEJZwcxeH9HNpPgteG wbCBlKNIuzffL0Jyi2PeJ1JxLp6H1PxP9EqMstXofQIMgSM+nM 8H2smzoFEky/9fuw87N97laYeFIxWI4SxSnOTCnHWasN+c0cm9e8h+P5BTowBH jlpHUmQN0tff42mHhSMFiOH8i4FjiiTfG2HQbCHdh9S1y3zrFk daBC1Nvw3J+TmrrKBp1QcwMmlvbEWR/KfPATnyvGW7WZpu6c8/Q8GRAnTglVOg6Tr9Rsv80cjRWOToDgaeNN0eGxoDMnC0bNukuw cCp8OucR6NoCUsoMCTT0HfjY8pUghyLOwfqWzKgjjFMaVb4Myb QJ49tmfbWncvhKY+gKa2dgycFTPQoAwkEgwVhT/09kNTpTimdNMpkm/gWFHbpPsQtCDiEEIGzUB/YiMFKVL/hxQpn25A08oXnnCHY0q35pFx8NNI4mnV0wutU9OoOLqu3zWvao iC/iBV8rcF+OeT2wCvDvG0w5zPMTIZSHz1BegvviQFZy8gKUh86BS N8pVOzMkurFt5KZxSdzH0dBNrUl1dXTWFU+42LwWpo6ODI9UKj lU/SAoSW7hj0VQLOHY6ip4gqYpjtyctBamtrY0jVRNndnb2Lta6mB QktkbOoklVHKdjMU+QVMKpZLAqBamlpYWnnGo4lY7mpSGxaFIJ x810hxSk5uZmDqUKjtv5IClIoVCIQ6mAgzFhJh2pmjhYM4pSkG gHjkNVEwdzylUKUjAY5FDVwsGek5aKVA0cGZP2UpACgQCvXuOU mjDbL6bynwADAOgw3IMgh3WtAAAAAElFTkSuQmCC')%201x);% 0A%7D%0A%0A.small-link%20%7B%0A%20%20color%3A%20%23696969;%0A%20%20f ont-size%3A%20.875em;%0A%7D%0A%0A.ssl%20.icon%20%7B%0A %20%20background-image%3A%20-webkit-image-set(%0A%20%20%20%20%20%20url('data%3Aimage/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAAB 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 7kk9d+h/hVgAKkEjZejxYUeAAAAAElFTkSuQmCC')%201x);%0A%7D%0A% 0A.styled-checkbox%20%7B%0A%20%20float%3A%20left;%0A%20%20he ight%3A%2016px;%0A%20%20margin-top%3A%20.36em;%0A%20%20position%3A%20relative;%0A %20%20width%3A%2016px;%0A%7D%0A%0A%5Bdir='rtl'%5D% 20.styled-checkbox%20%7B%0A%20%20float%3A%20right;%0A%7D%0A% 0A.styled-checkbox%20label%20%7B%0A%20%20background-color%3A%20white;%0A%20%20border-radius%3A%202px;%0A%20%20height%3A%2016px;%0A%20%2 0left%3A%200;%0A%20%20position%3A%20absolute;%0A%2 0%20right%3A%200;%0A%20%20top%3A%200;%0A%20%20widt h%3A%2016px;%0A%7D%0A%0A.styled-checkbox%20label%3A%3Aafter%20%7B%0A%20%20backgrou nd%3A%20transparent;%0A%20%20border%3A%202px%20sol id%20rgb(217,%2069,%2061);%0A%20%20border-right-width%3A%200;%0A%20%20border-top-width%3A%200;%0A%20%20content%3A%20'';%0A%20%20hei ght%3A%204px;%0A%20%20left%3A%203px;%0A%20%20opaci ty%3A%200.3;%0A%20%20position%3A%20absolute;%0A%20 %20top%3A%204px;%0A%20%20transform%3A%20rotate(-45deg);%0A%20%20width%3A%209px;%0A%7D%0A%0A.styled-checkbox%20input%5Btype=checkbox%5D%3Achecked%20+% 20label%3A%3Aafter%20%7B%0A%20%20opacity%3A%201;%0 A%7D%0A%0A@media%20(max-width%3A%20700px)%20%7B%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20padding%3A%200%2010%25 ;%0A%20%20%7D%0A%7D%0A%0A@media%20(max-height%3A%20600px)%20%7B%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20margin-top%3A%2013%25;%0A%20%20%7D%0A%7D%0A%0A@media%20(m ax-width%3A%20400px)%20%7B%0A%20%20button,%0A%20%20%5 Bdir='rtl'%5D%20button%20%7B%0A%20%20%20%20float%3 A%20none;%0A%20%20%20%20font-size%3A%201em;%0A%20%20%20%20width%3A%20100%25;%0A %20%20%7D%0A%0A%20%20%23details%20%7B%0A%20%20%20% 20margin%3A%2020px%200%2020px%200;%0A%20%20%7D%0A% 0A%20%20%23details%20p%3Anot(%3Afirst-of-type)%20%7B%0A%20%20%20%20margin-top%3A%2010px;%0A%20%20%7D%0A%0A%20%20%23details-button%20%7B%0A%20%20%20%20display%3A%20block;%0A% 20%20%20%20padding-top%3A%2014px;%0A%20%20%20%20text-align%3A%20center;%0A%20%20%20%20width%3A%20100%25 ;%0A%20%20%7D%0A%0A%20%20.interstitial-wrapper%20%7B%0A%20%20%20%20padding%3A%200%205%25; %0A%20%20%7D%0A%0A%20%20%23malware-opt-in%20%7B%0A%20%20%20%20margin-top%3A%2024px;%0A%20%20%7D%0A%0A%20%20.nav-wrapper%20%7B%0A%20%20%20%20margin-top%3A%2030px;%0A%20%20%7D%0A%0A%20%20.small-link%20%7B%0A%20%20%20%20font-size%3A%201em;%0A%20%20%7D%0A%7D%0A%3C/style%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Copyright%20(c)%202013%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20@fileoverview%20Assertion%20support.%0 A%20*/%0A%0A/**%0A%20*%20Simple%20common%20assertion%20API%0A%2 0*%20@param%20%7B*%7D%20condition%20The%20conditio n%20to%20test.%20%20Note%20that%20this%20may%20be% 20used%20to%0A%20*%20%20%20%20%20test%20whether%20 a%20value%20is%20defined%20or%20not,%20and%20we%20 don't%20want%20to%20force%20a%0A%20*%20%20%20%20%2 0cast%20to%20Boolean.%0A%20*%20@param%20%7Bstring= %7D%20opt_message%20A%20message%20to%20use%20in%20 any%20error.%0A%20*/%0Afunction%20assert(condition,%20opt_message)%20% 7B%0A%20%20'use%20strict';%0A%20%20if%20(!conditio n)%20%7B%0A%20%20%20%20var%20msg%20=%20'Assertion% 20failed';%0A%20%20%20%20if%20(opt_message)%0A%20% 20%20%20%20%20msg%20=%20msg%20+%20'%3A%20'%20+%20o pt_message;%0A%20%20%20%20throw%20new%20Error(msg) ;%0A%20%20%7D%0A%7D%0A%0A%0A/**%0A%20*%20The%20global%20object.%0A%20*%20@type% 20%7B!Object%7D%0A%20*%20@const%0A%20*/%0Avar%20global%20=%20this;%0A%0A/**%0A%20*%20Alias%20for%20document.getElementById. %0A%20*%20@param%20%7Bstring%7D%20id%20The%20ID%20 of%20the%20element%20to%20find.%0A%20*%20@return%2 0%7BHTMLElement%7D%20The%20found%20element%20or%20 null%20if%20not%20found.%0A%20*/%0Afunction%20$(id)%20%7B%0A%20%20return%20documen t.getElementById(id);%0A%7D%0A%0A/**%0A%20*%20Add%20an%20accessible%20message%20to%2 0the%20page%20that%20will%20be%20announced%20to%0A %20*%20users%20who%20have%20spoken%20feedback%20on ,%20but%20will%20be%20invisible%20to%20all%0A%20*% 20other%20users.%20It's%20removed%20right%20away%2 0so%20it%20doesn't%20clutter%20the%20DOM.%0A%20*%2 0@param%20%7Bstring%7D%20msg%20The%20text%20to%20b e%20pronounced.%0A%20*/%0Afunction%20announceAccessibleMessage(msg)%20%7B %0A%20%20var%20element%20=%20document.createElemen t('div');%0A%20%20element.setAttribute('aria-live',%20'polite');%0A%20%20element.style.position %20=%20'relative';%0A%20%20element.style.left%20=% 20'-9999px';%0A%20%20element.style.height%20=%20'0px'; %0A%20%20element.innerText%20=%20msg;%0A%20%20docu ment.body.appendChild(element);%0A%20%20window.set Timeout(function()%20%7B%0A%20%20%20%20document.bo dy.removeChild(element);%0A%20%20%7D,%200);%0A%7D% 0A%0A/**%0A%20*%20Calls%20chrome.send%20with%20a%20callb ack%20and%20restores%20the%20original%20afterwards .%0A%20*%20@param%20%7Bstring%7D%20name%20The%20na me%20of%20the%20message%20to%20send.%0A%20*%20@par am%20%7B!Array%7D%20params%20The%20parameters%20to %20send.%0A%20*%20@param%20%7Bstring%7D%20callback Name%20The%20name%20of%20the%20function%20that%20t he%20backend%20calls.%0A%20*%20@param%20%7B!Functi on%7D%20callback%20The%20function%20to%20call.%0A% 20*/%0Afunction%20chromeSend(name,%20params,%20callbac kName,%20callback)%20%7B%0A%20%20var%20old%20=%20g lobal%5BcallbackName%5D;%0A%20%20global%5Bcallback Name%5D%20=%20function()%20%7B%0A%20%20%20%20//%20restore%0A%20%20%20%20global%5BcallbackName%5D% 20=%20old;%0A%0A%20%20%20%20var%20args%20=%20Array .prototype.slice.call(arguments);%0A%20%20%20%20re turn%20callback.apply(global,%20args);%0A%20%20%7D ;%0A%20%20chrome.send(name,%20params);%0A%7D%0A%0A/**%0A%20*%20Returns%20the%20scale%20factors%20supp orted%20by%20this%20platform.%0A%20*%20@return%20% 7Barray%7D%20The%20supported%20scale%20factors.%0A %20*/%0Afunction%20getSupportedScaleFactors()%20%7B%0A% 20%20var%20supportedScaleFactors%20=%20%5B%5D;%0A% 20%20if%20(cr.isMac%20%7C%7C%20cr.isChromeOS)%20%7 B%0A%20%20%20%20supportedScaleFactors.push(1);%0A% 20%20%20%20supportedScaleFactors.push(2);%0A%20%20 %7D%20else%20%7B%0A%20%20%20%20//%20Windows%20must%20be%20restarted%20to%20display% 20at%20a%20different%20scale%20factor.%0A%20%20%20 %20supportedScaleFactors.push(window.devicePixelRa tio);%0A%20%20%7D%0A%20%20return%20supportedScaleF actors;%0A%7D%0A%0A/**%0A%20*%20Generates%20a%20CSS%20url%20string.%0A %20*%20@param%20%7Bstring%7D%20s%20The%20URL%20to% 20generate%20the%20CSS%20url%20for.%0A%20*%20@retu rn%20%7Bstring%7D%20The%20CSS%20url%20string.%0A%2 0*/%0Afunction%20url(s)%20%7B%0A%20%20//%20http%3A//www.w3.org/TR/css3-values/%23uris%0A%20%20//%20Parentheses,%20commas,%20whitespace%20character s,%20single%20quotes%20(')%20and%20double%0A%20%20//%20quotes%20(%22)%20appearing%20in%20a%20URI%20mus t%20be%20escaped%20with%20a%20backslash%0A%20%20va r%20s2%20=%20s.replace(/(%5C(%7C%5C)%7C%5C,%7C%5Cs%7C%5C'%7C%5C%22%7C%5C%5 C)/g,%20'%5C%5C$1');%0A%20%20//%20WebKit%20has%20a%20bug%20when%20it%20comes%20to %20URLs%20that%20end%20with%20%5C%0A%20%20//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid=28885%0A%20%20if%20(/%5C%5C%5C%5C$/.test(s2))%20%7B%0A%20%20%20%20//%20Add%20a%20space%20to%20work%20around%20the%20We bKit%20bug.%0A%20%20%20%20s2%20+=%20'%20';%0A%20%2 0%7D%0A%20%20return%20'url(%22'%20+%20s2%20+%20'%2 2)';%0A%7D%0A%0A/**%0A%20*%20Returns%20the%20URL%20of%20the%20image ,%20or%20an%20image%20set%20of%20URLs%20for%20the% 20profile%20avatar.%0A%20*%20Default%20avatars%20h ave%20resources%20available%20for%20multiple%20sca lefactors,%20whereas%0A%20*%20the%20GAIA%20profile %20image%20only%20comes%20in%20one%20size.%0A%0A%2 0*%20@param%20%7Bstring%7D%20url%20The%20path%20of %20the%20image.%0A%20*%20@return%20%7Bstring%7D%20 The%20url,%20or%20an%20image%20set%20of%20URLs%20o f%20the%20avatar%20image.%0A%20*/%0Afunction%20getProfileAvatarIcon(path)%20%7B%0A% 20%20var%20chromeThemePath%20=%20'chrome%3A//theme';%0A%20%20var%20isDefaultAvatar%20=%0A%20%20 %20%20%20%20(path.slice(0,%20chromeThemePath.lengt h)%20==%20chromeThemePath);%0A%20%20return%20isDef aultAvatar%20%3F%20imageset(path%20+%20'@scalefact orx')%3A%20url(path);%0A%7D%0A%0A/**%0A%20*%20Generates%20a%20CSS%20-webkit-image-set%20for%20a%20chrome%3A//%20url.%0A%20*%20An%20entry%20in%20the%20image%20s et%20is%20added%20for%20each%20of%20getSupportedSc aleFactors().%0A%20*%20The%20scale-factor-specific%20url%20is%20generated%20by%20replacing%2 0the%20first%20instance%20of%0A%20*%20'scalefactor '%20in%20%7Cpath%7C%20with%20the%20numeric%20scale %20factor.%0A%20*%20@param%20%7Bstring%7D%20path%2 0The%20URL%20to%20generate%20an%20image%20set%20fo r.%0A%20*%20%20%20%20%20'scalefactor'%20should%20b e%20a%20substring%20of%20%7Cpath%7C.%0A%20*%20@ret urn%20%7Bstring%7D%20The%20CSS%20-webkit-image-set.%0A%20*/%0Afunction%20imageset(path)%20%7B%0A%20%20var%20s upportedScaleFactors%20=%20getSupportedScaleFactor s();%0A%0A%20%20var%20replaceStartIndex%20=%20path .indexOf('scalefactor');%0A%20%20if%20(replaceStar tIndex%20%3C%200)%0A%20%20%20%20return%20url(path) ;%0A%0A%20%20var%20s%20=%20'';%0A%20%20for%20(var% 20i%20=%200;%20i%20%3C%20supportedScaleFactors.len gth;%20++i)%20%7B%0A%20%20%20%20var%20scaleFactor% 20=%20supportedScaleFactors%5Bi%5D;%0A%20%20%20%20 var%20pathWithScaleFactor%20=%20path.substr(0,%20r eplaceStartIndex)%20+%20scaleFactor%20+%0A%20%20%2 0%20%20%20%20%20path.substr(replaceStartIndex%20+% 20'scalefactor'.length);%0A%0A%20%20%20%20s%20+=%2 0url(pathWithScaleFactor)%20+%20'%20'%20+%20scaleF actor%20+%20'x';%0A%0A%20%20%20%20if%20(i%20!=%20s upportedScaleFactors.length%20-%201)%0A%20%20%20%20%20%20s%20+=%20',%20';%0A%20%2 0%7D%0A%20%20return%20'-webkit-image-set('%20+%20s%20+%20')';%0A%7D%0A%0A/**%0A%20*%20Parses%20query%20parameters%20from%20L ocation.%0A%20*%20@param%20%7Bstring%7D%20location %20The%20URL%20to%20generate%20the%20CSS%20url%20f or.%0A%20*%20@return%20%7Bobject%7D%20Dictionary%2 0containing%20name%20value%20pairs%20for%20URL%0A% 20*/%0Afunction%20parseQueryParams(location)%20%7B%0A% 20%20var%20params%20=%20%7B%7D;%0A%20%20var%20quer y%20=%20unescape(location.search.substring(1));%0A %20%20var%20vars%20=%20query.split('&');%0A%20%20for%20(var%20i%20=%200;%20i%20%3C%20va rs.length;%20i++)%20%7B%0A%20%20%20%20var%20pair%2 0=%20vars%5Bi%5D.split('=');%0A%20%20%20%20params% 5Bpair%5B0%5D%5D%20=%20pair%5B1%5D;%0A%20%20%7D%0A %20%20return%20params;%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20by%20appendi ng%20or%20replacing%20the%20given%20query%20key%20 and%20value.%0A%20*%20Not%20supporting%20URL%20wit h%20username%20and%20password.%0A%20*%20@param%20% 7Bobject%7D%20location%20The%20original%20URL.%0A% 20*%20@param%20%7Bstring%7D%20key%20The%20query%20 parameter%20name.%0A%20*%20@param%20%7Bstring%7D%2 0value%20The%20query%20parameter%20value.%0A%20*%2 0@return%20%7Bstring%7D%20The%20constructed%20new% 20URL.%0A%20*/%0Afunction%20setQueryParam(location,%20key,%20val ue)%20%7B%0A%20%20var%20query%20=%20parseQueryPara ms(location);%0A%20%20query%5BencodeURIComponent(k ey)%5D%20=%20encodeURIComponent(value);%0A%0A%20%2 0var%20newQuery%20=%20'';%0A%20%20for%20(var%20q%2 0in%20query)%20%7B%0A%20%20%20%20newQuery%20+=%20( newQuery%20%3F%20'&'%20%3A%20'%3F')%20+%20q%20+%20'='%20+%20query%5Bq %5D;%0A%20%20%7D%0A%0A%20%20return%20location.orig in%20+%20location.pathname%20+%20newQuery%20+%20lo cation.hash;%0A%7D%0A%0Afunction%20findAncestorByC lass(el,%20className)%20%7B%0A%20%20return%20findA ncestor(el,%20function(el)%20%7B%0A%20%20%20%20if% 20(el.classList)%0A%20%20%20%20%20%20return%20el.c lassList.contains(className);%0A%20%20%20%20return %20null;%0A%20%20%7D);%0A%7D%0A%0A/**%0A%20*%20Return%20the%20first%20ancestor%20for% 20which%20the%20%7B@code%20predicate%7D%20returns% 20true.%0A%20*%20@param%20%7BNode%7D%20node%20The% 20node%20to%20check.%0A%20*%20@param%20%7Bfunction (Node)%20%3A%20boolean%7D%20predicate%20The%20func tion%20that%20tests%20the%0A%20*%20%20%20%20%20nod es.%0A%20*%20@return%20%7BNode%7D%20The%20found%20 ancestor%20or%20null%20if%20not%20found.%0A%20*/%0Afunction%20findAncestor(node,%20predicate)%20%7 B%0A%20%20var%20last%20=%20false;%0A%20%20while%20 (node%20!=%20null%20&&%20!(last%20=%20predicate(node)))%20%7B%0A%20%20%2 0%20node%20=%20node.parentNode;%0A%20%20%7D%0A%20% 20return%20last%20%3F%20node%20%3A%20null;%0A%7D%0 A%0Afunction%20swapDomNodes(a,%20b)%20%7B%0A%20%20 var%20afterA%20=%20a.nextSibling;%0A%20%20if%20(af terA%20==%20b)%20%7B%0A%20%20%20%20swapDomNodes(b, %20a);%0A%20%20%20%20return;%0A%20%20%7D%0A%20%20v ar%20aParent%20=%20a.parentNode;%0A%20%20b.parentN ode.replaceChild(a,%20b);%0A%20%20aParent.insertBe fore(b,%20afterA);%0A%7D%0A%0A/**%0A%20*%20Disables%20text%20selection%20and%20dr agging,%20with%20optional%20whitelist%20callbacks. %0A%20*%20@param%20%7Bfunction(Event)%3Aboolean=%7 D%20opt_allowSelectStart%20Unless%20this%20functio n%0A%20*%20%20%20%20is%20defined%20and%20returns%2 0true,%20the%20onselectionstart%20event%20will%20b e%0A%20*%20%20%20%20surpressed.%0A%20*%20@param%20 %7Bfunction(Event)%3Aboolean=%7D%20opt_allowDragSt art%20Unless%20this%20function%0A%20*%20%20%20%20i s%20defined%20and%20returns%20true,%20the%20ondrag start%20event%20will%20be%20surpressed.%0A%20*/%0Afunction%20disableTextSelectAndDrag(opt_allowSe lectStart,%20opt_allowDragStart)%20%7B%0A%20%20//%20Disable%20text%20selection.%0A%20%20document.on selectstart%20=%20function(e)%20%7B%0A%20%20%20%20 if%20(!(opt_allowSelectStart%20&&%20opt_allowSelectStart.call(this,%20e)))%0A%20%20 %20%20%20%20e.preventDefault();%0A%20%20%7D;%0A%0A %20%20//%20Disable%20dragging.%0A%20%20document.ondragstar t%20=%20function(e)%20%7B%0A%20%20%20%20if%20(!(op t_allowDragStart%20&&%20opt_allowDragStart.call(this,%20e)))%0A%20%20%2 0%20%20%20e.preventDefault();%0A%20%20%7D;%0A%7D%0 A%0A/**%0A%20*%20Call%20this%20to%20stop%20clicks%20on% 20%3Ca%20href=%22%23%22%3E%20links%20from%20scroll ing%20to%20the%20top%20of%0A%20*%20the%20page%20(a nd%20possibly%20showing%20a%20%23%20in%20the%20lin k).%0A%20*/%0Afunction%20preventDefaultOnPoundLinkClicks()%20 %7B%0A%20%20document.addEventListener('click',%20f unction(e)%20%7B%0A%20%20%20%20var%20anchor%20=%20 findAncestor(e.target,%20function(el)%20%7B%0A%20% 20%20%20%20%20return%20el.tagName%20==%20'A';%0A%2 0%20%20%20%7D);%0A%20%20%20%20//%20Use%20getAttribute()%20to%20prevent%20URL%20nor malization.%0A%20%20%20%20if%20(anchor%20&&%20anchor.getAttribute('href')%20==%20'%23')%0A%20 %20%20%20%20%20e.preventDefault();%0A%20%20%7D);%0 A%7D%0A%0A/**%0A%20*%20Check%20the%20directionality%20of%20th e%20page.%0A%20*%20@return%20%7Bboolean%7D%20True% 20if%20Chrome%20is%20running%20an%20RTL%20UI.%0A%2 0*/%0Afunction%20isRTL()%20%7B%0A%20%20return%20docum ent.documentElement.dir%20==%20'rtl';%0A%7D%0A%0A/**%0A%20*%20Get%20an%20element%20that's%20known%20 to%20exist%20by%20its%20ID.%20We%20use%20this%20in stead%20of%20just%0A%20*%20calling%20getElementByI d%20and%20not%20checking%20the%20result%20because% 20this%20lets%20us%0A%20*%20satisfy%20the%20JSComp iler%20type%20system.%0A%20*%20@param%20%7Bstring% 7D%20id%20The%20identifier%20name.%0A%20*%20@retur n%20%7B!Element%7D%20the%20Element.%0A%20*/%0Afunction%20getRequiredElement(id)%20%7B%0A%20%2 0var%20element%20=%20$(id);%0A%20%20assert(element ,%20'Missing%20required%20element%3A%20'%20+%20id) ;%0A%20%20return%20element;%0A%7D%0A%0A//%20Handle%20click%20on%20a%20link.%20If%20the%20li nk%20points%20to%20a%20chrome%3A%20or%20file%3A%20 url,%20then%0A//%20call%20into%20the%20browser%20to%20do%20the%20n avigation.%0Adocument.addEventListener('click',%20 function(e)%20%7B%0A%20%20if%20(e.defaultPrevented )%0A%20%20%20%20return;%0A%0A%20%20var%20el%20=%20 e.target;%0A%20%20if%20(el.nodeType%20==%20Node.EL EMENT_NODE%20&&%0A%20%20%20%20%20%20el.webkitMatchesSelector('A,% 20A%20*'))%20%7B%0A%20%20%20%20while%20(el.tagName %20!=%20'A')%20%7B%0A%20%20%20%20%20%20el%20=%20el .parentElement;%0A%20%20%20%20%7D%0A%0A%20%20%20%2 0if%20((el.protocol%20==%20'file%3A'%20%7C%7C%20el .protocol%20==%20'about%3A')%20&&%0A%20%20%20%20%20%20%20%20(e.button%20==%200%20%7 C%7C%20e.button%20==%201))%20%7B%0A%20%20%20%20%20 %20chrome.send('navigateToUrl',%20%5B%0A%20%20%20% 20%20%20%20%20el.href,%0A%20%20%20%20%20%20%20%20e l.target,%0A%20%20%20%20%20%20%20%20e.button,%0A%2 0%20%20%20%20%20%20%20e.altKey,%0A%20%20%20%20%20% 20%20%20e.ctrlKey,%0A%20%20%20%20%20%20%20%20e.met aKey,%0A%20%20%20%20%20%20%20%20e.shiftKey%0A%20%2 0%20%20%20%20%5D);%0A%20%20%20%20%20%20e.preventDe fault();%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D);%0A% 0A/**%0A%20*%20Creates%20a%20new%20URL%20which%20is%2 0the%20old%20URL%20with%20a%20GET%20param%20of%20k ey=value.%0A%20*%20@param%20%7Bstring%7D%20url%20T he%20base%20URL.%20There%20is%20not%20sanity%20che cking%20on%20the%20URL%20so%0A%20*%20%20%20%20%20i t%20must%20be%20passed%20in%20a%20proper%20format. %0A%20*%20@param%20%7Bstring%7D%20key%20The%20key% 20of%20the%20param.%0A%20*%20@param%20%7Bstring%7D %20value%20The%20value%20of%20the%20param.%0A%20*% 20@return%20%7Bstring%7D%20The%20new%20URL.%0A%20*/%0Afunction%20appendParam(url,%20key,%20value)%20% 7B%0A%20%20var%20param%20=%20encodeURIComponent(ke y)%20+%20'='%20+%20encodeURIComponent(value);%0A%0 A%20%20if%20(url.indexOf('%3F')%20==%20-1)%0A%20%20%20%20return%20url%20+%20'%3F'%20+%20pa ram;%0A%20%20return%20url%20+%20'&'%20+%20param;%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20CSS%20-webkit-image-set%20for%20a%20favicon%20request.%0A%20*%20@param %20%7Bstring%7D%20url%20The%20url%20for%20the%20fa vicon.%0A%20*%20@param%20%7Bnumber=%7D%20opt_size% 20Optional%20preferred%20size%20of%20the%20favicon .%0A%20*%20@param%20%7Bstring=%7D%20opt_type%20Opt ional%20type%20of%20favicon%20to%20request.%20Vali d%20values%0A%20*%20%20%20%20%20are%20'favicon'%20 and%20'touch-icon'.%20Default%20is%20'favicon'.%0A%20*%20@retur n%20%7Bstring%7D%20-webkit-image-set%20for%20the%20favicon.%0A%20*/%0Afunction%20getFaviconImageSet(url,%20opt_size,% 20opt_type)%20%7B%0A%20%20var%20size%20=%20opt_siz e%20%7C%7C%2016;%0A%20%20var%20type%20=%20opt_type %20%7C%7C%20'favicon';%0A%20%20return%20imageset(% 0A%20%20%20%20%20%20'chrome%3A//'%20+%20type%20+%20'/size/'%20+%20size%20+%20'@scalefactorx/'%20+%20url);%0A%7D%0A%0A/**%0A%20*%20Creates%20a%20new%20URL%20for%20a%20fa vicon%20request%20for%20the%20current%20device%20p ixel%20ratio.%0A%20*%20The%20URL%20must%20be%20upd ated%20when%20the%20user%20moves%20the%20browser%2 0to%20a%20screen%20with%20a%0A%20*%20different%20d evice%20pixel%20ratio.%20Use%20getFaviconImageSet( )%20for%20the%20updating%20to%0A%20*%20occur%20aut omatically.%0A%20*%20@param%20%7Bstring%7D%20url%2 0The%20url%20for%20the%20favicon.%0A%20*%20@param% 20%7Bnumber=%7D%20opt_size%20Optional%20preferred% 20size%20of%20the%20favicon.%0A%20*%20@param%20%7B string=%7D%20opt_type%20Optional%20type%20of%20fav icon%20to%20request.%20Valid%20values%0A%20*%20%20 %20%20%20are%20'favicon'%20and%20'touch-icon'.%20Default%20is%20'favicon'.%0A%20*%20@retur n%20%7Bstring%7D%20Updated%20URL%20for%20the%20fav icon.%0A%20*/%0Afunction%20getFaviconUrlForCurrentDevicePixelRa tio(url,%20opt_size,%20opt_type)%20%7B%0A%20%20var %20size%20=%20opt_size%20%7C%7C%2016;%0A%20%20var% 20type%20=%20opt_type%20%7C%7C%20'favicon';%0A%20% 20return%20'chrome%3A//'%20+%20type%20+%20'/size/'%20+%20size%20+%20'@'%20+%0A%20%20%20%20%20%20win dow.devicePixelRatio%20+%20'x/'%20+%20url;%0A%7D%0A%0A/**%0A%20*%20Creates%20an%20element%20of%20a%20spec ified%20type%20with%20a%20specified%20class%20name .%0A%20*%20@param%20%7Bstring%7D%20type%20The%20no de%20type.%0A%20*%20@param%20%7Bstring%7D%20classN ame%20The%20class%20name%20to%20use.%0A%20*%20@ret urn%20%7BElement%7D%20The%20created%20element.%0A% 20*/%0Afunction%20createElementWithClassName(type,%20c lassName)%20%7B%0A%20%20var%20elm%20=%20document.c reateElement(type);%0A%20%20elm.className%20=%20cl assName;%0A%20%20return%20elm;%0A%7D%0A%0A/**%0A%20*%20webkitTransitionEnd%20does%20not%20alw ays%20fire%20(e.g.%20when%20animation%20is%20abort ed%0A%20*%20or%20when%20no%20paint%20happens%20dur ing%20the%20animation).%20This%20function%20sets%2 0up%0A%20*%20a%20timer%20and%20emulate%20the%20eve nt%20if%20it%20is%20not%20fired%20when%20the%20tim er%20expires.%0A%20*%20@param%20%7B!HTMLElement%7D %20el%20The%20element%20to%20watch%20for%20webkitT ransitionEnd.%0A%20*%20@param%20%7Bnumber%7D%20tim eOut%20The%20maximum%20wait%20time%20in%20millisec onds%20for%20the%0A%20*%20%20%20%20%20webkitTransi tionEnd%20to%20happen.%0A%20*/%0Afunction%20ensureTransitionEndEvent(el,%20timeO ut)%20%7B%0A%20%20var%20fired%20=%20false;%0A%20%2 0el.addEventListener('webkitTransitionEnd',%20func tion%20f(e)%20%7B%0A%20%20%20%20el.removeEventList ener('webkitTransitionEnd',%20f);%0A%20%20%20%20fi red%20=%20true;%0A%20%20%7D);%0A%20%20window.setTi meout(function()%20%7B%0A%20%20%20%20if%20(!fired) %0A%20%20%20%20%20%20cr.dispatchSimpleEvent(el,%20 'webkitTransitionEnd');%0A%20%20%7D,%20timeOut);%0 A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollTop%20get ter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc%2 0The%20document%20node%20where%20information%20wil l%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20* %20@return%20%7Bnumber%7D%20The%20Y%20document%20s croll%20offset.%0A%20*/%0Afunction%20scrollTopForDocument(doc)%20%7B%0A%2 0%20return%20doc.documentElement.scrollTop%20%7C%7 C%20doc.body.scrollTop;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollTop%20set ter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc%2 0The%20document%20node%20where%20information%20wil l%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20* %20@param%20%7Bnumber%7D%20value%20The%20target%20 Y%20scroll%20offset.%0A%20*/%0Afunction%20setScrollTopForDocument(doc,%20value )%20%7B%0A%20%20doc.documentElement.scrollTop%20=% 20doc.body.scrollTop%20=%20value;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollLeft%20ge tter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc% 20The%20document%20node%20where%20information%20wi ll%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20 *%20@return%20%7Bnumber%7D%20The%20X%20document%20 scroll%20offset.%0A%20*/%0Afunction%20scrollLeftForDocument(doc)%20%7B%0A% 20%20return%20doc.documentElement.scrollLeft%20%7C %7C%20doc.body.scrollLeft;%0A%7D%0A%0A/**%0A%20*%20Alias%20for%20document.scrollLeft%20se tter.%0A%20*%20@param%20%7B!HTMLDocument%7D%20doc% 20The%20document%20node%20where%20information%20wi ll%20be%0A%20*%20%20%20%20%20queried%20from.%0A%20 *%20@param%20%7Bnumber%7D%20value%20The%20target%2 0X%20scroll%20offset.%0A%20*/%0Afunction%20setScrollLeftForDocument(doc,%20valu e)%20%7B%0A%20%20doc.documentElement.scrollLeft%20 =%20doc.body.scrollLeft%20=%20value;%0A%7D%0A%0A/**%0A%20*%20Replaces%20'&',%20'%3C',%20'%3E',%20'%22',%20and%20'''%20charac ters%20with%20their%20HTML%20encoding.%0A%20*%20@p aram%20%7Bstring%7D%20original%20The%20original%20 string.%0A%20*%20@return%20%7Bstring%7D%20The%20st ring%20with%20all%20the%20characters%20mentioned%2 0above%20replaced.%0A%20*/%0Afunction%20HTMLEscape(original)%20%7B%0A%20%20r eturn%20original.replace(/&/g,%20'&')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/%3C/g,%20'<')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/%3E/g,%20'>')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/%22/g,%20'"')%0A%20%20%20%20%20%20%20%20%20%20%20%20%2 0%20%20%20%20.replace(/'/g,%20'&%2339;');%0A%7D%0A%0A/**%0A%20*%20Shortens%20the%20provided%20string%20( if%20necessary)%20to%20a%20string%20of%20length%20 at%20most%0A%20*%20%7CmaxLength%7C.%0A%20*%20@para m%20%7Bstring%7D%20original%20The%20original%20str ing.%0A%20*%20@param%20%7Bnumber%7D%20maxLength%20 The%20maximum%20length%20allowed%20for%20the%20str ing.%0A%20*%20@return%20%7Bstring%7D%20The%20origi nal%20string%20if%20its%20length%20does%20not%20ex ceed%0A%20*%20%20%20%20%20%7CmaxLength%7C.%20Other wise%20the%20first%20%7CmaxLength%7C%20-%201%20characters%20with%20'...'%0A%20*%20%20%20%2 0%20appended.%0A%20*/%0Afunction%20elide(original,%20maxLength)%20%7B%0 A%20%20if%20(original.length%20%3C=%20maxLength)%0 A%20%20%20%20return%20original;%0A%20%20return%20o riginal.substring(0,%20maxLength%20-%201)%20+%20'%5Cu2026';%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20@fileoverview%20This%20file%20defines% 20a%20singleton%20which%20provides%20access%20to%2 0all%20data%0A%20*%20that%20is%20available%20as%20 soon%20as%20the%20page's%20resources%20are%20loade d%20(before%20DOM%0A%20*%20content%20has%20finishe d%20loading).%20This%20data%20includes%20both%20lo calized%20strings%20and%0A%20*%20any%20data%20that %20is%20important%20to%20have%20ready%20from%20a%2 0very%20early%20stage%20(e.g.%20things%0A%20*%20th at%20must%20be%20displayed%20right%20away).%0A%20*/%0A%0Avar%20loadTimeData;%0A%0A(function()%20%7B%0 A%20%20'use%20strict';%0A%0A%20%20function%20LoadT imeData()%20%7B%0A%20%20%7D%0A%0A%20%20LoadTimeDat a.prototype%20=%20%7B%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Sets%20the%20backing%20obj ect.%0A%20%20%20%20%20*%20@param%20%7BObject%7D%20 value%20The%20de-serialized%20page%20data.%0A%20%20%20%20%20*/%0A%20%20%20%20set%20data(value)%20%7B%0A%20%20%20 %20%20%20expect(!this.data_,%20'Re-setting%20data.');%0A%20%20%20%20%20%20this.data_% 20=%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20@return%20%7Bboolean%7D%20 True%20if%20%7Cid%7C%20is%20a%20key%20in%20the%20d ictionary.%0A%20%20%20%20%20*/%0A%20%20%20%20valueExists%3A%20function(id)%20%7B %0A%20%20%20%20%20%20return%20id%20in%20this.data_ ;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Fetches%20a%20value,%20exp ecting%20that%20it%20exists.%0A%20%20%20%20%20*%20 @param%20%7Bstring%7D%20id%20The%20key%20that%20id entifies%20the%20desired%20value.%0A%20%20%20%20%2 0*%20@return%20%7B*%7D%20The%20corresponding%20val ue.%0A%20%20%20%20%20*/%0A%20%20%20%20getValue%3A%20function(id)%20%7B%0A %20%20%20%20%20%20expect(this.data_,%20'No%20data. %20Did%20you%20remember%20to%20include%20strings.j s%3F');%0A%20%20%20%20%20%20var%20value%20=%20this .data_%5Bid%5D;%0A%20%20%20%20%20%20expect(typeof% 20value%20!=%20'undefined',%20'Could%20not%20find% 20value%20for%20'%20+%20id);%0A%20%20%20%20%20%20r eturn%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%2 0/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%2 0makes%20sure%20that%20the%20value%20is%20a%20stri ng.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%20i d%20The%20key%20that%20identifies%20the%20desired% 20string.%0A%20%20%20%20%20*%20@return%20%7Bstring %7D%20The%20corresponding%20string%20value.%0A%20% 20%20%20%20*/%0A%20%20%20%20getString%3A%20function(id)%20%7B%0 A%20%20%20%20%20%20var%20value%20=%20this.getValue (id);%0A%20%20%20%20%20%20expectIsType(id,%20value ,%20'string');%0A%20%20%20%20%20%20return%20value; %0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Returns%20a%20formatted%20 localized%20string%20where%20$1%20to%20$9%20are%20 replaced%20by%20the%0A%20%20%20%20%20*%20second%20 to%20the%20tenth%20argument.%0A%20%20%20%20%20*%20 @param%20%7Bstring%7D%20id%20The%20ID%20of%20the%2 0string%20we%20want.%0A%20%20%20%20%20*%20@param%2 0%7B...string%7D%20The%20extra%20values%20to%20inc lude%20in%20the%20formatted%20output.%0A%20%20%20% 20%20*%20@return%20%7Bstring%7D%20The%20formatted% 20string.%0A%20%20%20%20%20*/%0A%20%20%20%20getStringF%3A%20function(id)%20%7B% 0A%20%20%20%20%20%20var%20value%20=%20this.getStri ng(id);%0A%20%20%20%20%20%20if%20(!value)%0A%20%20 %20%20%20%20%20%20return;%0A%0A%20%20%20%20%20%20v ar%20varArgs%20=%20arguments;%0A%20%20%20%20%20%20 return%20value.replace(/%5C$%5B$1-9%5D/g,%20function(m)%20%7B%0A%20%20%20%20%20%20%20%20r eturn%20m%20==%20'$$'%20%3F%20'$'%20%3A%20varArgs% 5Bm%5B1%5D%5D;%0A%20%20%20%20%20%20%7D);%0A%20%20% 20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%2 0makes%20sure%20that%20the%20value%20is%20a%20bool ean.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%20 id%20The%20key%20that%20identifies%20the%20desired %20boolean.%0A%20%20%20%20%20*%20@return%20%7Bbool ean%7D%20The%20corresponding%20boolean%20value.%0A %20%20%20%20%20*/%0A%20%20%20%20getBoolean%3A%20function(id)%20%7B% 0A%20%20%20%20%20%20var%20value%20=%20this.getValu e(id);%0A%20%20%20%20%20%20expectIsType(id,%20valu e,%20'boolean');%0A%20%20%20%20%20%20return%20valu e;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20As%20above,%20but%20also%2 0makes%20sure%20that%20the%20value%20is%20an%20int eger.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%2 0id%20The%20key%20that%20identifies%20the%20desire d%20number.%0A%20%20%20%20%20*%20@return%20%7Bnumb er%7D%20The%20corresponding%20number%20value.%0A%2 0%20%20%20%20*/%0A%20%20%20%20getInteger%3A%20function(id)%20%7B% 0A%20%20%20%20%20%20var%20value%20=%20this.getValu e(id);%0A%20%20%20%20%20%20expectIsType(id,%20valu e,%20'number');%0A%20%20%20%20%20%20expect(value%2 0==%20Math.floor(value),%20'Number%20isn%5C't%20in teger%3A%20'%20+%20value);%0A%20%20%20%20%20%20ret urn%20value;%0A%20%20%20%20%7D,%0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20Override%20values%20in%20l oadTimeData%20with%20the%20values%20found%20in%20% 7Creplacements%7C.%0A%20%20%20%20%20*%20@param%20% 7BObject%7D%20replacements%20The%20dictionary%20ob ject%20of%20keys%20to%20replace.%0A%20%20%20%20%20 */%0A%20%20%20%20overrideValues%3A%20function(replac ements)%20%7B%0A%20%20%20%20%20%20expect(typeof%20 replacements%20==%20'object',%0A%20%20%20%20%20%20 %20%20%20%20%20%20%20'Replacements%20must%20be%20a %20dictionary%20object.');%0A%20%20%20%20%20%20for %20(var%20key%20in%20replacements)%20%7B%0A%20%20% 20%20%20%20%20%20this.data_%5Bkey%5D%20=%20replace ments%5Bkey%5D;%0A%20%20%20%20%20%20%7D%0A%20%20%2 0%20%7D%0A%20%20%7D;%0A%0A%20%20/**%0A%20%20%20*%20Checks%20condition,%20displays%2 0error%20message%20if%20expectation%20fails.%0A%20 %20%20*%20@param%20%7B*%7D%20condition%20The%20con dition%20to%20check%20for%20truthiness.%0A%20%20%2 0*%20@param%20%7Bstring%7D%20message%20The%20messa ge%20to%20display%20if%20the%20check%20fails.%0A%2 0%20%20*/%0A%20%20function%20expect(condition,%20message)%2 0%7B%0A%20%20%20%20if%20(!condition)%0A%20%20%20%2 0%20%20console.error(message);%0A%20%20%7D%0A%0A%2 0%20/**%0A%20%20%20*%20Checks%20that%20the%20given%20va lue%20has%20the%20given%20type.%0A%20%20%20*%20@pa ram%20%7Bstring%7D%20id%20The%20id%20of%20the%20va lue%20(only%20used%20for%20error%20message).%0A%20 %20%20*%20@param%20%7B*%7D%20value%20The%20value%2 0to%20check%20the%20type%20on.%0A%20%20%20*%20@par am%20%7Bstring%7D%20type%20The%20type%20we%20expec t%20%7Cvalue%7C%20to%20be.%0A%20%20%20*/%0A%20%20function%20expectIsType(id,%20value,%20ty pe)%20%7B%0A%20%20%20%20expect(typeof%20value%20== %20type,%20'%5B'%20+%20value%20+%20'%5D%20('%20+%2 0id%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20')%20is%20not%20a%20'%20+%20type);%0A%20% 20%7D%0A%0A%20%20expect(!loadTimeData,%20'should%2 0only%20include%20this%20file%20once');%0A%20%20lo adTimeData%20=%20new%20LoadTimeData;%0A%7D)();%0A% 3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202013%20The%20Chromium%20Authors.%20 All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Should%20match%20SSLBlockingPageCommands%20in%2 0ssl_blocking_page.cc.%0Avar%20CMD_DONT_PROCEED%20 =%200;%0Avar%20CMD_PROCEED%20=%201;%0Avar%20CMD_MO RE%20=%202;%0Avar%20CMD_RELOAD%20=%203;%0Avar%20CM D_HELP%20=%204;%0A%0Avar%20keyPressState%20=%200;% 0A%0Afunction%20$(o)%20%7B%0A%20%20return%20docume nt.getElementById(o);%0A%7D%0A%0Afunction%20sendCo mmand(cmd)%20%7B%0A%20%20window.domAutomationContr oller.setAutomationId(1);%0A%20%20window.domAutoma tionController.send(cmd);%0A%7D%0A%0A//%20This%20allows%20errors%20to%20be%20skippped%20b y%20typing%20%22danger%22%20into%20the%20page.%0Af unction%20keyPressHandler(e)%20%7B%0A%20%20var%20s equence%20=%20'danger';%0A%20%20if%20(sequence.cha rCodeAt(keyPressState)%20==%20e.keyCode)%20%7B%0A% 20%20%20%20keyPressState++;%0A%20%20%20%20if%20(ke yPressState%20==%20sequence.length)%20%7B%0A%20%20 %20%20%20%20sendCommand(CMD_PROCEED);%0A%20%20%20% 20%20%20keyPressState%20=%200;%0A%20%20%20%20%7D%0 A%20%20%7D%20else%20%7B%0A%20%20%20%20keyPressStat e%20=%200;%0A%20%20%7D%0A%7D%0A%0Afunction%20share dSetup()%20%7B%0A%20%20document.addEventListener(' contextmenu',%20function(e)%20%7B%0A%20%20%20%20e. preventDefault();%0A%20%20%7D);%0A%20%20document.a ddEventListener('keypress',%20keyPressHandler);%0A %7D%0A%0Adocument.addEventListener('DOMContentLoad ed',%20sharedSetup);%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20 All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Must%20match%20the%20commands%20handled%20by%20 SafeBrowsingBlockingPage%3A%3ACommandReceived.%0Av ar%20SB_CMD_DO_REPORT%20=%20'doReport';%0Avar%20SB _CMD_DONT_REPORT%20=%20'dontReport';%0Avar%20SB_CM D_EXPANDED_SEE_MORE%20=%20'expandedSeeMore';%0Avar %20SB_CMD_LEARN_MORE_2%20=%20'learnMore2';%0Avar%2 0SB_CMD_PROCEED%20=%20'proceed';%0Avar%20SB_CMD_RE PORT_ERROR%20=%20'reportError';%0Avar%20SB_CMD_SHO W_DIAGNOSTIC%20=%20'showDiagnostic';%0Avar%20SB_CM D_SHOW_PRIVACY%20=%20'showPrivacy';%0Avar%20SB_CMD _TAKE_ME_BACK%20=%20'takeMeBack';%0A%0A//%20Other%20constants%20defined%20in%20safe_browsin g_blocking_page.cc.%0Avar%20SB_BOX_CHECKED%20=%20' boxchecked';%0Avar%20SB_DISPLAY_CHECK_BOX%20=%20'd isplaycheckbox';%0A%0A//%20This%20sets%20up%20the%20Extended%20Safe%20Brow sing%20Reporting%20opt-in.%0Afunction%20setupCheckbox()%20%7B%0A%20%20if% 20(loadTimeData.getBoolean('ssl')%20%7C%7C%20loadT imeData.getBoolean('phishing')%20%7C%7C%0A%20%20%2 0%20%20%20!loadTimeData.getBoolean(SB_DISPLAY_CHEC K_BOX))%20%7B%0A%20%20%20%20return;%0A%20%20%7D%0A %0A%20%20$('opt-in-label').innerHTML%20=%20loadTimeData.getString('op tInLink');%0A%20%20$('opt-in-checkbox').checked%20=%20loadTimeData.getBoolean(S B_BOX_CHECKED);%0A%20%20$('malware-opt-in').classList.remove('hidden');%0A%0A%20%20$('opt-in-checkbox').addEventListener('click',%20function()% 20%7B%0A%20%20%20%20sendCommand(%0A%20%20%20%20%20 %20%20%20$('opt-in-checkbox').checked%20%3F%20SB_CMD_DO_REPORT%20%3A% 20SB_CMD_DONT_REPORT);%0A%20%20%7D);%0A%7D%0A%0Afu nction%20setupMalwareFinchExperiment()%20%7B%0A%20 %20if%20(loadTimeData.getString('trialCondition')% 20!=%20'V3Advice')%0A%20%20%20%20return;%0A%20%20//%20Add%20all%20this%20dynamically%20instead%20of%2 0into%20the%20HTML%20because%20it's%20just%20a%0A% 20%20//%20short-lived%20experiment.%0A%20%20var%20heading%20=%20do cument.createElement('h2');%0A%20%20heading.innerT ext%20=%20loadTimeData.getString('adviceHeading'); %0A%20%20$('details').insertBefore(heading,%20$('d etails').firstChild);%0A%7D%0A%3C/script%3E%0A%20%20%20%20%3Cscript%3E//%20Copyright%202014%20The%20Chromium%20Authors.%20 All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20This%20is%20the%20shared%20code%20for%20the%20n ew%20(Chrome%2037)%20security%20interstitials.%20I t%20is%0A//%20used%20for%20both%20SSL%20interstitials%20and%2 0Safe%20Browsing%20interstitials.%0A%0Avar%20expan dedDetails%20=%20false;%0A%0Afunction%20setupEvent s()%20%7B%0A%20%20var%20overridable%20=%20loadTime Data.getBoolean('overridable');%0A%20%20var%20ssl% 20=%20loadTimeData.getBoolean('ssl');%0A%0A%20%20i f%20(ssl)%20%7B%0A%20%20%20%20$('body').classList. add('ssl');%0A%20%20%7D%20else%20%7B%0A%20%20%20%2 0$('body').classList.add('safe-browsing');%0A%20%20%20%20setupMalwareFinchExperim ent();%0A%20%20%7D%0A%0A%20%20$('primary-button').addEventListener('click',%20function()%20 %7B%0A%20%20%20%20if%20(!ssl)%0A%20%20%20%20%20%20 sendCommand(SB_CMD_TAKE_ME_BACK);%0A%20%20%20%20el se%20if%20(overridable)%0A%20%20%20%20%20%20sendCo mmand(CMD_DONT_PROCEED);%0A%20%20%20%20else%0A%20% 20%20%20%20%20sendCommand(CMD_RELOAD);%0A%20%20%7D );%0A%0A%20%20if%20(overridable)%20%7B%0A%20%20%20 %20$('proceed-link').addEventListener('click',%20function(event) %20%7B%0A%20%20%20%20%20%20sendCommand(ssl%20%3F%2 0CMD_PROCEED%20%3A%20SB_CMD_PROCEED);%0A%20%20%20% 20%7D);%0A%20%20%7D%20else%20if%20(!ssl)%20%7B%0A% 20%20%20%20$('final-paragraph').classList.add('hidden');%0A%20%20%7D%0 A%0A%20%20if%20(ssl%20&&%20overridable)%20%7B%0A%20%20%20%20$('proceed-link').classList.add('small-link');%0A%20%20%7D%20else%20if%20($('help-link'))%20%7B%0A%20%20%20%20//%20Overridable%20SSL%20page%20doesn't%20have%20thi s%20link.%0A%20%20%20%20$('help-link').addEventListener('click',%20function(event) %20%7B%0A%20%20%20%20%20%20if%20(ssl)%0A%20%20%20% 20%20%20%20%20sendCommand(CMD_HELP);%0A%20%20%20%2 0%20%20else%20if%20(loadTimeData.getBoolean('phish ing'))%0A%20%20%20%20%20%20%20%20sendCommand(SB_CM D_LEARN_MORE_2);%0A%20%20%20%20%20%20else%0A%20%20 %20%20%20%20%20%20sendCommand(SB_CMD_SHOW_DIAGNOST IC);%0A%20%20%20%20%7D);%0A%20%20%7D%0A%0A%20%20if %20(ssl%20&&%20!overridable)%20%7B%0A%20%20%20%20$('error-code').textContent%20=%20loadTimeData.getString('e rrorCode');%0A%20%20%20%20$('error-code').classList.remove('hidden');%0A%20%20%7D%0A% 0A%20%20$('details-button').addEventListener('click',%20function(even t)%20%7B%0A%20%20%20%20var%20hiddenDetails%20=%20$ ('details').classList.toggle('hidden');%0A%20%20%2 0%20$('details-button').innerText%20=%20hiddenDetails%20%3F%0A%20 %20%20%20%20%20%20%20loadTimeData.getString('openD etails')%20%3A%0A%20%20%20%20%20%20%20%20loadTimeD ata.getString('closeDetails');%0A%20%20%20%20if%20 (!expandedDetails)%20%7B%0A%20%20%20%20%20%20//%20Record%20a%20histogram%20entry%20only%20the%20f irst%20time%20that%20details%20is%20opened.%0A%20% 20%20%20%20%20sendCommand(ssl%20%3F%20CMD_MORE%20% 3A%20SB_CMD_EXPANDED_SEE_MORE);%0A%20%20%20%20%20% 20expandedDetails%20=%20true;%0A%20%20%20%20%7D%0A %20%20%7D);%0A%0A%20%20preventDefaultOnPoundLinkCl icks();%0A%20%20setupCheckbox();%0A%7D%0A%0Adocume nt.addEventListener('DOMContentLoaded',%20setupEve nts);%0A%3C/script%3E%0A%20%20%3C/head%3E%0A%3Cbody%20id=%22body%22%20i18n-values=%22.style.fontFamily%3Afontfamily%22%3E%0A% 20%20%3Cdiv%20class=%22interstitial-wrapper%22%3E%0A%20%20%20%20%3Cdiv%20class=%22icon %22%20id=%22icon%22%3E%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22main-message%22%3E%0A%20%20%20%20%20%20%3Ch1%20i18n-content=%22heading%22%3E%3C/h1%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AprimaryParagraph%22%3E%3C/p%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22malware-opt-in%22%20class=%22hidden%22%3E%0A%20%20%20%20%20%20 %3Cdiv%20class=%22styled-checkbox%22%3E%0A%20%20%20%20%20%20%20%20%3Cinput% 20type=%22checkbox%22%20id=%22opt-in-checkbox%22%3E%0A%20%20%20%20%20%20%20%20%3Clabel% 20for=%22opt-in-checkbox%22%3E%3C/label%3E%0A%20%20%20%20%20%20%3C/div%3E%0A%20%20%20%20%20%20%3Cdiv%20id=%22opt-in-label%22%3E%3C/div%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20class=%22nav-wrapper%22%3E%0A%20%20%20%20%20%20%3Cbutton%20i18n-content=%22primaryButtonText%22%20id=%22primary-button%22%3E%3C/button%3E%0A%20%20%20%20%20%20%3Ca%20href=%22%23%2 2%20id=%22details-button%22%20class=%22small-link%22%0A%20%20%20%20%20%20%20%20%20%20i18n-content=%22openDetails%22%3E%3C/a%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%20%20%3Cdiv%20id=%22details%22%20c lass=%22hidden%22%3E%0A%20%20%20%20%20%20%3Cp%20i1 8n-values=%22.innerHTML%3AexplanationParagraph%22%3E% 3C/p%3E%0A%20%20%20%20%20%20%3Cp%20i18n-values=%22.innerHTML%3AfinalParagraph%22%20id=%22f inal-paragraph%22%3E%3C/p%3E%0A%20%20%20%20%20%20%3Cp%20id=%22error-code%22%20class=%22hidden%22%3E%3C/p%3E%0A%20%20%20%20%3C/div%3E%0A%20%20%3C/div%3E%0A%3C/body%3E%0A%3C/html%3E%3Cscript%3EloadTimeData.data%20=%20%7B%22b oxchecked%22%3Afalse,%22closeDetails%22%3A%22Hide% 20details%22,%22displaycheckbox%22%3Atrue,%22expla nationParagraph%22%3A%22Google%20Safe%20Browsing%2 0recently%20%5Cu003Ca%20href=%5C%22%23%5C%22%20id= %5C%22help-link%5C%22%3Edetected%20malware%5Cu003C/a%3E%20on%20www.broadcastingworld.com.%20Websites% 20that%20are%20normally%20safe%20are%20sometimes%2 0infected%20with%20malware.%20The%20malicious%20co ntent%20comes%20from%20files.broadcastingworld.net ,%20a%20known%20malware%20distributor.%22,%22final Paragraph%22%3A%22If%20you%20understand%20the%20ri sks%20to%20your%20security,%20you%20may%20%5Cu003C a%20href=%5C%22%23%5C%22%20id=%5C%22proceed-link%5C%22%3Evisit%20this%20unsafe%20site%5Cu003C/a%3E%20before%20the%20dangerous%20programs%20have% 20been%20removed.%22,%22fontfamily%22%3A%22'Segoe% 20UI',%20Tahoma,%20sans-serif%22,%22fontsize%22%3A%2275%25%22,%22heading%2 2%3A%22The%20site%20ahead%20contains%20malware%22, %22openDetails%22%3A%22Details%22,%22optInLink%22% 3A%22Automatically%20report%20details%20of%20possi ble%20security%20incidents%20to%20Google.%20%5Cu00 3Ca%20id=%5C%22privacy-link%5C%22%20href=%5C%22%5C%22%20onclick=%5C%22sen dCommand('showPrivacy');%20return%20false;%5C%22%2 0onmousedown=%5C%22return%20false;%5C%22%3EPrivacy %20policy%5Cu003C/a%3E%22,%22overridable%22%3Atrue,%22phishing%22%3A false,%22primaryButtonText%22%3A%22Back%20to%20saf ety%22,%22primaryParagraph%22%3A%22Attackers%20cur rently%20on%20%5Cu003Cstrong%3Efiles.broadcastingw orld.net%5Cu003C/strong%3E%20might%20attempt%20to%20install%20dange rous%20programs%20on%20your%20computer%20that%20st eal%20or%20delete%20your%20information%20(for%20ex ample,%20photos,%20passwords,%20messages,%20and%20 credit%20cards).%22,%22ssl%22%3Afalse,%22tabTitle% 22%3A%22Security%20error%22,%22textdirection%22%3A %22ltr%22,%22trialCondition%22%3A%22V3%22%7D;%3C/script%3E%3Cscript%3E//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A//%20Copyright%20(c)%202012%20The%20Chromium%20Autho rs.%20All%20rights%20reserved.%0A//%20Use%20of%20this%20source%20code%20is%20governed %20by%20a%20BSD-style%20license%20that%20can%20be%0A//%20found%20in%20the%20LICENSE%20file.%0A%0A/**%0A%20*%20@fileoverview%20This%20is%20a%20simple %20template%20engine%20inspired%20by%20JsTemplates %0A%20*%20optimized%20for%20i18n.%0A%20*%0A%20*%20 It%20currently%20supports%20three%20handlers%3A%0A %20*%0A%20*%20%20%20*%20i18n-content%20which%20sets%20the%20textContent%20of%20 the%20element.%0A%20*%0A%20*%20%20%20%20%20%3Cspan %20i18n-content=%22myContent%22%3E%3C/span%3E%0A%20*%0A%20*%20%20%20*%20i18n-options%20which%20generates%20%3Coption%3E%20eleme nts%20for%20a%20%3Cselect%3E.%0A%20*%0A%20*%20%20% 20%20%20%3Cselect%20i18n-options=%22myOptionList%22%3E%3C/select%3E%0A%20*%0A%20*%20%20%20*%20i18n-values%20is%20a%20list%20of%20attribute-value%20or%20property-value%20pairs.%0A%20*%20%20%20%20%20Properties%20a re%20prefixed%20with%20a%20'.'%20and%20can%20conta in%20nested%20properties.%0A%20*%0A%20*%20%20%20%2 0%20%3Cspan%20i18n-values=%22title%3AmyTitle;.style.fontSize%3AfontSi ze%22%3E%3C/span%3E%0A%20*%0A%20*%20This%20file%20is%20a%20cop y%20of%20i18n_template.js,%20with%20minor%20tweaks %20to%20support%20using%0A%20*%20load_time_data.js .%20It%20should%20replace%20i18n_template.js%20eve ntually.%0A%20*/%0A%0Avar%20i18nTemplate%20=%20(function()%20%7B%0 A%20%20/**%0A%20%20%20*%20This%20provides%20the%20handlers %20for%20the%20templating%20engine.%20The%20key%20 is%20used%20as%0A%20%20%20*%20the%20attribute%20na me%20and%20the%20value%20is%20the%20function%20tha t%20gets%20called%20for%20every%0A%20%20%20*%20sin gle%20node%20that%20has%20this%20attribute.%0A%20% 20%20*%20@type%20%7BObject%7D%0A%20%20%20*/%0A%20%20var%20handlers%20=%20%7B%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20handler%20sets%20th e%20textContent%20of%20the%20element.%0A%20%20%20% 20%20*%20@param%20%7BHTMLElement%7D%20element%20Th e%20node%20to%20modify.%0A%20%20%20%20%20*%20@para m%20%7Bstring%7D%20key%20The%20name%20of%20the%20v alue%20in%20the%20dictionary.%0A%20%20%20%20%20*%2 0@param%20%7BLoadTimeData%7D%20dictionary%20The%20 dictionary%20of%20strings%20to%20draw%20from.%0A%2 0%20%20%20%20*/%0A%20%20%20%20'i18n-content'%3A%20function(element,%20key,%20dictionar y)%20%7B%0A%20%20%20%20%20%20element.textContent%2 0=%20dictionary.getString(key);%0A%20%20%20%20%7D, %0A%0A%20%20%20%20/**%0A%20%20%20%20%20*%20This%20handler%20adds%20op tions%20to%20a%20%3Cselect%3E%20element.%0A%20%20% 20%20%20*%20@param%20%7BHTMLElement%7D%20select%20 The%20node%20to%20modify.%0A%20%20%20%20%20*%20@pa ram%20%7Bstring%7D%20key%20The%20name%20of%20the%2 0value%20in%20the%20dictionary.%20It%20should%0A%2 0%20%20%20%20*%20%20%20%20%20identify%20an%20array %20of%20values%20to%20initialize%20an%20%3Coption% 3E.%20Each%20value,%0A%20%20%20%20%20*%20%20%20%20 %20if%20a%20pair,%20represents%20%5Bcontent,%20val ue%5D.%20Otherwise,%20it%20should%20be%20a%0A%20%2 0%20%20%20*%20%20%20%20%20content%20string%20with% 20no%20value.%0A%20%20%20%20%20*%20@param%20%7BLoa dTimeData%7D%20dictionary%20The%20dictionary%20of% 20strings%20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-options'%3A%20function(select,%20key,%20dictionary )%20%7B%0A%20%20%20%20%20%20var%20options%20=%20di ctionary.getValue(key);%0A%20%20%20%20%20%20option s.forEach(function(optionData)%20%7B%0A%20%20%20%2 0%20%20%20%20var%20option%20=%20typeof%20optionDat a%20==%20'string'%20%3F%0A%20%20%20%20%20%20%20%20 %20%20%20%20new%20Option(optionData)%20%3A%0A%20%2 0%20%20%20%20%20%20%20%20%20%20new%20Option(option Data%5B1%5D,%20optionData%5B0%5D);%0A%20%20%20%20% 20%20%20%20select.appendChild(option);%0A%20%20%20 %20%20%20%7D);%0A%20%20%20%20%7D,%0A%0A%20%20%20%2 0/**%0A%20%20%20%20%20*%20This%20is%20used%20to%20se t%20HTML%20attributes%20and%20DOM%20properties.%20 The%20syntax%20is%3A%0A%20%20%20%20%20*%20%20%20at tributename%3Akey;%0A%20%20%20%20%20*%20%20%20.dom Property%3Akey;%0A%20%20%20%20%20*%20%20%20.nested .dom.property%3Akey%0A%20%20%20%20%20*%20@param%20 %7BHTMLElement%7D%20element%20The%20node%20to%20mo dify.%0A%20%20%20%20%20*%20@param%20%7Bstring%7D%2 0attributeAndKeys%20The%20path%20of%20the%20attrib ute%20to%20modify%0A%20%20%20%20%20*%20%20%20%20%2 0followed%20by%20a%20colon,%20and%20the%20name%20o f%20the%20value%20in%20the%20dictionary.%0A%20%20% 20%20%20*%20%20%20%20%20Multiple%20attribute/key%20pairs%20may%20be%20separated%20by%20semicolo ns.%0A%20%20%20%20%20*%20@param%20%7BLoadTimeData% 7D%20dictionary%20The%20dictionary%20of%20strings% 20to%20draw%20from.%0A%20%20%20%20%20*/%0A%20%20%20%20'i18n-values'%3A%20function(element,%20attributeAndKeys, %20dictionary)%20%7B%0A%20%20%20%20%20%20var%20par ts%20=%20attributeAndKeys.replace(/%5Cs/g,%20'').split(/;/);%0A%20%20%20%20%20%20parts.forEach(function(part )%20%7B%0A%20%20%20%20%20%20%20%20if%20(!part)%0A% 20%20%20%20%20%20%20%20%20%20return;%0A%0A%20%20%2 0%20%20%20%20%20var%20attributeAndKeyPair%20=%20pa rt.match(/%5E(%5B%5E%3A%5D+)%3A(.+)$/);%0A%20%20%20%20%20%20%20%20if%20(!attributeAndKe yPair)%0A%20%20%20%20%20%20%20%20%20%20throw%20new %20Error('malformed%20i18n-values%3A%20'%20+%20attributeAndKeys);%0A%0A%20%20 %20%20%20%20%20%20var%20propName%20=%20attributeAn dKeyPair%5B1%5D;%0A%20%20%20%20%20%20%20%20var%20p ropExpr%20=%20attributeAndKeyPair%5B2%5D;%0A%0A%20 %20%20%20%20%20%20%20var%20value%20=%20dictionary. getValue(propExpr);%0A%0A%20%20%20%20%20%20%20%20//%20Allow%20a%20property%20of%20the%20form%20'.foo. bar'%20to%20assign%20a%20value%20into%0A%20%20%20% 20%20%20%20%20//%20element.foo.bar.%0A%20%20%20%20%20%20%20%20if%2 0(propName%5B0%5D%20==%20'.')%20%7B%0A%20%20%20%20 %20%20%20%20%20%20var%20path%20=%20propName.slice( 1).split('.');%0A%20%20%20%20%20%20%20%20%20%20var %20targetObject%20=%20element;%0A%20%20%20%20%20%2 0%20%20%20%20while%20(targetObject%20&&%20path.length%20%3E%201)%20%7B%0A%20%20%20%20%20% 20%20%20%20%20%20%20targetObject%20=%20targetObjec t%5Bpath.shift()%5D;%0A%20%20%20%20%20%20%20%20%20 %20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(targe tObject)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20 %20targetObject%5Bpath%5D%20=%20value;%0A%20%20%20 %20%20%20%20%20%20%20%20%20//%20In%20case%20we%20set%20innerHTML%20(ignoring%20 others)%20we%20need%20to%0A%20%20%20%20%20%20%20%2 0%20%20%20%20//%20recursively%20check%20the%20content.%0A%20%20%2 0%20%20%20%20%20%20%20%20%20if%20(path%20==%20'inn erHTML')%0A%20%20%20%20%20%20%20%20%20%20%20%20%20 %20process(element,%20dictionary);%0A%20%20%20%20% 20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D %20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20elem ent.setAttribute(propName,%20value);%0A%20%20%20%2 0%20%20%20%20%7D%0A%20%20%20%20%20%20%7D);%0A%20%2 0%20%20%7D%0A%20%20%7D;%0A%0A%20%20var%20attribute Names%20=%20Object.keys(handlers);%0A%20%20var%20s elector%20=%20'%5B'%20+%20attributeNames.join('%5D ,%5B')%20+%20'%5D';%0A%0A%20%20/**%0A%20%20%20*%20Processes%20a%20DOM%20tree%20wit h%20the%20%7B@code%20dictionary%7D%20map.%0A%20%20 %20*%20@param%20%7BHTMLElement%7D%20node%20The%20r oot%20of%20the%20DOM%20tree%20to%20process.%0A%20% 20%20*%20@param%20%7BLoadTimeData%7D%20dictionary% 20The%20dictionary%20to%20draw%20from.%0A%20%20%20 */%0A%20%20function%20process(node,%20dictionary)%20 %7B%0A%20%20%20%20var%20elements%20=%20node.queryS electorAll(selector);%0A%20%20%20%20for%20(var%20e lement,%20i%20=%200;%20element%20=%20elements%5Bi% 5D;%20i++)%20%7B%0A%20%20%20%20%20%20for%20(var%20 j%20=%200;%20j%20%3C%20attributeNames.length;%20j+ +)%20%7B%0A%20%20%20%20%20%20%20%20var%20name%20=% 20attributeNames%5Bj%5D;%0A%20%20%20%20%20%20%20%2 0var%20attribute%20=%20element.getAttribute(name); %0A%20%20%20%20%20%20%20%20if%20(attribute%20!=%20 null)%0A%20%20%20%20%20%20%20%20%20%20handlers%5Bn ame%5D(element,%20attribute,%20dictionary);%0A%20% 20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A %0A%20%20return%20%7B%0A%20%20%20%20process%3A%20p rocess%0A%20%20%7D;%0A%7D());%0A%0A%0Ai18nTemplate .process(document,%20loadTimeData);%0A%3C/script%3E#) before the dangerous programs have been removed.




Check this plz :\

Shai

shoutcaststreaming
10-12-2014, 04:06 PM
That was explained in the Chat Box:



James (http://forums.broadcastingworld.com/member.php?u=1):
Waiting for google to hurry up and review it


James (http://forums.broadcastingworld.com/member.php?u=1):
It was a Wordpress vunderability. They were quick because it was put in the night after Wordpress 4 came out..


James (http://forums.broadcastingworld.com/member.php?u=1):
I have 4 sites on the same server. Google marks all sites as hacked.


GKIye (http://forums.broadcastingworld.com/member.php?u=10100):
I have currently the same access problem at SRW ! What is happening folks ?


GKIye (http://forums.broadcastingworld.com/member.php?u=10100):
Damn ... The warning to enter BW still appears at my screen .... pfffffffff

joint
10-12-2014, 05:02 PM
OK
Thanks for the info

Shai