Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
<!DOCTYPE html>
<html data-nav-highlight-class-name="highlight-global-nav-home">
<head>
<title>Twitter</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8" />
<meta name="description" content="Instantly connect to what&#39;s most important to you. Follow your friends, experts, favorite celebrities, and breaking news." />
<link rel="dns-prefetch" href="https://si0.twimg.com"/>
<link rel="dns-prefetch" href="https://api.twitter.com"/>
<script type="text/javascript" charset="utf-8">
document.domain = 'twitter.com';
// this will be copied to twttr.appStartTime once our JS has started up
document.startTime = new Date().getTime();
var twttr = {};
twttr.versionName = 'phoenix';
twttr.isT1 = true;
twttr.didPingKeynote = false;
twttr.keynoteTTFTPing = function() {
if (!twttr.didPingKeynote && window.location.href.indexOf('keynoteTest') > 0) {
var image = document.createElement('img');
image.src = '/images/keynote.gif';
twttr.didPingKeynote = true;
}
}
if(!window.console){(function(){var B=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var A=0;A<B.length;++A){window.console[B[A]]=function(){}}}())};
</script>
<script type="text/javascript">(function(){window.setTimeout=window.setTimeout;window.setInterval=window.setInterval;window.WATCH=function(label,block){if(typeof block==="undefined"){block=label;label=undefined}if(typeof label==="string"){WATCH._didExecute[label]=true}WATCH._attempt(this,block)};WATCH._didExecute={};WATCH._reportCount=0;WATCH._reportLimit=25;WATCH._reportInterval=60*1000;WATCH._active=false;WATCH.activate=function(setting){if(typeof setting==="undefined"){setting=true}WATCH._active=setting;extend(WATCH,WATCH._active?WATCH.actives:WATCH.inactives)};WATCH.actives={};WATCH.inactives={};var extend=function(destination,source){for(var key in source){destination[key]=source[key]}};var noop=function(){};WATCH._attempt=function(that,block){if(arguments.length<2){block=that;that=window}if(WATCH._active){try{block.apply(that)}catch(error){WATCH._triggerError(error)}}else{block.apply(that)}};WATCH.inactives.end=noop;WATCH.actives.end=function(label){if(typeof label==="undefined"){throw new Error("WATCH.end() requires a label")}if(WATCH._didExecute[label]){WATCH._didExecute[label]=false}else{if(WATCH._active){WATCH._triggerError(new Error('WATCH.end("'+label+'") called without successful call to WATCH("'+label+'", fn(){...}) - a SyntaxError probably just happened'))}}WATCH._didExecute[label]=false};WATCH.inactives.callback=function(that,callback){return typeof callback==="undefined"?that:callback};WATCH.actives.callback=function(that,callback){if(arguments.length===1){callback=that;that=this}if(typeof callback==="string"){callback=(function(stringVersion){return function(){eval(stringVersion)}}(callback))}var watchedCallback=function(){var that=this,args=arguments,result;WATCH._attempt(function(){result=callback.apply(that,args)});return result};watchedCallback.isWatched=true;return watchedCallback};WATCH._onErrorCallbacks={};WATCH.inactives._addOnError=noop;WATCH.actives._addOnError=function(callback){var unique=WATCH._unique();WATCH._onErrorCallbacks[unique]=callback;return unique};WATCH.inactives._removeOnError=noop;WATCH.actives._removeOnError=function(id){delete WATCH._onErrorCallbacks[id]};WATCH._lastUnique=-1;WATCH._unique=function(){return ++WATCH._lastUnique};WATCH.inactives.jQuery=noop;WATCH.actives.jQuery=function(){WATCH._originalJQueryEventAdd=WATCH._originalJQueryEventAdd||jQuery.event.add;jQuery.event.add=function(){var newArgs=Array.prototype.slice.call(arguments);if(typeof newArgs[2]==="function"){newArgs[2]=WATCH.callback(newArgs[2])}else{if(newArgs&&typeof newArgs[2]==="object"&&newArgs[2].handler){newArgs[2].handler=WATCH.callback(newArgs[2].handler)}}return WATCH._originalJQueryEventAdd.apply(this,newArgs)};WATCH._originalJQueryAjax=WATCH._originalJQueryAjax||jQuery.ajax;jQuery.ajax=function(options){jQuery.each(["complete","error","success"],function(which,key){if(!options[key]){return }options[key]=WATCH.callback(options[key])});return WATCH._originalJQueryAjax.apply(this,arguments)}};WATCH.inactives.undoJQuery=noop;WATCH.actives.undoJQuery=function(){jQuery.event.add=WATCH._originalJQueryEventAdd;jQuery.ajax=WATCH._originalJQueryAjax};WATCH._previousErrors={};var escapeDoubleQuotes=function(string){return string.toString().replace('"','\\"')};var stringifyLite=function(object){var result="{",hasProperty=false;for(var key in object){if(typeof object[key]==="undefined"||object[key]===null){continue}result+=(hasProperty?',"':'"')+escapeDoubleQuotes(key)+'":"'+escapeDoubleQuotes(object[key])+'"';hasProperty=true}return result+"}"};WATCH._scribeError=function(report){if(WATCH._previousErrors[report.error]&&(new Date())-WATCH._previousErrors[report.error]<WATCH._reportInterval){return false}if(WATCH.reportLimit<=WATCH.reportCount){return }WATCH.reportCount++;if(!document.location.hostname.match(/(^(www|api)\.)?twitter\.com$/)){return }WATCH._previousErrors[report.error]=new Date();report.product_name="webclient";report.type="js_error";report.url=window.location.href;report.event_name="test";var isProduction=document.location.hostname.match(/(^(www|api|staging\d+.local)\.)twitter\.com$/)!=null;var scribeHost=isProduction?"scribe.twitter.com":window.location.host;var scribeUrl=(window.location.protocol.match(/s\:$/)?"https":"http")+"://"+scribeHost;scribeUrl+=isProduction?"/":"/scribe";scribeUrl+="?category=client_watch_error&log="+encodeURIComponent(stringifyLite(report))+"&ts="+(new Date()).getTime();(new Image()).src=scribeUrl};WATCH._triggerError=function(error){var reraise=true;var report={error:error};for(var key in WATCH._onErrorCallbacks){try{if(WATCH._onErrorCallbacks[key](report)===false){reraise=false}}catch(callbackError){report.callbackFailure=true}}WATCH._scribeError(report);if(reraise){throw error}};WATCH.inactives.natives=noop;WATCH.actives.natives=function(){window.setInterval=WATCH._watchedSetInterval;window.setTimeout=WATCH._watchedSetTimeout};WATCH.inactives.undoNatives=noop;WATCH.actives.undoNatives=function(){window.setInterval=WATCH._originalSetInterval;window.setTimeout=WATCH._originalSetTimeout};WATCH._originalSetInterval=window.setInterval;WATCH._originalSetTimeout=window.setTimeout;WATCH._watchedSetInterval=function(callback,timeout){var setInterval=WATCH._originalSetInterval;return setInterval(WATCH.callback(callback),timeout)};WATCH._watchedSetTimeout=function(callback,timeout){var setTimeout=WATCH._originalSetTimeout;return setTimeout(WATCH.callback(callback),timeout)};WATCH.activate(false)}());</script>
<script type="text/javascript">
</script>
<script>
function bust () {
document.write = "";
window.top.location = window.self.location;
setTimeout(function() {
document.body.innerHTML = '';
}, 0);
window.self.onload = function(evt) {
document.body.innerHTML = '';
};
}
if (window.top !== window.self) { // are you trying to put self in an iframe?
try {
if (window.top.location.host) { // this is illegal to access unless you share a non-spoofable document domain
// fun times
} else {
bust(); // chrome executes this
}
} catch (ex) {
bust(); // everyone executes this
}
}
</script>
<link href="/phoenix/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<base href="https://twitter.com" />
<link rel="stylesheet" href="https://si0.twimg.com/a/1329497727/t1/css/t1_core_logged_out.bundle.css" type="text/css" media="screen" />
<link rel="canonical" href="https://twitter.com/" />
<noscript>
<meta http-equiv=refresh content="0; URL=/?_twitter_noscript=1" />
</noscript>
<script>(function(){var A=document.getElementsByTagName("html")[0];var B=window.location.hash.split("?")[0];var C=B.match(/#/)&&(B.replace(/#[!]?[\/]?/,"")!=="");if(C){A.className+=" remove-prerendered-content"}else{A.className+=" use-prerendered-content";if(A.getAttribute("data-nav-highlight-class-name")){A.className+=" "+A.getAttribute("data-nav-highlight-class-name")}}})();</script>
<link rel="stylesheet" href="https://si0.twimg.com/a/1329497727/t1/css/t1_more.bundle.css" type="text/css" media="screen" />
<script>var _gaq=_gaq||[];_gaq.push(["_setAccount","UA-30775-6"],["_trackPageview"],["_setDomainName","twitter.com"]);twttr.didInsertGA=false;twttr.insertGAScriptElement=function(){if(!twttr.didInsertGA){var A=document.getElementsByTagName("script")[0],B=document.createElement("script");B.async=true;B.src=(document.location.protocol=="https:"?"https://ssl":"http://www")+".google-analytics.com/ga.js";A.parentNode.insertBefore(B,A);twttr.didInsertGA=true}};twttr.trackPageView=function(A){var B=["_trackPageview"];if(A){B.push(A)}_gaq.push(B)};</script>
</head>
<body class="t1 logged-out front-random-image-city-balcony "
>
<div id="doc">
<div class="topbar js-topbar">
<div id="banners" class="js-banners">
</div>
<div class="global-nav" data-section-term="top_nav">
<div class="global-nav-inner">
<div class="container">
<ul class="nav js-global-actions">
<li class="home" data-global-action="t1home">
<a href="/">
<span><i class="nav-home-logged-out"></i></span>
</a>
</li>
</ul>
<ul class="nav secondary-nav session-dropdown" id="session">
<li class="dropdown js-session">
<a class="dropdown-toggle dropdown-signin" id="signin-link" href="#">
<small>Have an account?</small> Sign in
</a>
<a class="dropdown-signup" id="signup-link" href="https://twitter.com/signup?context=login">
<small>New to Twitter?</small><span class="emphasize"> Join Today &raquo;</span>
</a>
<ul class="dropdown-menu dropdown-form dropdown-menu-dark" id="signin-dropdown">
<li>
<form action="https://twitter.com/sessions?phx=1" class="js-signin signin" method="post">
<fieldset class="textbox">
<label class="username js-username">
<span>Username or email</span>
<input class="js-username-field email-input" type="text" value="" name="session[username_or_email]" autocomplete="on">
</label>
<label class="password js-password">
<span>Password</span>
<input class="js-password-field" type="password" value="" name="session[password]">
</label>
</fieldset>
<fieldset class="subchck">
<label class="remember">
<input type="checkbox" value="1" name="remember_me">
<span>Remember me</span>
</label>
<button type="submit" class="btn submit">Sign in</button>
</fieldset>
<input type="hidden" name="scribe_log">
<input type="hidden" name="redirect_after_login" value="">
<div class="divider"></div>
<p>
<a class="forgot" href="/account/resend_password">Forgot password?</a><br />
<a class="mobile has-sms" href="/account/complete">Already using Twitter via SMS?</a>
</p>
</form>
</li>
</ul>
</li>
</ul>
<ul class="nav secondary-nav language-dropdown">
<li class="dropdown js-language-dropdown">
<a class="dropdown-toggle" href="javascript:;">
<small>Language:</small> <span class="js-current-language">English</span>
</a>
<ul class="dropdown-menu dropdown-menu-dark">
<li><a href="/?lang=id" data-lang-code="id" title="Indonesian" class="js-language-link">Bahasa Indonesia</a></li>
<li><a href="/?lang=msa" data-lang-code="msa" title="Malay" class="js-language-link">Bahasa Melayu</a></li>
<li><a href="/?lang=da" data-lang-code="da" title="Danish" class="js-language-link">Dansk</a></li>
<li><a href="/?lang=de" data-lang-code="de" title="German" class="js-language-link">Deutsch</a></li>
<li><a href="/?lang=es" data-lang-code="es" title="Spanish" class="js-language-link">Español</a></li>
<li><a href="/?lang=fil" data-lang-code="fil" title="Filipino" class="js-language-link">Filipino</a></li>
<li><a href="/?lang=it" data-lang-code="it" title="Italian" class="js-language-link">Italiano</a></li>
<li><a href="/?lang=hu" data-lang-code="hu" title="Hungarian" class="js-language-link">Magyar</a></li>
<li><a href="/?lang=nl" data-lang-code="nl" title="Dutch" class="js-language-link">Nederlands</a></li>
<li><a href="/?lang=no" data-lang-code="no" title="Norwegian" class="js-language-link">Norsk</a></li>
<li><a href="/?lang=pl" data-lang-code="pl" title="Polish" class="js-language-link">Polski</a></li>
<li><a href="/?lang=pt" data-lang-code="pt" title="Portuguese" class="js-language-link">Português</a></li>
<li><a href="/?lang=fi" data-lang-code="fi" title="Finnish" class="js-language-link">Suomi</a></li>
<li><a href="/?lang=sv" data-lang-code="sv" title="Swedish" class="js-language-link">Svenska</a></li>
<li><a href="/?lang=tr" data-lang-code="tr" title="Turkish" class="js-language-link">Türkçe</a></li>
<li><a href="/?lang=fr" data-lang-code="fr" title="French" class="js-language-link">français</a></li>
<li><a href="/?lang=ru" data-lang-code="ru" title="Russian" class="js-language-link">Русский</a></li>
<li><a href="/?lang=hi" data-lang-code="hi" title="Hindi" class="js-language-link">हिन्दी</a></li>
<li><a href="/?lang=ja" data-lang-code="ja" title="Japanese" class="js-language-link">日本語</a></li>
<li><a href="/?lang=zh-cn" data-lang-code="zh-cn" title="Simplified Chinese" class="js-language-link">简体中文</a></li>
<li><a href="/?lang=zh-tw" data-lang-code="zh-tw" title="Traditional Chinese" class="js-language-link">繁體中文</a></li>
<li><a href="/?lang=ko" data-lang-code="ko" title="Korean" class="js-language-link">한국어</a></li>
</ul>
<div class="js-front-language">
<form action="/sessions/change_locale" class="language" method="POST">
<input type="hidden" name="lang">
<input type="hidden" name="redirect">
</form>
</div>
</li>
</ul>
<div class="pull-right">
<form class="form-search js-search-form " action="/search" autocomplete="off" id="global-nav-search">
<span class="search-icon js-search-action">
<i class="nav-search"></i>
</span>
<input class="search-input" type="text" id="search-query" placeholder="Search" name="q">
<div class="dropdown-menu dropdown-menu-dark typeahead js-global-nav-dropdown">
</div>
</form>
</div>
<a class="close-all-tweets js-close-all-tweets" href="#" title="Close all open Tweets">
<i class="nav-breaker"></i>
</a>
</div>
</div>
</div>
<div class="alert-messages" id="message-drawer"></div>
</div>
<div id="page-outer">
<div class="front-container" id="front-container">
<noscript>
<div class="front-no-js-warn">
<h3>Twitter.com makes heavy use of JavaScript</h3>
<p>If you cannot enable it in your browser's preferences, you may have a better experience on our <a href="http://m.twitter.com">mobile site</a>.</p>
</div>
</noscript>
<div class="front-card">
<div class="front-welcome">
<div class="front-welcome-text">
<h1>Welcome to Twitter.</h1>
<p>Find out what&#8217;s happening, right now, with the people and organizations you care about.</p>
</div>
</div>
<div class="front-signin js-front-signin">
<form action="https://twitter.com/sessions?phx=1" class="signin" method="post">
<div class="placeholding-input username">
<input type="text" class="text-input email-input" name="session[username_or_email]" title="Username or email" autocomplete="on">
<span class="placeholder">Username or email</span>
</div>
<table class="flex-table password-signin">
<tbody>
<tr>
<td class="flex-table-primary">
<div class="placeholding-input password flex-table-form">
<input type="password" class="text-input flex-table-input" name="session[password]" title="Password">
<span class="placeholder">Password</span>
</div>
</td>
<td class="flex-table-secondary">
<input type="submit" class="submit btn primary-btn flex-table-btn js-submit" value="Sign in">
</td>
</tr>
</tbody>
</table>
<div class="remember-forgot">
<label class="remember">
<input type="checkbox" value="1" name="remember_me">
<span>Remember me</span>
</label>
<span class="separator">&middot;</span>
<a class="forgot" href="/account/resend_password">Forgot password?</a>
</div>
<input type="hidden" name="return_to_ssl" value="true">
<input type="hidden" name="scribe_log">
<input type="hidden" name="redirect_after_login" value="">
</form>
</div>
<div class="front-signup js-front-signup">
<h2><strong>New to Twitter?</strong> Sign up</h2>
<form action="https://twitter.com/signup" class="signup" method="post">
<div class="placeholding-input">
<input type="text" class="text-input" autocomplete="off" name="user[name]" maxlength="20">
<span class="placeholder">Full name</span>
</div>
<div class="placeholding-input">
<input type="text" class="text-input email-input" autocomplete="off" name="user[email]">
<span class="placeholder">Email</span>
</div>
<div class="placeholding-input">
<input type="password" class="text-input" name="user[user_password]">
<span class="placeholder">Password</span>
</div>
<input type="hidden" value="front" name="context">
<input type="submit" class="btn signup-btn" value="Sign up for Twitter">
</form>
</div>
</div>
<div class="footer inline-list">
<ul>
<li><a href="/about">About</a><span class="dot divider"> &middot;</span></li>
<li><a href="//support.twitter.com">Help</a><span class="dot divider"> &middot;</span></li>
<li><a href="http://blog.twitter.com">Blog</a><span class="dot divider"> &middot;</span></li>
<li><a href="/download">Mobile</a><span class="dot divider"> &middot;</span></li>
<li><a href="http://status.twitter.com">Status</a><span class="dot divider"> &middot;</span></li>
<li><a href="/jobs">Jobs</a><span class="dot divider"> &middot;</span></li>
<li><a href="/tos">Terms</a><span class="dot divider"> &middot;</span></li>
<li><a href="/privacy">Privacy</a><span class="dot divider"> &middot;</span></li>
<li><a href="//business.twitter.com/en/advertise/start">Advertisers</a><span class="dot divider"> &middot;</span></li>
<li><a href="//business.twitter.com/index_en.html">Businesses</a><span class="dot divider"> &middot;</span></li>
<li><a href="http://media.twitter.com">Media</a><span class="dot divider"> &middot;</span></li>
<li><a href="//dev.twitter.com">Developers</a><span class="dot divider"> &middot;</span></li>
<li><a href="/about/resources">Resources</a><span class="dot divider"> &middot;</span></li>
<li><span class="copyright">&copy; 2012 Twitter</span></li>
</ul>
</div>
</div>
<div id="page-container" class="wrapper">
</div>
</div>
</div>
<div class="twttr-dialog-wrapper"></div>
<script type="text/javascript">WATCH('loadrunner', function() {
(function(context,document){var useInteractive=context.attachEvent&&!context.opera,scripts=document.getElementsByTagName("script"),uuid=0,scriptTag,scriptTemplate=document.createElement("script"),scriptsInProgress={},modulesInProgress={},loadedModule,currentScript,activeScripts={},oldUsing=context.using,oldProvide=context.provide,oldDefine=context.define,oldLoadrunner=context.loadrunner,pausedScripts={};for(var i=0,s;s=scripts[i];i++){if(s.src.match(/loadrunner\.js(\?|#|$)/)){scriptTag=s;break}}function aug(target){for(var i=1,o;o=arguments[i];i++){for(var key in o){target[key]=o[key]}}return target}function makeArray(o){return Array.prototype.slice.call(o)}var isArray=Array.isArray||function(obj){return obj.constructor==Array};function indexOf(arr,thing){for(var i=0,item;item=arr[i];i++){if(thing==item){return i}}return -1}function path(){var parts=makeArray(arguments),normalized=[];for(var i=0,len=parts.length;i<len;i++){if(parts[i].length>0){normalized.push(parts[i].replace(/\/$/,""))}}return normalized.join("/")}function pushObjPath(obj,path,newobj){var names=path.split("/"),cursor=obj;while(names.length>1){var name=names.shift();cursor=cursor[name]=cursor[name]||{}}cursor[names[0]]=newobj}function Dependency(){}Dependency.prototype.then=function(cb){var dep=this;if(!this.started){this.started=true;this.start()}if(this.completed){cb.apply(context,this.results)}else{this.callbacks=this.callbacks||[];this.callbacks.push(cb)}return this};Dependency.prototype.start=function(){};Dependency.prototype.complete=function(){if(!this.completed){this.results=makeArray(arguments);this.completed=true;if(this.callbacks){for(var i=0,cb;cb=this.callbacks[i];i++){cb.apply(context,this.results)}}}};function Script(path,force){if(path){this.id=this.path=this.resolvePath(path)}this.force=!!force}Script.loaded=[];Script.times={};Script.prototype=new Dependency;Script.prototype.resolvePath=function(path){return whichBundle(path)};Script.prototype.start=function(){var me=this,dep,module;if(module=modulesInProgress[this.id]){module.then(function(){me.complete()});return this}if(dep=scriptsInProgress[this.id]){dep.then(function(){me.loaded()})}else{if(!this.force&&indexOf(Script.loaded,this.id)>-1){this.loaded()}else{this.load()}}return this};Script.prototype.createScriptTag=function(){var me=this,paused;scriptsInProgress[this.id]=me;if(paused=pausedScripts[this.path]){me.then(function(){for(var i=0,d;d=paused[i];i++){d.complete.apply(d,arguments)}})}this.times={start:new Date()};var script=scriptTemplate.cloneNode(false);this.scriptId=script.id="LR"+ ++uuid;script.type="text/javascript";script.async=true;script.onerror=function(){throw new Error(me.path+" not loaded")};script.onreadystatechange=script.onload=function(e){e=context.event||e;if(e.type=="load"||indexOf(["loaded","complete"],this.readyState)>-1){this.onreadystatechange=null;me.loaded()}};script.src=this.path;currentScript=this;scripts[0].parentNode.insertBefore(script,scripts[0]);currentScript=null;activeScripts[script.id]=this};Script.prototype.queueScript=function(){pausedScripts[this.path]=pausedScripts[this.path]||[];pausedScripts[this.path].push(this)};Script.prototype.load=function(force){if(using.autoLoad||force){this.createScriptTag()}else{this.queueScript()}return this};Script.prototype.loaded=function(){this.complete()};Script.prototype.complete=function(){if(indexOf(Script.loaded,this.id)==-1){Script.loaded.push(this.id)}if(this.times){Script.times[this.id]=aug(this.times,{end:new Date()})}delete scriptsInProgress[this.id];Dependency.prototype.complete.apply(this,arguments)};function Module(id,body){this.id=id;this.body=body;if(typeof body=="undefined"){this.path=this.resolvePath(id)}}Module.exports={};Module.prototype=new Script;Module.prototype.resolvePath=function(id){return(whichBundle(id)!=id)?whichBundle(id):path(using.path,id+".js")};Module.prototype.start=function(){var exports,module,me=this,oldCurrent;if(this.body){this.execute()}else{if(exports=Module.exports[this.id]){this.exp(exports)}else{if(module=modulesInProgress[this.id]){module.then(function(exports){me.exp(exports)})}else{modulesInProgress[this.id]=this;this.load()}}}};Module.prototype.loaded=function(){var module,exports,me=this;if(!useInteractive){module=loadedModule;loadedModule=null;module.id=module.id||this.id;module.then(function(exports){me.exp(exports)})}else{if(exports=Module.exports[this.id]){this.exp(exports)}else{if(module=modulesInProgress[this.id]){module.then(function(exports){me.exp(exports)})}}}};Module.prototype.complete=function(){delete modulesInProgress[this.id];Script.prototype.complete.apply(this,arguments)};Module.prototype.execute=function(){var me=this;if(typeof this.body=="object"){this.exp(this.body)}else{if(typeof this.body=="function"){this.body.apply(window,[function(exports){me.exp(exports)}])}}};Module.prototype.exp=function(exports){if(this.times){aug(this.times,{eval:new Date()})}this.complete(this.exports=Module.exports[this.id]=exports||{})};function flattenDeps(deps){var flat=[];for(var i=0,d;d=deps[i];i++){if(d instanceof Sequence){flat=flat.concat(flattenDeps(d.deps))}else{if(d instanceof Module){flat.push(d)}}}return flat}function Collection(deps){this.deps=deps;if(this.deps.length==0){this.complete()}}Collection.prototype=new Dependency;Collection.prototype.start=function(){var me=this;function depComplete(){var results=[];for(var i=0,d;d=me.deps[i];i++){if(!d.completed){return }if(d.results.length>0){results=results.concat(d.results)}}me.complete.apply(me,results)}for(var i=0,d;d=this.deps[i];i++){d.then(depComplete)}return this};Collection.prototype.load=function(){for(var i=0,d;d=this.deps[i];i++){if(d.load){d.load(true)}}return this};Collection.prototype.as=function(cb){var me=this;return this.then(function(){var flatDeps=flattenDeps(me.deps),obj={};for(var i=0,d;d=flatDeps[i];i++){pushObjPath(obj,d.id,arguments[i])}cb.apply(this,[obj].concat(makeArray(arguments)))})};function Sequence(deps){this.deps=deps}Sequence.prototype=new Dependency;Sequence.prototype.start=function(){var me=this,nextDep=0,allResults=[];(function next(){var dep=me.deps[nextDep++];if(dep){dep.then(function(results){if(dep.results.length>0){allResults=allResults.concat(dep.results)}next()})}else{me.complete.apply(me,allResults)}}());return this};Sequence.prototype.load=function(){var me=this,nextDep=0;(function next(){var dep=me.deps[nextDep++];if(dep&&dep.load){dep.load(true).then(function(){next()})}}());return this};function interactiveScript(){for(var i in scripts){if(scripts[i].readyState=="interactive"){return activeScripts[scripts[i].id]}}}function defineModule(name,body){var module;if(!name&&useInteractive){module=currentScript||interactiveScript()}if(module){delete activeScripts[module.scriptId];module.body=body;module.execute()}else{loadedModule=module=new Module(name,body);modulesInProgress[module.id]=module}return module}function provide(){var args=makeArray(arguments),name,body;if(typeof args[0]=="string"){name=args.shift()}body=args.shift();return defineModule(name,body)}function amdResolve(id,mod){var from=mod.id||"";var parts=from.split("/");parts.pop();var dir=parts.join("/");return id.replace(/^\./,dir)}function amdMap(args,mod){var mapped=[];function require(id){return Module.exports[amdResolve(id,mod)]}for(var i=0,len=args.length;i<len;i++){if(args[i]=="require"){mapped.push(require);continue}if(args[i]=="exports"){mod.exports=mod.exports||{};mapped.push(mod.exports);continue}mapped.push(require(args[i]))}return mapped}function amdDefine(){var args=makeArray(arguments),dependencies=[],id,factory;if(typeof args[0]=="string"){id=args.shift()}if(isArray(args[0])){dependencies=args.shift()}factory=args.shift();var mod=defineModule(id,function(exports){var mods=[];function executeAMD(){var args=amdMap(makeArray(dependencies),mod),exported;if(typeof factory=="function"){exported=factory.apply(mod,args)}else{exported=factory}if(typeof exported=="undefined"){exported=mod.exports}exports(exported)}for(var i=0,len=dependencies.length;i<len;i++){var d=dependencies[i];if(indexOf(["require","exports"],d)==-1){mods.push(amdResolve(d,mod))}}if(mods.length>0){using.apply(this,mods.concat(executeAMD))}else{executeAMD()}});return mod}amdDefine.amd={};function using(){var deps=makeArray(arguments),callback;if(typeof deps[deps.length-1]=="function"){callback=deps.pop()}var combi=new Collection(mapDependencies(deps));if(callback){combi.then(callback)}return combi}function mapDependencies(deps){var mapped=[];for(var i=0,dep;dep=deps[i];i++){if(typeof dep=="string"){dep=createDependency(dep)}if(isArray(dep)){dep=new Sequence(mapDependencies(dep))}mapped.push(dep)}return mapped}function createDependency(id){var m,dep;for(var i=0,matcher;matcher=using.matchers[i];i++){var regex=matcher[0],factory=matcher[1];if(m=id.match(regex)){return factory(id)}}throw new Error(id+" was not recognised by loader")}var loadrunner=function(f){return f(using,provide,loadrunner,amdDefine)};function noConflict(){context.using=oldUsing;context.provide=oldProvide;context.define=oldDefine;context.loadrunner=oldLoadrunner;return loadrunner}loadrunner.Script=Script;loadrunner.Module=Module;loadrunner.Collection=Collection;loadrunner.Sequence=Sequence;loadrunner.Dependency=Dependency;loadrunner.noConflict=noConflict;context.loadrunner=loadrunner;context.using=using;context.provide=provide;context.define=amdDefine;using.path="";using.autoLoad=true;using.bundles=[];var whichBundleMemo={};function whichBundle(id){if(typeof whichBundleMemo[id]!="undefined"){return whichBundleMemo[id]}for(var manifestId=0;manifestId<using.bundles.length;manifestId++){for(var bundleId in using.bundles[manifestId]){if(bundleId!=id&&indexOf(using.bundles[manifestId][bundleId],id)>-1){whichBundleMemo[id]=bundleId;return bundleId}}}whichBundleMemo[id]=id;return id}using.matchers=[];using.matchers.add=function(regex,factory){this.unshift([regex,factory])};using.matchers.add(/(^script!|\.js$)/,function(path){var script=new Script(path.replace(/^\$/,using.path.replace(/\/$/,"")+"/").replace(/^script!/,""),false);script.id=path;return script});using.matchers.add(/^[a-zA-Z0-9_\-\/]+$/,function(id){return new Module(id)});if(scriptTag){using.path=scriptTag.getAttribute("data-path")||scriptTag.src.split(/loadrunner\.js/)[0]||"";if(main=scriptTag.getAttribute("data-main")){using.apply(context,main.split(/\s*,\s*/)).then(function(){})}}}(this,document));
loadrunner(function(D,C,B,E){function A(F){this.id=this.path=F}A.inProgress=[];A.done=[];A.prototype=new B.Dependency;A.prototype.start=function(){var F=this,G;if(G=A.done[this.id]){this.complete(G.result)}else{if(G=A.inProgress[this.id]){G.then(function(){F.complete(G.result)})}else{A.inProgress[this.id]=this;this.load()}}};A.prototype.load=function(){var H,F=this;if(window.XMLHttpRequest){H=new window.XMLHttpRequest()}else{try{H=new window.ActiveXObject("Microsoft.XMLHTTP")}catch(G){return new Error("XHR not found.")}}H.onreadystatechange=function(){if(H.readyState==4){F.result=H.responseText;A.done[F.id]=F;delete A.inProgress[F.id];F.complete(F.result)}};H.open("GET",this.path,true);H.send(null)};D.matchers.add(/^json!/,function(F){return new A(F.substring(5))})});
loadrunner(function(D,C,B,E){function A(F){this.id=this.path=F}A.inProgress=[];A.done=[];A.prototype=new B.Dependency;A.prototype.start=function(){var F=this,G;if(G=A.done[this.id]){this.complete(G.result)}else{if(G=A.inProgress[this.id]){G.then(function(){F.complete(G.result)})}else{A.inProgress[this.id]=this;this.load()}}};A.prototype.load=function(){var F=this;D("lib/lazyload",function(G){if($("link[href='"+F.path+"']").length>0){H()}else{G.css(F.path,H)}function H(){A.done[F.id]=F;delete A.inProgress[F.id];F.complete()}})};D.matchers.add(/^css!/,function(G){var F;G=G.replace(/^css!/,"");F=/^(https?:)?\/\//.test(G);return new A(G.replace(/^\//,(!F&&D.cssPath||"").replace(/\/$/,"")+"/"))})});
loadrunner(function(F,E,A,G){function B(H,I){for(var J=0,K;K=H[J];J++){if(I==K){return J}}return -1}function D(I){var H;if(I.charAt(0)==">"){I=I.substring(1)}if(H=C.inProgress[I]){H.complete();delete C.inProgress[I]}C.done.push(I)}var C=function(H){this.id=H};C.inProgress=[];C.done=[];C.prototype=new A.Dependency;C.prototype.start=function(){var I,H=this;if(B(C.done,this.id)!=-1){this.complete()}else{if(I=C.inProgress[this.id]){I.then(function(){H.complete()})}else{C.inProgress[this.id]=this}}};F.matchers.add(/^>/,function(H){return new C(H.substring(1))});window.signal=D});
});</script><script>WATCH.end('loadrunner');</script>
<script type="text/javascript">WATCH('javascript_logged_out', function() {
function miniScribe(eName,more,cat){
var log=[],cat=cat||'client_event',more=more||{};more.event_name=eName;for(var k in more){log.push('"'+k+'":"'+more[k]+'"');};
(new Image()).src='//scribe.twitter.com/scribe?category='+encodeURIComponent(cat)+'&log='+encodeURIComponent('{'+log.join(',')+'}')+'&ts='+(+new Date);
}
(function(){function C(M,L){var K=M.tagName?M:document.getElementById(M);return L?K.getElementsByTagName(L):K}function J(P,O,N){for(var L=P.length-1;L>=0;L--){var M=P[L].className,K=M&&M.match(O);if(K){N.call(P[L],K[1])}}}function I(K,L){return(K.className=K.className.replace(" "+L,""))}function F(K,L){return(K.className=I(K,L)+" "+L)}var D=document.body,H=document.getElementById("doc"),B;if(!location.href.match(/#!\/./)){I(D,"user-style-twttr loading-body");F(D,"front-page");miniScribe("web:front:::impression",{context:"front"});window._scribedFrontImpression=true}else{if(B=location.href.match(/#!?\/(login|download)(\/|$)/)){F(H,"route-"+B[1])}}var G=C(H,"div"),E="hasome";J(G,/holding/,function(){var M=this,K=C(M,"input")[0],L=C(M,"span")[0];if(K&&L){L.onclick=function(){K.focus()};K.onblur=function(){if(!K.value.length){I(M,E)}};K.onkeydown=function(N){setTimeout(function(){if((N&&N.keyCode===8)||K.value.length){F(M,E)}else{I(M,E)}},0)}}});window.setInterval(function(){J(G,/holding/,function(){var K=C(this,"input")[0];if(K&&K.value.length){F(this,E)}})},1111);var A={signin:"web:front:login_callout:form:login_click",signup:"web:front:signup_callout:form:signup_click",search:"web:front:main:search_field:search",language:"web:front:footer:language_selector:select"};J(G,/js-front-(signin|signup|search|language)/,function(L){var M=C(this,"form"),K=A[L];if(M&&M[0]){M[0].onsubmit=function(){if(!C(H).className.match("route-front")){miniScribe(K)}}}})}());
});</script>
<script type="text/javascript">WATCH.end('javascript_logged_out');</script>
<script>WATCH('boot', function() {
using.cssPath = 'https://si0.twimg.com/a/1329497727/';
using.path = 'https://si0.twimg.com/a/1329497727/phoenix/js';
using.autoLoad = false;
// Load bluejs modules from their own modpath, in /bluejs
using.matchers.add(/^bluejs/, function(id) {
var mod = new loadrunner.Module(id);
mod.path = 'https://si0.twimg.com/a/1329497727/' + id + '.js';
return mod;
});
provide("boot/init",function(C){var A={add:function(J,K){if(!K){K=new Date()}twttr.bootTimings.data.push({name:J,timestamp:K})},data:[],done:function(){twttr.bootTimings.add=twttr.bootTimings.done=$.noop;$.each(loadrunner.Script.times,function(J,K){$.each(K,function(L,M){twttr.bootTimings.data.push({name:["bundle",J,L].join(" "),timestamp:M})})});twttr.Profiler.logDataSet("Boot",twttr.appStartTime,twttr.bootTimings.data);twttr.bootTimings=null}};function G(K){for(var J in K){if(K.hasOwnProperty(J)){twttr[J]=K[J]}}}function H(L){twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data process start");G(L.twttr);signal(">payload");if(L.boomr){using(L.boomr).load().then(function(){delete BOOMR.plugins.RT;BOOMR.init({allow_ssl:true,autorun:false,user_ip:L.remoteIP,BW:{base_url:twttr.hosts.local+"/images/boomerang/"}});using(">setupComplete","util").as(function(M){BOOMR.page_ready();BOOMR.subscribe("before_beacon",function(Q){if(!Q.bw){return }var O=parseInt(Q.bw/1024,10);var P=parseInt((Q.bw_err*100)/Q.bw,10);var N=parseInt((Q.lat_err*100)/Q.lat,10);scribble("measurement",{load_time_ms:Q.t_done,bandwidth_kbytes:O,bandwidth_error_percent:P,latency_ms:Q.lat,latency_error_percent:N,product:"webclient"},"boomerang");if(M.util.params()["boomr"]){twttr.showMessage("Bandwidth: "+M.util.addCommas(O)+" KB/s &plusmn; "+P+"%<br />Latency: "+Q.lat+" ms &plusmn; "+Q.lat_err,true)}})})})}if(L.countryCode){twttr.countryCode=L.countryCode}if(L.countries){twttr.countries=L.countries;if(twttr.countryCode){for(var K=0,J=twttr.countries.length;K<J;K++){if(twttr.countries[K].code==twttr.countryCode){twttr.countries[K].selected=true}}}}if(L.pageLocaleJS){twttr.bootTimings&&twttr.bootTimings.add("i18n fetch start");using(L.pageLocaleJS).load().then(function(){twttr.bootTimings&&twttr.bootTimings.add("i18n fetch finish");signal(">languageData")})}else{signal(">languageData")}using(">defaultViews",twttr.bundleMore,function(){if(L.showWelcomeBanner){(new twttr.views.WelcomeToPhoenixBanner()).render($("#banners"),"append")}if(L.flashNotice){twttr.showMessage(L.flashNotice,true)}});using(">decider",function(){twttr.decider._updateFeatures(L.deciderFeatures,true)});using(">ab_decider",function(){twttr.abdecider._updateExperiments(L.abBuckets,true)});using(">api_ready",function(){twttr.API.setConfig({postAuthenticityToken:L.postAuthenticityToken});$("input.authenticity_token").val(L.postAuthenticityToken);var P=L.requestCacheSeedData;for(var N=0,M=P.length;N<M;++N){var O=P[N];twttr.API._requestCache.inject(O.api_request_name,O.options,O.json,1)}signal(">request_cache_seeded");if(L.homeTimelineFetchSize){twttr.API.homeTimelineFetchSize=L.homeTimelineFetchSize}});twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data process finish")}function D(){if(twttr.loggedIn){twttr.bootTimings&&twttr.bootTimings.add("initCurrentUser start");using("boot/bootstrap_data",">request_cache_seeded",function(J){twttr.API.User.current({error:function(){window.location.reload(true)},success:function(K){twttr.currentUser=K;for(var L in J.userProperties){twttr.currentUser.sync(L,J.userProperties[L]||false)}twttr.API.User.bind("update",function(M,N){if(twttr.currentUser.id==N.id){var P=["name","url","location","description"];for(var O=0;O<P.length;++O){twttr.currentUser.sync(P[O],N[P[O]])}}});twttr.bootTimings&&twttr.bootTimings.add("initCurrentUser finish");signal(">allCurrentUserDataLoaded")}})})}else{signal(">allCurrentUserDataLoaded")}}function F(J){var K=new Date();using(J).load().then(function(){var L=new Date();using("boot/bootstrap_data",function(){twttr.Profiler.logPreviousEvent("twttr.bundles fetched",K,L)})})}function E(O){var K=false;function J(){if(!K){setTimeout(function(){twttr.keynoteTTFTPing();K=true;O()},0)}}function N(){setTimeout(J,0)}var L=document.getElementById("stream-items-id");if(!L){O();return }if(L.clientHeight>0){N();return }function M(){L.onresize=null;N()}L.onresize=M}function I(K){for(var J in K){return false}return true}function B(N){if(!N){return }var K=document.getElementById("slow-load-banner");if(!K){return }var J;function M(){clearTimeout(J);$(K).remove();twttr.app.recalculatePadding()}function L(){K.style.display="block";setTimeout(function(){K.style.height="46px"})}J=setTimeout(L,N);twttr.bundleCore&&using(twttr.bundleCore,M)}C({init:function(L){if(L.renderedOnServer){var J=document.getElementsByTagName("html")[0];var P=J.className.match(/highlight-global-nav-([a-z]+)/);if(L.twttr.loggedIn&&P){var K="global-nav-"+P[1];document.getElementById(K).className+=" active"}else{if(J.className.match(/remove-prerendered-content/)){document.getElementById("page-outer").className=document.getElementById("page-outer").className.replace("flush-to-top","");var N=document.getElementById("page-container");N.className=N.className.replace("home-container","");N.innerHTML="";signal(">wokeUp");L.renderedOnServer=false}}J.className=J.className.replace("use-prerendered-content","").replace("remove-prerendered-content","");if(J.getAttribute("data-nav-highlight-class-name")){J.className=J.className.replace(J.getAttribute("data-nav-highlight-class-name"),"");J.removeAttribute("data-nav-highlight-class-name")}}if(L.disablePhoenix){B(L.loadTimeoutInterval);return }G(L.twttr);twttr.appStartTime=document.startTime;twttr.geo=twttr.geo||{};twttr.session=twttr.session||{};twttr.session.impressionId=twttr.appStartTime+Math.random();twttr.isLocalhost=location.hostname.match(/localhost\.twitter\.com/);if(twttr.allScribeEvents){try{twttr.allScribeEvents=JSON.parse(localStorage.twttrAllScribeEvents)||[]}catch(O){twttr.allScribeEvents=[]}}twttr.bootTimings=L.profiling?A:null;for(var M=0;M<L.loadrunnerAssets.length;M++){using.bundles.push(L.loadrunnerAssets[M])}if(L.loadrunnerAssets.length==1&&I(L.loadrunnerAssets[0])){using.autoLoad=true}B(L.loadTimeoutInterval);twttr.proto=window.location.protocol.replace(":","");twttr.isSSL=function(){return twttr.proto==="https"};twttr.createIframe=function(R,Q){var U=document.createElement("div");U.innerHTML='<iframe tabindex="-1" role="presentation" style="position:absolute;top:-9999px;" src="'+R+'"></iframe>';var S=U.firstChild;var T=function(){Q.apply(S,arguments)};S.addEventListener?S.addEventListener("load",T,false):S.attachEvent("onload",T);document.body.insertBefore(S,document.body.firstChild);return S};if(!L.inline_bootstrap_data){provide("boot/bootstrap_data",function(Q){var R=[];R.push("json!/account/bootstrap_data"+window.location.search+(window.location.search?"&":"?")+"r="+Math.random());if(typeof JSON==="undefined"){R.push(twttr.bundleCore)}twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data fetch start");using(R,function(T){twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data fetch finish");var S=JSON.parse(T);Q(S)})})}F(L.assets);using(twttr.bundleCore,function(){twttr.anywhere.remote={};using("bluejs/api",function(Q){twttr.API=Q;twttr.API.setConfig({cacheObjects:true,includeEntities:true});twttr.extendAPI();signal(">api_ready");using(">request_cache_seeded",function(){D()})})});using(L.setupDependencies,function(){twttr.bootTimings&&twttr.bootTimings.add("setup start");jQuery.ready();jQuery.fx.interval=50;twttr.setup(L.renderedOnServer);twttr.bootTimings&&twttr.bootTimings.add("setup finish");signal(">setupComplete");var Q=function(){using(twttr.bundleMore).load()};if($.browser.msie&&(parseInt($.browser.version,10)<=8)){E(Q)}else{Q()}});using(twttr.bundleMore,function(){signal(">allCodeLoaded")});using("boot/bootstrap_data",H);twttr.createIframe(L.pReceiverURL,function(){var Q=this;using(twttr.bundleCore,function(){twttr.anywhere.remote.server=Q;twttr.anywhere.api.util.RemoteRequest.flush()})})}})});
using('boot/init', function(boot) {
var data = {"setupDependencies":["\u003EallCurrentUserDataLoaded","\u003Erequest_cache_seeded","bundle\/t1-core","\u003ElanguageData"],"assets":["bundle\/t1-core"],"inline_bootstrap_data":false,"sandboxes":{"jsonp":"https:\/\/si0.twimg.com\/a\/1329497727\/jsonp_sandbox.html","detailsPaneContent":"https:\/\/si0.twimg.com\/a\/1329497727\/details_pane_content_sandbox.html"},"loadTimeoutInterval":10000,"loadrunnerAssets":[{"https:\/\/si0.twimg.com\/b\/1\/bundle\/sandbox-en-201202170910.js":["bundle\/sandbox"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/t1-hogan-more-en-201202170910.js":["bundle\/t1-hogan-more"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/t1-hogan-core-en-201202170910.js":["bundle\/t1-hogan-core"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/ie6-en-201202170910.js":["bundle\/ie6"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/phoenix-core-en-201202170910.js":["bundle\/phoenix-core"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/phoenix-more-en-201202170910.js":["bundle\/phoenix-more"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/t1-core-en-201202170910.js":["bundle\/t1-core"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/t1-more-en-201202170910.js":["bundle\/t1-more"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/swift-settings-en-201202170910.js":["bundle\/swift-settings"],"https:\/\/si0.twimg.com\/b\/1\/bundle\/signup-en-201202170910.js":["bundle\/signup"]}],"profiling":false,"disablePhoenix":false,"twttr":{"domains":{"local":"twitter.com","upload":"upload.twitter.com","remote":"api.twitter.com"},"bundleMore":"bundle\/t1-more","remoteIP":"71.63.10.36","expando":false,"loggedIn":false,"requestFullCity":"us,va,warrenton","isT1":true,"hosts":{"local":"https:\/\/twitter.com","upload":"https:\/\/upload.twitter.com","remote":"https:\/\/api.twitter.com"},"hasHoversInCss":true,"isRTL":false,"bundleCore":"bundle\/t1-core","placeDataPrefix":"http:\/\/geo.l3.twitter.com\/places\/autocomplete_places-"},"renderedOnServer":true,"pReceiverURL":"https:\/\/api.twitter.com\/receiver.html"};
boot.init(data);
});
});</script><script>WATCH.end('boot');</script>
<!--[if lte IE 6]>
<script>using('bundle/ie6').load();</script>
<![endif]-->
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment