CINXE.COM

Bazel Overview - Bazel 5.4.1

<!-- /versions/main/foo/bar -> ["main", "foo", "bar"] --> <!-- /versions/0.12.3/baz.md -> ["0.12.3", "baz.md"] --> <!DOCTYPE html> <html lang="en" itemscope itemtype="https://schema.org/WebPage"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Only show Bazel version in title if it's a release --> <title>Bazel Overview - Bazel 5.4.1</title> <link rel="canonical" href="https://bazel.build/start/bazel-intro"> <!-- Webfont --> <link href="//fonts.googleapis.com/css?family=Source+Code+Pro:400,500,700|Open+Sans:400,600,700,800" rel="stylesheet"> <link rel="shortcut icon" type="image/png" href="/images/favicon.ico"> <!-- Bootstrap --> <link href="/assets/css/bootstrap.min.css" rel="stylesheet"> <link href="/assets/css/font-awesome.min.css" rel="stylesheet"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- Custom stylesheet --> <link rel="stylesheet" type="text/css" href="/css/main.css" /> <!-- metadata --> <meta name="og:title" content="Bazel Overview"/> <meta name="og:image" content="/images/bazel-og-image.png"/> <!-- google search console verification --> <meta name="google-site-verification" content="ftWLOiP2hnDW4Cw3LUGEaXU83RVIpiyxwaXFFhoakzs" /> </head> <body> <nav id="common-nav" class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="https://www.bazel.build/"> <img class="navbar-logo" src="/images/bazel-navbar.svg"> </a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="https://github.com/bazelbuild/bazel">GitHub</a></li> </ul> <form class="navbar-form navbar-right" action="/search.html" id="cse-search-box"> <div class="form-group"> <input type="hidden" name="cx" value="009927877080525621790:2pxlpaexqpc"> <input type="hidden" name="cof" value="FORID:10"> <input type="hidden" name="ie" value="UTF-8"> <input type="search" name="q" id="q" class="form-control input-sm" placeholder="Search"> </div> </form> <ul class="nav navbar-nav navbar-right"> <li> <a href="/versions/5.4.1/bazel-overview.html">Getting Started</a> </li> <li> <a href="/versions/5.4.1/guide.html">Using Bazel</a> </li> <li> <a href="/versions/5.4.1/skylark/concepts.html">Extending Bazel</a> </li> <li> <a href="https://www.bazel.build/contributing.html">Contributing</a> </li> <li> <a href="https://blog.bazel.build">Blog</a> </li> <li><a href="https://twitter.com/bazelbuild" class="nav-icon"><i class="fa fa-twitter"></i></a></li> <li><a href="http://stackoverflow.com/questions/tagged/bazel" class="nav-icon"><i class="fa fa-stack-overflow"></i></a></li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav> <div class="container vpad"> <div class="row"> <div class="col-md-2"> <a class="btn btn-default btn-lg btn-block sidebar-toggle" data-toggle="collapse" href="#sidebar-nav" aria-expanded="false" aria-controls="sidebar-nav"> <i class="glyphicon glyphicon-menu-hamburger"></i> Navigation </a> <nav class="sidebar collapse" id="sidebar-nav"> <select onchange="location.href=this.value"> <option value="" selected disabled hidden>Version: 5.4.1</option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/main/bazel-overview.html"> main </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.4.1/bazel-overview.html"> 5.4.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.4.0/bazel-overview.html"> 5.4.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.3.1/bazel-overview.html"> 5.3.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.3.0/bazel-overview.html"> 5.3.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.2.0/bazel-overview.html"> 5.2.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.1.1/bazel-overview.html"> 5.1.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.1.0/bazel-overview.html"> 5.1.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/5.0.0/bazel-overview.html"> 5.0.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.2.4/bazel-overview.html"> 4.2.4 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.2.3/bazel-overview.html"> 4.2.3 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.2.2/bazel-overview.html"> 4.2.2 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.2.1/bazel-overview.html"> 4.2.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.2.0/bazel-overview.html"> 4.2.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.1.0/bazel-overview.html"> 4.1.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/4.0.0/bazel-overview.html"> 4.0.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.7.0/bazel-overview.html"> 3.7.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.6.0/bazel-overview.html"> 3.6.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.5.1/bazel-overview.html"> 3.5.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.4.0/bazel-overview.html"> 3.4.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.3.0/bazel-overview.html"> 3.3.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.2.0/bazel-overview.html"> 3.2.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.1.0/bazel-overview.html"> 3.1.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/3.0.0/bazel-overview.html"> 3.0.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/2.2.0/bazel-overview.html"> 2.2.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/2.1.0/bazel-overview.html"> 2.1.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/2.0.0/bazel-overview.html"> 2.0.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/1.2.0/bazel-overview.html"> 1.2.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/1.1.0/bazel-overview.html"> 1.1.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/1.0.0/bazel-overview.html"> 1.0.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.29.1/bazel-overview.html"> 0.29.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.29.0/bazel-overview.html"> 0.29.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.28.0/bazel-overview.html"> 0.28.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.27.0/bazel-overview.html"> 0.27.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.26.0/bazel-overview.html"> 0.26.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.25.0/bazel-overview.html"> 0.25.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.24.0/bazel-overview.html"> 0.24.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.23.0/bazel-overview.html"> 0.23.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.22.0/bazel-overview.html"> 0.22.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.21.0/bazel-overview.html"> 0.21.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.20.0/bazel-overview.html"> 0.20.0 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.19.2/bazel-overview.html"> 0.19.2 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.19.1/bazel-overview.html"> 0.19.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.18.1/bazel-overview.html"> 0.18.1 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.17.2/bazel-overview.html"> 0.17.2 </option> <!-- reconstruct absolute url for the current page for each doc version --> <option value="/versions/0.17.1/bazel-overview.html"> 0.17.1 </option> </select> <!-- If the current version has a explicitly versioned sidebar for the major version --> <h3>Home</h3> <ul class="sidebar-nav"> <li><a href="/versions/5.4.1/bazel-overview.html">Overview</a></li> <li><a href="/versions/5.4.1/bazel-vision.html">Vision</a></li> <li><a href="/versions/5.4.1/getting-started.html">Getting Started</a></li> <li><a href="/versions/5.4.1/glossary.html">Glossary</a></li> </ul> <h3>Installing Bazel</h3> <ul class="sidebar-nav"> <li><a href="/versions/5.4.1/install.html">Overview</a></li> <li><a href="/versions/5.4.1/install-redhat.html">Fedora/CentOS</a></li> <li><a href="/versions/5.4.1/install-os-x.html">macOS</a></li> <li><a href="/versions/5.4.1/install-suse.html">openSUSE</a></li> <li><a href="/versions/5.4.1/install-ubuntu.html">Ubuntu</a></li> <li><a href="/versions/5.4.1/install-windows.html">Windows</a></li> <li><a href="/versions/5.4.1/install-compile-source.html">Compiling from Source</a></li> <li><a href="/versions/5.4.1/install-bazelisk.html">Installing with Bazelisk</a></li> </ul> <h3>Setting up your environment</h3> <ul class="sidebar-nav"> <li><a href="/versions/5.4.1/completion.html">Command-Line Completion</a></li> <li><a href="/versions/5.4.1/ide.html">Integrating with IDEs</a></li> </ul> <h3>Tutorials</h3> <ul class="sidebar-nav"> <li><a href="/versions/5.4.1/tutorial/cpp.html">C++</a></li> <li><a href="/versions/5.4.1/tutorial/java.html">Java</a></li> <li><a href="/versions/5.4.1/tutorial/android-app.html">Android</a></li> <li><a href="/versions/5.4.1/tutorial/ios-app.html">iOS</a></li> </ul> <h3>Understanding</h3> <ul class="sidebar-nav"> <li><a href="/versions/5.4.1/build-ref.html">Core Concepts</a></li> <li><a href="/versions/5.4.1/external.html">External Dependencies</a></li> <li><a href="/versions/5.4.1/bzlmod.html">Bzlmod User Guide</a></li> <li><a href="/versions/5.4.1/configurable-attributes.html">Configurable Attributes</a></li> <li><a href="/versions/5.4.1/platforms-intro.html">Platforms and Toolchains</a></li> <li><a href="/versions/5.4.1/visibility.html">Visibility</a></li> <li><a href="/versions/5.4.1/hermeticity.html">Hermeticity</a></li> </ul> <h3>Releases</h3> <ul class="sidebar-nav"> <li><a href="/versions/5.4.1/versioning.html">Release Versioning</a></li> <li><a href="/versions/5.4.1/releases.html">Release Policy</a></li> <li><a href="/versions/5.4.1/backward-compatibility.html">Backward Compatibility</a></li> <li><a href="/versions/5.4.1/updating-bazel.html">Updating Bazel</a></li> <li> <a class="sidebar-nav-heading" data-toggle="collapse" href="#release-notes-menu" aria-expanded="false" aria-controls="release-notes-menu"> Release Notes<span class="caret"></span> </a> <ul class="collapse sidebar-nav sidebar-submenu" id="release-notes-menu"> <li><a href="https://blog.bazel.build/2020/11/10/bazel-4.0-announce.html">Bazel 4.0</a></li> <li><a href="https://blog.bazel.build/2020/10/20/bazel-3-7.html">Bazel 3.7</a></li> <li><a href="https://blog.bazel.build/2020/10/06/bazel-3-6.html">Bazel 3.6</a></li> <li><a href="https://blog.bazel.build/2020/08/26/bazel-3.5.html">Bazel 3.5</a></li> <li><a href="https://blog.bazel.build/2020/07/13/bazel-3-4.html">Bazel 3.4</a></li> <li><a href="https://blog.bazel.build/2020/06/17/bazel-3-3.html">Bazel 3.3</a></li> <li><a href="https://blog.bazel.build/2020/05/27/bazel-3-2.html">Bazel 3.2</a></li> </ul> </li> </ul> </nav> </div> <div class="col-md-8"> <div class="content"> <h1 id="bazel-overview">Bazel Overview</h1> <p>Bazel is an open-source build and test tool similar to Make, Maven, and Gradle. It uses a human-readable, high-level build language. Bazel supports projects in multiple languages and builds outputs for multiple platforms. Bazel supports large codebases across multiple repositories, and large numbers of users.</p> <h2 id="benefits">Benefits</h2> <p>Bazel offers the following advantages:</p> <ul> <li> <p><strong>High-level build language.</strong> Bazel uses an abstract, human-readable language to describe the build properties of your project at a high semantical level. Unlike other tools, Bazel operates on the <em>concepts</em> of libraries, binaries, scripts, and data sets, shielding you from the complexity of writing individual calls to tools such as compilers and linkers.</p> </li> <li> <p><strong>Bazel is fast and reliable.</strong> Bazel caches all previously done work and tracks changes to both file content and build commands. This way, Bazel knows when something needs to be rebuilt, and rebuilds only that. To further speed up your builds, you can set up your project to build in a highly parallel and incremental fashion.</p> </li> <li> <p><strong>Bazel is multi-platform.</strong> Bazel runs on Linux, macOS, and Windows. Bazel can build binaries and deployable packages for multiple platforms, including desktop, server, and mobile, from the same project.</p> </li> <li> <p><strong>Bazel scales.</strong> Bazel maintains agility while handling builds with 100k+ source files. It works with multiple repositories and user bases in the tens of thousands.</p> </li> <li> <p><strong>Bazel is extensible.</strong> Many <a href="rules.html">languages</a> are supported, and you can extend Bazel to support any other language or framework.</p> </li> </ul> <h2 id="using-bazel">Using Bazel</h2> <p>To build or test a project with Bazel, you typically do the following:</p> <ol> <li> <p><strong>Set up Bazel.</strong> Download and <a href="install.html">install Bazel</a>.</p> </li> <li> <p><strong>Set up a project <a href="build-ref.html#workspaces">workspace</a></strong>, which is a directory where Bazel looks for build inputs and <code class="highlighter-rouge">BUILD</code> files, and where it stores build outputs.</p> </li> <li> <p><strong>Write a <code class="highlighter-rouge">BUILD</code> file</strong>, which tells Bazel what to build and how to build it.</p> <p>You write your <code class="highlighter-rouge">BUILD</code> file by declaring build targets using <a href="skylark/language.html">Starlark</a>, a domain-specific language. (See example <a href="https://github.com/bazelbuild/bazel/blob/master/examples/cpp/BUILD">here</a>.)</p> <p>A build target specifies a set of input artifacts that Bazel will build plus their dependencies, the build rule Bazel will use to build it, and options that configure the build rule.</p> <p>A build rule specifies the build tools Bazel will use, such as compilers and linkers, and their configurations. Bazel ships with a number of build rules covering the most common artifact types in the supported languages on supported platforms.</p> </li> <li> <p><strong>Run Bazel</strong> from the <a href="command-line-reference.html">command line</a>. Bazel places your outputs within the workspace.</p> </li> </ol> <p>In addition to building, you can also use Bazel to run <a href="test-encyclopedia.html">tests</a> and <a href="query-how-to.html">query</a> the build to trace dependencies in your code.</p> <h2 id="bazel-build-process">Bazel build process</h2> <p>When running a build or a test, Bazel does the following:</p> <ol> <li> <p><strong>Loads</strong> the <code class="highlighter-rouge">BUILD</code> files relevant to the target.</p> </li> <li> <p><strong>Analyzes</strong> the inputs and their <a href="build-ref.html#dependencies">dependencies</a>, applies the specified build rules, and produces an <a href="skylark/concepts.html#evaluation-model">action</a> graph.</p> </li> <li> <p><strong>Executes</strong> the build actions on the inputs until the final build outputs are produced.</p> </li> </ol> <p>Since all previous build work is cached, Bazel can identify and reuse cached artifacts and only rebuild or retest what鈥檚 changed. To further enforce correctness, you can set up Bazel to run builds and tests <a href="guide.html#sandboxing">hermetically</a> through sandboxing, minimizing skew and maximizing <a href="guide.html#correctness">reproducibility</a>.</p> <h3 id="action-graph">Action graph</h3> <p>The action graph represents the build artifacts, the relationships between them, and the build actions that Bazel will perform. Thanks to this graph, Bazel can <a href="guide.html#build-consistency-and-incremental-builds">track</a> changes to file content as well as changes to actions, such as build or test commands, and know what build work has previously been done. The graph also enables you to easily <a href="query-how-to.html">trace dependencies</a> in your code.</p> <h2 id="getting-started-tutorials">Getting started tutorials</h2> <p>To get started with Bazel, see <a href="getting-started.html">Getting Started</a> or jump directly to the Bazel tutorials:</p> <ul> <li><a href="tutorial/cpp.html">Tutorial: Build a C++ Project</a></li> <li><a href="tutorial/java.html">Tutorial: Build a Java Project</a></li> <li><a href="tutorial/android-app.html">Tutorial: Build an Android Application</a></li> <li><a href="tutorial/ios-app.html">Tutorial: Build an iOS Application</a></li> </ul> </div> </div> <div class="col-md-2 sticky-sidebar"> <div class="right-sidebar"> <ul class="gh-links"> <li><a href="https://github.com/bazelbuild/bazel/issues/new?title=Documentation issue: Bazel Overview&body=Documentation URL: https://docs.bazel.build/versions/5.4.1/bazel-overview.html&labels=type: documentation"><i class="fa fa-github"></i> Create issue</a></li> </ul> <ul class="page-toc"> <li class="toc-entry toc-h2"><a href="#benefits">Benefits</a></li> <li class="toc-entry toc-h2"><a href="#using-bazel">Using Bazel</a></li> <li class="toc-entry toc-h2"><a href="#bazel-build-process">Bazel build process</a> <ul class="page-toc-sublist"> <li class="toc-entry toc-h3"><a href="#action-graph">Action graph</a></li> </ul> </li> <li class="toc-entry toc-h2"><a href="#getting-started-tutorials">Getting started tutorials</a></li> </ul> </div> </div> </div> </div> <!-- Satisfaction Survey --> <script async="" defer="" src="//www.google.com/insights/consumersurveys/async_survey?site=WiW2jfuqA0qnVVi98UP0WeVsqBPB"></script> <footer class="footer"> <div class="container"> <div class="row"> <div class="col-sm-4 col-md-2"> <p>About</p> <ul class="list-unstyled"> <li><a href="https://www.bazel.build/users.html">Who's Using Bazel?</a></li> <li><a href="https://www.bazel.build/roadmap.html">Roadmap</a></li> <li><a href="https://www.bazel.build/contributing.html">Contribute</a></li> <li><a href="https://www.bazel.build/governance.html">Governance Plan</a></li> <li><a href="https://policies.google.com/privacy">Privacy Policy</a></li> <li><a href="/guide.html/sitemap.xml">Sitemap</a></li> </ul> </div> <div class="col-sm-4 col-md-2"> <p>Support</p> <ul class="list-unstyled"> <li><a href="http://stackoverflow.com/questions/tagged/bazel">Stack Overflow</a></li> <li><a href="https://github.com/bazelbuild/bazel/issues">Issue Tracker</a></li> <li><a href="/guide.html">Documentation</a></li> <li><a href="https://www.bazel.build/faq.html">FAQ</a></li> <li><a href="https://www.bazel.build/support.html">Support Policy</a></li> </ul> </div> <div class="col-sm-4 col-md-2"> <p>Stay Connected</p> <ul class="list-unstyled"> <li><a href="https://twitter.com/bazelbuild">Twitter</a></li> <li><a href="https://blog.bazel.build">Blog</a></li> <li><a href="https://github.com/bazelbuild/bazel">GitHub</a></li> <li><a href="https://groups.google.com/forum/#!forum/bazel-discuss">Discussion group</a></li> <li><a href="https://slack.bazel.build">Slack</a></li> </ul> </div> </div> <div class="row"> <div class="col-lg-12"> <p class="text-muted">&copy; 2023 Google</p> </div> </div> </div> </footer> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/assets/js/bootstrap.min.js"></script> <!-- Anchor JS --> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.2.0/anchor.min.js"></script> <script> // Automatically add anchors and links to all header elements that don't already have them. anchors.add(); </script> <script> var shiftWindow = function() { if (location.hash.length !== 0) { window.scrollBy(0, -50); } }; window.addEventListener("hashchange", shiftWindow); var highlightCurrentSidebarNav = function() { var href = location.pathname; var item = $('#sidebar-nav [href$="' + href + '"]'); if (item) { var li = item.parent(); li.addClass("active"); if (li.parent() && li.parent().is("ul")) { do { var ul = li.parent(); if (ul.hasClass("collapse")) { ul.collapse("show"); } li = ul.parent(); } while (li && li.is("li")); } } }; $(document).ready(function() { // Scroll to anchor of location hash, adjusted for fixed navbar. window.setTimeout(function() { shiftWindow(); }, 1); // Flip the caret when submenu toggles are clicked. $(".sidebar-submenu").on("show.bs.collapse", function() { var toggle = $('[href$="#' + $(this).attr('id') + '"]'); if (toggle) { toggle.addClass("dropup"); } }); $(".sidebar-submenu").on("hide.bs.collapse", function() { var toggle = $('[href$="#' + $(this).attr('id') + '"]'); if (toggle) { toggle.removeClass("dropup"); } }); // Highlight the current page on the sidebar nav. highlightCurrentSidebarNav(); }); </script> <!-- Google Analytics tracking code --> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-61082125-1', 'auto'); ga('send', 'pageview'); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10