├── CNAME ├── favicon.ico ├── fonts ├── copse-regular-webfont.eot ├── copse-regular-webfont.svg ├── copse-regular-webfont.ttf ├── copse-regular-webfont.woff ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── octicons.ttf ├── octicons.woff ├── quattrocentosans-bold-webfont.eot ├── quattrocentosans-bold-webfont.svg ├── quattrocentosans-bold-webfont.ttf ├── quattrocentosans-bold-webfont.woff ├── quattrocentosans-bolditalic-webfont.eot ├── quattrocentosans-bolditalic-webfont.svg ├── quattrocentosans-bolditalic-webfont.ttf ├── quattrocentosans-bolditalic-webfont.woff ├── quattrocentosans-italic-webfont.eot ├── quattrocentosans-italic-webfont.svg ├── quattrocentosans-italic-webfont.ttf ├── quattrocentosans-italic-webfont.woff ├── quattrocentosans-regular-webfont.eot ├── quattrocentosans-regular-webfont.svg ├── quattrocentosans-regular-webfont.ttf └── quattrocentosans-regular-webfont.woff ├── google2ad817504fd63cc0.html ├── images ├── background.png ├── body-background.png ├── bullet.png ├── hr.gif └── octocat-logo.png ├── index.html ├── javascripts ├── find5.js └── main.js ├── params.json └── stylesheets ├── font-awesome.min.css ├── normalize.css ├── octicons.css ├── pygment_trac.css └── styles.css /CNAME: -------------------------------------------------------------------------------- 1 | mobilesecuritywiki.com 2 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/favicon.ico -------------------------------------------------------------------------------- /fonts/copse-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/copse-regular-webfont.eot -------------------------------------------------------------------------------- /fonts/copse-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/copse-regular-webfont.ttf -------------------------------------------------------------------------------- /fonts/copse-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/copse-regular-webfont.woff -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /fonts/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/octicons.ttf -------------------------------------------------------------------------------- /fonts/octicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/octicons.woff -------------------------------------------------------------------------------- /fonts/quattrocentosans-bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-bold-webfont.eot -------------------------------------------------------------------------------- /fonts/quattrocentosans-bold-webfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG webfont generated by Font Squirrel. 6 | Copyright : Copyright c 2011 Pablo Impallari wwwimpallaricomimpallarigmailcomCopyright c 2011 Igino Marini wwwikerncommailiginomarinicomCopyright c 2011 Brenda Gallo gbrenda1987gmailcomwith Reserved Font Name Quattrocento Sans 7 | Designer : Pablo Impallari 8 | Foundry : Pablo Impallari Igino Marini Brenda Gallo 9 | Foundry URL : wwwimpallaricom 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | -------------------------------------------------------------------------------- /fonts/quattrocentosans-bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-bold-webfont.ttf -------------------------------------------------------------------------------- /fonts/quattrocentosans-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-bold-webfont.woff -------------------------------------------------------------------------------- /fonts/quattrocentosans-bolditalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-bolditalic-webfont.eot -------------------------------------------------------------------------------- /fonts/quattrocentosans-bolditalic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-bolditalic-webfont.ttf -------------------------------------------------------------------------------- /fonts/quattrocentosans-bolditalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-bolditalic-webfont.woff -------------------------------------------------------------------------------- /fonts/quattrocentosans-italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-italic-webfont.eot -------------------------------------------------------------------------------- /fonts/quattrocentosans-italic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-italic-webfont.ttf -------------------------------------------------------------------------------- /fonts/quattrocentosans-italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-italic-webfont.woff -------------------------------------------------------------------------------- /fonts/quattrocentosans-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-regular-webfont.eot -------------------------------------------------------------------------------- /fonts/quattrocentosans-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-regular-webfont.ttf -------------------------------------------------------------------------------- /fonts/quattrocentosans-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/fonts/quattrocentosans-regular-webfont.woff -------------------------------------------------------------------------------- /google2ad817504fd63cc0.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google2ad817504fd63cc0.html 2 | -------------------------------------------------------------------------------- /images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/images/background.png -------------------------------------------------------------------------------- /images/body-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/images/body-background.png -------------------------------------------------------------------------------- /images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/images/bullet.png -------------------------------------------------------------------------------- /images/hr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/images/hr.gif -------------------------------------------------------------------------------- /images/octocat-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exploitprotocol/mobile-security-wiki/65bae20eb89048428e5c0720f8eb1b80ea9c0a17/images/octocat-logo.png -------------------------------------------------------------------------------- /javascripts/find5.js: -------------------------------------------------------------------------------- 1 | /* Cool Javascript Find on this Page 2 | Ver 5.3 3 | Written by Jeff Baker on September, 8, 2007. 4 | Copyright 2014 by Jeff Baker - 5 | Version 5.0 created 7/16/2014 6 | Updated 5/15/2015 ver 5.3 7 | http://www.seabreezecomputers.com/tips/find.htm 8 | Paste the following javascript call in your HTML web page where 9 | you want a button called "Find on this Page...": 10 | 11 | 14 | 15 | When you click on the button a floating DIV will pop up 16 | that will have a text box for users to enter in the text they 17 | want to find on the page. 18 | 19 | WARNING: If you want to place a second "Find on this page..." 20 | button somewhere on the same page then use the code below for 21 | the second button, otherwise firefox and netscape will not 22 | display the text that users type in and it will not find 23 | text correctly because there will be two different text input 24 | boxes with the same name: 25 | 26 | 28 | 29 | */ 30 | 31 | /**** Compressed****/ 32 | var find_window_background="white";var find_window_border="#235796";var find_text_color="#235796";var find_title_color="white";var find_window_width=245;var find_window_height=85;var find_root_node=null;var drag={mousex:0,mousey:0,tempx:'',tempy:'',isdrag:false,drag_obj:null,drag_obj_x:0,drag_obj_y:0};var find_timer=0;var highlights=[];var find_pointer=-1;var find_text='';var found_highlight_rule=0;var found_selected_rule=0;document.onmousedown=MouseDown;document.onmousemove=MouseMove;document.onmouseup=MouseUp;document.ontouchstart=MouseDown;document.ontouchmove=MouseMove;document.ontouchend=MouseUp;function highlight(word,node) 33 | {if(!node) 34 | node=document.body;var re=new RegExp(word,"i");for(node=node.firstChild;node;node=node.nextSibling) 35 | {if(node.nodeType==3) 36 | {var n=node;var match_pos=0;{match_pos=n.nodeValue.search(re);if(match_pos>-1) 37 | {var before=n.nodeValue.substr(0,match_pos);var middle=n.nodeValue.substr(match_pos,word.length);var after=document.createTextNode(n.nodeValue.substr(match_pos+word.length));var highlight_span=document.createElement("span");if(found_highlight_rule==1) 38 | highlight_span.className="highlight";else 39 | highlight_span.style.backgroundColor="yellow";highlight_span.appendChild(document.createTextNode(middle));n.nodeValue=before;n.parentNode.insertBefore(after,n.nextSibling);n.parentNode.insertBefore(highlight_span,n.nextSibling);highlights.push(highlight_span);highlight_span.id="highlight_span"+highlights.length;node=node.nextSibling;}}} 40 | else 41 | {if(node.nodeType==1&&node.nodeName.match(/textarea/i)&&!getStyle(node,"display").match(/none/i)) 42 | textarea2pre(node);else 43 | {if(node.nodeType==1&&!getStyle(node,"visibility").match(/hidden/i)) 44 | if(node.nodeType==1&&!getStyle(node,"display").match(/none/i)) 45 | highlight(word,node);}}}} 46 | function unhighlight() 47 | {for(var i=0;i=0) 56 | {findnext();} 57 | else 58 | {unhighlight();if(string=='') 59 | {find_msg.innerHTML="";findwindow.style.visibility='visible';return;} 60 | find_text=string;if(find_root_node!=null) 61 | var node=document.getElementById(find_root_node);else 62 | var node=null;highlight(string,node);if(highlights.length>0) 63 | {find_pointer=-1;findnext();} 64 | else 65 | {find_msg.innerHTML=" 0 of 0";find_pointer=-1;}} 66 | findwindow.style.visibility='visible';} 67 | function findnext() 68 | {var current_find;if(find_pointer!=-1) 69 | {current_find=highlights[find_pointer];if(found_highlight_rule==1) 70 | current_find.className="highlight";else 71 | current_find.style.backgroundColor="yellow";} 72 | find_pointer++;if(find_pointer>=highlights.length) 73 | find_pointer=0;var display_find=find_pointer+1;find_msg.innerHTML=display_find+" of "+highlights.length;current_find=highlights[find_pointer];if(found_selected_rule==1) 74 | current_find.className="find_selected";else 75 | current_find.style.backgroundColor="orange";scrollToPosition(highlights[find_pointer]);} 76 | function findprev() 77 | {var current_find;if(highlights.length<1)return;if(find_pointer!=-1) 78 | {current_find=highlights[find_pointer];if(found_highlight_rule==1) 79 | current_find.className="highlight";else 80 | current_find.style.backgroundColor="yellow";} 81 | find_pointer--;if(find_pointer<0) 82 | find_pointer=highlights.length-1;var display_find=find_pointer+1;find_msg.innerHTML=display_find+" of "+highlights.length;current_find=highlights[find_pointer];if(found_selected_rule==1) 83 | current_find.className="find_selected";else 84 | current_find.style.backgroundColor="orange";scrollToPosition(highlights[find_pointer]);} 85 | function checkkey(e) 86 | {var keycode;if(window.event) 87 | keycode=window.event.keyCode;else 88 | keycode=e.which;if(keycode==13) 89 | {if(window.event&&event.srcElement.id.match(/fwtext/i))event.srcElement.blur();else if(e&&e.target.id.match(/fwtext/i))e.target.blur();findit();} 90 | else if(keycode==27) 91 | {hide();}} 92 | function show() 93 | {var textbox=document.getElementById('fwtext');findwindow.style.visibility='visible';textbox.focus();textbox.select();textbox.setSelectionRange(0,9999);find_timer=setInterval('move_window();',500);document.onkeydown=checkkey;} 94 | function hide() 95 | {unhighlight();findwindow.style.visibility='hidden';clearTimeout(find_timer);document.onkeydown=null;} 96 | function resettext() 97 | {if(find_text.toLowerCase()!=document.getElementById('fwtext').value.toLowerCase()) 98 | unhighlight();} 99 | function move_window() 100 | {var fwtop=parseFloat(findwindow.style.top);var fwleft=parseFloat(findwindow.style.left);var fwheight=parseFloat(findwindow.style.height);if(document.documentElement.scrollTop) 101 | var current_top=document.documentElement.scrollTop;else 102 | var current_top=document.body.scrollTop;var current_bottom=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+current_top;if(document.documentElement.scrollLeft) 103 | var current_left=document.documentElement.scrollLeft;else 104 | var current_left=document.body.scrollLeft;var current_right=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+current_left;if(fwtopcurrent_bottom-fwheight) 107 | {findwindow.style.top=current_bottom-fwheight+'px';} 108 | if(fwleftcurrent_right) 109 | {findwindow.style.left=current_left+'px';}} 110 | function MouseDown(event) 111 | {drag.tempx=drag.tempy='';if(!event)event=window.event;var fobj=event.target||event.srcElement;var scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft;var scrollTop=document.body.scrollTop||document.documentElement.scrollTop;if(typeof fobj.nodeName!="undefined") 112 | if(fobj.nodeName.toLowerCase()=="input"||fobj.nodeName.toLowerCase()=="textarea") 113 | return true;for(fobj;fobj;fobj=fobj.parentNode) 114 | {if(fobj.className) 115 | if(fobj.className.match(/dragme/i)) 116 | break;} 117 | if(fobj) 118 | if(fobj.className.match(/dragme/i)) 119 | {drag.isdrag=true;drag.drag_obj=fobj;drag.drag_obj_x=parseInt(drag.drag_obj.offsetLeft);drag.drag_obj_y=parseInt(drag.drag_obj.offsetTop);drag.mousex=event.clientX+scrollLeft;drag.mousey=event.clientY+scrollTop;if(event.type=="touchstart") 120 | if(event.touches.length==1) 121 | {var touch=event.touches[0];var node=touch.target;drag.mousex=touch.pageX;drag.mousey=touch.pageY;} 122 | return true;}} 123 | function MouseMove(event) 124 | {if(drag.isdrag) 125 | {if(!event)event=window.event;drag.tempx=event.clientX;drag.tempy=event.clientY;var scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft;var scrollTop=document.body.scrollTop||document.documentElement.scrollTop;drag.tempx+=scrollLeft;drag.tempy+=scrollTop;drag.drag_obj.style.position='absolute';if(event.type=="touchmove") 126 | if(event.touches.length==1) 127 | {var touch=event.touches[0];var node=touch.target;drag.tempx=touch.pageX;drag.tempy=touch.pageY;} 128 | drag.drag_obj.style.left=drag.drag_obj_x+drag.tempx-drag.mousex+"px";drag.drag_obj.style.top=drag.drag_obj_y+drag.tempy-drag.mousey+"px";return false;}} 129 | function MouseUp() 130 | {if(drag.isdrag==true) 131 | {if(drag.tempx==''&&drag.tempy=='') 132 | {}} 133 | drag.isdrag=false;} 134 | function scrollToPosition(field) 135 | {var scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft;var scrollTop=document.body.scrollTop||document.documentElement.scrollTop;var scrollBottom=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+scrollTop;var scrollRight=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+scrollLeft;if(field) 136 | {var theElement=field;var elemPosX=theElement.offsetLeft;var elemPosY=theElement.offsetTop;theElement=theElement.offsetParent;while(theElement!=null) 137 | {elemPosX+=theElement.offsetLeft 138 | elemPosY+=theElement.offsetTop;theElement=theElement.offsetParent;} 139 | if(elemPosXscrollRight||elemPosYscrollBottom) 140 | field.scrollIntoView();}} 141 | function getStyle(el,styleProp) 142 | {var x=(document.getElementById(el))?document.getElementById(el):el;if(x.currentStyle) 143 | var y=x.currentStyle[styleProp];else if(window.getComputedStyle) 144 | var y=document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);return y;} 145 | function create_div(dleft,dtop,dwidth,dheight) 146 | {if(document.documentElement.scrollTop) 147 | var current_top=document.documentElement.scrollTop;else 148 | var current_top=document.body.scrollTop;if(document.getElementById('findwindow')) 149 | {findwindow=document.getElementById('findwindow');} 150 | else 151 | {findwindow.id="findwindow";findwindow.style.position='absolute';document.body.insertBefore(findwindow,document.body.firstChild);findwindow.className='findwindow dragme';findwindow.style.visibility='hidden';} 152 | findwindow.style.backgroundColor=find_window_background;findwindow.style.border='2px solid '+find_window_border;findwindow.style.color=find_text_color;findwindow.style.width=find_window_width+'px';findwindow.style.height=+find_window_height+'px';findwindow.style.top='200px';findwindow.style.right='50px';findwindow.style.padding='0px';findwindow.style.zIndex=2000;findwindow.style.fontSize='14px';findwindow.style.overflowX='hidden';findwindow.innerHTML='
'+'Search
';findwindow.innerHTML+='
'+'X'+'

\n';findwindow.innerHTML+='
'+'
'+''+''+'
'+'
\n';var sheets=document.styleSheets;for(var i=0;i/g,'>').replace(//g,'>').replace(/');var findwindow=document.createElement("div");create_div();var find_msg=document.getElementById('find_msg'); 170 | -------------------------------------------------------------------------------- /javascripts/main.js: -------------------------------------------------------------------------------- 1 | var sectionHeight = function() { 2 | var total = $(window).height(), 3 | $section = $('section').css('height','auto'); 4 | 5 | if ($section.outerHeight(true) < total) { 6 | var margin = $section.outerHeight(true) - $section.height(); 7 | $section.height(total - margin - 20); 8 | } else { 9 | $section.css('height','auto'); 10 | } 11 | } 12 | 13 | $(window).resize(sectionHeight); 14 | 15 | $(document).ready(function(){ 16 | display_section('android'); 17 | sectionHeight(); 18 | 19 | $('img').load(sectionHeight); 20 | }); 21 | 22 | fixScale = function(doc) { 23 | 24 | var addEvent = 'addEventListener', 25 | type = 'gesturestart', 26 | qsa = 'querySelectorAll', 27 | scales = [1, 1], 28 | meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : []; 29 | 30 | function fix() { 31 | meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1]; 32 | doc.removeEventListener(type, fix, true); 33 | } 34 | 35 | if ((meta = meta[meta.length - 1]) && addEvent in doc) { 36 | fix(); 37 | scales = [.25, 1.6]; 38 | doc[addEvent](type, fix, true); 39 | } 40 | }; 41 | 42 | function nav_tag_link(type){ 43 | $("#"+type+" section h1,#"+type+" section h2").each(function(){ 44 | $("#"+type+" nav ul").append("
  • " + $(this).text() + "
  • "); 45 | $(this).attr("id",$(this).text().toLowerCase().replace(/ /g, '-').replace(/[^\w-]+/g,'')); 46 | $("#"+type+" nav ul li:first-child a").parent().addClass("active"); 47 | }); 48 | $('#'+type+" nav ul").append('
  • Contribute
  • '); 49 | $("#"+type+" nav ul li").on("click", "a", function(event) { 50 | var position = $($(this).attr("href")).offset().top - 175; 51 | $("html, body").animate({scrollTop: position}, 400); 52 | $("#"+type+" nav ul li a").parent().removeClass("active"); 53 | $(this).parent().addClass("active"); 54 | event.preventDefault(); 55 | }); 56 | } 57 | 58 | function display_section(type){ 59 | document.getElementById(type).style.display="block"; 60 | $("#android nav ul").text(""); 61 | $("#windows nav ul").text(""); 62 | $("#ios nav ul").text(""); 63 | document.getElementById('Contribute_section_android').innerHTML=""; 64 | document.getElementById('Contribute_section_windows').innerHTML=""; 65 | document.getElementById('Contribute_section_ios').innerHTML=""; 66 | if(type=='ios') 67 | { 68 | nav_tag_link('ios'); 69 | document.getElementById('android').style.display="none"; 70 | document.getElementById('windows').style.display="none"; 71 | } 72 | else 73 | if (type=='android') 74 | { 75 | nav_tag_link('android'); 76 | document.getElementById('ios').style.display="none"; 77 | document.getElementById('windows').style.display="none"; 78 | } 79 | else 80 | { 81 | nav_tag_link('windows'); 82 | document.getElementById('ios').style.display="none"; 83 | document.getElementById('android').style.display="none"; 84 | } 85 | var contribute="\ 86 |

    Contribute

    \ 87 |

    It is awesome to see that you want to contribute in this wiki, which would directly help the community. Project/Tools which are no longer maintained are not included in this wiki. List of awesome contributors to this wiki is given below. Please follow one of the ways from below to include tool or resource in this wiki-

    \ 88 | \ 99 |

    Please let me know if you have any suggestions

    \ 100 |

    Below is the list of awesome people who contributed to this wiki. I would like to specially thanks Philippe Arteau, Amandeep Gupta and Herman Slatman who contributed a lot to this website.

    \ 101 | "; 124 | document.getElementById('Contribute_section_'+type).innerHTML=contribute; 125 | } 126 | -------------------------------------------------------------------------------- /params.json: -------------------------------------------------------------------------------- 1 | {"name":"Android Security Wiki","tagline":"One Stop for Android Security Resources","body":"Please use left sidebar to navigate between sections.\r\n\r\n##Forensics Tools\r\n\r\n* [Android Forensics](https://github.com/viaforensics/android-forensics) - Open Source Android Forensics App and Framework\r\n\r\n* [Android Data Extractor Lite](https://github.com/mspreitz/ADEL)\r\n\r\n* [BitPim](http://www.bitpim.org/) - BitPim is a program that allows you to view and manipulate data on many CDMA \r\nphones from LG, Samsung, Sanyo and other manufacturers.\r\n\r\n* [LiME](https://github.com/504ensicsLabs/LiME) - LiME (formerly DMD) is a Loadable Kernel Module (LKM), which allows the acquisition of volatile memory from Linux and Linux-based devices, such as those powered by Android.\r\n\r\n* [Open Source Android Forensics](http://www.osaf-community.org/)\r\n\r\n* [P2P-ADB](https://github.com/kosborn/p2p-adb/) - Phone to Phone Android Debug Bridge - A project for \"debugging\" phones from other phones.\r\n\r\n* [pySimReader](https://www.isecpartners.com/tools/mobile-security/pysimreader.aspx) - It allows users to write out arbitrary raw SMS PDUs to a SIM card.\r\n\r\n\r\n##Development Tools\r\n\r\n* [Android SDK](https://developer.android.com/sdk/index.html) - The Android software development kit (SDK) includes a comprehensive set of development tools. These include a debugger, libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials.\r\n\r\n* [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html) - The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++.\r\n\r\n* [ADT Bundle](https://developer.android.com/sdk/index.html) - The Android Developer Tools(ADT) bundle is a single download that contains everything for developers to start creating Android Application\r\n\t* Android Studio IDE or Eclipse IDE\r\n * Android SDK tools\r\n * Android 5.0 (Lollipop) Platform\r\n * Android 5.0 emulator system image with Google APIs\r\n\r\n* [Root Tools](https://github.com/Stericson/RootTools) - RootTools provides rooted developers a standardized set of tools for use in the development of rooted applications.\r\n\r\n##Static Analysis Tools\r\n\r\n* [Androwarn](https://github.com/maaaaz/androwarn/):- Yet another static code analyzer for malicious Android applications\r\n\r\n* [ApkAnalyser](https://github.com/sonyxperiadev/ApkAnalyser) - ApkAnalyser is a static, virtual analysis tool for examining and validating the development work of your Android app.\r\n\r\n* [APKInspector](https://github.com/honeynet/apkinspector/) - APKinspector is a powerful GUI tool for analysts to analyze the Android applications.\r\n\r\n* [Error-Prone](https://github.com/google/error-prone) - Catch common Java mistakes as compile-time errors\r\n\r\n* [FlowDroid](http://sseblog.ec-spride.de/tools/flowdroid/) - FlowDroid is a context-, flow-, field-, object-sensitive and lifecycle-aware static taint analysis tool for Android applications.\r\n\r\n* [Lint](http://developer.android.com/tools/help/lint.html) - The Android lint tool is a static code analysis tool that checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization.\r\n\r\n* [Smali CFGs](https://github.com/EugenioDelfa/Smali-CFGs) - Smali Control Flow Graph's\r\n\r\n* [Smali and Baksmali](https://code.google.com/p/smali/) - smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android's Java VM implementation.\r\n\r\n* [Thresher](http://pl.cs.colorado.edu/projects/thresher/) - Thresher is a static analysis tool that specializes in checking heap reachability properties. Its secret sauce is using a coarse up-front points-to analysis to focus a precise symbolic analysis on the alarms reported by the points-to analysis.\r\n\r\n##Dynamic Analysis Tools\r\n\r\n* [Android Hooker](https://github.com/AndroidHooker/hooker) - This project provides various tools and applications that can be use to automaticaly intercept and modify any API calls made by a targeted application.\r\n\r\n* [Droidbox](https://code.google.com/p/droidbox/) - DroidBox is developed to offer dynamic analysis of Android applications\r\n\r\n* [Drozer](https://www.mwrinfosecurity.com/products/drozer/) - Drozer allows you to search for security vulnerabilities in apps and devices by assuming the role of an app and interacting with the Dalvik VM, other apps' IPC endpoints and the underlying OS.\r\n\r\n* [Xposed Framework](http://forum.xda-developers.com/xposed/xposed-installer-versions-changelog-t2714053)\r\n\r\n\r\n##Reverse Engineering Tools\r\n\r\n* [Androguard](https://github.com/androguard/androguard) - Reverse engineering, Malware and goodware analysis of Android applications ... and more (ninja !)\r\n\r\n* [Android loadble Kernel Modules](https://github.com/strazzere/android-lkms) - It is mostly used for reversing and debugging on controlled systems/emulators.\r\n\r\n* [AndBug](https://github.com/swdunlop/AndBug) - Android Debugging Library\r\n\r\n* [ApkTool](https://code.google.com/p/android-apktool/) - A tool for reverse engineering Android Apk Files\r\n\r\n* [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer) - A Java 8 Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)\r\n\r\n* [Dex2Jar](https://code.google.com/p/dex2jar/) - Tools to work with android .dex and java .class files\r\n\r\n* [Fino](https://github.com/sysdream/fino) - Android small footprint inspection tool\r\n\r\n* [Introspy-Android](https://github.com/iSECPartners/Introspy-Android) - Blackbox tool to help understand what an Android application is doing at runtime and assist in the identification of potential security issues.\r\n\r\n* [JD-Gui](http://jd.benow.ca/) - Yet another fast Java Decompiler\r\n\r\n* [Simplify](https://github.com/CalebFenton/simplify) - Generic Android Deobfuscator\r\n\r\n* [smali](https://code.google.com/p/smali/) - An assembler/disassembler for Android's dex format\r\n\r\n##Hooking Tools\r\n\r\n* [ADBI Framework](https://github.com/crmulliner/ddi) - Simple and easy to use toolkit for dynamic instrumentation of Dalvik code.\r\n\r\n* [Cydia Substrate](http://www.cydiasubstrate.com/) - Cydia Substrate for Android enables developers to make changes to existing software with Substrate extensions that are injected in to the target process's memory.\r\n\r\n* [Xposed Framework](http://forum.xda-developers.com/xposed/xposed-installer-versions-changelog-t2714053) - Xposed framework enables you to modify the system or application aspect and behaviour at runtime, without modifying any Android application package(APK) or re-flashing.\r\n\r\n##Online Analyzers\r\n\r\n* [AndroidTotal](http://andrototal.org/) - AndroTotal is a free service to scan suspicious APKs against multiple mobile antivirus apps.\r\n\r\n* [Anubis](http://anubis.iseclab.org/) - Malware Analysis for Unknown Binaries.\r\n\r\n* [App360Scan](http://www.app360scan.com/) - Tells about permissons used by an Application and what harm it can cause to users.\r\n\r\n* [CopperDroid](http://copperdroid.isg.rhul.ac.uk/copperdroid/) - It automatically perform out-of-the-box dynamic behavioral analysis of Android malware.\r\n\r\n* [Dexter](https://dexter.bluebox.com/) - Dexter is an interactive Android software analysis environment with collaboration features.\r\n\r\n* [Mobile Sandbox](http://mobilesandbox.org/) - The Mobile-Sandbox provides static and dynamic malware analysis combined with machine learning techniques for Android applications. \r\n\r\n##Android Testing Distributions\r\n\r\n* [Appie](https://manifestsecurity.com/appie) - A portable software package for Android Pentesting and an awesome alternative to existing Virtual machines.\r\n\r\n* [Android Tamer](https://androidtamer.com) - Android Tamer is a Virtual / Live Platform for Android Security professionals.\r\n\r\n* [AppUse](https://appsec-labs.com/AppUse/) - AppUse is a VM (Virtual Machine) developed by AppSec Labs.\r\n\r\n* [Mobisec](http://sourceforge.net/projects/mobisec/) - \r\nMobile security testing live environment\r\n\r\n* [Now Secure App Testing Suite:Community Edition](https://www.nowsecure.com/apptesting/community/#viaprotect)\r\n\r\n* [Santoku Linux](https://santoku-linux.com/) - Santoku Linux is a virtual machine developed by NowSecure Mobile.\r\n\r\n##Android Vulnerable Apps\r\n\r\n* [Android Challenges of Various Conferences/Events](https://drive.google.com/folderview?id=0B7rtSe_PH_fTWDQ0RC1DeWVoVUE&usp=sharing)\r\n\r\n* [Owasp Goatdroid Project](https://github.com/jackMannino/OWASP-GoatDroid-Project)\r\n\r\n* [ExploitMe labs by SecurityCompass](http://securitycompass.github.io/AndroidLabs/setup.html)\r\n\r\n##Android Malwares Database\r\n\r\n* [Contagio Mini Dump](http://contagiominidump.blogspot.com/) - Contagio mobile mini-dump offers an upload dropbox for you to share your mobile malware samples.\r\n\r\n* [Android Malwares Databases](https://code.google.com/p/androguard/wiki/DatabaseAndroidMalwares) - No Longer Maintained.\r\n\r\n##Tutorials\r\n\r\n* [Android Application Security Series](https://manifestsecurity.com/android-application-security/) - A simple and elaborative series on Android Application Security. Beneficial for Android Security Professionals and Developers.\r\n\r\n* [Android Forensics Course](http://opensecuritytraining.info/AndroidForensics.html)\r\n\r\n* [Introduction to ARM](http://opensecuritytraining.info/IntroARM.html)\r\n\r\n\r\n##Android Vulnerability List\r\n\r\n* [Android Vulnerability/Exploit List](https://docs.google.com/spreadsheet/pub?key=0Am5hHW4ATym7dGhFU1A4X2lqbUJtRm1QSWNRc3E0UlE&single=true&gid=0&output=html)\r\n\r\n\r\n##Android Security Libraries\r\n\r\n* [Android Password Store](https://github.com/zeapo/Android-Password-Store)\r\n\r\n* [Android Pinning](https://github.com/moxie0/AndroidPinning) - A standalone library project for certificate pinning on Android.\r\n\r\n* [Conceal By Facebook](https://github.com/facebook/conceal) - Conceal provides easy Android APIs for performing fast encryption and authentication of data.\r\n\r\n* [Dexguard](http://www.saikoa.com/dexguard) - DexGuard is our specialized optimizer and obfuscator for Android. Create apps that are faster, more compact, and more difficult to crack.\r\n\r\n* [Encryption](https://github.com/simbiose/Encryption) - Encryption is a simple way to create encrypted strings to Android project.\r\n\r\n* [CWAC-Security](https://github.com/commonsguy/cwac-security) - Helping You Help Your Users Defend Their Data\r\n\r\n* [IOCipher](https://github.com/guardianproject/IOCipher) - IOCipher is a virtual encrypted disk for apps without requiring the device to be rooted.\r\n\r\n* [NetCipher](https://github.com/guardianproject/NetCipher) - This is an Android Library Project that provides multiple means to improve network security in mobile applications.\r\n\r\n* [OpenPGP API](https://github.com/open-keychain/openpgp-api-lib) - The OpenPGP API provides methods to execute OpenPGP operations, such as sign, encrypt, decrypt, verify, and more without user interaction from background threads.\r\n\r\n* [OWASP Java HTML Sanitizer](https://code.google.com/p/owasp-java-html-sanitizer/)\r\n\r\n* [Proguard](http://proguard.sourceforge.net/) - ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes.\r\n\r\n* [Spongy Castle](https://github.com/rtyley/spongycastle) - a repackage of Bouncy Castle for Android\r\n\r\n* [SQL Cipher](https://www.zetetic.net/sqlcipher/sqlcipher-for-android/) - SQLCipher is an open source extension to SQLite that provides transparent 256-bit AES encryption of database files.\r\n\r\n* [Secure Preferences](https://github.com/scottyab/secure-preferences) - Android Shared preference wrapper than encrypts the keys and values of Shared Preferences.\r\n\r\n* [Trusted Intents](https://github.com/guardianproject/TrustedIntents) - Library for flexible trusted interactions between Android apps\r\n\r\n##Best Practices\r\n\r\n* [Android Security Overview](http://source.android.com/devices/tech/security/)\r\n* [Android Security Tips for Developers](http://developer.android.com/training/articles/security-tips.html)\r\n* [Projects/OWASP Mobile Security Project - Top Ten Mobile Controls](https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls)\r\n* [PCI Mobile Payment Acceptance\r\nSecurity Guidelines for Developers](https://www.pcisecuritystandards.org/documents/Mobile%20Payment%20Security%20Guidelines%20v1%200.pdf)\r\n\r\n\r\n##Books\r\n\r\n| Book | Year | Author | Link |\r\n| ------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |\r\n| The Mobile Application Hacker's Handbook | 2015 | Dominic Chell, Tyrone Erasmus, Jon Lindsay, Shaun Colley, Ollie Whitehouse | [Link](http://www.amazon.com/The-Mobile-Application-Hackers-Handbook/dp/1118958500) |\r\n| Android Hacker's Handbook | 2014 | Joshua J. Drake, Zach Lanier, Collin Mulliner, Pau Oliva, Stephen A. Ridley, Georg Wicherski | [Link](http://www.amazon.com/Android-Hackers-Handbook-Joshua-Drake/dp/111860864X) |\r\n| Android Security Internals | 2014 | Nikolay Elenkov | [Link](http://www.nostarch.com/androidsecurity) |\r\n| Learning Pentesting for Android | 2014 | Aditya Gupta | [Link](http://www.amazon.in/Learning-Pentesting-Android-Aditya-Gupta/dp/1783288981) |\r\n| Android Security Cookbook | 2013 | Keith Makan, Scott-Alexander-Brown | [Link](http://www.amazon.com/dp/1782167161/?tag=packtpubli-20) |\r\n| Android Malware | 2013 | Xuxian Jiang, Yajin Zhou | [Link](http://www.amazon.com/Android-Malware-SpringerBriefs-Computer-Science/dp/1461473934/) |\r\n| Android Application Security Essentials | 2013 | Pragati Rai | [Link](http://www.amazon.com/Android-Application-Security-Essentials-Pragati/dp/1849515603/) |\r\n| Hacking Exposed Mobile Security Secrets & Solutions | 2013 | Neil Bergman, Mike Stanfield, Jason Rouse, Joel Scrambay, Sarath Geethakumar, Swapnil Deshmukh, John Steven, Mike Price, Scott Matsumoto | [Link](http://www.amazon.com/Hacking-Exposed-Security-Secrets-Solutions/dp/0071817018/) |\r\n| Android Security: Attacks and Defenses | 2013 | Anmol Misra, Abhishek Dubey | [Link](http://www.amazon.com/Android-Security-Defenses-Anmol-Misra/dp/1439896461/) |\r\n| Mobile Phone Security and Forensics: A Practical Approach | 2012 | I.I. Androulidakis | [Link](http://www.amazon.com/Mobile-Phone-Security-Forensics-SpringerBriefs/dp/1461416493/) |\r\n| Android Apps Security | 2012 | Sheran Gunasekera | [Link](http://www.amazon.com/Android-Apps-Security-Sheran-Gunasekera/dp/1430240628) |\r\n| Decompiling Android | 2012 | Godfrey Nolan | [Link](http://www.amazon.com/Decompiling-Android-Godfrey-Nolan/dp/1430242485/) |\r\n| Mobile Application Security | 2012 | Himanshu Dwivedi, Chris Clark and David Thiel | [Link](http://www.amazon.com/Mobile-Application-Security-Himanshu-Dwivedi/dp/0071633561/) |\r\n| XDA Developers' Android Hacker's Toolkit | 2012 | Jason Tyler, Will Verduzco | [Link](http://www.amazon.com/XDA-Developers-Android-Hackers-Toolkit/dp/1119951380/) |\r\n| Android Forensics: Investigation, Analysis and Mobile Security for Google Android' | 2011 | Andrew Hoog | [Link](http://www.amazon.com/Android-Forensics-Investigation-Analysis-Security/dp/1597496510/) |\r\n| Application Security for the Android Platform: Processes, Permissions, and Other Safeguards | 2011 | Jeff Six | [Link](http://www.amazon.com/Application-Security-Android-Platform-Permissions/dp/1449315070/) |\r\n| Embedded Java Security: Security for Mobile Devices | 2010 | Mourad Debbabi, Mohamed Saleh, Chamseddine Talhi and Sami Zhioua | [Link](http://www.amazon.com/Embedded-Java-Security-Mobile-Devices/dp/1849966230/) |\r\n\r\n\r\n##Android Security Research Papers\r\n\r\n* [Attacks on Android Clipboard](http://www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf)\r\n* [A Study of Android Application Security](http://www.cs.rice.edu/~sc40/pubs/enck-sec11.pdf)\r\n* [Attacks on Webview in the Android System](http://www.cis.syr.edu/~wedu/Research/paper/webview_acsac2011.pdf)\r\n* [Gues who's is Texting you?Evaluating Security of Smartphone Messaging Applications](https://www.sba-research.org/wp-content/uploads/publications/ndss2012_final.pdf)\r\n* [Evaluations of Security Solutions for Android Systems](http://arxiv.org/ftp/arxiv/papers/1502/1502.04870.pdf)\r\n* [Why Eve and Mallory Love Android:\r\nAn Analysis of Android SSL (In)Security](http://www2.dcsec.uni-hannover.de/files/android/p50-fahl.pdf)\r\n* [The Impact of Vendor Customizations on Android Security](https://www.cs.ncsu.edu/faculty/jiang/pubs/CCS13.pdf)\r\n* [The Peril of Fragmentation: Security Hazards in\r\nAndroid Device Driver Customizations](http://www.cs.indiana.edu/~zhou/files/sp14_zhou.pdf)\r\n* [An Empirical Study of Cryptographic Misuse\r\nin Android Applications](http://www.cs.ucsb.edu/~chris/research/doc/ccs13_cryptolint.pdf)\r\n* [Android Permissions:User Attention, Comprehension, and Behavior](http://www.guanotronic.com/~serge/papers/soups12-android.pdf)\r\n* [AppsPlayground: Automatic Security Analysis of\r\nSmartphone Applications](http://www.cs.northwestern.edu/~ychen/Papers/AppsPlayground.pdf)\r\n* [Understanding and Improving App Installation Security\r\nMechanisms through Empirical Analysis of Android](http://users.encs.concordia.ca/~clark/papers/2012_spsm.pdf)\r\n* [Android Malware Situation](https://www.incibe.es/extfrontinteco/img/File/intecocert/EstudiosInformes/android_malware_situation.pdf)\r\n* [PowerSpy: Location Tracking using Mobile Device Power Analysis](http://arxiv.org/pdf/1502.03182v2)\r\n* [EdgeMiner: Automatically Detecting Implicit\r\nControl Flow Transitions through the Android Framework](http://yinzhicao.org/EdgeMiner/2015_ndss_edgeminer.pdf)\r\n* [Detecting Passive Content Leaks and Pollution in Android Applications ](http://www.yajin.org/papers/ndss13_contentscope.pdf)\r\n* [DIVILAR: Diversifying Intermediate Language for Anti-Repackaging on Android Platform ](http://www.yajin.org/papers/codaspy14_divilar.pdf)\r\n* [ RiskRanker: Scalable and Accurate Zero-day Android Malware Detection](http://www.csc.ncsu.edu/faculty/jiang/pubs/MOBISYS12.pdf)\r\n* [DroidMOSS: Detecting Repackaged Smartphone Applications in Third-Party Android Marketplaces](http://www.csc.ncsu.edu/faculty/jiang/pubs/CODASPY12.pdf)\r\n* [Dissecting Android Malware: Characterization and Evolution](http://www.yajin.org/papers/oakland12_sok.pdf)\r\n* [Hey, You, Get off of My Market: Detecting Malicious Apps in Official and Alternative Android Markets](http://www.csc.ncsu.edu/faculty/jiang/pubs/NDSS12_DROIDRANGER.pdf)\r\n* [Systematic Detection of Capability Leaks in Stock Android Smartphones](http://www.csc.ncsu.edu/faculty/jiang/pubs/NDSS12_WOODPECKER.pdf)\r\n* [Fast, Scalable Detection of “Piggybacked” Mobile\r\nApplications](http://www.csc.ncsu.edu/faculty/jiang/pubs/CODASPY13.pdf)\r\n\r\n\r\n##Contribute\r\nIt is awesome to see that you want to contribute in this wiki, which would directly help the community. Project/Tools which are no longer maintained are not included in this wiki. Please follow one of the ways from below to include tool or resource in this wiki-\r\n\r\n* Tweet the resource to [@exploitprotocol](https://twitter.com/exploitprotocol)\r\n\r\n* Shoot an email to **aditya@manifestsecurity.com**\r\n\r\n* Create a pull request to [Android Security Wiki Repository](https://github.com/exploitprotocol/android-security-wiki) master branch.\r\n\r\nPlease let me know if you have any suggestions\r\n","google":"UA-60251920-1","note":"Don't delete this file! It's used internally to help with page regeneration."} -------------------------------------------------------------------------------- /stylesheets/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} 5 | -------------------------------------------------------------------------------- /stylesheets/normalize.css: -------------------------------------------------------------------------------- 1 | /* normalize.css 2012-02-07T12:37 UTC - http://github.com/necolas/normalize.css */ 2 | /* ============================================================================= 3 | HTML5 display definitions 4 | ========================================================================== */ 5 | /* 6 | * Corrects block display not defined in IE6/7/8/9 & FF3 7 | */ 8 | article, 9 | aside, 10 | details, 11 | figcaption, 12 | figure, 13 | footer, 14 | header, 15 | hgroup, 16 | nav, 17 | section, 18 | summary { 19 | display: block; 20 | } 21 | 22 | /* 23 | * Corrects inline-block display not defined in IE6/7/8/9 & FF3 24 | */ 25 | audio, 26 | canvas, 27 | video { 28 | display: inline-block; 29 | *display: inline; 30 | *zoom: 1; 31 | } 32 | 33 | /* 34 | * Prevents modern browsers from displaying 'audio' without controls 35 | */ 36 | audio:not([controls]) { 37 | display: none; 38 | } 39 | 40 | /* 41 | * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 42 | * Known issue: no IE6 support 43 | */ 44 | [hidden] { 45 | display: none; 46 | } 47 | 48 | /* ============================================================================= 49 | Base 50 | ========================================================================== */ 51 | /* 52 | * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units 53 | * http://clagnut.com/blog/348/#c790 54 | * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom 55 | * www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ 56 | */ 57 | html { 58 | font-size: 100%; 59 | /* 1 */ 60 | -webkit-text-size-adjust: 100%; 61 | /* 2 */ 62 | -ms-text-size-adjust: 100%; 63 | /* 2 */ 64 | } 65 | 66 | /* 67 | * Addresses font-family inconsistency between 'textarea' and other form elements. 68 | */ 69 | html, 70 | button, 71 | input, 72 | select, 73 | textarea { 74 | font-family: sans-serif; 75 | } 76 | 77 | /* 78 | * Addresses margins handled incorrectly in IE6/7 79 | */ 80 | body { 81 | margin: 0; 82 | } 83 | 84 | /* ============================================================================= 85 | Links 86 | ========================================================================== */ 87 | /* 88 | * Addresses outline displayed oddly in Chrome 89 | */ 90 | a:focus { 91 | outline: thin dotted; 92 | } 93 | 94 | /* 95 | * Improves readability when focused and also mouse hovered in all browsers 96 | * people.opera.com/patrickl/experiments/keyboard/test 97 | */ 98 | a:hover, 99 | a:active { 100 | outline: 0; 101 | } 102 | 103 | /* ============================================================================= 104 | Typography 105 | ========================================================================== */ 106 | /* 107 | * Addresses font sizes and margins set differently in IE6/7 108 | * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 109 | */ 110 | h1 { 111 | font-size: 2em; 112 | margin: 0.67em 0; 113 | } 114 | 115 | h2 { 116 | font-size: 1.5em; 117 | margin: 0.83em 0; 118 | } 119 | 120 | h3 { 121 | font-size: 1.17em; 122 | margin: 1em 0; 123 | } 124 | 125 | h4 { 126 | font-size: 1em; 127 | margin: 1.33em 0; 128 | } 129 | 130 | h5 { 131 | font-size: 0.83em; 132 | margin: 1.67em 0; 133 | } 134 | 135 | h6 { 136 | font-size: 0.75em; 137 | margin: 2.33em 0; 138 | } 139 | 140 | /* 141 | * Addresses styling not present in IE7/8/9, S5, Chrome 142 | */ 143 | abbr[title] { 144 | border-bottom: 1px dotted; 145 | } 146 | 147 | /* 148 | * Addresses style set to 'bolder' in FF3+, S4/5, Chrome 149 | */ 150 | b, 151 | strong { 152 | font-weight: bold; 153 | } 154 | 155 | blockquote { 156 | margin: 1em 40px; 157 | } 158 | 159 | /* 160 | * Addresses styling not present in S5, Chrome 161 | */ 162 | dfn { 163 | font-style: italic; 164 | } 165 | 166 | /* 167 | * Addresses styling not present in IE6/7/8/9 168 | */ 169 | mark { 170 | background: #ff0; 171 | color: #000; 172 | } 173 | 174 | /* 175 | * Addresses margins set differently in IE6/7 176 | */ 177 | p, 178 | pre { 179 | margin: 1em 0; 180 | } 181 | 182 | /* 183 | * Corrects font family set oddly in IE6, S4/5, Chrome 184 | * en.wikipedia.org/wiki/User:Davidgothberg/Test59 185 | */ 186 | pre, 187 | code, 188 | kbd, 189 | samp { 190 | font-family: monospace, serif; 191 | _font-family: 'courier new', monospace; 192 | font-size: 1em; 193 | } 194 | 195 | /* 196 | * 1. Addresses CSS quotes not supported in IE6/7 197 | * 2. Addresses quote property not supported in S4 198 | */ 199 | /* 1 */ 200 | q { 201 | quotes: none; 202 | } 203 | 204 | /* 2 */ 205 | q:before, 206 | q:after { 207 | content: ''; 208 | content: none; 209 | } 210 | 211 | small { 212 | font-size: 75%; 213 | } 214 | 215 | /* 216 | * Prevents sub and sup affecting line-height in all browsers 217 | * gist.github.com/413930 218 | */ 219 | sub, 220 | sup { 221 | font-size: 75%; 222 | line-height: 0; 223 | position: relative; 224 | vertical-align: baseline; 225 | } 226 | 227 | sup { 228 | top: -0.5em; 229 | } 230 | 231 | sub { 232 | bottom: -0.25em; 233 | } 234 | 235 | /* ============================================================================= 236 | Lists 237 | ========================================================================== */ 238 | /* 239 | * Addresses margins set differently in IE6/7 240 | */ 241 | dl, 242 | menu, 243 | ol, 244 | ul { 245 | margin: 1em 0; 246 | } 247 | 248 | dd { 249 | margin: 0 0 0 40px; 250 | } 251 | 252 | /* 253 | * Addresses paddings set differently in IE6/7 254 | */ 255 | menu, 256 | ol, 257 | ul { 258 | padding: 0 0 0 40px; 259 | } 260 | 261 | /* 262 | * Corrects list images handled incorrectly in IE7 263 | */ 264 | nav ul, 265 | nav ol { 266 | list-style: none; 267 | list-style-image: none; 268 | } 269 | 270 | /* ============================================================================= 271 | Embedded content 272 | ========================================================================== */ 273 | /* 274 | * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 275 | * 2. Improves image quality when scaled in IE7 276 | * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ 277 | */ 278 | img { 279 | border: 0; 280 | /* 1 */ 281 | -ms-interpolation-mode: bicubic; 282 | /* 2 */ 283 | } 284 | 285 | /* 286 | * Corrects overflow displayed oddly in IE9 287 | */ 288 | svg:not(:root) { 289 | overflow: hidden; 290 | } 291 | 292 | /* ============================================================================= 293 | Figures 294 | ========================================================================== */ 295 | /* 296 | * Addresses margin not present in IE6/7/8/9, S5, O11 297 | */ 298 | figure { 299 | margin: 0; 300 | } 301 | 302 | /* ============================================================================= 303 | Forms 304 | ========================================================================== */ 305 | /* 306 | * Corrects margin displayed oddly in IE6/7 307 | */ 308 | form { 309 | margin: 0; 310 | } 311 | 312 | /* 313 | * Define consistent border, margin, and padding 314 | */ 315 | fieldset { 316 | border: 1px solid #c0c0c0; 317 | margin: 0 2px; 318 | padding: 0.35em 0.625em 0.75em; 319 | } 320 | 321 | /* 322 | * 1. Corrects color not being inherited in IE6/7/8/9 323 | * 2. Corrects text not wrapping in FF3 324 | * 3. Corrects alignment displayed oddly in IE6/7 325 | */ 326 | legend { 327 | border: 0; 328 | /* 1 */ 329 | padding: 0; 330 | white-space: normal; 331 | /* 2 */ 332 | *margin-left: -7px; 333 | /* 3 */ 334 | } 335 | 336 | /* 337 | * 1. Corrects font size not being inherited in all browsers 338 | * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome 339 | * 3. Improves appearance and consistency in all browsers 340 | */ 341 | button, 342 | input, 343 | select, 344 | textarea { 345 | font-size: 100%; 346 | /* 1 */ 347 | margin: 0; 348 | /* 2 */ 349 | vertical-align: baseline; 350 | /* 3 */ 351 | *vertical-align: middle; 352 | /* 3 */ 353 | } 354 | 355 | /* 356 | * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet 357 | */ 358 | button, 359 | input { 360 | line-height: normal; 361 | /* 1 */ 362 | } 363 | 364 | /* 365 | * 1. Improves usability and consistency of cursor style between image-type 'input' and others 366 | * 2. Corrects inability to style clickable 'input' types in iOS 367 | * 3. Removes inner spacing in IE7 without affecting normal text inputs 368 | * Known issue: inner spacing remains in IE6 369 | */ 370 | button, 371 | input[type="button"], 372 | input[type="reset"], 373 | input[type="submit"] { 374 | cursor: pointer; 375 | /* 1 */ 376 | -webkit-appearance: button; 377 | /* 2 */ 378 | *overflow: visible; 379 | /* 3 */ 380 | } 381 | 382 | /* 383 | * Re-set default cursor for disabled elements 384 | */ 385 | button[disabled], 386 | input[disabled] { 387 | cursor: default; 388 | } 389 | 390 | /* 391 | * 1. Addresses box sizing set to content-box in IE8/9 392 | * 2. Removes excess padding in IE8/9 393 | * 3. Removes excess padding in IE7 394 | Known issue: excess padding remains in IE6 395 | */ 396 | input[type="checkbox"], 397 | input[type="radio"] { 398 | box-sizing: border-box; 399 | /* 1 */ 400 | padding: 0; 401 | /* 2 */ 402 | *height: 13px; 403 | /* 3 */ 404 | *width: 13px; 405 | /* 3 */ 406 | } 407 | 408 | /* 409 | * 1. Addresses appearance set to searchfield in S5, Chrome 410 | * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) 411 | */ 412 | input[type="search"] { 413 | -webkit-appearance: textfield; 414 | /* 1 */ 415 | -moz-box-sizing: content-box; 416 | -webkit-box-sizing: content-box; 417 | /* 2 */ 418 | box-sizing: content-box; 419 | } 420 | 421 | /* 422 | * Removes inner padding and search cancel button in S5, Chrome on OS X 423 | */ 424 | input[type="search"]::-webkit-search-decoration, 425 | input[type="search"]::-webkit-search-cancel-button { 426 | -webkit-appearance: none; 427 | } 428 | 429 | /* 430 | * Removes inner padding and border in FF3+ 431 | * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ 432 | */ 433 | button::-moz-focus-inner, 434 | input::-moz-focus-inner { 435 | border: 0; 436 | padding: 0; 437 | } 438 | 439 | /* 440 | * 1. Removes default vertical scrollbar in IE6/7/8/9 441 | * 2. Improves readability and alignment in all browsers 442 | */ 443 | textarea { 444 | overflow: auto; 445 | /* 1 */ 446 | vertical-align: top; 447 | /* 2 */ 448 | } 449 | 450 | /* ============================================================================= 451 | Tables 452 | ========================================================================== */ 453 | /* 454 | * Remove most spacing between table cells 455 | */ 456 | table { 457 | border-collapse: collapse; 458 | border-spacing: 0; 459 | } 460 | 461 | #search-show-btn 462 | { 463 | margin: 0 15px; 464 | background-color: #29DCB2; 465 | color: white; 466 | border: none; 467 | border-radius: 10%; 468 | transition: .2s ease-out; 469 | cursor: pointer; 470 | font-weight: 900; 471 | } 472 | 473 | #search-show-btn:hover 474 | { 475 | background-color: white; 476 | color: #235796; 477 | } 478 | 479 | .search-button 480 | { 481 | margin-right: 5px; 482 | margin-top: 5px; 483 | background-color: #235796; 484 | color: white; 485 | border: none; 486 | cursor: pointer; 487 | border-radius: 10%; 488 | } 489 | -------------------------------------------------------------------------------- /stylesheets/octicons.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'octicons'; 3 | src: url('../fonts/octicons.eot?#iefix') format('embedded-opentype'), 4 | url('../fonts/octicons.woff') format('woff'), 5 | url('../fonts/octicons.ttf') format('truetype'), 6 | url('../fonts/octicons.svg#octicons') format('svg'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | /* 12 | 13 | .octicon is optimized for 16px. 14 | .mega-octicon is optimized for 32px but can be used larger. 15 | 16 | */ 17 | .octicon, .mega-octicon { 18 | font: normal normal normal 16px/1 octicons; 19 | display: inline-block; 20 | text-decoration: none; 21 | text-rendering: auto; 22 | -webkit-font-smoothing: antialiased; 23 | -moz-osx-font-smoothing: grayscale; 24 | -webkit-user-select: none; 25 | -moz-user-select: none; 26 | -ms-user-select: none; 27 | user-select: none; 28 | } 29 | .mega-octicon { font-size: 32px; } 30 | 31 | .octicon-alert:before { content: '\f02d'} /*  */ 32 | .octicon-alignment-align:before { content: '\f08a'} /*  */ 33 | .octicon-alignment-aligned-to:before { content: '\f08e'} /*  */ 34 | .octicon-alignment-unalign:before { content: '\f08b'} /*  */ 35 | .octicon-arrow-down:before { content: '\f03f'} /*  */ 36 | .octicon-arrow-left:before { content: '\f040'} /*  */ 37 | .octicon-arrow-right:before { content: '\f03e'} /*  */ 38 | .octicon-arrow-small-down:before { content: '\f0a0'} /*  */ 39 | .octicon-arrow-small-left:before { content: '\f0a1'} /*  */ 40 | .octicon-arrow-small-right:before { content: '\f071'} /*  */ 41 | .octicon-arrow-small-up:before { content: '\f09f'} /*  */ 42 | .octicon-arrow-up:before { content: '\f03d'} /*  */ 43 | .octicon-beer:before { content: '\f069'} /*  */ 44 | .octicon-book:before { content: '\f007'} /*  */ 45 | .octicon-bookmark:before { content: '\f07b'} /*  */ 46 | .octicon-briefcase:before { content: '\f0d3'} /*  */ 47 | .octicon-broadcast:before { content: '\f048'} /*  */ 48 | .octicon-browser:before { content: '\f0c5'} /*  */ 49 | .octicon-bug:before { content: '\f091'} /*  */ 50 | .octicon-calendar:before { content: '\f068'} /*  */ 51 | .octicon-check:before { content: '\f03a'} /*  */ 52 | .octicon-checklist:before { content: '\f076'} /*  */ 53 | .octicon-chevron-down:before { content: '\f0a3'} /*  */ 54 | .octicon-chevron-left:before { content: '\f0a4'} /*  */ 55 | .octicon-chevron-right:before { content: '\f078'} /*  */ 56 | .octicon-chevron-up:before { content: '\f0a2'} /*  */ 57 | .octicon-circle-slash:before { content: '\f084'} /*  */ 58 | .octicon-circuit-board:before { content: '\f0d6'} /*  */ 59 | .octicon-clippy:before { content: '\f035'} /*  */ 60 | .octicon-clock:before { content: '\f046'} /*  */ 61 | .octicon-cloud-download:before { content: '\f00b'} /*  */ 62 | .octicon-cloud-upload:before { content: '\f00c'} /*  */ 63 | .octicon-code:before { content: '\f05f'} /*  */ 64 | .octicon-color-mode:before { content: '\f065'} /*  */ 65 | .octicon-comment-add:before, 66 | .octicon-comment:before { content: '\f02b'} /*  */ 67 | .octicon-comment-discussion:before { content: '\f04f'} /*  */ 68 | .octicon-credit-card:before { content: '\f045'} /*  */ 69 | .octicon-dash:before { content: '\f0ca'} /*  */ 70 | .octicon-dashboard:before { content: '\f07d'} /*  */ 71 | .octicon-database:before { content: '\f096'} /*  */ 72 | .octicon-device-camera:before { content: '\f056'} /*  */ 73 | .octicon-device-camera-video:before { content: '\f057'} /*  */ 74 | .octicon-device-desktop:before { content: '\f27c'} /*  */ 75 | .octicon-device-mobile:before { content: '\f038'} /*  */ 76 | .octicon-diff:before { content: '\f04d'} /*  */ 77 | .octicon-diff-added:before { content: '\f06b'} /*  */ 78 | .octicon-diff-ignored:before { content: '\f099'} /*  */ 79 | .octicon-diff-modified:before { content: '\f06d'} /*  */ 80 | .octicon-diff-removed:before { content: '\f06c'} /*  */ 81 | .octicon-diff-renamed:before { content: '\f06e'} /*  */ 82 | .octicon-ellipsis:before { content: '\f09a'} /*  */ 83 | .octicon-eye-unwatch:before, 84 | .octicon-eye-watch:before, 85 | .octicon-eye:before { content: '\f04e'} /*  */ 86 | .octicon-file-binary:before { content: '\f094'} /*  */ 87 | .octicon-file-code:before { content: '\f010'} /*  */ 88 | .octicon-file-directory:before { content: '\f016'} /*  */ 89 | .octicon-file-media:before { content: '\f012'} /*  */ 90 | .octicon-file-pdf:before { content: '\f014'} /*  */ 91 | .octicon-file-submodule:before { content: '\f017'} /*  */ 92 | .octicon-file-symlink-directory:before { content: '\f0b1'} /*  */ 93 | .octicon-file-symlink-file:before { content: '\f0b0'} /*  */ 94 | .octicon-file-text:before { content: '\f011'} /*  */ 95 | .octicon-file-zip:before { content: '\f013'} /*  */ 96 | .octicon-flame:before { content: '\f0d2'} /*  */ 97 | .octicon-fold:before { content: '\f0cc'} /*  */ 98 | .octicon-gear:before { content: '\f02f'} /*  */ 99 | .octicon-gift:before { content: '\f042'} /*  */ 100 | .octicon-gist:before { content: '\f00e'} /*  */ 101 | .octicon-gist-secret:before { content: '\f08c'} /*  */ 102 | .octicon-git-branch-create:before, 103 | .octicon-git-branch-delete:before, 104 | .octicon-git-branch:before { content: '\f020'} /*  */ 105 | .octicon-git-commit:before { content: '\f01f'} /*  */ 106 | .octicon-git-compare:before { content: '\f0ac'} /*  */ 107 | .octicon-git-merge:before { content: '\f023'} /*  */ 108 | .octicon-git-pull-request-abandoned:before, 109 | .octicon-git-pull-request:before { content: '\f009'} /*  */ 110 | .octicon-globe:before { content: '\f0b6'} /*  */ 111 | .octicon-graph:before { content: '\f043'} /*  */ 112 | .octicon-heart:before { content: '\2665'} /* ♥ */ 113 | .octicon-history:before { content: '\f07e'} /*  */ 114 | .octicon-home:before { content: '\f08d'} /*  */ 115 | .octicon-horizontal-rule:before { content: '\f070'} /*  */ 116 | .octicon-hourglass:before { content: '\f09e'} /*  */ 117 | .octicon-hubot:before { content: '\f09d'} /*  */ 118 | .octicon-inbox:before { content: '\f0cf'} /*  */ 119 | .octicon-info:before { content: '\f059'} /*  */ 120 | .octicon-issue-closed:before { content: '\f028'} /*  */ 121 | .octicon-issue-opened:before { content: '\f026'} /*  */ 122 | .octicon-issue-reopened:before { content: '\f027'} /*  */ 123 | .octicon-jersey:before { content: '\f019'} /*  */ 124 | .octicon-jump-down:before { content: '\f072'} /*  */ 125 | .octicon-jump-left:before { content: '\f0a5'} /*  */ 126 | .octicon-jump-right:before { content: '\f0a6'} /*  */ 127 | .octicon-jump-up:before { content: '\f073'} /*  */ 128 | .octicon-key:before { content: '\f049'} /*  */ 129 | .octicon-keyboard:before { content: '\f00d'} /*  */ 130 | .octicon-law:before { content: '\f0d8'} /*  */ 131 | .octicon-light-bulb:before { content: '\f000'} /*  */ 132 | .octicon-link:before { content: '\f05c'} /*  */ 133 | .octicon-link-external:before { content: '\f07f'} /*  */ 134 | .octicon-list-ordered:before { content: '\f062'} /*  */ 135 | .octicon-list-unordered:before { content: '\f061'} /*  */ 136 | .octicon-location:before { content: '\f060'} /*  */ 137 | .octicon-gist-private:before, 138 | .octicon-mirror-private:before, 139 | .octicon-git-fork-private:before, 140 | .octicon-lock:before { content: '\f06a'} /*  */ 141 | .octicon-logo-github:before { content: '\f092'} /*  */ 142 | .octicon-mail:before { content: '\f03b'} /*  */ 143 | .octicon-mail-read:before { content: '\f03c'} /*  */ 144 | .octicon-mail-reply:before { content: '\f051'} /*  */ 145 | .octicon-mark-github:before { content: '\f00a'} /*  */ 146 | .octicon-markdown:before { content: '\f0c9'} /*  */ 147 | .octicon-megaphone:before { content: '\f077'} /*  */ 148 | .octicon-mention:before { content: '\f0be'} /*  */ 149 | .octicon-microscope:before { content: '\f089'} /*  */ 150 | .octicon-milestone:before { content: '\f075'} /*  */ 151 | .octicon-mirror-public:before, 152 | .octicon-mirror:before { content: '\f024'} /*  */ 153 | .octicon-mortar-board:before { content: '\f0d7'} /*  */ 154 | .octicon-move-down:before { content: '\f0a8'} /*  */ 155 | .octicon-move-left:before { content: '\f074'} /*  */ 156 | .octicon-move-right:before { content: '\f0a9'} /*  */ 157 | .octicon-move-up:before { content: '\f0a7'} /*  */ 158 | .octicon-mute:before { content: '\f080'} /*  */ 159 | .octicon-no-newline:before { content: '\f09c'} /*  */ 160 | .octicon-octoface:before { content: '\f008'} /*  */ 161 | .octicon-organization:before { content: '\f037'} /*  */ 162 | .octicon-package:before { content: '\f0c4'} /*  */ 163 | .octicon-paintcan:before { content: '\f0d1'} /*  */ 164 | .octicon-pencil:before { content: '\f058'} /*  */ 165 | .octicon-person-add:before, 166 | .octicon-person-follow:before, 167 | .octicon-person:before { content: '\f018'} /*  */ 168 | .octicon-pin:before { content: '\f041'} /*  */ 169 | .octicon-playback-fast-forward:before { content: '\f0bd'} /*  */ 170 | .octicon-playback-pause:before { content: '\f0bb'} /*  */ 171 | .octicon-playback-play:before { content: '\f0bf'} /*  */ 172 | .octicon-playback-rewind:before { content: '\f0bc'} /*  */ 173 | .octicon-plug:before { content: '\f0d4'} /*  */ 174 | .octicon-repo-create:before, 175 | .octicon-gist-new:before, 176 | .octicon-file-directory-create:before, 177 | .octicon-file-add:before, 178 | .octicon-plus:before { content: '\f05d'} /*  */ 179 | .octicon-podium:before { content: '\f0af'} /*  */ 180 | .octicon-primitive-dot:before { content: '\f052'} /*  */ 181 | .octicon-primitive-square:before { content: '\f053'} /*  */ 182 | .octicon-pulse:before { content: '\f085'} /*  */ 183 | .octicon-puzzle:before { content: '\f0c0'} /*  */ 184 | .octicon-question:before { content: '\f02c'} /*  */ 185 | .octicon-quote:before { content: '\f063'} /*  */ 186 | .octicon-radio-tower:before { content: '\f030'} /*  */ 187 | .octicon-repo-delete:before, 188 | .octicon-repo:before { content: '\f001'} /*  */ 189 | .octicon-repo-clone:before { content: '\f04c'} /*  */ 190 | .octicon-repo-force-push:before { content: '\f04a'} /*  */ 191 | .octicon-gist-fork:before, 192 | .octicon-repo-forked:before { content: '\f002'} /*  */ 193 | .octicon-repo-pull:before { content: '\f006'} /*  */ 194 | .octicon-repo-push:before { content: '\f005'} /*  */ 195 | .octicon-rocket:before { content: '\f033'} /*  */ 196 | .octicon-rss:before { content: '\f034'} /*  */ 197 | .octicon-ruby:before { content: '\f047'} /*  */ 198 | .octicon-screen-full:before { content: '\f066'} /*  */ 199 | .octicon-screen-normal:before { content: '\f067'} /*  */ 200 | .octicon-search-save:before, 201 | .octicon-search:before { content: '\f02e'} /*  */ 202 | .octicon-server:before { content: '\f097'} /*  */ 203 | .octicon-settings:before { content: '\f07c'} /*  */ 204 | .octicon-log-in:before, 205 | .octicon-sign-in:before { content: '\f036'} /*  */ 206 | .octicon-log-out:before, 207 | .octicon-sign-out:before { content: '\f032'} /*  */ 208 | .octicon-split:before { content: '\f0c6'} /*  */ 209 | .octicon-squirrel:before { content: '\f0b2'} /*  */ 210 | .octicon-star-add:before, 211 | .octicon-star-delete:before, 212 | .octicon-star:before { content: '\f02a'} /*  */ 213 | .octicon-steps:before { content: '\f0c7'} /*  */ 214 | .octicon-stop:before { content: '\f08f'} /*  */ 215 | .octicon-repo-sync:before, 216 | .octicon-sync:before { content: '\f087'} /*  */ 217 | .octicon-tag-remove:before, 218 | .octicon-tag-add:before, 219 | .octicon-tag:before { content: '\f015'} /*  */ 220 | .octicon-telescope:before { content: '\f088'} /*  */ 221 | .octicon-terminal:before { content: '\f0c8'} /*  */ 222 | .octicon-three-bars:before { content: '\f05e'} /*  */ 223 | .octicon-thumbsdown:before { content: '\f0db'} /*  */ 224 | .octicon-thumbsup:before { content: '\f0da'} /*  */ 225 | .octicon-tools:before { content: '\f031'} /*  */ 226 | .octicon-trashcan:before { content: '\f0d0'} /*  */ 227 | .octicon-triangle-down:before { content: '\f05b'} /*  */ 228 | .octicon-triangle-left:before { content: '\f044'} /*  */ 229 | .octicon-triangle-right:before { content: '\f05a'} /*  */ 230 | .octicon-triangle-up:before { content: '\f0aa'} /*  */ 231 | .octicon-unfold:before { content: '\f039'} /*  */ 232 | .octicon-unmute:before { content: '\f0ba'} /*  */ 233 | .octicon-versions:before { content: '\f064'} /*  */ 234 | .octicon-remove-close:before, 235 | .octicon-x:before { content: '\f081'} /*  */ 236 | .octicon-zap:before { content: '\26A1'} /* ⚡ */ 237 | -------------------------------------------------------------------------------- /stylesheets/pygment_trac.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #404040 } 2 | .highlight { color: #d0d0d0 } 3 | .highlight .c { color: #999999; font-style: italic } /* Comment */ 4 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 5 | .highlight .g { color: #d0d0d0 } /* Generic */ 6 | .highlight .k { color: #6ab825; font-weight: normal } /* Keyword */ 7 | .highlight .l { color: #d0d0d0 } /* Literal */ 8 | .highlight .n { color: #d0d0d0 } /* Name */ 9 | .highlight .o { color: #d0d0d0 } /* Operator */ 10 | .highlight .x { color: #d0d0d0 } /* Other */ 11 | .highlight .p { color: #d0d0d0 } /* Punctuation */ 12 | .highlight .cm { color: #999999; font-style: italic } /* Comment.Multiline */ 13 | .highlight .cp { color: #cd2828; font-weight: normal } /* Comment.Preproc */ 14 | .highlight .c1 { color: #999999; font-style: italic } /* Comment.Single */ 15 | .highlight .cs { color: #e50808; font-weight: normal; background-color: #520000 } /* Comment.Special */ 16 | .highlight .gd { color: #d22323 } /* Generic.Deleted */ 17 | .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ 18 | .highlight .gr { color: #d22323 } /* Generic.Error */ 19 | .highlight .gh { color: #ffffff; font-weight: normal } /* Generic.Heading */ 20 | .highlight .gi { color: #589819 } /* Generic.Inserted */ 21 | .highlight .go { color: #cccccc } /* Generic.Output */ 22 | .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ 23 | .highlight .gs { color: #d0d0d0; font-weight: normal } /* Generic.Strong */ 24 | .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ 25 | .highlight .gt { color: #d22323 } /* Generic.Traceback */ 26 | .highlight .kc { color: #6ab825; font-weight: normal } /* Keyword.Constant */ 27 | .highlight .kd { color: #6ab825; font-weight: normal } /* Keyword.Declaration */ 28 | .highlight .kn { color: #6ab825; font-weight: normal } /* Keyword.Namespace */ 29 | .highlight .kp { color: #6ab825 } /* Keyword.Pseudo */ 30 | .highlight .kr { color: #6ab825; font-weight: normal } /* Keyword.Reserved */ 31 | .highlight .kt { color: #6ab825; font-weight: normal } /* Keyword.Type */ 32 | .highlight .ld { color: #d0d0d0 } /* Literal.Date */ 33 | .highlight .m { color: #3677a9 } /* Literal.Number */ 34 | .highlight .s { color: #ff8 } /* Literal.String */ 35 | .highlight .na { color: #bbbbbb } /* Name.Attribute */ 36 | .highlight .nb { color: #24909d } /* Name.Builtin */ 37 | .highlight .nc { color: #447fcf; text-decoration: underline } /* Name.Class */ 38 | .highlight .no { color: #40ffff } /* Name.Constant */ 39 | .highlight .nd { color: #ffa500 } /* Name.Decorator */ 40 | .highlight .ni { color: #d0d0d0 } /* Name.Entity */ 41 | .highlight .ne { color: #bbbbbb } /* Name.Exception */ 42 | .highlight .nf { color: #447fcf } /* Name.Function */ 43 | .highlight .nl { color: #d0d0d0 } /* Name.Label */ 44 | .highlight .nn { color: #447fcf; text-decoration: underline } /* Name.Namespace */ 45 | .highlight .nx { color: #d0d0d0 } /* Name.Other */ 46 | .highlight .py { color: #d0d0d0 } /* Name.Property */ 47 | .highlight .nt { color: #6ab825;} /* Name.Tag */ 48 | .highlight .nv { color: #40ffff } /* Name.Variable */ 49 | .highlight .ow { color: #6ab825; font-weight: normal } /* Operator.Word */ 50 | .highlight .w { color: #666666 } /* Text.Whitespace */ 51 | .highlight .mf { color: #3677a9 } /* Literal.Number.Float */ 52 | .highlight .mh { color: #3677a9 } /* Literal.Number.Hex */ 53 | .highlight .mi { color: #3677a9 } /* Literal.Number.Integer */ 54 | .highlight .mo { color: #3677a9 } /* Literal.Number.Oct */ 55 | .highlight .sb { color: #ff8 } /* Literal.String.Backtick */ 56 | .highlight .sc { color: #ff8 } /* Literal.String.Char */ 57 | .highlight .sd { color: #ff8 } /* Literal.String.Doc */ 58 | .highlight .s2 { color: #ff8 } /* Literal.String.Double */ 59 | .highlight .se { color: #ff8 } /* Literal.String.Escape */ 60 | .highlight .sh { color: #ff8 } /* Literal.String.Heredoc */ 61 | .highlight .si { color: #ff8 } /* Literal.String.Interpol */ 62 | .highlight .sx { color: #ffa500 } /* Literal.String.Other */ 63 | .highlight .sr { color: #ff8 } /* Literal.String.Regex */ 64 | .highlight .s1 { color: #ff8 } /* Literal.String.Single */ 65 | .highlight .ss { color: #ff8 } /* Literal.String.Symbol */ 66 | .highlight .bp { color: #24909d } /* Name.Builtin.Pseudo */ 67 | .highlight .vc { color: #40ffff } /* Name.Variable.Class */ 68 | .highlight .vg { color: #40ffff } /* Name.Variable.Global */ 69 | .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ 70 | .highlight .il { color: #3677a9 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /stylesheets/styles.css: -------------------------------------------------------------------------------- 1 | /* Anchor are offset to be right under the header */ 2 | a.anchor{display: block; position: relative; top: -175px; visibility: hidden;} 3 | 4 | /* 5 | Leap Day for GitHub Pages 6 | by Matt Graham 7 | */ 8 | @font-face { 9 | font-family: 'Quattrocento Sans'; 10 | src: url("../fonts/quattrocentosans-bold-webfont.eot"); 11 | src: url("../fonts/quattrocentosans-bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/quattrocentosans-bold-webfont.woff") format("woff"), url("../fonts/quattrocentosans-bold-webfont.ttf") format("truetype"), url("../fonts/quattrocentosans-bold-webfont.svg#QuattrocentoSansBold") format("svg"); 12 | font-weight: bold; 13 | font-style: normal; 14 | } 15 | 16 | @font-face { 17 | font-family: 'Quattrocento Sans'; 18 | src: url("../fonts/quattrocentosans-bolditalic-webfont.eot"); 19 | src: url("../fonts/quattrocentosans-bolditalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/quattrocentosans-bolditalic-webfont.woff") format("woff"), url("../fonts/quattrocentosans-bolditalic-webfont.ttf") format("truetype"), url("../fonts/quattrocentosans-bolditalic-webfont.svg#QuattrocentoSansBoldItalic") format("svg"); 20 | font-weight: bold; 21 | font-style: italic; 22 | } 23 | 24 | @font-face { 25 | font-family: 'Quattrocento Sans'; 26 | src: url("../fonts/quattrocentosans-italic-webfont.eot"); 27 | src: url("../fonts/quattrocentosans-italic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/quattrocentosans-italic-webfont.woff") format("woff"), url("../fonts/quattrocentosans-italic-webfont.ttf") format("truetype"), url("../fonts/quattrocentosans-italic-webfont.svg#QuattrocentoSansItalic") format("svg"); 28 | font-weight: normal; 29 | font-style: italic; 30 | } 31 | 32 | @font-face { 33 | font-family: 'Quattrocento Sans'; 34 | src: url("../fonts/quattrocentosans-regular-webfont.eot"); 35 | src: url("../fonts/quattrocentosans-regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/quattrocentosans-regular-webfont.woff") format("woff"), url("../fonts/quattrocentosans-regular-webfont.ttf") format("truetype"), url("../fonts/quattrocentosans-regular-webfont.svg#QuattrocentoSansRegular") format("svg"); 36 | font-weight: normal; 37 | font-style: normal; 38 | } 39 | 40 | @font-face { 41 | font-family: 'Copse'; 42 | src: url("../fonts/copse-regular-webfont.eot"); 43 | src: url("../fonts/copse-regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/copse-regular-webfont.woff") format("woff"), url("../fonts/copse-regular-webfont.ttf") format("truetype"), url("../fonts/copse-regular-webfont.svg#CopseRegular") format("svg"); 44 | font-weight: normal; 45 | font-style: normal; 46 | } 47 | 48 | /* normalize.css 2012-02-07T12:37 UTC - http://github.com/necolas/normalize.css */ 49 | /* ============================================================================= 50 | HTML5 display definitions 51 | ========================================================================== */ 52 | /* 53 | * Corrects block display not defined in IE6/7/8/9 & FF3 54 | */ 55 | article, 56 | aside, 57 | details, 58 | figcaption, 59 | figure, 60 | footer, 61 | header, 62 | hgroup, 63 | nav, 64 | section, 65 | summary { 66 | display: block; 67 | } 68 | 69 | /* 70 | * Corrects inline-block display not defined in IE6/7/8/9 & FF3 71 | */ 72 | audio, 73 | canvas, 74 | video { 75 | display: inline-block; 76 | *display: inline; 77 | *zoom: 1; 78 | } 79 | 80 | /* 81 | * Prevents modern browsers from displaying 'audio' without controls 82 | */ 83 | audio:not([controls]) { 84 | display: none; 85 | } 86 | 87 | /* 88 | * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 89 | * Known issue: no IE6 support 90 | */ 91 | [hidden] { 92 | display: none; 93 | } 94 | 95 | /* ============================================================================= 96 | Base 97 | ========================================================================== */ 98 | /* 99 | * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units 100 | * http://clagnut.com/blog/348/#c790 101 | * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom 102 | * www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ 103 | */ 104 | html { 105 | font-size: 100%; 106 | /* 1 */ 107 | -webkit-text-size-adjust: 100%; 108 | /* 2 */ 109 | -ms-text-size-adjust: 100%; 110 | /* 2 */ 111 | } 112 | 113 | /* 114 | * Addresses font-family inconsistency between 'textarea' and other form elements. 115 | */ 116 | html, 117 | button, 118 | input, 119 | select, 120 | textarea { 121 | font-family: sans-serif; 122 | } 123 | 124 | /* 125 | * Addresses margins handled incorrectly in IE6/7 126 | */ 127 | body { 128 | margin: 0; 129 | } 130 | 131 | /* ============================================================================= 132 | Links 133 | ========================================================================== */ 134 | /* 135 | * Addresses outline displayed oddly in Chrome 136 | */ 137 | a:focus { 138 | outline: thin dotted; 139 | } 140 | 141 | /* 142 | * Improves readability when focused and also mouse hovered in all browsers 143 | * people.opera.com/patrickl/experiments/keyboard/test 144 | */ 145 | a:hover, 146 | a:active { 147 | outline: 0; 148 | } 149 | 150 | /* ============================================================================= 151 | Typography 152 | ========================================================================== */ 153 | /* 154 | * Addresses font sizes and margins set differently in IE6/7 155 | * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 156 | */ 157 | h1 { 158 | font-size: 2em; 159 | margin: 0.67em 0; 160 | } 161 | 162 | h2 { 163 | font-size: 1.5em; 164 | margin: 0.83em 0; 165 | } 166 | 167 | h3 { 168 | font-size: 1.17em; 169 | margin: 1em 0; 170 | } 171 | 172 | h4 { 173 | font-size: 1em; 174 | margin: 1.33em 0; 175 | } 176 | 177 | h5 { 178 | font-size: 0.83em; 179 | margin: 1.67em 0; 180 | } 181 | 182 | h6 { 183 | font-size: 0.75em; 184 | margin: 2.33em 0; 185 | } 186 | 187 | /* 188 | * Addresses styling not present in IE7/8/9, S5, Chrome 189 | */ 190 | abbr[title] { 191 | border-bottom: 1px dotted; 192 | } 193 | 194 | /* 195 | * Addresses style set to 'bolder' in FF3+, S4/5, Chrome 196 | */ 197 | b, 198 | strong { 199 | font-weight: bold; 200 | } 201 | 202 | blockquote { 203 | margin: 1em 40px; 204 | } 205 | 206 | /* 207 | * Addresses styling not present in S5, Chrome 208 | */ 209 | dfn { 210 | font-style: italic; 211 | } 212 | 213 | /* 214 | * Addresses styling not present in IE6/7/8/9 215 | */ 216 | mark { 217 | background: #ff0; 218 | color: #000; 219 | } 220 | 221 | /* 222 | * Addresses margins set differently in IE6/7 223 | */ 224 | p, 225 | pre { 226 | margin: 1em 0; 227 | } 228 | 229 | /* 230 | * Corrects font family set oddly in IE6, S4/5, Chrome 231 | * en.wikipedia.org/wiki/User:Davidgothberg/Test59 232 | */ 233 | pre, 234 | code, 235 | kbd, 236 | samp { 237 | font-family: monospace, serif; 238 | _font-family: 'courier new', monospace; 239 | font-size: 1em; 240 | } 241 | 242 | /* 243 | * 1. Addresses CSS quotes not supported in IE6/7 244 | * 2. Addresses quote property not supported in S4 245 | */ 246 | /* 1 */ 247 | q { 248 | quotes: none; 249 | } 250 | 251 | /* 2 */ 252 | q:before, 253 | q:after { 254 | content: ''; 255 | content: none; 256 | } 257 | 258 | small { 259 | font-size: 75%; 260 | } 261 | 262 | /* 263 | * Prevents sub and sup affecting line-height in all browsers 264 | * gist.github.com/413930 265 | */ 266 | sub, 267 | sup { 268 | font-size: 75%; 269 | line-height: 0; 270 | position: relative; 271 | vertical-align: baseline; 272 | } 273 | 274 | sup { 275 | top: -0.5em; 276 | } 277 | 278 | sub { 279 | bottom: -0.25em; 280 | } 281 | 282 | /* ============================================================================= 283 | Lists 284 | ========================================================================== */ 285 | /* 286 | * Addresses margins set differently in IE6/7 287 | */ 288 | dl, 289 | menu, 290 | ol, 291 | ul { 292 | margin: 1em 0; 293 | } 294 | 295 | dd { 296 | margin: 0 0 0 40px; 297 | } 298 | 299 | /* 300 | * Addresses paddings set differently in IE6/7 301 | */ 302 | menu, 303 | ol, 304 | ul { 305 | padding: 0 0 0 40px; 306 | } 307 | 308 | /* 309 | * Corrects list images handled incorrectly in IE7 310 | */ 311 | nav ul, 312 | nav ol { 313 | list-style: none; 314 | list-style-image: none; 315 | } 316 | 317 | /* ============================================================================= 318 | Embedded content 319 | ========================================================================== */ 320 | /* 321 | * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 322 | * 2. Improves image quality when scaled in IE7 323 | * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ 324 | */ 325 | img { 326 | border: 0; 327 | /* 1 */ 328 | -ms-interpolation-mode: bicubic; 329 | /* 2 */ 330 | } 331 | 332 | /* 333 | * Corrects overflow displayed oddly in IE9 334 | */ 335 | svg:not(:root) { 336 | overflow: hidden; 337 | } 338 | 339 | /* ============================================================================= 340 | Figures 341 | ========================================================================== */ 342 | /* 343 | * Addresses margin not present in IE6/7/8/9, S5, O11 344 | */ 345 | figure { 346 | margin: 0; 347 | } 348 | 349 | /* ============================================================================= 350 | Forms 351 | ========================================================================== */ 352 | /* 353 | * Corrects margin displayed oddly in IE6/7 354 | */ 355 | form { 356 | margin: 0; 357 | } 358 | 359 | /* 360 | * Define consistent border, margin, and padding 361 | */ 362 | fieldset { 363 | border: 1px solid #c0c0c0; 364 | margin: 0 2px; 365 | padding: 0.35em 0.625em 0.75em; 366 | } 367 | 368 | /* 369 | * 1. Corrects color not being inherited in IE6/7/8/9 370 | * 2. Corrects text not wrapping in FF3 371 | * 3. Corrects alignment displayed oddly in IE6/7 372 | */ 373 | legend { 374 | border: 0; 375 | /* 1 */ 376 | padding: 0; 377 | white-space: normal; 378 | /* 2 */ 379 | *margin-left: -7px; 380 | /* 3 */ 381 | } 382 | 383 | /* 384 | * 1. Corrects font size not being inherited in all browsers 385 | * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome 386 | * 3. Improves appearance and consistency in all browsers 387 | */ 388 | button, 389 | input, 390 | select, 391 | textarea { 392 | font-size: 100%; 393 | /* 1 */ 394 | margin: 0; 395 | /* 2 */ 396 | vertical-align: baseline; 397 | /* 3 */ 398 | *vertical-align: middle; 399 | /* 3 */ 400 | } 401 | 402 | /* 403 | * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet 404 | */ 405 | button, 406 | input { 407 | line-height: normal; 408 | /* 1 */ 409 | } 410 | 411 | /* 412 | * 1. Improves usability and consistency of cursor style between image-type 'input' and others 413 | * 2. Corrects inability to style clickable 'input' types in iOS 414 | * 3. Removes inner spacing in IE7 without affecting normal text inputs 415 | * Known issue: inner spacing remains in IE6 416 | */ 417 | button, 418 | input[type="button"], 419 | input[type="reset"], 420 | input[type="submit"] { 421 | cursor: pointer; 422 | /* 1 */ 423 | -webkit-appearance: button; 424 | /* 2 */ 425 | *overflow: visible; 426 | /* 3 */ 427 | } 428 | 429 | /* 430 | * Re-set default cursor for disabled elements 431 | */ 432 | button[disabled], 433 | input[disabled] { 434 | cursor: default; 435 | } 436 | 437 | /* 438 | * 1. Addresses box sizing set to content-box in IE8/9 439 | * 2. Removes excess padding in IE8/9 440 | * 3. Removes excess padding in IE7 441 | Known issue: excess padding remains in IE6 442 | */ 443 | input[type="checkbox"], 444 | input[type="radio"] { 445 | box-sizing: border-box; 446 | /* 1 */ 447 | padding: 0; 448 | /* 2 */ 449 | *height: 13px; 450 | /* 3 */ 451 | *width: 13px; 452 | /* 3 */ 453 | } 454 | 455 | /* 456 | * 1. Addresses appearance set to searchfield in S5, Chrome 457 | * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) 458 | */ 459 | input[type="search"] { 460 | -webkit-appearance: textfield; 461 | /* 1 */ 462 | -moz-box-sizing: content-box; 463 | -webkit-box-sizing: content-box; 464 | /* 2 */ 465 | box-sizing: content-box; 466 | } 467 | 468 | /* 469 | * Removes inner padding and search cancel button in S5, Chrome on OS X 470 | */ 471 | input[type="search"]::-webkit-search-decoration, 472 | input[type="search"]::-webkit-search-cancel-button { 473 | -webkit-appearance: none; 474 | } 475 | 476 | /* 477 | * Removes inner padding and border in FF3+ 478 | * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ 479 | */ 480 | button::-moz-focus-inner, 481 | input::-moz-focus-inner { 482 | border: 0; 483 | padding: 0; 484 | } 485 | 486 | /* 487 | * 1. Removes default vertical scrollbar in IE6/7/8/9 488 | * 2. Improves readability and alignment in all browsers 489 | */ 490 | textarea { 491 | overflow: auto; 492 | /* 1 */ 493 | vertical-align: top; 494 | /* 2 */ 495 | } 496 | 497 | /* ============================================================================= 498 | Tables 499 | ========================================================================== */ 500 | /* 501 | * Remove most spacing between table cells 502 | */ 503 | table { 504 | border-collapse: collapse; 505 | border-spacing: 0; 506 | } 507 | 508 | body { 509 | font: 14px/22px "Quattrocento Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 510 | color: #666; 511 | font-weight: 300; 512 | margin: 0px; 513 | padding: 0px 0 20px 0px; 514 | background: url(../images/body-background.png) #eae6d1; 515 | } 516 | 517 | h1, h2, h3, h4, h5, h6 { 518 | color: #333; 519 | margin: 0 0 10px; 520 | } 521 | 522 | p, ul, ol, table, pre, dl { 523 | margin: 0 0 7px; 524 | } 525 | 526 | h1, h2, h3 { 527 | line-height: 1.1; 528 | } 529 | 530 | h1 { 531 | font-size: 28px; 532 | } 533 | 534 | h2 { 535 | font-size: 24px; 536 | color: #393939; 537 | } 538 | 539 | h3, h4, h5, h6 { 540 | color: #666666; 541 | } 542 | 543 | h3 { 544 | font-size: 18px; 545 | line-height: 24px; 546 | } 547 | 548 | a { 549 | color: #3399cc; 550 | font-weight: 400; 551 | text-decoration: none; 552 | } 553 | 554 | a small { 555 | font-size: 11px; 556 | color: #666; 557 | margin-top: -0.6em; 558 | display: block; 559 | } 560 | 561 | ul { 562 | list-style-image: url("../images/bullet.png"); 563 | } 564 | 565 | strong { 566 | font-weight: bold; 567 | color: #333; 568 | } 569 | 570 | .wrapper { 571 | width: 650px; 572 | margin: 0 auto; 573 | position: relative; 574 | } 575 | 576 | section img { 577 | max-width: 100%; 578 | } 579 | 580 | blockquote { 581 | border-left: 1px solid #ffcc00; 582 | margin: 0; 583 | padding: 0 0 0 20px; 584 | font-style: italic; 585 | } 586 | 587 | code { 588 | font-family: "Lucida Sans", Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal; 589 | font-size: 13px; 590 | color: #efefef; 591 | text-shadow: 0px 1px 0px #000; 592 | margin: 0 4px; 593 | padding: 2px 6px; 594 | background: #333; 595 | -moz-border-radius: 2px; 596 | -webkit-border-radius: 2px; 597 | -o-border-radius: 2px; 598 | -ms-border-radius: 2px; 599 | -khtml-border-radius: 2px; 600 | border-radius: 2px; 601 | } 602 | 603 | pre { 604 | padding: 8px 15px; 605 | background: #333333; 606 | -moz-border-radius: 3px; 607 | -webkit-border-radius: 3px; 608 | -o-border-radius: 3px; 609 | -ms-border-radius: 3px; 610 | -khtml-border-radius: 3px; 611 | border-radius: 3px; 612 | border: 1px solid #c7c7c7; 613 | overflow: auto; 614 | overflow-y: hidden; 615 | } 616 | pre code { 617 | margin: 0px; 618 | padding: 0px; 619 | } 620 | 621 | table { 622 | width: 100%; 623 | border-collapse: collapse; 624 | } 625 | 626 | th { 627 | text-align: left; 628 | padding: 5px 10px; 629 | border-bottom: 1px solid #e5e5e5; 630 | color: #444; 631 | } 632 | 633 | td { 634 | text-align: left; 635 | padding: 5px 10px; 636 | border-bottom: 1px solid #e5e5e5; 637 | border-right: 1px solid #ffcc00; 638 | } 639 | td:first-child { 640 | border-left: 1px solid #ffcc00; 641 | } 642 | 643 | hr { 644 | border: 0; 645 | outline: none; 646 | height: 11px; 647 | background: transparent url("../images/hr.gif") center center repeat-x; 648 | margin: 0 0 20px; 649 | } 650 | 651 | dt { 652 | color: #444; 653 | font-weight: 700; 654 | } 655 | 656 | header { 657 | padding: 25px 20px 40px 20px; 658 | margin: 0; 659 | position: fixed; 660 | top: 0; 661 | left: 0; 662 | right: 0; 663 | width: 100%; 664 | text-align: center; 665 | background: url(../images/background.png) #4276b6; 666 | -moz-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.75); 667 | -webkit-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.75); 668 | -o-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.75); 669 | box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.75); 670 | z-index: 99; 671 | -webkit-font-smoothing: antialiased; 672 | min-height: 76px; 673 | } 674 | header h1 { 675 | font: 40px/48px "Copse", "Helvetica Neue", Helvetica, Arial, sans-serif; 676 | color: #f3f3f3; 677 | text-shadow: 0px 2px 0px #235796; 678 | margin: 0px; 679 | white-space: nowrap; 680 | overflow: hidden; 681 | text-overflow: ellipsis; 682 | -o-text-overflow: ellipsis; 683 | -ms-text-overflow: ellipsis; 684 | } 685 | header p { 686 | color: #d8d8d8; 687 | text-shadow: rgba(0, 0, 0, 0.2) 0 1px 0; 688 | font-size: 18px; 689 | margin: 0px; 690 | } 691 | 692 | #banner { 693 | z-index: 100; 694 | left: 0; 695 | right: 50%; 696 | padding-bottom:8px; 697 | margin-right: -482px; 698 | position: fixed; 699 | top: 115px; 700 | background: #ffcc00; 701 | border: 1px solid #f0b500; 702 | -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); 703 | -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); 704 | -o-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); 705 | box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); 706 | -moz-border-radius: 0px 2px 2px 0px; 707 | -webkit-border-radius: 0px 2px 2px 0px; 708 | -o-border-radius: 0px 2px 2px 0px; 709 | -ms-border-radius: 0px 2px 2px 0px; 710 | -khtml-border-radius: 0px 2px 2px 0px; 711 | border-radius: 0px 2px 2px 0px; 712 | padding-right: 10px; 713 | padding-left: 70px; 714 | } 715 | #banner .button { 716 | border: 1px solid #dba500; 717 | background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffe788), color-stop(100%, #ffce38)); 718 | background: -webkit-linear-gradient(#ffe788, #ffce38); 719 | background: -moz-linear-gradient(#ffe788, #ffce38); 720 | background: -o-linear-gradient(#ffe788, #ffce38); 721 | background: -ms-linear-gradient(#ffe788, #ffce38); 722 | background: linear-gradient(#ffe788, #ffce38); 723 | -moz-border-radius: 2px; 724 | -webkit-border-radius: 2px; 725 | -o-border-radius: 2px; 726 | -ms-border-radius: 2px; 727 | -khtml-border-radius: 2px; 728 | border-radius: 2px; 729 | -moz-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.4), 0px 1px 1px rgba(0, 0, 0, 0.1); 730 | -webkit-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.4), 0px 1px 1px rgba(0, 0, 0, 0.1); 731 | -o-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.4), 0px 1px 1px rgba(0, 0, 0, 0.1); 732 | box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.4), 0px 1px 1px rgba(0, 0, 0, 0.1); 733 | background-color: #FFE788; 734 | margin-left: 5px; 735 | padding: 10px 12px; 736 | margin-top: 6px; 737 | line-height: 14px; 738 | font-size: 14px; 739 | color: #333; 740 | font-weight: bold; 741 | display: inline-block; 742 | text-align: center; 743 | } 744 | #banner .button:hover { 745 | background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffe788), color-stop(100%, #ffe788)); 746 | background: -webkit-linear-gradient(#ffe788, #ffe788); 747 | background: -moz-linear-gradient(#ffe788, #ffe788); 748 | background: -o-linear-gradient(#ffe788, #ffe788); 749 | background: -ms-linear-gradient(#ffe788, #ffe788); 750 | background: linear-gradient(#ffe788, #ffe788); 751 | background-color: #ffeca0; 752 | } 753 | #banner .fork { 754 | position: fixed; 755 | left: 50%; 756 | margin-left: -325px; 757 | padding: 10px 12px; 758 | margin-top: 6px; 759 | line-height: 14px; 760 | font-size: 14px; 761 | background-color: #FFE788; 762 | } 763 | #banner .downloads { 764 | float: right; 765 | margin: 0 45px 0 0; 766 | } 767 | #banner .downloads span { 768 | float: left; 769 | line-height: 52px; 770 | font-size: 90%; 771 | color: #9d7f0d; 772 | text-transform: uppercase; 773 | text-shadow: rgba(255, 255, 255, 0.2) 0 1px 0; 774 | } 775 | #banner ul { 776 | list-style: none; 777 | height: 40px; 778 | padding: 0; 779 | float: left; 780 | margin-left: 10px; 781 | } 782 | #banner ul li { 783 | display: inline; 784 | } 785 | #banner ul li a.button { 786 | background-color: #FFE788; 787 | } 788 | #banner #logo { 789 | position: absolute; 790 | height: 36px; 791 | width: 36px; 792 | right: 7px; 793 | top: 7px; 794 | display: block; 795 | background: url(../images/octocat-logo.png); 796 | } 797 | 798 | section { 799 | width: 640px; 800 | padding: 30px 30px 50px 30px; 801 | margin: 20px 0; 802 | margin-top: 190px; 803 | position: relative; 804 | background: #fbfbfb; 805 | -moz-border-radius: 3px; 806 | -webkit-border-radius: 3px; 807 | -o-border-radius: 3px; 808 | -ms-border-radius: 3px; 809 | -khtml-border-radius: 3px; 810 | border-radius: 3px; 811 | border: 1px solid #cbcbcb; 812 | -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.09), inset 0px 0px 2px 2px rgba(255, 255, 255, 0.5), inset 0 0 5px 5px rgba(255, 255, 255, 0.4); 813 | -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.09), inset 0px 0px 2px 2px rgba(255, 255, 255, 0.5), inset 0 0 5px 5px rgba(255, 255, 255, 0.4); 814 | -o-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.09), inset 0px 0px 2px 2px rgba(255, 255, 255, 0.5), inset 0 0 5px 5px rgba(255, 255, 255, 0.4); 815 | box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.09), inset 0px 0px 2px 2px rgba(255, 255, 255, 0.5), inset 0 0 5px 5px rgba(255, 255, 255, 0.4); 816 | } 817 | 818 | small { 819 | font-size: 12px; 820 | } 821 | 822 | nav { 823 | width: 270px; 824 | position: fixed; 825 | top: 220px; 826 | left: 50%; 827 | margin-left: -610px; 828 | text-align: right; 829 | margin-top: -30px; 830 | } 831 | nav ul { 832 | list-style: none; 833 | list-style-image: none; 834 | font-size: 14px; 835 | line-height: 24px; 836 | } 837 | nav ul li { 838 | padding: 5px 0px; 839 | line-height: 12px; 840 | } 841 | nav ul li.tag-h1 { 842 | font-size: 1.2em; 843 | } 844 | nav ul li.tag-h1 a { 845 | font-weight: bold; 846 | color: #333; 847 | } 848 | nav ul li.tag-h2 + .tag-h1 { 849 | margin-top: 10px; 850 | } 851 | nav ul a { 852 | color: #666; 853 | } 854 | nav ul a:hover { 855 | color: #999; 856 | } 857 | 858 | footer { 859 | width: 180px; 860 | position: fixed; 861 | left: 50%; 862 | margin-left: -530px; 863 | bottom: 20px; 864 | text-align: right; 865 | line-height: 16px; 866 | } 867 | 868 | @media print, screen and (max-width: 1060px) { 869 | div.wrapper { 870 | width: auto; 871 | margin: 0; 872 | } 873 | 874 | nav { 875 | display: none; 876 | } 877 | 878 | header, section, footer { 879 | float: none; 880 | } 881 | header h1, section h1, footer h1 { 882 | white-space: nowrap; 883 | overflow: hidden; 884 | text-overflow: ellipsis; 885 | -o-text-overflow: ellipsis; 886 | -ms-text-overflow: ellipsis; 887 | } 888 | 889 | #banner { 890 | width: 100%; 891 | } 892 | #banner .downloads { 893 | margin-right: 60px; 894 | } 895 | #banner #logo { 896 | margin-right: 15px; 897 | } 898 | 899 | section { 900 | border: 1px solid #e5e5e5; 901 | border-width: 1px 0; 902 | padding: 20px auto; 903 | margin: 190px auto 20px; 904 | max-width: 600px; 905 | } 906 | 907 | footer { 908 | text-align: center; 909 | margin: 20px auto; 910 | position: relative; 911 | left: auto; 912 | bottom: auto; 913 | width: auto; 914 | } 915 | } 916 | @media print, screen and (max-width: 720px) { 917 | body { 918 | word-wrap: break-word; 919 | } 920 | #space_section{ 921 | display: none; 922 | } 923 | header { 924 | padding: 20px 20px; 925 | margin: 0; 926 | } 927 | header h1 { 928 | font-size: 32px; 929 | white-space: nowrap; 930 | overflow: hidden; 931 | text-overflow: ellipsis; 932 | -o-text-overflow: ellipsis; 933 | -ms-text-overflow: ellipsis; 934 | } 935 | header p { 936 | display: none; 937 | } 938 | 939 | #banner { 940 | top: 80px; 941 | } 942 | #banner .fork { 943 | float: left; 944 | display: inline-block; 945 | margin-left: 0px; 946 | position: fixed; 947 | left: 20px; 948 | } 949 | 950 | section { 951 | margin-bottom: 0px; 952 | width: auto; 953 | } 954 | 955 | header ul, header p.view { 956 | position: static; 957 | } 958 | } 959 | @media print, screen and (max-width: 480px) { 960 | header { 961 | position: relative; 962 | padding: 5px 0px; 963 | min-height: 0px; 964 | } 965 | header h1 { 966 | font-size: 24px; 967 | white-space: nowrap; 968 | overflow: hidden; 969 | text-overflow: ellipsis; 970 | -o-text-overflow: ellipsis; 971 | -ms-text-overflow: ellipsis; 972 | } 973 | 974 | section { 975 | margin-top: 140px; 976 | } 977 | 978 | #banner { 979 | top: 60px; 980 | position: absolute; 981 | display: block; 982 | } 983 | 984 | header ul { 985 | display: none; 986 | } 987 | } 988 | @media print { 989 | body { 990 | padding: 0.4in; 991 | font-size: 12pt; 992 | color: #444; 993 | } 994 | } 995 | @media print, screen and (max-height: 680px) { 996 | footer { 997 | text-align: center; 998 | margin: 20px auto; 999 | position: relative; 1000 | left: auto; 1001 | bottom: auto; 1002 | width: auto; 1003 | } 1004 | } 1005 | @media print, screen and (max-height: 480px) { 1006 | nav { 1007 | display: none; 1008 | } 1009 | 1010 | footer { 1011 | text-align: center; 1012 | margin: 20px auto; 1013 | position: relative; 1014 | left: auto; 1015 | bottom: auto; 1016 | width: auto; 1017 | } 1018 | } 1019 | --------------------------------------------------------------------------------