From 71fd42f788bc68b55c4192a5f8f7f7905b307ef5 Mon Sep 17 00:00:00 2001 From: Weidong Shao Date: Wed, 11 Dec 2013 19:08:36 +0000 Subject: [PATCH] Initial commit --- README.md | 33 +- public/css/base.css | 278 + public/css/github.css | 1 + public/css/github2.css | 1 + public/css/style-ie.css | 3 + public/css/style.css | 220 + public/img/add_button_16px.png | Bin 0 -> 523 bytes public/img/ajax_loader.gif | Bin 0 -> 19110 bytes public/img/asc.gif | Bin 0 -> 54 bytes public/img/bg.gif | Bin 0 -> 64 bytes public/img/desc.gif | Bin 0 -> 54 bytes public/img/features_graphic.png | Bin 0 -> 39579 bytes public/img/filter_clear_16px.png | Bin 0 -> 410 bytes public/img/green_check_16px.png | Bin 0 -> 338 bytes public/img/green_check_large_16px.png | Bin 0 -> 419 bytes public/img/hw_000353.jpg | Bin 0 -> 8029 bytes public/img/hw_000469.jpg | Bin 0 -> 7951 bytes public/img/hw_s_221828.jpg | Bin 0 -> 349 bytes public/img/hwico.ico.png | Bin 0 -> 4095 bytes public/img/info_icon_16px.png | Bin 0 -> 665 bytes public/img/openstack_welcome_graphics.png | Bin 0 -> 44783 bytes public/img/openstack_welcome_graphics_std.png | Bin 0 -> 29675 bytes public/img/remove_button_16px.png | Bin 0 -> 493 bytes public/img/router.png | Bin 0 -> 1799 bytes public/img/server.png | Bin 0 -> 1687 bytes ...atus_mask (#0000FF - 50% transparency).png | Bin 0 -> 315 bytes public/img/switch.png | Bin 0 -> 1677 bytes public/img/topology_description.png | Bin 0 -> 43201 bytes public/img/yellow_arrow_left_16px.png | Bin 0 -> 367 bytes public/img/yellow_arrow_right_16px.png | Bin 0 -> 269 bytes public/lib/d3.js | 8981 +++++++++ public/lib/d3.min.js | 5 + public/lib/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../lib/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 212 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 208 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 207 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes public/lib/images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes public/lib/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes public/lib/images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes public/lib/images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes public/lib/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes public/lib/jquery-1.10.1.min.js | 6 + public/lib/jquery-ui-1.10.3.custom.css | 1177 ++ public/lib/jquery-ui-1.10.3.custom.js | 14971 ++++++++++++++++ public/lib/jquery.dataTables.js | 12099 +++++++++++++ public/lib/jquery.numeric.js | 291 + public/ods/config.js | 80 + public/ods/fixtures/fixtures.js | 381 + public/ods/funcunit.html | 15 + public/ods/models/cluster.js | 88 + public/ods/models/models.js | 4 + public/ods/models/servers.js | 43 + public/ods/ods.css | 0 public/ods/ods.html | 71 + public/ods/ods.js | 59 + public/ods/ods.md | 3 + public/ods/production.css | 5 + public/ods/production.js | 1021 ++ public/ods/qunit.html | 21 + public/ods/scripts/build.html | 21 + public/ods/scripts/build.js | 6 + public/ods/scripts/clean.js | 17 + public/ods/scripts/crawl.js | 7 + public/ods/scripts/docs.js | 8 + public/ods/ui/features/features.js | 43 + public/ods/ui/features/features_test.html | 27 + public/ods/ui/features/views/before_begin.ejs | 27 + public/ods/ui/features/views/init.ejs | 35 + public/ods/ui/host_config/host_config.css | 7 + public/ods/ui/host_config/host_config.js | 320 + .../ods/ui/host_config/host_config_test.html | 77 + public/ods/ui/host_config/views/init.ejs | 78 + .../ods/ui/host_config/views/server_row.ejs | 5 + public/ods/ui/install_review/install.css | 46 + .../ods/ui/install_review/install_review.css | 64 + .../ods/ui/install_review/install_review.js | 648 + .../install_review/install_review_test.html | 79 + public/ods/ui/install_review/views/init.ejs | 90 + .../ods/ui/install_review/views/install.ejs | 46 + .../ui/install_review/views/progress_row.ejs | 9 + public/ods/ui/nav/nav.js | 127 + public/ods/ui/nav/views/init.ejs | 9 + public/ods/ui/networking/networking.css | 43 + public/ods/ui/networking/networking.js | 396 + public/ods/ui/networking/networking_test.html | 42 + public/ods/ui/networking/views/init.ejs | 180 + public/ods/ui/security/security.css | 15 + public/ods/ui/security/security.js | 207 + public/ods/ui/security/security_test.html | 42 + public/ods/ui/security/views/init.ejs | 67 + public/ods/ui/servers/servers.css | 105 + public/ods/ui/servers/servers.js | 632 + public/ods/ui/servers/servers_test.html | 42 + public/ods/ui/servers/views/init.ejs | 78 + public/ods/ui/servers/views/switch_row.ejs | 15 + public/ods/ui/welcome/views/init.ejs | 20 + public/ods/ui/welcome/welcome.js | 26 + public/ods/ui/welcome/welcome_test.html | 28 + 103 files changed, 43589 insertions(+), 2 deletions(-) create mode 100644 public/css/base.css create mode 100644 public/css/github.css create mode 100644 public/css/github2.css create mode 100644 public/css/style-ie.css create mode 100644 public/css/style.css create mode 100644 public/img/add_button_16px.png create mode 100644 public/img/ajax_loader.gif create mode 100644 public/img/asc.gif create mode 100644 public/img/bg.gif create mode 100644 public/img/desc.gif create mode 100644 public/img/features_graphic.png create mode 100644 public/img/filter_clear_16px.png create mode 100644 public/img/green_check_16px.png create mode 100644 public/img/green_check_large_16px.png create mode 100644 public/img/hw_000353.jpg create mode 100644 public/img/hw_000469.jpg create mode 100644 public/img/hw_s_221828.jpg create mode 100644 public/img/hwico.ico.png create mode 100644 public/img/info_icon_16px.png create mode 100644 public/img/openstack_welcome_graphics.png create mode 100644 public/img/openstack_welcome_graphics_std.png create mode 100644 public/img/remove_button_16px.png create mode 100644 public/img/router.png create mode 100644 public/img/server.png create mode 100644 public/img/server_status_mask (#0000FF - 50% transparency).png create mode 100644 public/img/switch.png create mode 100644 public/img/topology_description.png create mode 100644 public/img/yellow_arrow_left_16px.png create mode 100644 public/img/yellow_arrow_right_16px.png create mode 100644 public/lib/d3.js create mode 100644 public/lib/d3.min.js create mode 100644 public/lib/images/animated-overlay.gif create mode 100644 public/lib/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 public/lib/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 public/lib/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 public/lib/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 public/lib/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 public/lib/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 public/lib/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 public/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 public/lib/images/ui-icons_222222_256x240.png create mode 100644 public/lib/images/ui-icons_2e83ff_256x240.png create mode 100644 public/lib/images/ui-icons_454545_256x240.png create mode 100644 public/lib/images/ui-icons_888888_256x240.png create mode 100644 public/lib/images/ui-icons_cd0a0a_256x240.png create mode 100644 public/lib/jquery-1.10.1.min.js create mode 100644 public/lib/jquery-ui-1.10.3.custom.css create mode 100644 public/lib/jquery-ui-1.10.3.custom.js create mode 100644 public/lib/jquery.dataTables.js create mode 100644 public/lib/jquery.numeric.js create mode 100644 public/ods/config.js create mode 100644 public/ods/fixtures/fixtures.js create mode 100644 public/ods/funcunit.html create mode 100644 public/ods/models/cluster.js create mode 100644 public/ods/models/models.js create mode 100644 public/ods/models/servers.js create mode 100644 public/ods/ods.css create mode 100644 public/ods/ods.html create mode 100644 public/ods/ods.js create mode 100644 public/ods/ods.md create mode 100644 public/ods/production.css create mode 100644 public/ods/production.js create mode 100644 public/ods/qunit.html create mode 100644 public/ods/scripts/build.html create mode 100644 public/ods/scripts/build.js create mode 100644 public/ods/scripts/clean.js create mode 100644 public/ods/scripts/crawl.js create mode 100644 public/ods/scripts/docs.js create mode 100644 public/ods/ui/features/features.js create mode 100644 public/ods/ui/features/features_test.html create mode 100644 public/ods/ui/features/views/before_begin.ejs create mode 100644 public/ods/ui/features/views/init.ejs create mode 100644 public/ods/ui/host_config/host_config.css create mode 100644 public/ods/ui/host_config/host_config.js create mode 100644 public/ods/ui/host_config/host_config_test.html create mode 100644 public/ods/ui/host_config/views/init.ejs create mode 100644 public/ods/ui/host_config/views/server_row.ejs create mode 100644 public/ods/ui/install_review/install.css create mode 100644 public/ods/ui/install_review/install_review.css create mode 100644 public/ods/ui/install_review/install_review.js create mode 100644 public/ods/ui/install_review/install_review_test.html create mode 100644 public/ods/ui/install_review/views/init.ejs create mode 100644 public/ods/ui/install_review/views/install.ejs create mode 100644 public/ods/ui/install_review/views/progress_row.ejs create mode 100644 public/ods/ui/nav/nav.js create mode 100644 public/ods/ui/nav/views/init.ejs create mode 100644 public/ods/ui/networking/networking.css create mode 100644 public/ods/ui/networking/networking.js create mode 100644 public/ods/ui/networking/networking_test.html create mode 100644 public/ods/ui/networking/views/init.ejs create mode 100644 public/ods/ui/security/security.css create mode 100644 public/ods/ui/security/security.js create mode 100644 public/ods/ui/security/security_test.html create mode 100644 public/ods/ui/security/views/init.ejs create mode 100644 public/ods/ui/servers/servers.css create mode 100644 public/ods/ui/servers/servers.js create mode 100644 public/ods/ui/servers/servers_test.html create mode 100644 public/ods/ui/servers/views/init.ejs create mode 100644 public/ods/ui/servers/views/switch_row.ejs create mode 100644 public/ods/ui/welcome/views/init.ejs create mode 100644 public/ods/ui/welcome/welcome.js create mode 100644 public/ods/ui/welcome/welcome_test.html diff --git a/README.md b/README.md index 3ba17fd..046801d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,33 @@ -compass-web +Compass-Web =========== -Web UI for Compass +**Compass-Web** is a web-based UI consuming the Restful API service provided by [Compass](https://github.com/huawei-cloud/compass) to pragmatically deploy an OpenStack system on to a set of raw physical resources. It is used for demo purpose. It can be used as a base to develop a UI for more sophisticated use cases. + +Compass-Web is based on [JavaScriptMVC](http://v32.javascriptmvc.com/) framework. It has five modules: Servers, Security, Networking, Host Configuration and Deployment. + + 1. *Servers Module*. Discover available servers with switch information and add a subset of the servers to a cluster. + + 2. *Security Module*. Specify credentials for the OpenStack system. + + 3. *Networking Module*. Specify network addresses needed to facilitate the OpenStack cluster you want to use for your OpenStack servers. + + 4. *Host Configuration Module* Configure host names of the servers in the cluster. + + 5. *Deployment Module* Deploy OpenStack onto the servers with the realtime progressbars. + + +Framework +--------- +[JavaScriptMVC v3.2.4](http://v32.javascriptmvc.com/) +JavaScriptMVC is a MIT licensed, client-side, JavaScript framework that builds maintainable, error-free, lightweight applications as quick as possible. + +Third-party Libraries +--------------------- + * [jQueryUI](http://jqueryui.com/) + jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. It is included for widgets such as accordion, tabs, dialog and progressbar. + + * [d3](http://d3js.org/) + D3.js is a JavaScript library for manipulating documents based on data. It is included for the graph-based progress bars in Deployment module to have a collapsible tree layout for switches and servers. + + * [DataTables](http://www.datatables.net/) + DataTables is a plug-in for the jQuery Javascript library to add advanced interaction controls to any HTML table. It is included to have advanced interaction controls to HTML table in Servers and Deployment modules. \ No newline at end of file diff --git a/public/css/base.css b/public/css/base.css new file mode 100644 index 0000000..7bc7e08 --- /dev/null +++ b/public/css/base.css @@ -0,0 +1,278 @@ +.float_left { + float: left; +} + +.float_right { + float: right; +} + +.clear { + clear: both; +} + +.bold { + font-weight: bold; +} + +.underline { + text-decoration:underline; +} + +.italic { + font-style: italic; +} + +.right { + text-align: right; +} + +.left { + text-align: left; +} + +.btn_continue { + /*background gradient*/ + background: rgba(190,223,189,1); + background: -moz-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(190,223,189,1)), color-stop(100%, rgba(0,128,0,1))); + background: -webkit-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: -o-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: -ms-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: linear-gradient(to bottom, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bedfbd', endColorstr='#008000', GradientType=0 ); + + /*border*/ + -moz-border-radius:6px; + -webkit-border-radius:6px; + border-radius:6px; + border:1px solid #aaaaaa; + + display:inline-block; + color:#ffffff; + font-family:arial; + font-size:18px; + padding: 8px; + width: 170px; + text-decoration:none; +} + +.btn_continue:hover { + /*background gradient*/ + background: rgba(0,128,0,1); + background: -moz-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(0,128,0,1)), color-stop(100%, rgba(190,223,189,1))); + background: -webkit-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: -o-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: -ms-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: linear-gradient(to bottom, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#008000', endColorstr='#bedfbd', GradientType=0 ); +} + +.btn_continue:active { + position:relative; + top:1px; +} + +.btn_continue_inactive { + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(47%, rgba(246,246,246,1)), color-stop(100%, rgba(230,230,230,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0 ); + + /*border*/ + -moz-border-radius:6px; + -webkit-border-radius:6px; + border-radius:6px; + border:1px solid #c0c0c0; + + display:inline-block; + color:#969696; + font-family:arial; + font-size:18px; + padding: 8px; + width: 170px; + text-decoration:none; +} + +.btn_find { + /*background gradient*/ + background: rgba(141,146,251,1); + background: -moz-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(141,146,251,1)), color-stop(100%, rgba(50,54,162,1))); + background: -webkit-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: -o-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: -ms-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: linear-gradient(to bottom, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8d92fb', endColorstr='#3236a2', GradientType=0 ); + + /*border*/ + -moz-border-radius:4px; + -webkit-border-radius:4px; + border-radius:4px; + border:1px solid #808080; + + display:inline-block; + color:#ffffff; + font-family:arial; + font-size:12px; + padding: 3px 20px; + text-decoration:none; +} +.btn_find:hover { + background: rgba(50,54,162,1); + background: -moz-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(50,54,162,1)), color-stop(100%, rgba(141,146,251,1))); + background: -webkit-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: -o-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: -ms-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: linear-gradient(to bottom, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3236a2', endColorstr='#8d92fb', GradientType=0 ); +} + +.btn_find_inactive { + /*background gradient*/ + background: rgba(249,249,249,1); + background: -moz-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(249,249,249,1)), color-stop(47%, rgba(246,246,246,1)), color-stop(100%, rgba(227,227,227,1))); + background: -webkit-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -o-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -ms-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: linear-gradient(to bottom, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e3e3e3', GradientType=0 ); + + /*border*/ + -moz-border-radius:4px; + -webkit-border-radius:4px; + border-radius:4px; + border:1px solid #c0c0c0; + + display:inline-block; + color:#3f3f3f; + font-family:arial; + font-size:12px; + padding: 3px 20px; + text-decoration:none; +} + +.rounded { + border: 1px solid #aaaaaa; + + background-color: rgb(255, 255, 255); + padding: 20px; + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + + color:#3f3f3f; + font-family:arial; + font-size:14px; +} + +div.gradient { + background: rgba(249,249,249,1); + background: -moz-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(249,249,249,1)), color-stop(47%, rgba(246,246,246,1)), color-stop(100%, rgba(227,227,227,1))); + background: -webkit-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -o-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -ms-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: linear-gradient(to bottom, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e3e3e3', GradientType=0 ); +} + +input.rounded { + border: 1px solid #c0c0c0; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + + -webkit-box-shadow: inset 0px 0px 5px 0px rgba(215,211,207,0.75); + -moz-box-shadow: inset 0px 0px 5px 0px rgba(215,211,207,0.75); + box-shadow: inset 0px 0px 5px 0px rgba(215,211,207,0.75); + + padding: 4px 7px; + outline: 0; + -webkit-appearance: none; +} + +input.rounded:focus { + border-color: #3A01DF; +} + +.tab_nav { + /*background gradient*/ + background: rgba(249,249,249,1); + background: -moz-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(249,249,249,1)), color-stop(100%, rgba(227,227,227,1))); + background: -webkit-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: -o-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: -ms-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: linear-gradient(to bottom, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e3e3e3', GradientType=0 ); + + /*border*/ + border-radius: 4px 0px 0px 4px; + -moz-border-radius: 4px 0px 0px 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-left: 1px solid #c0c0c0; + border-top: 1px solid #c0c0c0; + border-bottom: 1px solid #c0c0c0; + + display:inline-block; + color:#3f3f3f; + font-family:arial; + font-size:12px; + padding: 1px 5px; + text-decoration:none; +} + +.tab_nav:hover { + cursor: pointer; +} + +.tab_nav_active { + /*background gradient*/ + background: rgba(50,54,162,1) !important; + background: -moz-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(50,54,162,1)), color-stop(100%, rgba(141,146,251,1))) !important; + background: -webkit-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: -o-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: -ms-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: linear-gradient(to bottom, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3236a2', endColorstr='#8d92fb', GradientType=0 ) !important; + + /*border*/ + border-radius: 4px 0px 0px 4px; + -moz-border-radius: 4px 0px 0px 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-left: 1px solid #c0c0c0; + border-top: 1px solid #c0c0c0; + border-bottom: 1px solid #c0c0c0; + + display:inline-block; + color:#ffffff !important; + font-family:arial; + font-size:12px; + padding: 1px 5px; + text-decoration:none; +} + +.error { + background-color: #FFE6E6 !important; + border-color: red !important; +} + +.errhint { + border: 1px solid red; + padding: 4px 8px; + background-color: white; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + color: red; + font-weight: bold; +} \ No newline at end of file diff --git a/public/css/github.css b/public/css/github.css new file mode 100644 index 0000000..9b64d40 --- /dev/null +++ b/public/css/github.css @@ -0,0 +1 @@ +@charset "UTF-8";.container{width:980px;margin-left:auto;margin-right:auto;-moz-box-sizing:border-box;box-sizing:border-box}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}.wider .container{width:960px}#site-container>.container:first-child{margin-top:20px}.columns:before,.columns:after{content:" ";display:table}.columns:after{clear:both}.columns.typical .main{float:left;width:620px}.columns.typical .sidebar{float:right;width:330px}.columns.typical.compact-sidebar .main{width:650px}.columns.typical.compact-sidebar .sidebar{width:230px}.columns.dashcols .main{float:left;width:620px}.columns.dashcols .sidebar{float:right;width:337px}.columns.equacols .column{width:470px;float:left}.columns.equacols .secondary{float:right}.columns.equacols.bordered{border-top:1px solid #ddd;border-bottom:1px solid #ddd;background:url("/images/modules/global/column_separator.gif?3e3a799f") 50% 0 repeat-y}.contactcols .first{float:left;width:620px}.contactcols .last{float:right;width:320px}.columns.hooks .sidebar{float:left;width:210px}.columns.hooks .main{float:right;width:470px}.columns.browser{position:relative}.columns.browser .sidebar{float:left;width:220px;padding:0}.columns.browser .sidebar .button{text-align:center;display:block}.columns.browser .sidebar h3:first-child{margin-top:0}.columns.browser .main{margin-left:240px;padding:0;float:none}.columns.browser.right-sidebar .main{margin-left:0;margin-right:240px}.columns.browser.right-sidebar .sidebar{float:right}.columns.content-left .main{float:left;width:730px}.columns.content-left .sidebar{float:right;width:240px}.columns.fourcols .column{float:left;margin-left:20px;width:215px}.columns.fourcols .column.leftmost{margin-left:0}.wider .columns.content-left .main{float:left;width:670px}.wider .columns.content-left .sidebar{float:right;width:248px}.wider .feature-content{padding:0 5px}.wider .columns.equacols .first{float:left;width:460px}.wider .columns.equacols .last{float:right;width:460px}.wider .columns.threecols .column{float:left;width:300px;margin-left:24px}.wider .columns.threecols .column.first{margin-left:0}.content-sec,.content-main{position:relative;float:left}.content-sec{width:200px}.content-main{width:720px;margin-left:60px}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4,h5,h6{margin-top:15px;margin-bottom:15px;line-height:1.1}h1{font-size:30px}h2{font-size:21px}h3{font-size:16px}h4{font-size:14px}h5{font-size:12px}h6{font-size:11px}small{font-size:90%}blockquote{margin:0}.lead{margin-bottom:30px;font-size:20px;font-weight:300;color:#555}ul,ol{padding:0;margin-top:0;margin-bottom:0}dd{margin-left:0}tt,code,pre{font-family:Consolas, "Liberation Mono", Courier, monospace;font-size:12px}pre{margin-top:0;margin-bottom:0}.user-mention,.team-mention{font-weight:bold;color:#333}a.book{display:inline-block;margin-left:-2px;padding:0 5px 5px 0;background:url("/images/modules/books/background-effect.gif?2ddfe490") 0 0 no-repeat}a.book>img{width:100px;height:130px;box-shadow:inset 1px 1px 0 rgba(0,0,0,0.1)}.callout{margin:15px 0;padding:10px;font-size:13px;color:#8d8d6d;background:#fffef1;border:1px solid #e5e2c8;border-radius:4px}.callout strong{font-weight:bold;color:#000}.callout h2{margin:0;font-size:16px;font-weight:300}.callout p:last-child{margin-bottom:0}.callout hr{margin:10px 0 10px -10px;width:100%;padding:0 10px;background:transparent;border-top:1px solid #e5e2c8;border-bottom:1px solid #fff}.callout.subdued{margin:10px 0;color:#666;border-color:#ddd;background:#f8f8f8}p.subdued{font-size:13px;color:#666}.featured-callout{margin:15px 0;padding:10px;font-size:12px;color:#333;background:#e8f0f5;border:1px solid #d2d9de;border-right-color:#e5e9ed;border-bottom-color:#e5e9ed;border-radius:3px}.featured-callout .rule{width:100%;padding:0 10px;margin:10px 0 10px -10px;border-top:1px solid #c6d5df;border-bottom:1px solid #fff}.featured-callout h2{margin:0;font-size:14px;font-weight:bold;line-height:20px;color:#000}.featured-callout ol,.featured-callout ul{margin-left:20px}.featured-callout ol li,.featured-callout ul li{margin:5px 0}.featured-callout p:last-child{margin-bottom:0}.featured-callout p.more{font-weight:bold}.featured-callout pre.console{padding:5px;color:#eee;background:#333;border:1px solid #000;border-right-color:#222;border-bottom-color:#222;border-radius:3px}.featured-callout pre.console code{font-size:11px}.featured-callout .diagram{margin:15px 0;text-align:center}.featured-callout .screenshot{margin:15px 0;padding:1px;background:#fff;border:1px solid #b4cad8}.featured-callout .screenshot img{width:100%}.mini-callout{margin:15px 0;padding:10px;color:#5d5900;border:1px solid #e7e7ce;border-radius:5px;background-color:#fffde3;background-image:-moz-linear-gradient(#fffff6, #fffde3);background-image:-webkit-linear-gradient(#fffff6, #fffde3);background-image:linear-gradient(#fffff6, #fffde3);background-repeat:repeat-x}.mini-callout img{position:relative;top:-2px;vertical-align:middle;margin-right:5px}.inset-callout{margin:15px 0;padding:10px;font-size:12px;color:#333;background:#eee;border:1px solid #d5d5d5;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}.help-callout{font-size:11px}.help-callout p:last-child{margin-bottom:0}.help-callout h2{margin-top:20px}.help-callout h2:first-child{margin:0}.help-callout code{word-wrap:break-word}.featured-callout .mega-octicon{vertical-align:middle}.infotip{margin:15px 0;padding:10px;font-size:12px;color:#6d6d4b;background:#ffffde;border:1px solid #e4e4c6;border-right-color:#eff2c7;border-bottom-color:#eff2c7;border-radius:3px}.infotip p{margin:0}.infotip p+p{margin-top:15px}.dashboard-notice{position:relative;margin:0 0 20px 0;padding:13px;font-size:12px;color:#333;border:1px solid #e7e7ce;border-radius:5px;background-color:#fffde3;background-image:-moz-linear-gradient(#fffff6, #fffde3);background-image:-webkit-linear-gradient(#fffff6, #fffde3);background-image:linear-gradient(#fffff6, #fffde3);background-repeat:repeat-x}.dashboard-notice .dismiss{position:absolute;display:block;top:5px;right:5px;width:16px;height:16px;cursor:pointer;color:#ceceb8}.dashboard-notice .dismiss:hover{color:#c60000}.dashboard-notice .title{margin-left:-13px;margin-bottom:13px;width:100%;padding:0 13px 13px;border-bottom:1px solid #e7e7ce}.dashboard-notice .title p{margin:0;font-size:14px;color:#666}.dashboard-notice h2{margin:0;font-size:16px;font-weight:normal;color:#000}.dashboard-notice p{margin-top:0}.dashboard-notice p:last-child{margin-bottom:0}.dashboard-notice p.no-title{margin-top:0;padding-right:5px}.dashboard-notice .inset-figure{margin:0 0 10px 15px;float:right;clear:right;padding:6px;background:#fff;border:1px solid #e4e4e4;border-right-color:#f4f4f4;border-bottom-color:#fff;border-radius:3px}.dashboard-notice .inset-comment{margin:15px 0;padding:6px;background:#fff;color:#444;border:1px solid #e4e4e4;border-right-color:#f4f4f4;border-bottom-color:#fff;border-radius:3px}.dashboard-notice ul{margin-left:25px}.dashboard-notice .coupon{margin:15px 0;padding:10px;text-align:center;font-weight:bold;font-size:20px;background:#fff;border:1px dashed #d1e5ff}.dashboard-notice.org-newbie .fancytitle .octicon-organization{position:relative;float:left;color:#dddb8e;margin-right:10px}.org-newbie .inset-figure{margin-top:1px;margin-bottom:0}.octotip{position:relative;margin:10px 0;padding:10px 10px 10px 32px;color:#25494f;font-size:13px;background:#e5f8fc;border:1px solid #b1ecf8;border-radius:3px;box-shadow:inset 0 0 8px rgba(0,0,0,0.08)}.octotip p{margin:0}.octotip .tip-flag{float:left;margin-top:2px;margin-left:-22px;color:rgba(37,73,79,0.15)}.octotip .dismiss{position:absolute;display:block;top:50%;right:5px;margin-top:-9px;cursor:pointer}.octotip .dismiss:hover{color:#000}.frame .octotip{margin-top:0}.kbd{display:inline-block;padding:3px 5px;color:#000;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:11px;background-color:#e7e7e7;background-image:-moz-linear-gradient(#fefefe, #e7e7e7);background-image:-webkit-linear-gradient(#fefefe, #e7e7e7);background-image:linear-gradient(#fefefe, #e7e7e7);background-repeat:repeat-x;border:1px solid #cfcfcf;border-radius:2px}#facebox .badmono,.kbd.badmono{font-family:sans-serif;font-weight:bold}fieldset{margin:0;padding:0;border:0}label,input[type="text"],#adv_code_search .search-page-label,input[type="password"],input[type="email"],input[type="number"],input[type="tel"],input[type="url"],textarea{font-size:13px}label{font-weight:bold}input[type="text"],#adv_code_search .search-page-label,input[type="password"],input[type="email"],input[type="number"],input[type="tel"],input[type="url"],textarea{min-height:34px;padding:7px 8px;outline:none;color:#333;background-color:#fff;background-repeat:no-repeat;background-position:right center;border:1px solid #ccc;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075);-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;vertical-align:middle}input[type="text"].focus,#adv_code_search .focus.search-page-label,input[type="text"]:focus,.focused .drag-and-drop,#adv_code_search .search-page-label:focus,input[type="password"].focus,input[type="password"]:focus,input[type="email"].focus,input[type="email"]:focus,input[type="number"].focus,input[type="number"]:focus,input[type="tel"].focus,input[type="tel"]:focus,input[type="url"].focus,input[type="url"]:focus,textarea.focus,textarea:focus{border-color:#51a7e8;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}::-webkit-input-placeholder,:-moz-placeholder{color:#aaa}::-webkit-validation-bubble-message{color:#fff;background:#9c2400;border:0;border-radius:3px;font-size:12px;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.1)}input::-webkit-validation-bubble-icon{display:none}::-webkit-validation-bubble-arrow{background-color:#9c2400;border:solid 1px #9c2400;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.1)}input.input-mini{min-height:24px;padding-top:4px;padding-bottom:4px;font-size:12px}.input-block{display:block;width:100%}dl.form{margin:15px 0}dl.form input[type="text"],dl.form #adv_code_search .search-page-label,#adv_code_search dl.form .search-page-label,dl.form input[type="password"],dl.form input[type="email"],dl.form textarea{background-color:#fafafa}dl.form input[type="text"]:focus,dl.form .focused .drag-and-drop,.focused dl.form .drag-and-drop,dl.form #adv_code_search .search-page-label:focus,#adv_code_search dl.form .search-page-label:focus,dl.form input[type="password"]:focus,dl.form input[type="email"]:focus,dl.form textarea:focus{background-color:#fff}dl.form>dt{margin:0 0 6px 0}dl.form>dt label{position:relative}dl.form.flattened>dt{float:left;line-height:32px;margin:0}dl.form.flattened>dd{line-height:32px}dl.form>dd input[type="text"],dl.form>dd #adv_code_search .search-page-label,#adv_code_search dl.form>dd .search-page-label,dl.form>dd input[type="password"],dl.form>dd input[type="email"]{margin-right:5px;width:440px;max-width:100%;background-position-x:98%}dl.form>dd input[type="text"].short,dl.form>dd #adv_code_search .short.search-page-label,#adv_code_search dl.form>dd .short.search-page-label,dl.form>dd input[type="password"].short,dl.form>dd input[type="email"].short{width:250px}dl.form>dd input[type="text"].shorter,dl.form>dd #adv_code_search .shorter.search-page-label,#adv_code_search dl.form>dd .shorter.search-page-label,dl.form>dd input[type="password"].shorter,dl.form>dd input[type="email"].shorter{width:130px}dl.form>dd input[type="text"].long,dl.form>dd #adv_code_search .long.search-page-label,#adv_code_search dl.form>dd .long.search-page-label,dl.form>dd input[type="password"].long,dl.form>dd input[type="email"].long{width:100%}dl.form>dd input[type="text"].is-autocheck-loading,dl.form>dd #adv_code_search .is-autocheck-loading.search-page-label,#adv_code_search dl.form>dd .is-autocheck-loading.search-page-label,dl.form>dd input[type="password"].is-autocheck-loading,dl.form>dd input[type="email"].is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px}dl.form>dd input[type="text"].is-autocheck-successful,dl.form>dd #adv_code_search .is-autocheck-successful.search-page-label,#adv_code_search dl.form>dd .is-autocheck-successful.search-page-label,dl.form>dd input[type="password"].is-autocheck-successful,dl.form>dd input[type="email"].is-autocheck-successful{background-image:url("/images/modules/ajax/success.png?0fe289ae")}dl.form>dd input[type="text"].is-autocheck-errored,dl.form>dd #adv_code_search .is-autocheck-errored.search-page-label,#adv_code_search dl.form>dd .is-autocheck-errored.search-page-label,dl.form>dd input[type="password"].is-autocheck-errored,dl.form>dd input[type="email"].is-autocheck-errored{background-image:url("/images/modules/ajax/error.png?ac4dcc78")}dl.form>dd textarea{width:100%;height:200px;min-height:200px}dl.form>dd textarea.short{height:50px;min-height:50px}dl.form>dd p.note{margin:4px 0 2px 0;font-size:12px;min-height:17px;color:#777}dl.form>dd p.note .spinner{vertical-align:middle;margin-right:3px}dl.form>dd h4{margin:4px 0 0 0}dl.form>dd h4.is-error{color:#bd2c00}dl.form>dd h4.is-success{color:#6cc644}dl.form>dd h4+p.note{margin-top:0}dl.form.required>dt>label:after{content:"*";color:#9f1006;padding-left:5px}.form-checkbox{margin:15px 0;padding-left:20px;vertical-align:middle}.form-checkbox label em.highlight{position:relative;left:-4px;padding:2px 4px;font-style:normal;background:#fffbdc;border-radius:3px}.form-checkbox input[type=checkbox],.form-checkbox input[type=radio]{float:left;margin:2px 0 0 -20px;vertical-align:middle}.form-checkbox .note{margin:0;display:block;font-size:12px;font-weight:normal;color:#666}.form-cards{margin:0 0 15px;height:31px}.form-cards>.cards{margin:0}.form-cards>.cards>li{list-style-type:none;float:left;margin:0 4px 0 0}.form-cards>.cards>li.text{font-size:11px;color:#999;line-height:31px}.form-cards>.cards .card{float:left;width:47px;height:31px;text-indent:-9999px;background-position:0 0;background-image:url("/images/modules/pricing/credit-cards-@1x.png?cd91cbfa")}.form-cards>.cards .card.visa{background-position:0 0}.form-cards>.cards .card.american_express{background-position:-50px 0}.form-cards>.cards .card.master{background-position:-100px 0}.form-cards>.cards .card.discover{background-position:-150px 0}.form-cards>.cards .card.jcb{background-position:-200px 0}.form-cards>.cards .card.diners_club{background-position:-250px 0}.form-cards>.cards .card.disabled{opacity:.3}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.form-cards>.cards .card{background-image:url("/images/modules/pricing/credit-cards-@2x.png?68bc3c82");background-size:300px 31px}}dl.form .success,dl.form .error,dl.form .indicator{display:none;font-size:12px;font-weight:bold}dl.form.loading{opacity:0.5}dl.form.loading .indicator{display:inline}dl.form.successful .success{display:inline;color:#339900}dl.form.errored>dt label{color:#990000}dl.form.errored .error{display:inline;color:#990000}dl.form.errored dd.error,dl.form.errored dd.warning{display:inline-block;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}dl.form.warn .warning{display:inline;color:#990000}dl.form.warn dd.warning{display:inline-block;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}dl.form .form-note{margin-top:-1px;display:inline-block;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.hfields{margin:15px 0}.hfields:before,.hfields:after{content:" ";display:table}.hfields:after{clear:both}.hfields dl.form{float:left;margin:0 30px 0 0}.hfields dl.form>dt label{display:inline-block;margin:5px 0 0 0;color:#666}.hfields dl.form>dt label img{position:relative;top:-2px}.hfields .button{float:left;margin:23px 25px 0 -20px}.hfields select{margin-top:5px}.fieldgroup .fields dl.form:first-child{margin-top:0}html.no-dnd-uploads .drag-and-drop{display:none}html.no-dnd-uploads .upload-enabled textarea{border-bottom:1px solid #ddd}.drag-and-drop{margin:0;padding:7px 10px;color:#aaa;font-size:13px;line-height:16px;background-color:#fafafa;border:1px solid #ccc;border-top:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;-moz-box-sizing:border-box;box-sizing:border-box}.drag-and-drop .manual-file-chooser{position:absolute;width:240px;margin-left:-80px;opacity:0.0001;cursor:pointer}.drag-and-drop .manual-file-chooser:hover+.manual-file-chooser-text{text-decoration:underline}.drag-and-drop .default,.drag-and-drop .loading,.drag-and-drop .error{display:none}.drag-and-drop .error{color:#bd2c00}.is-default .drag-and-drop .default{display:inline-block}.is-uploading .drag-and-drop .loading{display:inline-block}.is-uploading .drag-and-drop .loading img{vertical-align:top}.is-bad-file .drag-and-drop .bad-file{display:inline-block}.is-too-big .drag-and-drop .too-big{display:inline-block}.is-failed .drag-and-drop .failed-request{display:inline-block}.upload-enabled textarea{border-bottom:1px dashed #ddd;border-bottom-left-radius:0;border-bottom-right-radius:0;display:block}.focused .drag-and-drop{box-shadow:rgba(81,167,232,0.5) 0 0 3px}.dragover textarea,.dragover .drag-and-drop{box-shadow:#c9ff00 0 0 3px}.previewable-comment-form{position:relative}.previewable-comment-form .tabnav{position:relative;padding:10px 10px 0}.previewable-comment-form .comment{border:1px solid #CACACA}.previewable-comment-form .comment-header .comment-header-actions{display:none}.previewable-comment-form .comment-form-error{margin-bottom:10px}.previewable-comment-form .write-content,.previewable-comment-form .preview-content{display:none;padding:0 10px 10px}.previewable-comment-form.write-selected .write-content,.previewable-comment-form.preview-selected .preview-content{display:block}.previewable-comment-form textarea{display:block;width:100%;min-height:100px;max-height:500px;padding:10px;resize:vertical}.previewable-comment-form textarea#fullscreen-contents:focus{border:none;box-shadow:none}div.composer{margin-top:0}div.composer input[type="text"],div.composer #adv_code_search .search-page-label,#adv_code_search div.composer .search-page-label{display:block;width:100%;max-width:100%}div.composer dl.form{margin:0}div.composer dl.form input[type="text"],div.composer dl.form #adv_code_search .search-page-label,#adv_code_search div.composer dl.form .search-page-label{width:100%}div.composer .contributing{margin:0;padding:10px 0;font-weight:bold;text-align:center;border-bottom:1px solid #ddd;background:#ffc}div.composer .discussion-bubble{margin-top:0}div.composer .comment-content{background:inherit}div.composer .comment-header{display:none}div.composer .comment-body{padding:4px 6px}div.composer .comment{border:0}div.composer .composer-infobar{height:35px;border-bottom:1px solid #ddd;padding:0 10px;margin-bottom:10px}div.composer .tabnav{margin:0 0 10px}.infobar-widget.milestone{position:relative;float:right}.infobar-widget.milestone .select-menu-modal-holder{right:0}.infobar-widget.assignee{float:left}.infobar-widget.assignee .css-truncate-target{max-width:110px}.infobar-widget .text,.infobar-widget .avatar,.infobar-widget .select-menu{display:inline-block;vertical-align:top}.infobar-widget .text{margin-top:3px}.infobar-widget .text a{color:#333;font-weight:bold}.infobar-widget .progress-bar{width:200px;line-height:18px;overflow:hidden}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input-group{display:table}.input-group input{width:100%;position:relative}.input-group input:focus{z-index:2}.input-group input[type="text"]+.minibutton,.input-group #adv_code_search .search-page-label+.minibutton,#adv_code_search .input-group .search-page-label+.minibutton{margin-left:0}.input-group input,.input-group-button{display:table-cell}.input-group-button{width:1%;vertical-align:middle}.input-group input:first-child,.input-group-button:first-child .button,.input-group-button:first-child .minibutton{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-button:first-child .button,.input-group-button:first-child .minibutton{margin-right:-1px}.input-group input:last-child,.input-group-button:last-child .button,.input-group-button:last-child .minibutton{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-button:last-child .button,.input-group-button:last-child .minibutton{margin-left:-1px}.fieldgroup{position:relative;margin-top:10px}.sidebar .fieldgroup+.fieldgroup{margin-top:40px}.fieldgroup h2,h2.account{margin:15px 0 0 0;font-size:18px;font-weight:normal;color:#666}p.explain{font-size:12px;color:#666;position:relative}p.explain strong{color:#333}p.explain .octicon{margin-right:5px;color:#bbb}p.explain .minibutton{float:right;top:-4px}.fieldgroup p.explain{margin:0}.options-content p.explain{margin-top:0;border-top:1px solid #ddd;padding:10px 10px 0 10px}.fieldgroup .fields{margin:10px 0 0 0}.fieldgroup p.addlink{margin:15px 0;font-size:14px;font-weight:bold}.fieldgroup p.checkbox label{margin-left:5px}.fieldgroup p.checkbox .succeed{margin-left:10px;font-weight:normal;color:#33cc00}.fieldgroup p.danger{margin:15px 0;font-weight:bold;color:#cc0000}.fieldgroup p:first-child{margin-top:0}.fieldgroup p.extra{margin:-8px 0 15px 0;font-size:12px;color:#666}.fieldgroup p.legal{margin:15px 0;font-size:14px;font-weight:bold}.fieldgroup div.error{margin:10px 0 0 0;padding:10px;color:#fff;font-weight:bold;background:#aa0000;border-radius:4px;-webkit-font-smoothing:antialiased}.fieldgroup div.error p{margin:0}.fieldgroup div.error p+p{margin-top:10px}ul.fieldpills{position:relative;margin:0}ul.fieldpills li{position:relative;list-style-type:none;margin:3px 0;min-height:24px;line-height:24px;padding:4px 5px;background:#eee;font-size:12px;font-weight:bold;color:#333;border:1px solid #ddd;border-radius:3px}ul.fieldpills li:first-child{margin-top:0}ul.fieldpills li:hover{background-color:#f5f5f5;border-color:#ccc}ul.fieldpills li .remove-close{position:absolute;top:50%;right:10px;margin-top:-9px;text-decoration:none;color:#666}ul.fieldpills li .remove-close:hover{color:#333}ul.fieldpills li img.remove{background:none}ul.fieldpills li .dingus{position:absolute;top:50%;right:10px;margin-top:-9px;text-indent:-9999px;text-decoration:none}.add-pill-form{margin:15px 0;padding:4px 5px;background:#f5f5f5;font-size:12px;color:#333;border:1px solid #ddd;border-radius:5px}.add-pill-form input[type=text]{font-size:14px;width:350px;padding:2px 5px;color:#666}.equacols .add-pill-form input[type=text]{width:332px}.add-pill-form img{vertical-align:middle;margin:0 5px}.add-pill-form .error_box{margin:5px 0 0 0;padding:0;border:none;background:transparent;color:#cc0000;font-size:12px}.add-pill-form label{margin:12px 0 2px 0;display:block;font-weight:bold;color:#333}.add-pill-form label:first-child{margin-top:0}.add-pill-form textarea.key_value{font-size:11px;font-family:Monaco, "Liberation Mono", Courier, monospace;width:95%;height:120px}.add-pill-form .form-actions{margin-top:10px;text-align:left}.tabnav{margin:0 0 15px 0;border-bottom:1px solid #ddd;-moz-box-sizing:border-box;box-sizing:border-box}.tabnav .tabnav-tabs{display:inline-block}.tabnav .tabnav-tabs>li{display:inline-block;margin-bottom:-1px}.tabnav-tab{display:inline-block;padding:8px 12px 7px;border:1px solid transparent;border-bottom:0;font-size:14px;line-height:20px;color:#666;text-decoration:none}.tabnav-tab.selected{border-color:#ddd;border-radius:3px 3px 0 0;background-color:#fff;color:#333}.tabnav-tab:hover{text-decoration:none}.tabnav .counter{display:inline-block;margin:0 0 0 5px;padding:2px 5px 3px 5px;font-size:10px;font-weight:bold;line-height:1;color:#666;background-color:#e5e5e5;border-radius:10px}.tabnav .counter.blank{display:none}.dashboard-tabs{position:relative;margin-bottom:20px;font-size:12px;font-weight:bold;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border:1px solid #eaeaea;border-bottom-color:#cacaca;border-radius:3px}.dashboard-tabs li{list-style-type:none;margin:0;display:table-cell;width:1%}.dashboard-tabs li:first-child a{border-left:none;border-bottom-left-radius:3px}.dashboard-tabs li:first-child a:hover,.dashboard-tabs li:first-child a.selected{border-top-left-radius:3px}.dashboard-tabs li:last-child a{border-right:none;border-bottom-right-radius:3px}.dashboard-tabs li:last-child a:hover,.dashboard-tabs li:last-child a.selected{border-top-right-radius:3px}.dashboard-tabs a{display:block;text-align:center;line-height:35px;font-size:12px;color:#777;text-decoration:none;text-shadow:0 1px 0 white;border-right:1px solid #eee;border-right-color:rgba(0,0,0,0.04);border-left:1px solid #fcfcfc;border-left-color:rgba(255,255,255,0.7);border-bottom:2px solid #DADADA}.dashboard-tabs a:hover{color:#4183c4;border-bottom:2px solid #CFDCE8;background-color:#dce6ef;background-image:-moz-linear-gradient(#fafbfd, #dce6ef);background-image:-webkit-linear-gradient(#fafbfd, #dce6ef);background-image:linear-gradient(#fafbfd, #dce6ef);background-repeat:repeat-x}.dashboard-tabs a.selected,.dashboard-tabs a.selected:hover{color:#000;background-color:#ebebeb;background-image:-moz-linear-gradient(#fcfcfc, #ebebeb);background-image:-webkit-linear-gradient(#fcfcfc, #ebebeb);background-image:linear-gradient(#fcfcfc, #ebebeb);background-repeat:repeat-x;border-bottom:2px solid #D26911}.dashboard-tabs a .counter{position:relative;top:-1px;display:inline-block;margin:0 0 0 5px;padding:0 8px 1px 8px;height:auto;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:10px;line-height:14px;text-align:center;vertical-align:text-top;color:#777;background:#fff;border-top:1px solid #ccc;border-radius:8px}.tabnav-right{position:relative;display:block;float:right}.tabnav-widget{display:inline-block;vertical-align:top}.tabnav-widget+ul.tabnav-tabs{margin-left:10px}.tabnav-widget.text{margin-top:12px;font-size:11px;color:#666}.tabnav-widget.search .spinner{vertical-align:middle;position:absolute;top:7px;left:-22px;margin-right:8px}.tabnav-widget.search .search-link{display:inline-block;height:26px;padding-right:5px;line-height:26px;font-weight:200;font-size:13px;color:#666;vertical-align:top}.tabnav-widget.search .fieldwrap{display:inline-block;height:26px;border-radius:4px}.tabnav-widget.search .fieldwrap>input,.tabnav-widget.search .fieldwrap>button{display:inline-block}.tabnav-widget.search input{padding:0 4px 0 4px;font-size:12px;min-height:26px;border-radius:3px 0 0 3px;vertical-align:top}.tabnav-widget.search .minibutton{position:relative;margin-left:0;height:24px;vertical-align:top;padding:0 8px;border-left:none;border-radius:0 3px 3px 0;-moz-box-sizing:content-box;box-sizing:content-box}.tabnav-widget.search .minibutton:hover{color:#fff}ul.filter-list{list-style-type:none}ul.filter-list.small .filter-item{font-size:12px;padding:4px 10px;margin:0 0 2px 0}ul.filter-list .filter-item{display:block;padding:8px 10px;margin:0 0 5px 0;font-size:14px;border-radius:3px;text-decoration:none;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}ul.filter-list .filter-item:hover{background:#eee}ul.filter-list .filter-item.selected{color:#fff;background:#4183c4}ul.filter-list .filter-item.selected .octicon-remove-close{float:right;opacity:0.8;display:inline-block}ul.filter-list .filter-item .count{font-weight:bold;float:right}ul.filter-list.pjax-active .filter-item{color:#777;background:transparent}ul.filter-list.pjax-active .filter-item.pjax-active{color:#fff;background:#4183c4}ul.color-label-list.editable .color{width:14px}ul.color-label-list.editable .color:hover{background:transparent url("/images/icons/arrow-down.png?595b5c55") 1px 2px no-repeat}ul.color-label-list.editable .octicon-remove-close{display:inline-block;color:#AAA}ul.color-label-list.editable .octicon-remove-close:hover{color:#ba3d37}ul.color-label-list .color-label{line-height:16px}ul.color-label-list .color-label:hover .octicon-remove-close{opacity:1}ul.color-label-list .color-label.selected{background:98% 5px no-repeat transparent;-webkit-font-smoothing:antialiased}ul.color-label-list .color-label.selected .count,ul.color-label-list .color-label.selected .color{display:none}ul.color-label-list .color-label.selected .octicon-remove-close{display:inline-block}ul.color-label-list .color-label.zeroed,ul.color-label-list .color-label.zeroed .count{color:#999}ul.color-label-list .count{color:#333}ul.color-label-list .name a{color:#333}ul.color-label-list .color{display:block;float:left;margin-left:-5px;margin-right:4px;width:6px;height:14px;border-radius:2px}ul.color-label-list .octicon-remove-close{display:none;float:right;opacity:0.8}ul.color-label-list .nolabels{margin:10px 0;font-size:11px;color:#666}.section-heading{margin-top:20px;margin-bottom:20px}.section-heading:before,.section-heading:after{content:" ";display:table}.section-heading:after{clear:both}.section-heading-title{margin-top:0;margin-bottom:0;font-size:18px;font-weight:normal;line-height:1.444}.section-heading-title .separator{color:#999}.section-heading-title a.selected{color:#333;text-decoration:none;cursor:pointer}.section-heading-back{font-weight:normal;color:#777}.section-heading-back:hover{text-decoration:none;color:#4183c4}.section-heading-back .octicon{vertical-align:1px}.section-actions{float:right}.section-heading-search{float:right}.section-heading-search .input-group{width:200px;margin-left:10px}.section-heading-search .input-group .minibutton .octicon{margin-right:0}.plans-next{list-style:none;width:655px}.plans-next .plan{float:left;width:121px;padding:0;margin:0;border:0}.plans-next .plan h3{font-size:15px;text-align:center;padding:29px 0 10px 0;margin:0 0 10px 0;border-bottom:1px solid #ddd}.plans-next .plan.active{border-radius:3px;width:158px;border:1px solid #dedede;box-shadow:0 0 8px rgba(120,163,193,0.2)}.plans-next .plan.active h3{margin:0.5em 0;padding:0;font-family:"Helvetica-Light";font-weight:300;font-size:18px;border-bottom:none;font-weight:normal}.plans-next .plan.active ul{margin:0 0 2em 0}.plans-next ul{list-style:none}.plans-next ul li{text-align:center;margin:1em 0;color:#444}.plans-next ul strong{color:#222;font-weight:bold;font-size:16px}.plans-next ul small{font-size:12px;color:#999}.plans-next ul small strong{font-size:18px;color:#999}.plans-next .current-plan{position:relative;left:-1px;top:-1px;width:160px;background-color:#226fbb;background-image:-moz-linear-gradient(#329ed1, #226fbb);background-image:-webkit-linear-gradient(#329ed1, #226fbb);background-image:linear-gradient(#329ed1, #226fbb);background-repeat:repeat-x;border-top-left-radius:3px;border-top-right-radius:3px;display:block;padding:3px 0;margin:0 0 5px 0;border-bottom:1px solid #194a7b;color:#fff;font-weight:bold;font-size:10px;text-align:center;text-transform:uppercase;text-shadow:0 -1px 0 #105095}.payment{border-radius:3px;padding:10px;background:#f8f8f8;text-align:center;margin:0 0 20px 0;border:1px solid #ddd}.payment p{margin:0 0 5px 0}.payment ul{list-style:none}.payment ul li{display:inline-block;margin:0 10px 0 0}ul.notification-routing strong{color:#000}ul.notification-routing .notification-email{float:right}ul.notification-routing .notification-email .edit-link{margin-right:10px;font-weight:bold}ul.notification-routing .notification-email input[type=text]{width:200px;padding:2px;color:#444}ul.notification-routing .notification-email form{display:none}ul.notification-routing .notification-email form .minibutton{float:none;margin:0}ul.notification-routing .notification-email.open form{display:block}ul.notification-routing .notification-email.open .email-display{display:none}table.notifications{margin:0 0 15px 0;width:100%;border-spacing:0;border-collapse:collapse;font-size:12px;color:#666}table.notifications th{padding:15px 0 5px 0;text-align:left;font-size:11px;text-transform:uppercase;color:#000;border-bottom:1px solid #ccc}table.notifications td{padding:2px 0;border-bottom:1px solid #ddd}table.notifications td.checkbox{width:1%;text-align:center}p.notification-settings{margin:15px 0;font-size:12px;color:#333}p.notification-settings.on .octicon-radio-tower{color:#fa9e00}p.notification-settings strong{font-weight:bold}p.notification-settings em{font-style:normal;color:#666}p.notification-settings.on .subscription-on,p.notification-settings .subscription-off{display:inline}p.notification-settings .subscription-on,p.notification-settings.on .subscription-off{display:none}.page-notifications p.notification-settings{margin-bottom:0;padding:8px 5px 8px 25px;background-color:#eee;background-position:5px 50%;border:1px solid #d5d5d5;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}p.notification-settings label{margin-right:5px}.marketing-nav{position:absolute;bottom:0;right:0}.marketing-nav li,.marketing-nav a{display:inline-block}.marketing-nav a{padding:0 0 14px;margin:0 10px 0;border-bottom:3px solid transparent;color:#666;font-size:14px;text-decoration:none}.marketing-nav a.selected{color:#333;font-weight:bold;border-bottom-color:#d26911}.date_selector{width:auto;height:auto;border:none;background:none;margin:0;padding:0;text-align:left;text-decoration:none;box-shadow:0 0 13px rgba(0,0,0,0.31);background:#fff;border:1px solid #c1c1c1;padding:5px;margin-top:10px;z-index:9;width:240px;border-radius:5px;display:none}.date_selector.no_shadow{box-shadow:none}.date_selector_ieframe{position:absolute;z-index:99999;display:none}.date_selector .nav{width:17.5em}.date_selector .month_nav,.date_selector .year_nav{margin:0 0 3px 0;padding:0;display:block;position:relative;text-align:center}.date_selector .month_nav{float:left;width:55%}.date_selector .year_nav{float:right;width:35%;margin-right:-8px}.date_selector .month_name,.date_selector .year_name{font-weight:bold;line-height:20px}.date_selector .button{display:block;position:absolute;top:0;width:18px;height:18px;line-height:17px;font-weight:bold;color:#003C78;text-align:center;font-size:120%;overflow:hidden;border:1px solid #F2F2F2}.date_selector .button:hover,.date_selector .button.hover{background:none;color:#003C78;cursor:pointer;border-color:#ccc}.date_selector .prev{left:0}.date_selector .next{right:0}.date_selector table{clear:both}.date_selector th,.date_selector td{width:2.5em;height:2em;padding:0;text-align:center;color:black}.date_selector td{border:1px solid #ccc;line-height:2em;text-align:center;white-space:nowrap;color:#003C78;background:white}.date_selector td.today{background:#FFFEB3}.date_selector td.unselected_month{color:#ccc}.date_selector td.selectable_day{cursor:pointer}.date_selector td.selected{background:#D8DFE5;font-weight:bold}.date_selector td.selectable_day:hover,.date_selector td.selectable_day.hover{background:#003C78;color:white}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.tipsy-s{margin-top:-10px}.popover.tipsy-w{margin-left:10px}.popover.tipsy-n{margin-top:10px}.popover.tipsy-e{margin-left:-10px}.popover .tipsy-arrow,.popover .tipsy-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .tipsy-arrow{border-width:11px}.popover .tipsy-arrow:after{border-width:10px;content:""}.popover.tipsy-s .tipsy-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.tipsy-s .tipsy-arrow:after{bottom:1px;margin-left:-10px;border-top-color:#ffffff;border-bottom-width:0}.popover.tipsy-w .tipsy-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.tipsy-w .tipsy-arrow:after{bottom:-10px;left:1px;border-right-color:#ffffff;border-left-width:0}.popover.tipsy-n .tipsy-arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.tipsy-n .tipsy-arrow:after{top:1px;margin-left:-10px;border-bottom-color:#ffffff;border-top-width:0}.popover.tipsy-e .tipsy-arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.tipsy-e .tipsy-arrow:after{right:1px;bottom:-10px;border-left-color:#ffffff;border-right-width:0}.popover .tipsy-inner{max-width:initial;color:inherit;background-color:inherit;padding:inherit;text-align:inherit}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:100000}.tipsy-inner{background-color:#000;color:#FFF;max-width:200px;padding:5px 8px;text-align:center;line-height:1.5}.fullscreen-overlay-enabled.dark-theme .tipsy-inner{background-color:#FFF;color:#000}.tipsy-inner{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:6px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-n{border-bottom-color:#FFF}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-s{border-top-color:#FFF}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-e{border-left-color:#FFF}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-w{border-right-color:#FFF}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.code-frequency .addition{fill-opacity:1;fill:#6cc644}.code-frequency .deletion{fill-opacity:1;fill:#bd2c00}.cadd{font-weight:bold;color:#6cc644}.cdel{font-weight:bold;color:#bd2c00}.commit-activity-graphs .dots{display:none}#commit-activity-master{margin-top:20px}#commit-activity-master #commit-activity-master-head{background:#fff;padding:10px;text-align:center;margin:-16px auto 0 auto;width:140px;font-size:14px;font-weight:bold;color:#333;text-transform:uppercase;letter-spacing:0.2em}.is-graph-loading #commit-activity-master{display:none}rect{shape-rendering:crispedges}rect.max{fill:#ffc644}g.bar{fill:#1db34f}g.mini,rect.g-mini{fill:#f17f49}g.active rect{fill:#bd380f}circle.focus{fill:#555}.dot text{stroke:none;fill:#555}.tint-box{border-radius:6px;background:#f3f3f3;position:relative;margin-bottom:10px}.tint-box.transparent{background:#fff}.tint-box .activity{margin-top:0;padding-top:100px}.contrib-data{margin:0 0 10px 0;list-style:none;padding:0}#contributors .person{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:450px;border-radius:2px;margin:10px;border:1px solid #ddd}#contributors .person:nth-child(odd){margin-left:0}#contributors .person:nth-child(even){margin-right:0}#contributors .person h3{margin:0;border-bottom:1px solid #eee;padding:10px;line-height:100%}#contributors .person h3:before,#contributors .person h3:after{content:" ";display:table}#contributors .person h3:after{clear:both}#contributors .person .avatar{width:32px;height:32px;border-radius:3px;float:left;border:1px solid #bbb;margin-right:5px;-moz-box-sizing:border-box;box-sizing:border-box}#contributors .person .aname{font-weight:bold}#contributors .person .ameta{display:block;font-size:12px;color:#ccc;margin-top:3px;font-weight:normal}#contributors .person .rank{display:inline-block;float:right;font-size:12px;color:#bbb}#contributors .person .cmt{color:#999}#contributors .person .d{color:#bd2c00}#contributors .person .a{color:#6cc644}#contributors .person .spark{display:block;background:#f7f7f7}#contributors .person path{fill:#f17f49}#contributors .person .midlabel{fill:#ccc}#graph-shots:after{content:".";display:block;clear:both;visibility:hidden;height:0}#graph-shots li{float:left;width:450px;margin:10px;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:2px;border:1px solid #ddd;list-style:none}#graph-shots li:nth-child(odd){margin-left:0}#graph-shots li:nth-child(even){margin-right:0}#graph-shots li h3{margin:0;line-height:100%;padding:10px 10px 5px 10px}#graph-shots li p{line-height:100%;display:block;border-bottom:1px solid #eee;margin:0;padding:0 10px 10px 10px;font-size:15px;color:#999}#graph-shots li>a{display:block;text-indent:100%;white-space:nowrap;overflow:hidden;background:url("/images/modules/graphs/graph-sprites.png?eb40e4ba") 0 0 no-repeat;background-size:896px 840px;height:124px}#graph-shots li>a:hover{background-position-x:-448px}li#g-contributors a{background-position:0 0}li#g-commits a{background-position:0 -120px}li#g-code-frequency a{background-position:0 -240px}li#g-punchcard a{background-position:0 -480px}.axis{fill:#aaa;font-size:10px}.axis line{shape-rendering:crispedges;stroke:#eee}.axis path{display:none}.axis .zero line{stroke-width:1.5;stroke:#4183c4;stroke-dasharray:3 3}.graphs .is-graph-loading{min-height:500px}.graphs.wheader h2{padding:1px}.graphs text.axlabel{fill:#888;font-size:10px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.graphs text.axlabel.biglabel{font-size:11px;letter-spacing:0.09em}.graphs .area{fill:#1db34f;fill-opacity:0.5}.graphs .path{stroke:#1db34f;stroke-width:2px;stroke-opacity:1;fill:none}.graphs .dot{fill:#1db34f;stroke:#16873c;stroke-width:2px}.graphs .dot.padded{stroke:#fff;stroke-width:1px}.graphs .dot.padded circle:hover{fill:#4183C4}.graphs .d3-tip{fill:#333}.graphs .d3-tip text{fill:#fff;font-size:11px}.graphs .dir{font-size:12px;font-weight:normal;color:#555;line-height:100%;padding-top:5px;float:right}.graphs .selection rect{fill:#333;fill-opacity:0.1;stroke:#333;stroke-width:1px;stroke-opacity:0.4;shape-rendering:crispedges;stroke-dasharray:3 3}.graph-filter{padding-bottom:20px}.graph-filter h3{display:inline-block;margin:5px 0 0 0;padding:0}.graph-filter p.info{margin:0;padding:0;font-weight:normal;font-size:12px;color:#777}h3 .dash{color:#bbb}.graph-filter .select-menu{float:right;margin-top:12px}h2.ghead:after{content:".";height:0;display:block;visibility:hidden;clear:both}kbd{background-color:#dddddd;background-image:-moz-linear-gradient(#f1f1f1, #ddd);background-image:-webkit-linear-gradient(#f1f1f1, #ddd);background-image:linear-gradient(#f1f1f1, #ddd);background-repeat:repeat-x;border-radius:2px;border:1px solid #ddd;border-bottom-color:#ccc;border-right-color:#ccc;padding:1px 4px;line-height:10px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.graph-canvas .activity{text-align:center;width:400px;margin:100px auto 0 auto;color:#444;border-radius:3px;padding:10px}.graph-canvas .error{color:#900;background:#feeaea;padding:10px;border-radius:3px}.graph-canvas .dots{margin:0 auto}.graph-canvas .graph-loading,.graph-canvas .graph-error,.graph-canvas .graph-empty,.graph-canvas .graph-crunching{display:none}.graph-canvas>.activity{display:none}.graph-canvas.is-graph-loading>.activity,.graph-canvas.is-graph-empty>.activity,.graph-canvas.is-graph-error>.activity{display:block}.graph-canvas.is-graph-loading .graph-loading,.graph-canvas.is-graph-crunching .graph-crunching,.graph-canvas.is-graph-empty .graph-empty,.graph-canvas.is-graph-load-error .graph-error{display:block}.svg-tip{padding:10px;background:#222;color:#bbb;font-size:12px;width:140px;position:absolute;z-index:99999;text-align:center;border-radius:2px;box-shadow:2px 2px 2px rgba(0,0,0,0.2);display:none}.svg-tip strong{color:#ddd}.svg-tip.is-visible{display:block}.svg-tip:after{box-sizing:border-box;display:inline;font-size:12px;width:100%;line-height:1;color:rgba(0,0,0,0.8);content:"\25BC";position:absolute;text-align:center;-webkit-font-smoothing:antialiased}.svg-tip.n:after{text-shadow:2px 2px 2px rgba(0,0,0,0.2);margin:-2px 0 0 0;top:100%;left:0}#milestone-graph{position:relative;min-height:236px}#milestone-graph .dots{position:absolute;top:100px;left:48%;width:64px;height:64px;display:block}#milestone-graph rect.open{fill:#6cc644;shape-rendering:crispedges}#milestone-graph rect.closed{fill:#bd2c00}#milestone-graph .x line{stroke:#ccc}#graph-open-close{margin-top:-5px}.axis-backing{fill:#f1f1f1}.axis-backing-line{stroke:#ddd;stroke-width:1px;shape-rendering:crispedges}#total-events{border-bottom:1px solid #ddd;background:#f7f7f7}#total-events .x line{stroke:#ccc}path.events{stroke:orange;stroke-width:2px;fill:none}path.open-total{stroke:#6cc644;stroke-opacity:0.8;fill:none;stroke-dasharray:10 2;shape-rendering:crispedges}.issues-graph-title{margin:0;padding-left:20px;padding-top:10px}.milestone-stats .domain{display:none}.milestone-stats .legend{padding:0 0 10px 0;text-align:center;border-bottom:1px solid #eee}.milestone-stats .legend ul.legend-data{display:inline-block;margin:0 auto}.milestone-stats .legend ul.legend-data li{display:inline-block;color:#666;font-weight:bold;font-size:11px;margin-right:10px;border:none}.milestone-stats .legend span.color{width:10px;height:10px;display:inline-block;vertical-align:middle;margin-right:5px;margin-top:-2px;border-radius:1px}.milestone-stats .legend span.state-open{background:#6cc644}.milestone-stats .legend span.state-closed{background:#bd2c00}.activity-label{fill:#aaa;font-size:9px;letter-spacing:0.15em}.axis text{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:11px;fill:#999}.axis .zero line{stroke:#ddd;stroke-width:1px;stroke-dasharray:0}.label{font-size:11px;fill:#555;stroke:none}circle.day{stroke-width:0;fill:#444}circle.day:hover{fill:#4183C4}circle.day.h0{display:none}line.axis{stroke-width:1;stroke:#eee;shape-rendering:crispedges}line.axis.even{stroke:#e0e0e0}.traffic-graph{min-height:150px}.traffic-graph .activity{margin-top:0}.traffic-graph .activity .dots{margin-top:40px}#top-domains .dots{margin:167px auto 0 auto;display:block}#top-domains .favicon{width:16px;height:16px}table.capped-list{width:100%;line-height:100%}table.capped-list th{text-align:left;padding:8px;border-bottom:1px solid #ddd;background:#f4f4f4}table.capped-list td{padding:8px;border-bottom:1px solid #eee;font-size:12px}table.capped-list td.label{overflow:hidden;white-space:nowrap;max-width:200px;text-overflow:ellipsis}table.capped-list th.middle,table.capped-list td.middle{text-align:center}table.capped-list .favicon{width:16px;height:16px;vertical-align:middle;margin:1px 5px 0 5px}table.capped-list .octicon{margin-right:10px;vertical-align:-1px;color:#555}table.capped-list tr:nth-child(even){background-color:#fcfcfc}table.capped-list.mini-icons .mini-icon{margin-right:5px;color:#555}.capped-box-grid .col{padding:10px}.traffic-graph-stats div{-moz-box-sizing:border-box;box-sizing:border-box;padding:10px 0 0 0;text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd;color:#999}.traffic-graph-stats div .lbl{display:block;font-weight:bold;padding:10px 0;color:#777;border-top:1px solid #f7f7f7;margin-top:10px;font-size:11px}.traffic-graph-stats div .num{font-weight:bold;font-size:16px;display:block;color:#333}.traffic-graph-stats div .visits,.traffic-graph-stats div .totals{color:#1db34f}.traffic-graph-stats div .uniques{color:#1d7fb3}.traffic-graph-stats div:first-child{border-left:none}.path.total{stroke:#1db34f;stroke-width:2}.path.unique{stroke:#1d7fb3;stroke-width:2}.totals circle{fill:#1db34f;stroke:#fff;stroke-width:2}.uniques circle{fill:#1d7fb3;stroke:#fff;stroke-width:2}.top-lists .is-loading{text-align:center;margin:40px}.top-lists .capped-box{width:448px;min-height:399px}.top-lists .capped-box h3 .favicon{float:right}.markdown-body{font-size:15px;line-height:1.7;overflow:hidden}.markdown-body>*:first-child{margin-top:0 !important}.markdown-body>*:last-child{margin-bottom:0 !important}.markdown-body a.absent{color:#c00}.markdown-body a.anchor{display:block;padding-right:6px;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0}.markdown-body a.anchor:focus{outline:none}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin:1em 0 15px;padding:0;font-weight:bold;line-height:1.7;cursor:text;position:relative}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{display:none;color:#000}.markdown-body h1:hover a.anchor,.markdown-body h2:hover a.anchor,.markdown-body h3:hover a.anchor,.markdown-body h4:hover a.anchor,.markdown-body h5:hover a.anchor,.markdown-body h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%}.markdown-body h1:hover a.anchor .octicon-link,.markdown-body h2:hover a.anchor .octicon-link,.markdown-body h3:hover a.anchor .octicon-link,.markdown-body h4:hover a.anchor .octicon-link,.markdown-body h5:hover a.anchor .octicon-link,.markdown-body h6:hover a.anchor .octicon-link{display:inline-block}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit}.markdown-body h1{font-size:2.5em;border-bottom:1px solid #ddd}.markdown-body h2{font-size:2em;border-bottom:1px solid #eee}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.2em}.markdown-body h5{font-size:1em}.markdown-body h6{color:#777;font-size:1em}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin:15px 0}.markdown-body hr{background:transparent url("/assets/primer/markdown/dirty-shade-aa53f50177de6e9a016a801161874096327f9f80.png") repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0;margin:15px 0}.markdown-body ul,.markdown-body ol{padding-left:30px}.markdown-body ul.no-list,.markdown-body ol.no-list{list-style-type:none;padding:0}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin-top:15px}.markdown-body dl dd{margin-bottom:15px;padding:0 15px}.markdown-body blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777}.markdown-body blockquote>:first-child{margin-top:0px}.markdown-body blockquote>:last-child{margin-bottom:0px}.markdown-body table{width:100%;overflow:auto;display:block}.markdown-body table th{font-weight:bold}.markdown-body table th,.markdown-body table td{border:1px solid #ddd;padding:6px 13px}.markdown-body table tr{border-top:1px solid #ccc;background-color:#fff}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;overflow:hidden;margin:13px auto 0;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;overflow:hidden;margin:13px 0 0;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;margin-right:13px;overflow:hidden;float:left}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;margin-left:13px;overflow:hidden;float:right}.markdown-body span.float-right>span{display:block;overflow:hidden;margin:13px auto 0;text-align:right}.markdown-body code,.markdown-body tt{margin:0 2px;padding:0px 5px;border:1px solid #ddd;background-color:#f8f8f8;border-radius:3px}.markdown-body code{white-space:nowrap}.markdown-body pre>code{margin:0;padding:0;white-space:pre;border:none;background:transparent}.markdown-body .highlight pre,.markdown-body pre{background-color:#f8f8f8;border:1px solid #ddd;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{margin:0;padding:0;background-color:transparent;border:none}.highlight{background:#ffffff}.highlight .c{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .gd .x{color:#000000;background-color:#ffaaaa}.highlight .ge{font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#999999}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .gi .x{color:#000000;background-color:#aaffaa}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#aa0000}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kn{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .m{color:#009999}.highlight .s{color:#d14}.highlight .n{color:#333333}.highlight .na{color:#008080}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbbbbb}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999999}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .il{color:#009999}.highlight .gc{color:#999;background-color:#EAF2F5}.type-csharp .highlight .k{color:#0000FF}.type-csharp .highlight .kt{color:#0000FF}.type-csharp .highlight .nf{color:#000000;font-weight:normal}.type-csharp .highlight .nc{color:#2B91AF}.type-csharp .highlight .nn{color:#000000}.type-csharp .highlight .s{color:#A31515}.type-csharp .highlight .sc{color:#A31515}.button,.minibutton{position:relative;display:inline-block;padding:7px 15px;font-size:13px;font-weight:bold;color:#333;text-shadow:0 1px 0 rgba(255,255,255,0.9);white-space:nowrap;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px;border:1px solid #ddd;border-bottom-color:#c5c5c5;box-shadow:0 1px 3px rgba(0,0,0,0.05);vertical-align:middle;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none}.button:hover,.button:active,.button.zeroclipboard-is-hover,.button.zeroclipboard-is-active,.minibutton:hover,.minibutton:active,.minibutton.zeroclipboard-is-hover,.minibutton.zeroclipboard-is-active{text-decoration:none;background-color:#dadada;background-image:-moz-linear-gradient(#eaeaea, #dadada);background-image:-webkit-linear-gradient(#eaeaea, #dadada);background-image:linear-gradient(#eaeaea, #dadada);background-repeat:repeat-x;border-color:#ccc #ccc #b5b5b5}.button:active,.button.selected,.button.zeroclipboard-is-active,.minibutton:active,.minibutton.selected,.context-menu-container.active .minibutton.switcher,.context-menu-container.active .context-button,.minibutton.zeroclipboard-is-active{background-color:#dadada;background-image:none;border-color:#b5b5b5;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button:disabled,.button:disabled:hover,.button.disabled,.button.disabled:hover,.minibutton:disabled,.minibutton:disabled:hover,.minibutton.disabled,.minibutton.disabled:hover{opacity:.5;color:#666;text-shadow:0 1px 0 rgba(255,255,255,0.9);background-image:none;background-color:#e5e5e5;border-color:#c5c5c5;cursor:default;box-shadow:none}.button.primary,.minibutton.primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#60b044;background-image:-moz-linear-gradient(#8add6d, #60b044);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);background-repeat:repeat-x;border-color:#5ca941}.button.primary:hover,.minibutton.primary:hover{color:#fff;background-color:#569e3d;background-image:-moz-linear-gradient(#79d858, #569e3d);background-image:-webkit-linear-gradient(#79d858, #569e3d);background-image:linear-gradient(#79d858, #569e3d);background-repeat:repeat-x;border-color:#4a993e}.button.primary:active,.button.primary.selected,.minibutton.primary:active,.minibutton.primary.selected,.context-menu-container.active .primary.minibutton.switcher,.context-menu-container.active .primary.context-button{background-color:#569e3d;background-image:none;border-color:#418737}.button.primary:disabled,.button.primary:disabled:hover,.button.primary.disabled,.button.primary.disabled:hover,.minibutton.primary:disabled,.minibutton.primary:disabled:hover,.minibutton.primary.disabled,.minibutton.primary.disabled:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#60b044;background-image:-moz-linear-gradient(#8add6d, #60b044);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);background-repeat:repeat-x;border-color:#74bb5a #74bb5a #509338}.button.danger,.minibutton.danger{color:#900}.button.danger:hover,.minibutton.danger:hover{color:#fff;text-shadow:0px -1px 0 rgba(0,0,0,0.3);background-color:#b33630;background-image:-moz-linear-gradient(#dc5f59, #b33630);background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);background-repeat:repeat-x;border-color:#cd504a}.button.danger:active,.button.danger.selected,.minibutton.danger:active,.minibutton.danger.selected,.context-menu-container.active .danger.minibutton.switcher,.context-menu-container.active .danger.context-button{color:#fff;background-color:#b33630;background-image:none;border-color:#9f312c}.button.danger:disabled,.button.danger:disabled:hover,.button.danger.disabled,.button.danger.disabled:hover,.minibutton.danger:disabled,.minibutton.danger:disabled:hover,.minibutton.danger.disabled,.minibutton.danger.disabled:hover{color:#900;text-shadow:0 1px 0 rgba(255,255,255,0.9);background-color:#e1e1e1;background-image:-moz-linear-gradient(#fff, #e1e1e1);background-image:-webkit-linear-gradient(#fff, #e1e1e1);background-image:linear-gradient(#fff, #e1e1e1);background-repeat:repeat-x;border-color:#c5c5c5}.button.blue,.button.blue:hover,.minibutton.blue,.minibutton.blue:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3072b3;background-image:-moz-linear-gradient(#599bcd, #3072b3);background-image:-webkit-linear-gradient(#599bcd, #3072b3);background-image:linear-gradient(#599bcd, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.button.blue:hover,.button.blue:active,.minibutton.blue:hover,.minibutton.blue:active{border-color:#2a65a0}.button.blue:active,.button.blue.selected,.minibutton.blue:active,.minibutton.blue.selected,.context-menu-container.active .blue.minibutton.switcher,.context-menu-container.active .blue.context-button{background-color:#3072b3;background-image:none;border-color:#25588c;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button.blue:disabled,.button.blue.disabled,.minibutton.blue:disabled,.minibutton.blue.disabled{background-position:0 0}.button.dark-grey,.button.dark-grey:hover,.minibutton.dark-grey,.minibutton.dark-grey:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#6d6d6d;background-image:-moz-linear-gradient(#8c8c8c, #6d6d6d);background-image:-webkit-linear-gradient(#8c8c8c, #6d6d6d);background-image:linear-gradient(#8c8c8c, #6d6d6d);background-repeat:repeat-x;border:1px solid #707070;border-bottom-color:#595959}.button.dark-grey:hover,.button.dark-grey:active,.button.dark-grey.selected,.minibutton.dark-grey:hover,.minibutton.dark-grey:active,.minibutton.dark-grey.selected,.context-menu-container.active .dark-grey.minibutton.switcher,.context-menu-container.active .dark-grey.context-button{border-color:#585858}.button.dark-grey:active,.button.dark-grey.selected,.minibutton.dark-grey:active,.minibutton.dark-grey.selected,.context-menu-container.active .dark-grey.minibutton.switcher,.context-menu-container.active .dark-grey.context-button{background-color:#545454;background-image:none;border-color:#474747;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button.with-count,.minibutton.with-count{border-top-right-radius:0;border-bottom-right-radius:0;float:left}.button,.minibutton{outline:none}.button:focus,.minibutton:focus{text-decoration:none;border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,0.5)}.button img{position:relative;top:-1px;margin-right:3px;vertical-align:middle}.button>.octicon{vertical-align:middle;margin-top:-1px}.minibutton{padding:0 10px;line-height:24px;box-shadow:none}.minibutton:hover .octicon-device-desktop:before{background-position:-18px 0}.minibutton i{font-weight:500;font-style:normal;opacity:.6}.button-block{display:block;width:100%;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}.button-link{display:inline;padding:0;font-size:inherit;color:#4183c4;white-space:nowrap;background-color:transparent;border:0;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none}.button-link:hover{text-decoration:underline}input[type=text]+.minibutton{margin-left:5px}.minibutton .octicon{vertical-align:middle;margin-top:-1px;margin-right:6px;-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.minibutton.zeroclipboard-button .octicon{margin-right:0}.minibutton.empty-icon .octicon{margin-right:0}.minibutton .octicon-arrow-right{float:right;margin-right:0;margin-left:5px;margin-top:4px}.minibutton.switcher{padding:0;height:24px;line-height:1}.minibutton.switcher>span{display:block;position:relative;padding:0 26px 0 10px;line-height:24px;height:24px}.minibutton.switcher>span:before{content:"";display:block;position:absolute;border:3px solid #000;border-color:#000 transparent transparent;top:10px;right:7px;width:0;height:0}.minibutton.switcher>span:after{position:absolute;top:0;bottom:0;right:18px;display:block;content:"";width:1px;background-color:#f9f9f9;box-shadow:-1px 0 0 #e4e4e4}.minibutton.switcher:hover>span:after{background-color:#6a9fd3;box-shadow:-1px 0 0 #3c74ab}.minibutton.switcher:active>span:after{background-color:#357ec8;box-shadow:-1px 0 0 #25588c}.minibutton.switcher.with-image{height:32px}.minibutton.switcher.with-image>span{display:block;height:32px;line-height:32px;padding:0 26px 0 6px}.minibutton.switcher.with-image>span:before{top:14px}.minibutton.switcher.with-image img{position:relative;top:-1px;margin-right:2px;vertical-align:middle;border-radius:2px}.minibutton.switcher.with-image.selected span:before,.context-menu-container.active .switcher.with-image.minibutton span:before,.context-menu-container.active .switcher.with-image.context-button span:before{top:14px}.minibutton.switcher.selected>span:before,.context-menu-container.active .switcher.minibutton>span:before,.context-menu-container.active .switcher.context-button>span:before,.context-menu-container.active .minibutton.switcher>span:before{top:10px;border-color:#fff transparent transparent}.minibutton.switcher.selected>span:after,.context-menu-container.active .switcher.minibutton>span:after,.context-menu-container.active .switcher.context-button>span:after,.context-menu-container.active .minibutton.switcher>span:after{background-color:#888;box-shadow:-1px 0 0 #585858}.minibutton.switcher:hover>span:before,.context-menu-container.active .context-button:after{border-color:#fff transparent transparent}.context-button{position:relative;width:12px;height:22px;line-height:23px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.context-button:before{position:absolute;top:3px;left:3px;content:"\f02f";display:block;padding:0;font-size:16px;line-height:16px}.context-button:after{position:absolute;top:10px;right:5px;content:"";display:block;width:0;height:0;border:3px solid #000;border-color:#000 transparent transparent}.context-button:hover:after,.context-button.selected:after{border-color:#fff transparent transparent}.hidden-text-expander{display:block}.hidden-text-expander.inline{display:inline-block;line-height:0;margin-left:5px;position:relative;top:-1px}.hidden-text-expander a{background:#ddd;color:#555;padding:0 5px;line-height:6px;height:12px;font-size:12px;font-weight:bold;vertical-align:middle;display:inline-block;border-radius:1px;text-decoration:none}.hidden-text-expander a:hover{background-color:#ccc;text-decoration:none}.hidden-text-expander a:active{background-color:#4183C4;color:#fff}.social-count{padding:0 7px 0;font-size:11px;font-weight:bold;float:left;background-color:#fff;line-height:24px;color:#333333;vertical-align:middle;border:1px solid #ddd;border-left:0;border-top-right-radius:3px;border-bottom-right-radius:3px}.social-count:hover{color:#4183c4;cursor:pointer;text-decoration:none}.button-group{display:inline-block;vertical-align:middle}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group .button,.button-group .minibutton{position:relative;float:left;border-radius:0}.button-group .button:first-child,.button-group .minibutton:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.button-group .button:last-child,.button-group .minibutton:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.button-group .button:hover,.button-group .button:focus,.button-group .button:active,.button-group .button.selected,.button-group .minibutton:hover,.button-group .minibutton:focus,.button-group .minibutton:active,.button-group .minibutton.selected,.button-group .context-menu-container.active .minibutton.switcher,.context-menu-container.active .button-group .minibutton.switcher,.button-group .context-menu-container.active .context-button,.context-menu-container.active .button-group .context-button{z-index:2}.button-group .button+.button,.button-group .minibutton+.minibutton{margin-left:-1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.2)}.button-group .button+.button:hover,.button-group .minibutton+.minibutton:hover{box-shadow:none}.button-group .button+.button:active,.button-group .minibutton+.minibutton:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button-group+.button-group,.button-group+.button,.button-group+.minibutton{margin-left:5px}.menu-container{float:left;width:200px;padding:3px;background:#efefef;border-radius:2px}.menu{background:#fafafb;border-radius:2px;border:1px solid #d8d8d8;list-style:none}.menu a:hover{text-decoration:none}.menu li{border-bottom:1px solid #eee;border-top:1px solid #fff}.menu li:last-child{border-bottom:none}.menu li:first-child{border-top:none}.menu a{display:block;padding:8px 10px 8px 8px;text-shadow:0 1px 0 #fff;border-left:2px solid #fafafb}.menu a:hover{background:#fdfdfe}.menu a .octicon{color:#333333;width:16px;text-align:center}.menu a.selected{background:#fff;border-left:2px solid #d26911;font-weight:bold;color:#222;cursor:default;box-shadow:inset 0 0px 1px rgba(0,0,0,0.1)}.menu a .counter{float:right;margin:0 0 0 5px;padding:2px 5px;font-size:11px;font-weight:bold;color:#999;background:#eee;border-radius:2px}.menu .menu-warning{color:#D26911;float:right}.accordion{background:#fafafb;list-style:none}.accordion .section{border-top:1px solid #d8d8d8;border-top:none}.accordion .section:first-child{border-top:none}.accordion .section a.section-head{background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.5);display:block;padding:10px 10px;border-bottom:1px solid #ccc;color:#222;font-weight:bold;font-size:14px;line-height:20px;text-shadow:0 1px 0 rgba(255,255,255,0.7);border-left:0 none}.accordion .section a.section-head img{float:left;margin:0 10px 0 0;border-radius:2px}.accordion .section .section-nav{list-style:none;display:none}.accordion .section .section-nav.expanded{display:block}.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{max-width:125px;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.css-truncate.expandable.zeroclipboard-is-hover .css-truncate-target,.css-truncate.expandable.zeroclipboard-is-hover.css-truncate-target,.css-truncate.expandable:hover .css-truncate-target,.css-truncate.expandable:hover.css-truncate-target{max-width:10000px !important}.flash-messages{margin-top:15px;margin-bottom:15px}.flash,.flash-global{position:relative;border:1px solid #97c1da;color:#264c72;background-color:#d0e3ef;background-image:-moz-linear-gradient(#d8ebf8, #d0e3ef);background-image:-webkit-linear-gradient(#d8ebf8, #d0e3ef);background-image:linear-gradient(#d8ebf8, #d0e3ef);background-repeat:repeat-x;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.flash.flash-warn,.flash-global.flash-warn{color:#613A00;background-color:#f5dac0;background-image:-moz-linear-gradient(#ffe3c8, #f5dac0);background-image:-webkit-linear-gradient(#ffe3c8, #f5dac0);background-image:linear-gradient(#ffe3c8, #f5dac0);background-repeat:repeat-x;border-color:#dca874}.flash.flash-error,.flash-global.flash-error{color:#911;background-color:#efd0d0;background-image:-moz-linear-gradient(#f8d8d8, #efd0d0);background-image:-webkit-linear-gradient(#f8d8d8, #efd0d0);background-image:linear-gradient(#f8d8d8, #efd0d0);background-repeat:repeat-x;border-color:#da9797}.flash:hover,.flash-global:hover{border-color:#5f9fc6}.flash.flash-warn:hover,.flash-global.flash-warn:hover{border-color:#cd8237}.flash.flash-error:hover,.flash-global.flash-error:hover{border-color:#c65f5f}.flash .flash-action,.flash-global .flash-action{float:right;margin-top:-4px;margin-left:20px}.flash{padding:15px;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.1)}.flash+.flash{margin-top:5px}.flash .close{float:right;cursor:pointer;opacity:0.6;text-decoration:none;margin-top:1px}.flash:hover .close{opacity:1}.flash-global{padding:10px;top:-1px;border-width:1px 0;z-index:5}.flash-global h2,.flash-global p{font-size:13px;margin-top:0;margin-bottom:0;line-height:1.4}.flash-global .flash-action{margin-top:5px}.sticky{position:sticky !important}.sticky.stick{position:fixed !important}.sticky.stick-bottom{position:absolute !important;bottom:0 !important;top:auto !important}@font-face{font-family:'octicons';src:url("/assets/octicons-880d26f56022a5f3db1e26c81ac5f4aa2ee82c5f.eot");src:url("/assets/octicons-880d26f56022a5f3db1e26c81ac5f4aa2ee82c5f.eot#iefix") format("embedded-opentype"),url("/assets/octicons-5eaec6fc1975472c3c7f212ef33138bdaf97e600.woff") format("woff"),url("/assets/octicons-0bdba0b518396976dca0d630c1676433fe97a478.ttf") format("truetype"),url("/assets/octicons-e0754e99e9cf6e1d2c0ed2e35ca579a8c62e6b9b.svg#octicons") format("svg");font-weight:normal;font-style:normal}.octicon{font:normal normal 16px octicons;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.mega-octicon{font:normal normal 32px octicons;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.octicon-alert:before{content:'\f02d'}.octicon-alignment-align:before{content:'\f08a'}.octicon-alignment-aligned-to:before{content:'\f08e'}.octicon-alignment-unalign:before{content:'\f08b'}.octicon-arrow-down:before{content:'\f03f'}.octicon-arrow-left:before{content:'\f040'}.octicon-arrow-right:before{content:'\f03e'}.octicon-arrow-small-down:before{content:'\f0a0'}.octicon-arrow-small-left:before{content:'\f0a1'}.octicon-arrow-small-right:before{content:'\f071'}.octicon-arrow-small-up:before{content:'\f09f'}.octicon-arrow-up:before{content:'\f03d'}.octicon-beer:before{content:'\f069'}.octicon-book:before{content:'\f007'}.octicon-bookmark:before{content:'\f07b'}.octicon-broadcast:before{content:'\f048'}.octicon-bug:before{content:'\f091'}.octicon-calendar:before{content:'\f068'}.octicon-check:before{content:'\f03a'}.octicon-checklist:before{content:'\f076'}.octicon-chevron-down:before{content:'\f0a3'}.octicon-chevron-left:before{content:'\f0a4'}.octicon-chevron-right:before{content:'\f078'}.octicon-chevron-up:before{content:'\f0a2'}.octicon-circle-slash:before{content:'\f084'}.octicon-clippy:before{content:'\f035'}.octicon-clock:before{content:'\f046'}.octicon-cloud-download:before{content:'\f00b'}.octicon-cloud-upload:before{content:'\f00c'}.octicon-code:before{content:'\f05f'}.octicon-color-mode:before{content:'\f065'}.octicon-comment:before{content:'\f02b'}.octicon-comment-add:before{content:'\f06f'}.octicon-comment-discussion:before{content:'\f04f'}.octicon-credit-card:before{content:'\f045'}.octicon-dashboard:before{content:'\f07d'}.octicon-database:before{content:'\f096'}.octicon-device-camera:before{content:'\f056'}.octicon-device-camera-video:before{content:'\f057'}.octicon-device-desktop:before{content:'\f27c'}.octicon-device-mobile:before{content:'\f038'}.octicon-diff:before{content:'\f04d'}.octicon-diff-added:before{content:'\f06b'}.octicon-diff-ignored:before{content:'\f099'}.octicon-diff-modified:before{content:'\f06d'}.octicon-diff-removed:before{content:'\f06c'}.octicon-diff-renamed:before{content:'\f06e'}.octicon-ellipsis:before{content:'\f09a'}.octicon-eye:before{content:'\f04e'}.octicon-eye-unwatch:before{content:'\f01e'}.octicon-eye-watch:before{content:'\f01d'}.octicon-file-add:before{content:'\f086'}.octicon-file-binary:before{content:'\f094'}.octicon-file-code:before{content:'\f010'}.octicon-file-directory:before{content:'\f016'}.octicon-file-directory-create:before{content:'\f095'}.octicon-file-media:before{content:'\f012'}.octicon-file-pdf:before{content:'\f014'}.octicon-file-submodule:before{content:'\f017'}.octicon-file-symlink-directory:before{content:'\f0b1'}.octicon-file-symlink-file:before{content:'\f0b0'}.octicon-file-text:before{content:'\f011'}.octicon-file-zip:before{content:'\f013'}.octicon-gear:before{content:'\f02f'}.octicon-gift:before{content:'\f042'}.octicon-gist:before{content:'\f00e'}.octicon-gist-fork:before{content:'\f079'}.octicon-gist-new:before{content:'\f07a'}.octicon-gist-private:before{content:'\f00f'}.octicon-gist-secret:before{content:'\f08c'}.octicon-git-branch:before{content:'\f020'}.octicon-git-branch-create:before{content:'\f098'}.octicon-git-branch-delete:before{content:'\f09b'}.octicon-git-commit:before{content:'\f01f'}.octicon-git-compare:before{content:'\f0ac'}.octicon-git-fork-private:before{content:'\f021'}.octicon-git-merge:before{content:'\f023'}.octicon-git-pull-request:before{content:'\f009'}.octicon-git-pull-request-abandoned:before{content:'\f090'}.octicon-globe:before{content:'\f0b6'}.octicon-graph:before{content:'\f043'}.octicon-history:before{content:'\f07e'}.octicon-home:before{content:'\f08d'}.octicon-horizontal-rule:before{content:'\f070'}.octicon-hourglass:before{content:'\f09e'}.octicon-hubot:before{content:'\f09d'}.octicon-info:before{content:'\f059'}.octicon-issue-closed:before{content:'\f028'}.octicon-issue-opened:before{content:'\f026'}.octicon-issue-reopened:before{content:'\f027'}.octicon-jersey:before{content:'\f019'}.octicon-jump-down:before{content:'\f072'}.octicon-jump-left:before{content:'\f0a5'}.octicon-jump-right:before{content:'\f0a6'}.octicon-jump-up:before{content:'\f073'}.octicon-key:before{content:'\f049'}.octicon-keyboard:before{content:'\f00d'}.octicon-light-bulb:before{content:'\f000'}.octicon-link:before{content:'\f05c'}.octicon-link-external:before{content:'\f07f'}.octicon-list-ordered:before{content:'\f062'}.octicon-list-unordered:before{content:'\f061'}.octicon-location:before{content:'\f060'}.octicon-lock:before{content:'\f06a'}.octicon-log-in:before{content:'\f036'}.octicon-log-out:before{content:'\f032'}.octicon-logo-github:before{content:'\f092'}.octicon-mail:before{content:'\f03b'}.octicon-mail-read:before{content:'\f03c'}.octicon-mail-reply:before{content:'\f051'}.octicon-mark-github:before{content:'\f00a'}.octicon-mark-twitter:before{content:'\f0ae'}.octicon-megaphone:before{content:'\f077'}.octicon-microscope:before{content:'\f089'}.octicon-milestone:before{content:'\f075'}.octicon-mirror-private:before{content:'\f025'}.octicon-mirror-public:before{content:'\f024'}.octicon-move-down:before{content:'\f0a8'}.octicon-move-left:before{content:'\f074'}.octicon-move-right:before{content:'\f0a9'}.octicon-move-up:before{content:'\f0a7'}.octicon-mute:before{content:'\f080'}.octicon-mute-video:before{content:'\f0b8'}.octicon-no-newline:before{content:'\f09c'}.octicon-octoface:before{content:'\f008'}.octicon-organization:before{content:'\f037'}.octicon-pencil:before{content:'\f058'}.octicon-person:before{content:'\f018'}.octicon-person-add:before{content:'\f01a'}.octicon-person-follow:before{content:'\f01c'}.octicon-person-remove:before{content:'\f01b'}.octicon-pin:before{content:'\f041'}.octicon-plus:before{content:'\f05d'}.octicon-podium:before{content:'\f0af'}.octicon-primitive-dot:before{content:'\f052'}.octicon-primitive-square:before{content:'\f053'}.octicon-pulse:before{content:'\f085'}.octicon-question:before{content:'\f02c'}.octicon-quote:before{content:'\f063'}.octicon-radio-tower:before{content:'\f030'}.octicon-remove-close:before{content:'\f050'}.octicon-repo:before{content:'\f001'}.octicon-repo-clone:before{content:'\f04c'}.octicon-repo-create:before{content:'\f003'}.octicon-repo-delete:before{content:'\f004'}.octicon-repo-force-push:before{content:'\f04a'}.octicon-repo-forked:before{content:'\f002'}.octicon-repo-pull:before{content:'\f006'}.octicon-repo-push:before{content:'\f005'}.octicon-repo-sync:before{content:'\f04b'}.octicon-rocket:before{content:'\f033'}.octicon-rss:before{content:'\f034'}.octicon-ruby:before{content:'\f047'}.octicon-screen-full:before{content:'\f066'}.octicon-screen-normal:before{content:'\f067'}.octicon-search:before{content:'\f02e'}.octicon-server:before{content:'\f097'}.octicon-settings:before{content:'\f07c'}.octicon-squirrel:before{content:'\f0b2'}.octicon-star:before{content:'\f02a'}.octicon-star-add:before{content:'\f082'}.octicon-star-delete:before{content:'\f083'}.octicon-stop:before{content:'\f08f'}.octicon-sync:before{content:'\f087'}.octicon-tag:before{content:'\f015'}.octicon-tag-add:before{content:'\f054'}.octicon-tag-remove:before{content:'\f055'}.octicon-telescope:before{content:'\f088'}.octicon-three-bars:before{content:'\f05e'}.octicon-tools:before{content:'\f031'}.octicon-triangle-down:before{content:'\f05b'}.octicon-triangle-left:before{content:'\f044'}.octicon-triangle-right:before{content:'\f05a'}.octicon-triangle-up:before{content:'\f0aa'}.octicon-unfold:before{content:'\f039'}.octicon-unmute:before{content:'\f0ba'}.octicon-unmute-video:before{content:'\f0b9'}.octicon-versions:before{content:'\f064'}.octicon-x:before{content:'\f081'}.octicon-zap:before{content:'\26A1'}.about #site-container>.container:first-child{margin-top:0}.about-img{max-width:100%;margin-bottom:15px}.spacefield{position:absolute;left:0;width:100%;height:170px;overflow:hidden;background-color:#000;background-image:url("/images/modules/about_page/parallax_bg.jpg?9b971807");background-repeat:no-repeat}.about-header{position:relative;height:170px;margin-bottom:25px;overflow:hidden}.about-header:before,.about-header:after{content:" ";display:table}.about-header:after{clear:both}.about-header-title{margin-top:60px;font-size:36px;line-height:1.2;color:#fff;text-shadow:0 0 20px #549ef9}.plax #parallax_octocat{position:absolute;top:0;left:669px;z-index:4}.plax #parallax_text{position:absolute;top:30px;left:15px;z-index:3}.plax #parallax_earth{position:absolute;top:50px;left:608px;z-index:2}.spacefield-short,.about-header-short{height:75px}.about-header-short .about-header-title{margin-top:20px;font-size:28px}.about-header-short #parallax_octocat{left:800px;top:-10px}.about-header-short #parallax_earth{top:-10px;left:700px}#menu-about{float:none;margin-bottom:20px}.employee{position:relative;float:left;width:128px;height:128px;border:1px solid #fff;background-color:#000}.employee-img{width:128px;height:128px;position:absolute;top:0;left:0}.show-identicon .employee-img{display:none}.employee-img.identicon{display:none}.show-identicon .employee-img.identicon{display:block}.employee-info{position:absolute;left:0;top:0;width:128px;height:128px;margin:0;z-index:10;padding:0;text-align:center;background-color:rgba(0,0,0,0.25);background-image:-moz-linear-gradient(rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.25));background-image:-webkit-linear-gradient(rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.25));background-image:linear-gradient(rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.25));background-repeat:repeat-x;background-color:transparent;background-color:#000 \9}.employee-info .identicon{display:none}.employee-info span{font-size:12px;font-weight:normal;color:#fff;position:absolute;bottom:8px;left:0;right:0;text-shadow:0 0 3px black}.employee-info span:before{content:"@";color:#ccc}.show-identicon .employee{background:#f0f0f0}.show-identicon .identicon{width:80px;height:80px;top:16px;left:24px}.show-identicon .employee-info{background-image:none}.show-identicon .employee-info span{color:#333;text-shadow:0 0 3px rgba(255,255,255,0.4)}.show-identicon .employee-info span:before{color:#727272}.about-facts{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #eee}.about-facts:before,.about-facts:after{content:" ";display:table}.about-facts:after{clear:both}.about-fact{float:left;width:25%;list-style:none;font-weight:300}.about-fact .mega-octicon{float:left;width:32px;height:32px;margin-right:10px}.about-fact .fact-label{display:block;font-size:11px;font-weight:bold;text-transform:uppercase}.benefits{margin:0 -15px 20px}.benefits:before,.benefits:after{content:" ";display:table}.benefits:after{clear:both}.benefits li{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:48%;padding-left:15px;padding-right:15px;list-style:none;font-size:14px;font-weight:300}.benefits h4{margin-top:0;margin-bottom:0}.benefits p{margin-top:5px}.jobs-list li{margin-bottom:20px;padding-bottom:20px;list-style:none;border-bottom:1px solid #e5e5e5}.jobs-list h3{margin-top:0;margin-bottom:0}.octospinner{display:none}.loading .octospinner{display:block;margin-left:auto;margin-right:auto}.press-mentions{list-style:none}.press-mentions li{margin-bottom:10px;font-size:16px}.press-mentions cite{display:block;font-size:12px;color:#777}.press-mentions cite:before{content:"\2014 \00A0"}.press-archive{margin-top:20px;padding-top:20px;border-top:1px solid #e5e5e5;text-align:center}.press-archive .octicon{margin-right:5px}.press-info{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #e5e5e5}.press-info li{display:inline-block;margin-right:40px;line-height:32px}.press-info .mega-octicon{margin-right:5px;color:#999;vertical-align:middle}.accountcols .main{float:left;width:560px}.accountcols .sidebar{float:right;width:330px}.accountcols .main>p.overview{margin-top:20px;color:#333}.fieldgroup p.explain.planusage{color:#333}.fieldgroup p.explain.planusage strong{color:#000}.billing-plans tbody td{width:25%;vertical-align:middle}.billing-plans .name{font-size:14px;font-weight:bold;color:#333}.billing-plans .coupon{font-size:12px}.billing-plans .coupon td{color:#fff;background-color:#6cc644}.billing-plans .coupon .text-right{white-space:nowrap}.billing-plans .coupon.expiring td{background-color:#df6e00}.billing-plans .coupon.expiring td .coupon-label:after{border-bottom-color:#df6e00}.billing-plans .coupon-label{position:relative;margin:-9px;padding:9px}.billing-plans .coupon-label:after{position:absolute;left:15px;bottom:100%;content:" ";height:0;width:0;pointer-events:none;border:solid transparent;border-width:5px;border-bottom-color:#6cc644}.billing-plans tbody>.selected{background-color:#fdffce}#credit-card-fields.is-hidden{display:none}.plan-change-message.is-hidden{display:none}.billing-contact-info button{margin-bottom:15px}.billing-contact-info .add-billing-contact-info-modal{display:none}.payment-type{margin:10px 0 10px 0;padding:0 0 10px 0}.payment-type .note{color:#999}.payment-type ul.actions{margin:0}.payment-type ul.actions li{list-style-type:none;margin:0 10px 0 0;height:25px;line-height:25px;font-size:11px;color:#999}.payment-type h3{margin:0;height:25px;line-height:24px;font-size:14px}.payment-type .mega-octicon{margin-right:5px;vertical-align:middle}.two-factor-container{width:480px;margin:150px auto}.two-factor-container #otp{float:left;width:250px;margin:0 10px 0 0}.two-factor-container #recovery_code{float:left;width:250px;margin:0 10px 0 0}.two-factor-container .is-hidden{display:none}.org-login{margin-top:-30px;margin-bottom:30px}.org-login img{border:1px solid #ccc;padding:1px;margin:10px -25px;width:450px}.auth-form{width:400px;margin:60px auto}.auth-form form{border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.075)}.auth-form-header{position:relative;padding:10px 20px;margin:0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);background-color:#6c8393;background-image:-moz-linear-gradient(#7f95a5, #6c8393);background-image:-webkit-linear-gradient(#7f95a5, #6c8393);background-image:linear-gradient(#7f95a5, #6c8393);background-repeat:repeat-x;border:1px solid #6e8290;border-bottom-color:#586873;border-radius:4px 4px 0 0}.auth-form-header h1{margin-top:0;margin-bottom:0;font-size:16px}.auth-form-header h1 a{color:#fff}.auth-form-header .octicon{position:absolute;right:0;top:12px;right:10px;color:rgba(0,0,0,0.4);text-shadow:0 1px 0 rgba(255,255,255,0.1)}.auth-form-body{padding:20px;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px;background-color:#fff;border:1px solid #d8dee2;border-top-color:white;border-radius:0 0 4px 4px}.auth-form-body .input-block{margin-top:5px;margin-bottom:15px}.auth-form-body p.small_notice{display:inline;padding:0 10px}.auth-form-subheading{margin:0}.auth-form-body p{margin:0 0 10px}.auth-form-permissions{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #d8dee2}.auth-form-permissions li{list-style-position:inside;padding-left:15px}.auth-form .note{margin:15px 0;color:#777;text-align:center}.two-factor-help{position:relative;margin:0 auto;padding:10px 10px 10px 36px;width:354px;border:1px solid #eaeaea;border-radius:3px}.two-factor-help .octicon{position:absolute;top:10px;left:10px}.two-factor-help .minibutton{float:right}.two-factor-help ul{list-style-type:none}.flash.sms-error,.flash.sms-success{display:none;margin:0 0 10px 0}.is-sending .spinner{display:inline-block}.is-sent .sms-success{display:block}.is-sent .sms-error{display:none}.is-not-sent .sms-success{display:none}.is-not-sent .sms-error{display:block}.autocomplete-results{display:none;position:absolute;max-height:20em;list-style:none;background:#fff;border:1px solid #c1c1c1;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,0.3);overflow-y:auto;font-size:13px;z-index:99;-moz-box-sizing:border-box;box-sizing:border-box}.autocomplete-group{width:100%;overflow:hidden;border-radius:0 0 3px 3px}.autocomplete-group .autocomplete-group-title{width:68px;padding:5px;border-right:1px solid #ddd;font-size:11px;font-weight:normal;color:#999;vertical-align:top;text-align:right}.autocomplete-group:first-child{border-radius:3px}.autocomplete-item{display:block;padding:5px;color:#000;text-decoration:none;font-weight:bold;cursor:pointer}.autocomplete-item.navigation-focus{background-color:#4183c4;text-decoration:none;color:#fff}.autocomplete-item.selected{background-color:#4183c4;color:#fff}.autocomplete-item.selected .due_on,.autocomplete-item.selected .past_due,.autocomplete-item.selected .number{color:#fff}.autocomplete-item .due_on,.autocomplete-item .past_due{display:block;font-weight:normal}.autocomplete-item .due_on{color:#666}.autocomplete-item .past_due{color:#984646}.autocomplete-item .state{display:block;float:left;margin-right:5px;margin-top:3px;width:13px;height:9px;border-radius:2px}.autocomplete-item .state.closed{background-color:#bd2c00}.autocomplete-item .state.open{background-color:#6cc644}.autocomplete-item .number{color:#999;font-weight:bold}.autocomplete-item img{border-radius:3px}.autocomplete-header{border-radius:3px 3px 0 0}.autocomplete-header:last-child{border-radius:3px}.suggester-container{position:absolute;top:58px;left:10px;z-index:1}.pull-form .suggester-container{top:65px}.orgs-next-content .suggester-container{top:0px;left:0px}.suggester{position:relative;top:0;left:0;display:none;margin-top:20px;background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,0.1);min-width:180px}.suggester.active{display:block}.suggester ul{list-style:none;margin:0;padding:0}.suggester li{display:block;padding:5px 10px;border-bottom:1px solid #ddd;font-weight:bold}.suggester li small{color:#777;font-weight:normal}.suggester li:last-child{border-bottom:none;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.suggester li:first-child a{border-top-left-radius:3px;border-top-right-radius:3px}.suggester li.navigation-focus{color:#fff;background:#4183c4;text-decoration:none}.suggester li.navigation-focus small{color:#fff}body,input,select,textarea,button{font:13px Helvetica, arial, freesans, clean, sans-serif;line-height:1.4}body{min-width:1020px;color:#333333;background-color:#fff}::-moz-selection{text-shadow:none;background:rgba(65,131,196,0.4)}::selection{text-shadow:none;background:rgba(65,131,196,0.4)}a{color:#4183c4;text-decoration:none}a:hover{text-decoration:underline}a:focus,a:active{text-decoration:underline}.action{color:#d00;text-decoration:underline}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.danger{color:#c00}.mute{color:#000}.sparkline{display:none}.right{float:right}.left{float:left}.text-right{text-align:right}.text-left{text-align:left}.hidden{display:none}.warning{background-color:#fffccc;font-weight:bold;padding:.5em;margin-bottom:.8em}.error_box{padding:1em;font-weight:bold;background-color:#ffebe8;border:1px solid #DD3C10}hr,.rule{clear:both;margin:15px 0;height:0px;overflow:hidden;border:none;background:transparent;border-bottom:1px solid #ddd}#spinner{height:16px;width:16px;background:transparent;border:none;margin-right:0}.breadcrumb{margin:5px 0 5px 0;font-size:18px;color:#999}.breadcrumb strong.final-path{color:#000}.breadcrumb .abort{display:inline;font-size:14px}.breadcrumb .new-file-no-branch{color:#999999;opacity:.5}.breadcrumb .new-file-no-branch:hover{color:#4183c4}.breadcrumb .zeroclipboard-button{display:inline-block;margin-left:5px}.breadcrumb .repo-root{font-weight:bold}#files input.filename{padding:6px 7px;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:16px;color:#444;border:1px solid #ddd;border-radius:4px;outline:none;background:none}#files input.filename:focus{border-color:#51A7E8;box-shadow:rgba(81,167,232,0.5) 0 0 5px,inset rgba(0,0,0,0.2) 0 1px 1px}#files input.filename,#files .abort{position:relative;top:-1px}#files .gitignore-template,#files .license-template{float:right;font-size:14px;position:relative;top:3px;display:none}#files .gitignore-template.is-visible,#files .license-template.is-visible{display:inline}#files .license-info{color:#ccc;margin-left:5px}#files .select-menu-git-ignore,#files .select-menu-license-picker{right:0px}#files .new-commit{display:block;width:720px}.new-file-link{display:inline-block;cursor:pointer}.new-file-link span{color:#4183c4}.blob-interaction-bar{position:relative;background:#f2f2f2;border-bottom:1px solid #e5e5e5}.blob-interaction-bar:before,.blob-interaction-bar:after{content:" ";display:table}.blob-interaction-bar:after{clear:both}.blob-interaction-bar .octicon-search{position:absolute;top:10px;left:10px;color:#999;font-size:12px}.blob-filter[type=text]{padding:4px 20px 5px 30px;width:100%;font-size:12px;border:none;border-radius:0;outline:none}.blob-filter[type=text]:focus{outline:none}.repo-access-false{position:relative;border:1px #C5D5DD solid;padding:3px 0 0 15px;background:#E6F1F6;margin:10px 0 50px 0;border-radius:4px}.repo-access-false p{float:left;font-size:16px;text-shadow:#fff 0px 1px 0px}.repo-access-false button{margin:8px 340px 0 0px}.bubble#files .file{margin-bottom:0}.bubble#files .file{background:#ececec}.bubble#files .file .data{background:#fff}.bubble#files .file .meta{padding:5px 10px}.bubble#files .file .meta .info{font-family:Helvetica, arial, freesans, clean, sans-serif}.markdown-body .csv-data td,.markdown-body .csv-data th{overflow:hidden;white-space:nowrap;font-size:12px;padding:5px;text-align:left;line-height:1}.markdown-body .csv-data .blob-line-nums{line-height:1;padding:5px 0;background:#fff;border-top:none;border:none}.markdown-body .csv-data .blob-line-nums span{margin-top:3px}.markdown-body .csv-data tr.line{border-top:none}.markdown-body .csv-data thead th{font-weight:bold;border-top:none;background:#f8f8f8}.blob-ctags-list{float:right;height:auto;margin-top:4px;margin-right:8px}.blob-ctags-list .navigation-focus a{color:white}.highlight .popover{width:400px}.highlight .popover .loading{font-size:12px}.highlight span.n>a,.highlight span.no>a{cursor:text;pointer-events:none}.highlight-ctags.ctags-loading{cursor:wait}.highlight-ctags span>a.ctag-relative{cursor:auto;pointer-events:auto;border-bottom:1px solid;padding-bottom:1px}.highlight-ctags span>a.ctag-relative:hover{text-decoration:none}.highlight-ctags .valid-ctag{cursor:pointer;border-bottom:1px dotted;padding-bottom:1px}.ctags-lookup-results{max-height:195px;overflow-y:auto;position:relative}.ctags-lookup-result{padding:8px 5px;cursor:pointer}.ctags-lookup-result .name{font-size:14px;overflow:hidden;text-overflow:ellipsis}.ctags-lookup-result .link{text-align:right;font-size:10px;overflow:hidden}.ctags-lookup-result .highlight>pre,.ctags-lookup-result pre.code{overflow-x:hidden;text-overflow:ellipsis;width:300px}.ctags-lookup-result .highlight,.ctags-lookup-result pre.code{display:inline-block}.ctags-lookup-result pre.line_numbers.inline{width:25px;display:inline-block;margin-right:5px;background-color:white !important;cursor:auto !important;padding-top:0 !important;padding-bottom:0 !important}.ctags-lookup-result.navigation-focus,.ctags-lookup-result.navigation-focus pre,.ctags-lookup-result.navigation-focus pre.line_numbers.inline{background-color:#ffffef !important}.file .no-preview{margin:5px}.quick-pull-choice{margin-top:-7px;margin-bottom:10px}.quick-pull-branch .select-menu-item .select-menu-item-icon{color:#aaa}.box-header,.box-body{-moz-box-sizing:border-box;box-sizing:border-box}.box{margin-bottom:20px}.box-header{min-height:40px;line-height:1;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border:1px solid #d5d5d5;border-top-left-radius:4px;border-top-right-radius:4px}.box-header:before,.box-header:after{content:" ";display:table}.box-header:after{clear:both}.box-title{float:left;margin:9px 10px;font-size:14px;line-height:1.429;color:#555}.box-title a{color:#555}.box-title .css-truncate-target{max-width:400px}.box-title-count{color:#99a4aa}.box-header-icon{float:left;margin:10px 7px 0 10px;color:#777}.box-header>.mini-icon-deleted{color:#bd2c00}.box-header>.mini-icon-added{color:#6cc644}.box-actions{float:right;margin-left:10px}.box-action{position:relative;float:left;padding:9px 10px;color:#555;line-height:20px;background-color:transparent;border:solid #d5d5d5;border-width:0 1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.5);-webkit-appearance:none}.box-action+.box-action{margin-left:-1px}.box-action:last-child{border-right:0;border-top-right-radius:3px}.box-action:hover,.box-action:active{z-index:2;text-decoration:none;background-color:#e4e4e4;background-image:-moz-linear-gradient(#f4f4f4, #e4e4e4);background-image:-webkit-linear-gradient(#f4f4f4, #e4e4e4);background-image:linear-gradient(#f4f4f4, #e4e4e4);background-repeat:repeat-x;cursor:pointer}.box-action:active{background-color:#e4e4e4;background-image:none;border-color:#d5d5d5;box-shadow:inset 0 2px 4px rgba(0,0,0,0.1)}.box-action .mini-icon{vertical-align:-1px}.box-actions .show-inline-notes{font-weight:normal}.box-body{background-color:#fff;border:solid #d5d5d5;border-width:0 1px 1px;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.box-body:before,.box-body:after{content:" ";display:table}.box-body:after{clear:both}.box-body-padded{padding-left:10px;padding-right:10px}.box-body .list-group-item:last-child{border-bottom:0}.box-small .box-header{min-height:36px}.box-small .box-title{margin-top:6px;margin-bottom:6px}.box-small .box-body-padded{padding:10px}p.subtext{margin:10px 0;font-size:14px;color:#666}table.branches{margin:5px 0 0 0;width:100%}table.branches th{padding:2px 0;font-size:11px;text-transform:uppercase;text-align:left;color:#666;border-bottom:1px solid #ddd}table.branches th.state-widget{text-align:center}table.branches tr td{padding:5px 0;border-bottom:1px solid #ddd}table.branches tr:hover td{background:#fafafa}table.branches tr td.state-widget{width:200px}table.branches tr.base td{background:#333;color:#fff}table.branches tr.base td.name{padding-left:10px}table.branches tr.base td.name p{color:#aaa}table.branches tr.base td.actions{padding-right:10px;color:#eee}table.branches tr.base a{color:#fff}table.branches tr td.actions{white-space:nowrap}table.branches tr td.actions .spinner{vertical-align:middle;display:none;margin-right:4px}.branches .name h3{margin:0;font-size:16px}.branches .name p{margin:-3px 0 0 0;font-size:12px;color:#666}.branches .name .css-truncate-target{max-width:490px}.branches .state{display:inline-block;margin-right:5px;padding:2px 5px;font-size:11px;text-transform:uppercase;font-weight:bold;background:#eee;border-radius:2px}.branches .state-progress{font-size:12px;color:#666;font-style:normal}.branches div.actions{float:right}.branches div.actions>span{list-style-type:none;display:inline-block;margin:0 0 0 5px}.branches div.actions>span.text{padding:5px 0;font-size:11px;font-weight:bold}.showing-unmerged td.name{padding-left:10px}.branches .status{position:relative;top:1px}#branches-index .sidebar{width:160px}#branches-index .main{width:720px}.branch-discussions{list-style:none}.branch-discussion.capped-box{list-style:none;padding:0;border-radius:0}.branch-discussion.capped-box .commit-group-item{border:none}.branch-discussion.capped-box .css-truncate-target{max-width:520px}.diverge-widget{position:relative;height:35px}.diverge-widget .ahead{display:block;position:absolute;width:50%;height:100%;left:50%}.diverge-widget .behind{display:block;position:absolute;width:50%;height:100%;right:50%}.diverge-widget .bar{position:absolute;top:13px;right:0;display:block;height:8px;background:#d0d0d0}.diverge-widget .ahead .bar{background:#7a7a7a;left:0}.diverge-widget.hot .bar{background-color:#ff704f}.diverge-widget.hot .ahead .bar{background-color:#811201}.diverge-widget.fresh .bar{background-color:#ffd266}.diverge-widget.fresh .ahead .bar{background-color:#b69e67}.diverge-widget.stale .bar{background-color:#b2d0dd}.diverge-widget.stale .ahead .bar{background-color:#1e4152}.diverge-widget em{font-style:normal;font-size:10px;line-height:10px;color:#999;white-space:nowrap}.diverge-widget .behind em{position:absolute;bottom:0;right:5px}.diverge-widget .ahead em{position:absolute;top:0;left:5px}.diverge-widget .separator{display:block;position:absolute;top:0;left:50%;margin-left:-2px;width:2px;height:100%;background:#454545}ul.hotness-legend{float:right;margin:10px 0 0 0}ul.hotness-legend li{list-style-type:none;float:left;margin:0;font-size:11px;color:#999}ul.hotness-legend .ahead,ul.hotness-legend .behind{display:block;margin:1px 0 0 0;width:15px;height:10px}ul.hotness-legend .old .behind{background-color:#d0d0d0}ul.hotness-legend .old .ahead{background-color:#7a7a7a}ul.hotness-legend .stale .behind{background-color:#b2d0dd}ul.hotness-legend .stale .ahead{background-color:#1e4152}ul.hotness-legend .fresh .behind{background-color:#ffd266}ul.hotness-legend .fresh .ahead{background-color:#b69e67}ul.hotness-legend .hot .behind{background-color:#ff704f}ul.hotness-legend .hot .ahead{background-color:#811201}ul.hotness-legend li.text{margin:0 10px;height:23px;line-height:23px}p.recently-touched-branches-description{margin:0;font-size:11px;color:#888}.recently-touched-branches{margin:5px 0 10px 0;padding:0;background:#fffef1;border:1px solid #e5e2c8;border-radius:4px}.recently-pushed-branch-actions{float:right}.recently-touched-branches a.branch-link{font-weight:bold}.recently-touched-branches li{list-style-type:none;padding:5px;height:36px;border-bottom:1px solid #e5e2c8;-moz-box-sizing:border-box;box-sizing:border-box}.recently-touched-branches li:last-child{border-bottom:none}.recently-touched-branches li{margin:0;line-height:23px}.recently-pushed-branch-details{display:inline-block;color:#a19e7f;margin:0 0 0 7px;font-size:13px;line-height:26px}.recently-pushed-branch-details a{color:#6b694f}.branch-discussion.capped-box .octicon{float:right;margin-left:5px}.showing-unmerged .merged-content,.showing-merged .unmerged-content{display:none}.branch-name{display:inline-block;position:relative;top:1px;padding:2px 6px 3px 6px;color:rgba(0,0,0,0.5);font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:12px;background:rgba(209,227,237,0.5);border-bottom:1px solid #dae5eb;border-radius:3px}.branch-name .octicon{margin:1px -2px 0 0;color:#B0C4CE}a.branch-name{color:#4183c4}.range-editor{position:relative;margin:10px 0}.is-collapsed .range-editor.for-expanded{display:none}.is-expanded .range-editor.for-collapsed{display:none}.range-editor span.flag{display:block;position:relative;float:left;-moz-box-sizing:border-box;box-sizing:border-box;padding:12px 13px;background-color:#fafafa;border:1px solid #eee;border-right-width:0;border-bottom-width:2px;border-radius:3px 0 0 3px}.range-editor span.flag .octicon{display:block;color:#666}.range-editor .range{min-height:43px;margin-left:41px;padding:7px 10px;background-color:#fafafa;border:1px solid #eee;border-bottom-width:2px;border-radius:0 3px 3px 0;position:relative;-moz-box-sizing:border-box;box-sizing:border-box}.range-editor .range p{margin:0 0 8px 0;font-size:12px;color:#999}.range-editor .range .dots{margin:0 4px;font-size:16px;color:#999}.range-editor .range .range-action{float:right}.range-editor .range .range-action.octicon{position:absolute;top:13px;right:13px;color:#999;cursor:pointer}.range-editor .range .range-action.octicon:hover{color:#bd2c00}.range-editor .range .select-menu{position:relative;display:inline-block}.range-editor .range .select-menu.fork-suggester{display:none}.is-cross-repo .range-editor .range .select-menu.fork-suggester{display:inline-block}.is-cross-repo .range-editor .range .cross-repo-text{display:none}.range-editor .range .branch .css-truncate-target,.range-editor .range .fork-suggester .css-truncate-target{max-width:180px}.range-editor.for-collapsed .range{border-bottom-left-radius:0}.range-editor.for-new-pull-page{height:100px}.range-editor div.range-editor-form{position:absolute;top:0;left:41px;width:877px;height:76px;background-color:#fafafa;border:1px solid #eee;border-bottom-width:2px;border-radius:0 3px 3px 3px}.range-editor div.range-editor-form div.range-editor-base,.range-editor div.range-editor-form div.range-editor-head{position:absolute;padding:8px;width:415px;z-index:0}.range-editor div.range-editor-form div.range-editor-base .gravatar,.range-editor div.range-editor-form div.range-editor-head .gravatar{display:block;position:relative;float:left;width:22px;height:22px;margin-right:8px;border:1px solid #d2d2d2;padding:1px;line-height:21px}.range-editor div.range-editor-form div.range-editor-base .gravatar img,.range-editor div.range-editor-form div.range-editor-head .gravatar img{display:block}.range-editor div.range-editor-form div.range-editor-base .repo,.range-editor div.range-editor-form div.range-editor-head .repo{float:left;width:339px}.range-editor div.range-editor-form div.range-editor-base .branch,.range-editor div.range-editor-form div.range-editor-head .branch{clear:both;float:left;margin-top:8px;width:373px}.range-editor div.range-editor-form .range-loading-overlay{position:absolute;display:none;top:0;left:0;height:80px;width:100%;z-index:1}.range-editor div.range-editor-form div.range-editor-base{top:0;left:0;padding-right:15px}.range-editor div.range-editor-form div.range-editor-head{top:0;left:438px;padding-left:15px;border-left:1px solid #eee}.range-editor div.range-editor-form span.action-indicator{position:absolute;left:430px;top:25px;padding:5px 0;color:#aaa;background:#fafafa}.range-editor div.range-editor-form .pull-range-base-repo-content{margin-top:0;left:40px;top:36px}.range-editor div.range-editor-form .pull-range-base-branch-content{margin-top:0;left:7px;top:70px}.range-editor div.range-editor-form .pull-range-head-repo-content{margin-top:0;left:47px;top:36px}.range-editor div.range-editor-form .pull-range-head-branch-content{margin-top:0;left:14px;top:70px}.range-editor div.range-editor-form .repo .css-truncate-target{max-width:285px}.range-editor div.range-editor-form .branch .css-truncate-target{max-width:305px}ul.comparison-list{margin:25px auto 15px auto;width:350px;text-align:left;font-size:14px;background:#fff;border:1px solid #ddd;border-radius:3px}ul.comparison-list>li{list-style-type:none;padding:7px 10px;border-top:1px solid #eee}ul.comparison-list>li a{font-weight:bold}ul.comparison-list>li em{float:right;font-style:normal;color:#999}ul.comparison-list>li .octicon{position:relative;top:1px;color:#aaa}ul.comparison-list>li .css-truncate-target{max-width:200px}ul.comparison-list>li.title{border-top:none;background:#fafafa;font-size:12px;font-weight:bold;color:#aaa;text-transform:uppercase;border-top-right-radius:3px;border-top-left-radius:3px}.overall-summary.comparison-summary{margin:15px 0 10px 0;border-radius:3px}.overall-summary.comparison-summary .numbers-summary li{border-bottom:none}.comparison-discussion-starter .pull-request-composer{display:none}.comparison-discussion-starter.open .placeholder-bubble{display:none}.comparison-discussion-starter.open .pull-request-composer{display:block}.recently-touched-branches-wrapper{margin:15px 0}.form-actions{text-align:right;padding-bottom:5px}.form-actions .cancel{margin-top:5px;float:left}.form-actions .button.cancel{margin-top:0;margin-left:2px}.form-actions .minibutton.cancel{margin-top:0}.form-actions .optional{display:block;padding-top:8px;float:left;margin-right:15px}.form-actions .optional span.text{padding:0 3px}.form-actions .optional input{position:relative;top:-1px}.form-warning{margin:10px 0;padding:8px 10px;border:1px solid #E7E4C2;font-size:14px;color:#333;background:#ffffe2;border-radius:4px}.form-warning p{margin:0;line-height:1.5}.form-warning strong{color:#000}.form-warning a{font-weight:bold}.watch-button-container .watch-button,.watch-button-container.on .unwatch-button{display:inline-block}.watch-button-container.on .watch-button,.watch-button-container .unwatch-button{display:none}.watch-button-container.loading{opacity:0.5}.starring-container .unstarred,.starring-container.on .starred{display:inline-block}.starring-container.on .unstarred,.starring-container .starred{display:none}.starring-container.loading{opacity:0.5}.user-following-container .follow,.user-following-container.on .unfollow{display:inline-block}.user-following-container.on .follow,.user-following-container .unfollow{display:none}.user-following-container.loading{opacity:0.5}.members .user-following-container{float:right}.featured-collection-carousel{position:relative}.featured-collection-carousel .carousel-wrapper{width:980px;height:250px;overflow:hidden}.featured-collection-carousel .carousel-slides{width:10000px;transition:margin 0.3s ease-in;-webkit-transition:margin 0.3s ease-in 0}.featured-collection-carousel .carousel-slide{list-style-type:none;float:left;width:980px;height:250px}.featured-collection-carousel .slide-left,.featured-collection-carousel .slide-right{position:absolute;top:0;bottom:0;width:60px;text-decoration:none}.featured-collection-carousel .slide-left:hover .mega-octicon,.featured-collection-carousel .slide-right:hover .mega-octicon{color:#333}.featured-collection-carousel .slide-left .mega-octicon,.featured-collection-carousel .slide-right .mega-octicon{width:15px;color:#CCC;position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:-7px}.featured-collection-carousel .slide-left.disabled .mega-octicon,.featured-collection-carousel .slide-right.disabled .mega-octicon{color:#eee}.featured-collection-carousel .slide-left{left:-60px}.featured-collection-carousel .slide-right{right:-60px}@media only screen and (max-width: 1155px){.slide-left,.slide-right{display:none}}.chromed-list-browser{position:relative;margin-bottom:8px;float:left;width:100%}.chromed-list-browser .context-loader{top:39px}.chromed-list-browser .none p,.chromed-list-browser .error p{margin:0;padding:30px 20px;border-radius:3px;text-align:center;font-size:15px;color:#999;background:#f5f5f5;-webkit-font-smoothing:antialiased}.chromed-list-browser .none a,.chromed-list-browser .error a{color:#4183c4}.chromed-list-browser .actions{background-color:#ecf0f1;background-image:-moz-linear-gradient(#fff, #ecf0f1);background-image:-webkit-linear-gradient(#fff, #ecf0f1);background-image:linear-gradient(#fff, #ecf0f1);background-repeat:repeat-x;margin:0;padding:.5em;font-size:11px;overflow:hidden}.chromed-list-browser .actions .buttons.deactivated .minibutton{opacity:0.5}.chromed-list-browser .actions .buttons.activated .minibutton{opacity:1.0}.chromed-list-browser .actions .buttons.activated .minibutton p.note{display:none}.chromed-list-browser .actions .buttons p.note{margin:0 0 0 5px;display:inline-block;font-size:11px;color:#9ca9a9}.chromed-list-browser .pagination{float:right;margin:7px;font-weight:bold}.chromed-list-browser .pagination a,.chromed-list-browser .pagination span{padding:4px;font-size:11px;color:#4183C4}.chromed-list-browser .pagination a:hover,.chromed-list-browser .pagination a:active,.chromed-list-browser .pagination span:hover,.chromed-list-browser .pagination span:active{background:none}.chromed-list-browser .pagination a.current,.chromed-list-browser .pagination a.current:hover,.chromed-list-browser .pagination span.current,.chromed-list-browser .pagination span.current:hover{color:#333;cursor:default}.chromed-list-browser .pagination a.gap,.chromed-list-browser .pagination span.gap{color:#ddd}.chromed-list-browser .pagination a.disabled,.chromed-list-browser .pagination span.disabled{display:none}.chromed-list-browser .paging{padding:5px;border-bottom:1px solid #ddd}.chromed-list-browser .button-pager{display:block;padding:5px 0;text-align:center;font-size:12px;font-weight:bold;text-shadow:1px 1px 0 #fff;text-decoration:none;border:1px solid #e4e9ef;border-radius:3px;background-color:#eff3f6;background-image:-moz-linear-gradient(#fdfdfe, #eff3f6);background-image:-webkit-linear-gradient(#fdfdfe, #eff3f6);background-image:linear-gradient(#fdfdfe, #eff3f6);background-repeat:repeat-x}.chromed-list-browser .button-pager:hover{border-color:#d9e1e8;background-color:#dee8f1;background-image:-moz-linear-gradient(#fafbfd, #dee8f1);background-image:-webkit-linear-gradient(#fafbfd, #dee8f1);background-image:linear-gradient(#fafbfd, #dee8f1);background-repeat:repeat-x}.list-browser-item{position:relative;border-bottom:1px solid #ddd}.list-browser-item .list-browser-bottom-right-info{position:absolute;bottom:3px;right:5px}.list-browser-item.navigation-focus{background:#f5f9fc !important}.list-browser-filterbar{font-family:"Helvetica Neue", Helvetica, Arial, freesans;border-radius:5px 5px 0 0;height:31px;background-color:#cacaca;background-image:-moz-linear-gradient(#efefef, #cacaca);background-image:-webkit-linear-gradient(#efefef, #cacaca);background-image:linear-gradient(#efefef, #cacaca);background-repeat:repeat-x;border-bottom:1px solid #b4b4b4;-moz-box-sizing:border-box;box-sizing:border-box}.list-browser-filterbar li{list-style-type:none;display:inline}.list-browser-filterbar li:last-child .sort-type{border-right:0;border-top-right-radius:5px}.list-browser-filter-tabs{display:block;float:left;padding:5px 5px 0;overflow:hidden}.list-browser-filter-tabs .filter-tab,.list-browser-filter-tabs.pjax-active .filter-tab.selected{display:inline-block;padding:0 8px;height:24px;line-height:24px;font-size:12px;font-weight:bold;color:#888;-webkit-font-smoothing:antialiased;text-shadow:1px 1px 0 rgba(255,255,255,0.3);text-decoration:none;border:1px solid #ccc;border-bottom:0;border-radius:3px 3px 0 0;background:rgba(255,255,255,0.2);cursor:pointer}.list-browser-filter-tabs .filter-tab.selected,.list-browser-filter-tabs.pjax-active .filter-tab.pjax-active{color:#333;background:#fff;box-shadow:0 0 5px rgba(0,0,0,0.1);border-color:#B4B4B4;border-bottom:1px solid #fff}.list-browser-sorts{float:right;margin:0}.list-browser-sorts .sort-type{display:inline-block;padding:0 10px;height:30px;line-height:29px;font-size:10px;color:#666;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.list-browser-sorts .sort-type:hover{text-decoration:underline}.list-browser-sorts .asc .sort-type,.list-browser-sorts .desc .sort-type{position:relative;padding-left:20px;color:#333;font-weight:bold;background:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);border-width:0 1px}.list-browser-sorts .asc .sort-type:before,.list-browser-sorts .desc .sort-type:before{width:0;height:0;border:4px solid #777;border-color:#777 transparent transparent;border-width:4px 4px 0;display:block;content:"";position:absolute;left:6px;top:50%;margin-top:-2px}.list-browser-sorts .asc .sort-type:before{border-color:transparent transparent #777;border-width:0 4px 4px}.list-browser-footer{font-size:11px;font-weight:bold;color:#777;overflow:hidden;min-height:15px;background:#f6f6f6;border-radius:0 0 5px 5px}.list-browser-footer .footer-text{display:inline-block;margin:10px;text-shadow:1px 1px 0 rgba(255,255,255,0.5)}.list-browser-footer .pagination{margin:5px}.code-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px;color:#333333}.code-list .title{padding:0 0 5px;margin:0 0 0 40px;min-height:24px;font-weight:bold}.code-list .repo-specific .title,.code-list .repo-specific .full-path{margin-left:0}.code-list .updated-at{margin:0;font-size:11px;color:#999999;font-weight:normal}.code-list .language{float:right;color:rgba(51,51,51,0.75);font-size:12px;margin-left:10px}.code-list img.avatar{float:left;border-radius:3px;margin-left:3px}.code-list .code-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 0;margin:0 0 20px 0}.code-list .code-list-item pre.line_numbers{min-width:27px;box-sizing:border-box}.code-list .code-list-item .data{background:#fff}.code-list .private .bubble{background-color:#F8EEC7}.code-list .private .bubble pre.line_numbers{background-color:#F8EEC7;border-right:1px solid #F7CA75}.code-list .private .bubble pre.line_numbers a{color:#A1882B}.code-list .private .bubble .file-box{border:1px solid #F7CA75}.code-list .divider .blob-line-nums,.code-list .divider .blob-line-code .highlight{padding-top:0;padding-bottom:0;background-color:#eaf2f5}.code-list .full-path{margin:0 0 0 40px}.code-list .full-path .octicon-repo{color:#666666}.code-list .full-path .octicon-lock{color:#E9DBA4}.code-list .full-path a{color:#999999}.codesearch-head{padding-bottom:20px}.codesearch-head.in-repository{margin:20px 0;padding-bottom:0}.codesearch-head.pagehead h1{float:left;margin:0 20px 0 0;width:220px;line-height:33px}.codesearch-head button{float:right}.codesearch-head #adv_code_search .completed-query{margin:0;position:absolute;top:8px;left:8px;right:8px;white-space:nowrap;overflow:hidden}.codesearch-head #adv_code_search .completed-query span{opacity:0}.codesearch-head #adv_code_search .search-page-label{width:658px;display:inline-block;cursor:text;position:relative;font-weight:normal}.codesearch-head #adv_code_search .search-page-label.focus .completed-query{opacity:0.6}.codesearch-head #adv_code_search .search-page-input{border:none;box-shadow:none;padding:0;margin:0;width:100%;min-height:0}.advanced-search-form h3{margin-top:20px}.advanced-search-form .flattened dt label{font-weight:normal}.advanced-search-form .flattened dt{width:220px}.advanced-search-form .flattened dd{margin-left:240px}.advanced-search-form .form-checkbox{margin-left:240px}.advanced-search-form fieldset{border-bottom:1px solid #F1F1F1;padding-bottom:20px;margin-bottom:30px}.codesearch-cols .aside{float:left;width:220px}.codesearch-cols .aside .menu-container{width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.codesearch-cols .aside .menu-container .octicon{width:16px;text-align:center;margin-right:5px}.codesearch-cols .aside .search-menu-container{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #F1F1F1;overflow:hidden}.codesearch-cols .aside .meta-search-links{margin-top:20px}.codesearch-cols .aside .meta-search-links a{margin-right:10px}.codesearch-cols .aside .filter-list{border-bottom:1px solid #F1F1F1;margin-bottom:20px;padding-bottom:20px}.codesearch-cols .aside .filter-list li{position:relative}.codesearch-cols .aside .filter-list li span.bar{background:#f1f1f1;display:inline-block;position:absolute;z-index:-1;top:2px;bottom:2px;right:0}.codesearch-cols.in-repository .aside .search-menu-container{border-bottom:none}.codesearch-cols div.context-loader.large-format-loader{padding-top:5%}.codesearch-cols .main-content{position:relative;margin-left:240px}.codesearch-cols .main-content .tabnav{margin-bottom:20px}.codesearch-cols .main-content ul.members-list{margin-top:0}.codesearch-cols .main-content ul.members-list li:first-child{padding-top:0}.codesearch-cols ul.repolist h3 a:visited,.codesearch-cols .code-list .title a:visited{color:#7C65C2}.codesearch-cols ul.repolist h3 a em,.codesearch-cols ul.repolist .description em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px;text-shadow:none}.codesearch-cols .search-foot-note{float:right;color:#999999;margin-top:11px}.simple-search-page{padding-top:120px}.simple-search-page h2{font-weight:normal}.simple-search-page h2 .mega-octicon{vertical-align:middle}.simple-search-page .container{width:740px}.simple-search-page .commandbar{float:left;margin-right:5px}.simple-search-page .help{display:none}#code_search input,.simple-search-page input{width:658px;margin-right:0}.in-repository #code_search{padding-bottom:0}.in-repository #code_search input{width:595px}.sort-bar{border-bottom:1px solid #f1f1f1;margin-bottom:20px;padding-bottom:20px}.sort-bar .sort-label{padding-right:5px;font-weight:200;font-size:13px;color:#666}.sort-bar .select-menu{float:right;position:relative;top:-6px}.sort-bar h3{margin:0}.sort-bar .sort-form{float:right}.sort-bar .sort-link{font-weight:bold;color:#8A8A8A;text-decoration:none;margin-top:4px}.sort-form .sort-icon{border:5px solid #8A8A8A;height:0;width:0;display:inline-block;margin-left:5px}.sort-form .sort-desc .sort-icon{border-color:#8A8A8A transparent transparent;border-width:5px 4px 2px}.sort-form .sort-asc .sort-icon{border-color:transparent transparent #8A8A8A;border-width:2px 4px 5px}#ace-editor{position:relative;font-family:Monaco, "Liberation Mono", Courier, monospace}#ace-editor .ace_content{line-height:normal}.ace-twilight .ace_editor{border:2px solid #9f9f9f}.ace-twilight .ace_editor.ace_focus{border:2px solid #327fbd}.ace-twilight .ace_gutter{width:50px;background:#ECECEC;color:#AAA;overflow:hidden;border-right:1px solid #DDD;font-family:Consolas, "Liberation Mono", Courier, monospace}.ace-twilight .ace_gutter-layer{width:100%;text-align:right}.ace-twilight .ace_gutter-layer .ace_gutter-cell{padding-right:6px}.ace-twilight .ace_print_margin{width:1px;background:#e8e8e8}.ace-twilight .ace_scroller{background-color:#141414}.ace-twilight .ace_text-layer{cursor:text;color:#F8F8F8}.ace-twilight .ace_cursor{border-left:2px solid #F8F8F8}.ace-twilight .ace_cursor.ace_overwrite{border-left:0px;border-bottom:1px solid #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection{background:rgba(221,240,255,0.2)}.ace-twilight .ace_marker-layer .ace_step{background:#c6dbae}.ace-twilight .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid rgba(255,255,255,0.25)}.ace-twilight .ace_marker-layer .ace_active_line{background:rgba(255,255,255,0.12)}.ace-twilight .ace_invisible{color:rgba(255,255,255,0.25)}.ace-twilight .ace_keyword{color:#CDA869}.ace-twilight .ace_constant{color:#CF6A4C}.ace-twilight .ace_invalid.ace_illegal{color:#F8F8F8;background-color:rgba(86,45,86,0.75)}.ace-twilight .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#D2A8A1}.ace-twilight .ace_support{color:#9B859D}.ace-twilight .ace_support.ace_function{color:#DAD085}.ace-twilight .ace_string{color:#8F9D6A}.ace-twilight .ace_string.ace_regexp{color:#E9C062}.ace-twilight .ace_comment{font-style:italic;color:#5F5A60}.ace-twilight .ace_variable{color:#7587A6}.ace-twilight .ace_xml_pe{color:#494949}.ace-solarized-dark .ace_editor{border:2px solid #9f9f9f}.ace-solarized-dark .ace_editor.ace_focus{border:2px solid #327fbd}.ace-solarized-dark .ace_gutter{width:50px;background:#e8e8e8;color:#333;overflow:hidden}.ace-solarized-dark .ace_gutter-layer{width:100%;text-align:right}.ace-solarized-dark .ace_gutter-layer .ace_gutter-cell{padding-right:6px}.ace-solarized-dark .ace_print_margin{width:1px;background:#e8e8e8}.ace-solarized-dark .ace_scroller{background-color:#002B36}.ace-solarized-dark .ace_text-layer{cursor:text;color:#93A1A1}.ace-solarized-dark .ace_cursor{border-left:2px solid #D30102}.ace-solarized-dark .ace_cursor.ace_overwrite{border-left:0px;border-bottom:1px solid #D30102}.ace-solarized-dark .ace_marker-layer .ace_selection{background:#073642}.ace-solarized-dark .ace_marker-layer .ace_step{background:#c6dbae}.ace-solarized-dark .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid rgba(147,161,161,0.5)}.ace-solarized-dark .ace_marker-layer .ace_active_line{background:#073642}.ace-solarized-dark .ace_invisible{color:rgba(147,161,161,0.5)}.ace-solarized-dark .ace_keyword{color:#859900}.ace-solarized-dark .ace_constant.ace_language{color:#B58900}.ace-solarized-dark .ace_constant.ace_numeric{color:#D33682}.ace-solarized-dark .ace_support.ace_function{color:#268BD2}.ace-solarized-dark .ace_string{color:#2AA198}.ace-solarized-dark .ace_string.ace_regexp{color:#D30102}.ace-solarized-dark .ace_comment{font-style:italic;color:#657B83}.ace-solarized-dark .ace_variable.ace_language{color:#268BD2}.ace-solarized-light .ace_editor{border:2px solid #9f9f9f}.ace-solarized-light .ace_editor.ace_focus{border:2px solid #327fbd}.ace-solarized-light .ace_gutter{width:50px;background:#e8e8e8;color:#333;overflow:hidden}.ace-solarized-light .ace_gutter-layer{width:100%;text-align:right}.ace-solarized-light .ace_gutter-layer .ace_gutter-cell{padding-right:6px}.ace-solarized-light .ace_print_margin{width:1px;background:#e8e8e8}.ace-solarized-light .ace_scroller{background-color:#FDF6E3}.ace-solarized-light .ace_text-layer{cursor:text;color:#586E75}.ace-solarized-light .ace_cursor{border-left:2px solid #000000}.ace-solarized-light .ace_cursor.ace_overwrite{border-left:0px;border-bottom:1px solid #000000}.ace-solarized-light .ace_marker-layer .ace_selection{background:#073642}.ace-solarized-light .ace_marker-layer .ace_step{background:#c6dbae}.ace-solarized-light .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid rgba(147,161,161,0.5)}.ace-solarized-light .ace_marker-layer .ace_active_line{background:#EEE8D5}.ace-solarized-light .ace_invisible{color:rgba(147,161,161,0.5)}.ace-solarized-light .ace_keyword{color:#859900}.ace-solarized-light .ace_constant.ace_language{color:#B58900}.ace-solarized-light .ace_constant.ace_numeric{color:#D33682}.ace-solarized-light .ace_support.ace_function{color:#268BD2}.ace-solarized-light .ace_string{color:#2AA198}.ace-solarized-light .ace_string.ace_regexp{color:#D30102}.ace-solarized-light .ace_comment{color:#93A1A1}.ace-solarized-light .ace_variable.ace_language{color:#268BD2}.details-collapse .collapse{display:none;position:relative;height:0;overflow:hidden;transition:height 0.35s ease;-webkit-transition:height 0.35s ease 0}.details-collapse.open .collapse{display:block;height:auto}.discussion-bubble{margin:20px 0}.discussion-bubble .boxed-group{margin:0}.discussion-bubble .discussion-bubble-avatar{position:relative;float:left;border-radius:3px}.discussion-bubble .discussion-bubble-content{position:relative;margin-left:60px}.discussion-bubble .discussion-bubble-content:before{content:"";display:block;height:0;width:0;border:10px solid #EEE;border-width:10px 10px 10px 0;border-color:rgba(238,238,238,0) #eee rgba(238,238,238,0) rgba(238,238,238,0);position:absolute;left:-10px;top:15px}.discussion-bubble .form-actions{margin:10px 0 0 60px}.discussion-bubble.placeholder-bubble .placeholder-text{margin:11px 0;padding:0 10px;font-weight:bold}.discussion-bubble.placeholder-bubble .placeholder-text .help-link{float:right;text-decoration:none;color:#999}.discussion-bubble.placeholder-bubble .discussion-bubble-inner{color:#4183c4}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-inner{cursor:pointer}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-content:hover{background-color:#E5EEF3}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-content:hover:before{border-color:rgba(229,238,243,0) #e5eef3 rgba(229,238,243,0) rgba(229,238,243,0)}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-content:hover .discussion-bubble-inner{border-color:#4183c4}.discussion-bubble.placeholder-bubble.disabled .placeholder-text{font-weight:normal;color:#999}.mini-discussion-bubble .mini-discussion-bubble-action{margin:10px 0 15px 8px;height:24px;font-size:13px;font-weight:300;color:#333}.mini-discussion-bubble .mini-discussion-bubble-action a{font-weight:bold;color:#333}.mini-discussion-bubble .mini-discussion-bubble-action .discussion-anchor-link{font-weight:300;color:#999}.mini-discussion-bubble .mini-discussion-bubble-action span{color:#999}.mini-discussion-bubble .discussion-bubble-avatar{border-radius:3px;vertical-align:middle;display:inline-block;height:24px;margin-right:3px}.mini-discussion-bubble .discussion-bubble-content{position:relative}.mini-discussion-bubble .discussion-bubble-content:before{content:"";display:block;height:0;width:0;border:10px solid #EEE;border-width:0 10px 10px 10px;border-color:rgba(238,238,238,0) rgba(238,238,238,0) #eee rgba(238,238,238,0);position:absolute;left:10px;top:-10px}.mini-discussion-bubble .discussion-bubble-inner{min-height:30px;background-color:#fff}.mini-discussion-bubble .file-box{margin:0}.mini-discussion-bubble tr:last-child .line_numbers.comment-count,.mini-discussion-bubble tr:last-child .line-comments{border-bottom:0}.discussion-bubble-inner{min-height:32px;border:1px solid #CACACA;background-color:#fff}.comment.is-comment-editing .edit-comment-hide{display:none}.comment.is-comment-editing .form-content{display:block;opacity:1.0}.comment.is-comment-loading .context-loader{display:block}.comment.is-comment-loading .formatted-content,.comment.is-comment-loading .form-content{opacity:0.5}.comment.is-comment-error .comment-form-error{display:block}.comment.is-comment-error .comment-content{padding-top:10px}.comment.is-comment-stale .comment-form-stale{display:block}.comment.is-comment-stale .comment-content{padding-top:10px}.comment.is-comment-stale .form-content{opacity:0.75}.comment+.comment{border-top:1px solid #CACACA}.comment-header{height:33px;padding:0 10px 0 6px;border-bottom:1px solid #ccc;background-color:#e1e1e1;background-image:-moz-linear-gradient(#f8f8f8, #e1e1e1);background-image:-webkit-linear-gradient(#f8f8f8, #e1e1e1);background-image:linear-gradient(#f8f8f8, #e1e1e1);background-repeat:repeat-x;font-size:12px}.comment-header .comment-header-gravatar{display:inline-block;margin-right:3px;vertical-align:middle;border-radius:3px}.comment-header .comment-type-icon{text-decoration:none}.comment-header .comment-header-author{max-width:600px;line-height:33px;font-weight:bold;color:#222;text-shadow:1px 1px 0 rgba(255,255,255,0.7);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.comment-header .comment-header-author a{color:#333}.comment-header .comment-header-tag{margin-left:5px;padding:2px 5px 3px;font-size:11px;color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);background:#2d90c3;border-radius:2px}.comment-header .comment-header-right{float:right}.comment-header .comment-header-date{display:inline-block;margin:0;height:33px;font-size:11px;line-height:33px;font-style:normal;color:#777;text-shadow:1px 1px 0 rgba(255,255,255,0.7);line-height:33px}.comment-header .comment-header-actions{display:inline-block;vertical-align:middle;font-size:13px}.comment-header .comment-header-actions li{list-style-type:none;float:left;margin:0 0 0 8px;height:33px;line-height:31px}.comment-header .comment-header-actions li .octicon{transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;text-decoration:none}.comment-header .comment-header-actions li:hover .octicon{color:#4183c4}.comment-header a{color:#666}.comment-header code{font-size:11px}.comment-header .octicon{color:#939AA0;margin:8px 2px 0 1px}.repo-owner-comment .comment-header{background-color:#d8e5dd;background-image:-moz-linear-gradient(#f4faf6, #d8e5dd);background-image:-webkit-linear-gradient(#f4faf6, #d8e5dd);background-image:linear-gradient(#f4faf6, #d8e5dd);background-repeat:repeat-x}.repo-owner-comment .comment-header-tag{background:#2cc03e}.discussion-reference .comment-header,.discussion-commit-list .comment-header,.repo-collab-comment .comment-header{background-color:#dde8eb;background-image:-moz-linear-gradient(#f8fbfc, #dde8eb);background-image:-webkit-linear-gradient(#f8fbfc, #dde8eb);background-image:linear-gradient(#f8fbfc, #dde8eb);background-repeat:repeat-x}.inline-review-comment .inline-comments .comment-holder{max-width:690px}.inline-review-comment .inline-comments .inline-comment-form{max-width:710px}.comment-content{padding:0;color:#333;font-size:12px;background:#fbfbfb}.comment-content .comment-body-title{padding:10px 10px 0 10px;font-weight:bold;color:#000}.comment-content .comment-body{padding:10px;font-size:13px;overflow:auto;width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.comment-content .comment-body .highlight{background-color:transparent}.comment-content .comment-body .highlight pre{margin-top:0;margin-bottom:0}.comment-content .form-content{padding:10px;display:none;opacity:1.0}.comment-content .form-content textarea{margin:0;width:100%;max-width:100%;height:100px;min-height:100px}.comment-content .form-content textarea.dragover{border:solid 1px #4183C4}.comment-content .form-content input[type="text"]{margin-bottom:5px;width:100%}.comment-content .form-content input.title-field{font-size:20px;font-weight:bold}.comment-content .form-content .form-actions{margin:10px 0 0 0}.comment-content .email-format{line-height:1.5}.comment-content .context-loader{display:none}.comment-content .comment-cancel-button{float:left}.discussion-reference-content .state{float:right;padding:3px 10px;margin:-1px 0;font-size:12px;color:#fff;background:#6cc644;border-radius:3px}.discussion-reference-content .state-closed{background-color:#bd2c00}.discussion-reference-content .state-merged{background-color:#8fb6dc}.discussion-reference-content h2{margin:0 !important;font-size:14px}.discussion-reference-content h2 a{color:#000}.discussion-reference-content h2 span{color:#999}.discussion-topic .branch-status{width:100%;padding:10px;-moz-box-sizing:border-box;box-sizing:border-box;color:#a1882b;background-color:#f8eec7;border-top:1px solid #e2cc7a}.discussion-topic .branch-status>p{margin:0}.discussion-topic .branch-status>p a{font-weight:bold}.discussion-topic .branch-status .octicon{margin-right:2px}.discussion-topic .branch-status.status-success{color:#5d8a4a;background-color:#d8f5cd;border-top-color:#a5d792}.discussion-topic .branch-status.status-error,.discussion-topic .branch-status.status-failure{padding-top:13px;color:#333;background:url("/images/modules/pulls/dirty-shade.png?aa53f501") 0 0 repeat-x #eee;border-top-color:#bbb}.discussion-topic .comment-content{position:relative}.discussion-topic-header{position:relative;padding:10px;word-wrap:break-word}.discussion-topic-header .discussion-topic-author{color:#666;font-size:12px}.discussion-topic-header .discussion-topic-author a{font-weight:bold;color:#666}.discussion-topic-header .discussion-topic-title{border-bottom:none;margin:0;padding-right:50px}.discussion-topic-header .comment-topic-actions{position:absolute;top:10px;right:10px;list-style-type:none}.discussion-hidden{opacity:0.75}.discussion-versions-info{padding:10px;color:#666;font-size:11px}.discussion-versions-info a{font-weight:bold;color:#666666}.discusion-topic-infobar{width:100%;height:47px;padding:10px 10px 4px;border:1px solid #e5e5e5;border-width:1px 0;background:#f5f5f5;-moz-box-sizing:border-box;box-sizing:border-box}.discusion-topic-infobar .progress-bar{display:inline-block;vertical-align:middle;margin-left:5px}.comment-form-error,.comment-form-stale{display:none;margin:0 10px;padding:5px 10px;font-weight:bold;color:#900;background-color:#FFEAEA;border:1px solid #E2A0A0}.comment-form-error.comment-form-bottom,.comment-form-stale.comment-form-bottom{margin-bottom:10px}.comment-form-stale{margin-top:0}.email-format{line-height:1.5em !important}.email-format div{white-space:pre-wrap}.email-format .email-hidden-reply{display:none;white-space:pre-wrap}.email-format .email-quoted-reply,.email-format .email-signature-reply{margin:0 0 15px 0;border-left:4px solid #ddd;padding:0 15px;color:#777}.email-format .email-hidden-toggle a{display:inline-block;height:12px;padding:0 9px;border-radius:1px;background:#ddd;vertical-align:middle;color:#555;line-height:6px;font-size:12px;font-weight:bold;text-decoration:none}.email-format .email-hidden-toggle a:hover{background-color:#ccc}.email-format .email-hidden-toggle a:active{background-color:#4183C4;color:#fff}.comment-email-format div{white-space:normal}.comment-email-format .email-hidden-reply{display:none;white-space:normal}.comment-email-format blockquote,.comment-email-format p{margin:0}.inline-comments{background-color:#f9f9f9}.inline-comments .inline-comment-form{margin-top:-10px;background-color:#fff}.inline-comments .tabnav{margin-top:-10px;padding-top:10px;background-color:#f9f9f9}.inline-comments .comment{margin:5px 0 !important;border:1px solid #CACACA}.inline-comments .comment-header-action-text{display:none}.inline-comments .line-comments{overflow:auto;padding:0;font-family:Helvetica, arial, freesans, clean, sans-serif !important}.inline-comments .line-comments .comment-content{position:relative}.inline-comments .line-comments .comment-content .suggester-container{top:10px}.inline-comments .comment-count,.inline-comments .line-comments{border-top:1px solid #ccc;border-bottom:1px solid #ccc}.inline-comments .comment-count{padding-top:8px;text-align:center;vertical-align:top;border-right:1px solid #e5e5e5}.inline-comments:last-child .comment-count{border-bottom:0}.inline-comments .comment-holder{max-width:816px;margin:10px}.inline-comments .comment-holder .form-actions{padding:0}.inline-comments .ajaxindicator{display:inline-block;vertical-align:bottom}.inline-comments .optional{padding-top:3px}.inline-comments .form-actions{padding:0 10px 10px}.only-commit-comments .inline-comment{display:none}.file-comments{padding:5px;font-family:Helvetica, arial, freesans, clean, sans-serif !important;background:#fafafa;border-top:1px solid #ddd}.deprecated-comment-form{position:relative;margin:-10px 0 10px 0;padding:5px;background:#eee;border-radius:5px}.deprecated-comment-form textarea{margin:0;width:100%;height:100px}.deprecated-comment-form p.help{margin:3px 0 0;float:right;font-size:11px;color:#666}.deprecated-comment-form.write-selected .write-tab,.deprecated-comment-form.preview-selected .preview-tab{color:#333;background:#fff;border-color:#bbb;border-right-color:#ddd;border-bottom-color:#ddd}.deprecated-comment-form .write-content,.deprecated-comment-form .preview-content{display:none}.deprecated-comment-form.write-selected .write-content,.deprecated-comment-form.preview-selected .preview-content{display:block}.deprecated-comment-form .edit-preview-tabs{margin:0 0 5px 0;line-height:13px}.deprecated-comment-form .edit-preview-tabs li{list-style-type:none;margin:0;display:inline-block}.deprecated-comment-form .edit-preview-tabs li a{display:inline-block;padding:2px 8px;font-size:11px;font-weight:bold;text-decoration:none;color:#666;border:1px solid transparent;border-radius:10px}.commit-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px}.commit-list .gravatar{float:left;margin-left:-44px;border-radius:4px}.commit-list .title{padding:0;min-height:24px;font-weight:normal;font-size:18px;line-height:24px;margin:0 0 5px}.commit-list .title a:visited{color:#7C65C2}.commit-list .description{margin:0 0 10px;overflow:hidden}.commit-list .description pre{max-width:525px}.commit-list .created-at{font-size:11px;font-weight:normal;margin:0px}.commit-list .created-at a{color:#999999;font-weight:bold}.commit-list .created-at a:visited{color:#999999}.commit-list .commit-meta{font-size:11px;margin:0;list-style-type:none;overflow:hidden;color:#999999}.commit-list .commit-meta>li{float:left;margin-right:10px}.commit-list .commit-meta a{color:#333333}.commit-list .commit-meta .octicon{color:#838383;vertical-align:middle}.commit-list .commit-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 40px;margin:0 0 20px 0;position:relative}.commit-list .commit-list-item .commit-links{position:absolute;top:2px;right:0px;white-space:nowrap}.commit-list .commit-list-item .gobutton{float:left;height:22px;padding:0 7px;line-height:22px;font-size:11px;color:#4e575b;text-shadow:0 1px rgba(255,255,255,0.5);background-color:#ddecf3;background-image:-moz-linear-gradient(#eff6f9, #ddecf3);background-image:-webkit-linear-gradient(#eff6f9, #ddecf3);background-image:linear-gradient(#eff6f9, #ddecf3);background-repeat:repeat-x;border:1px solid #cedee5;border-radius:3px}.commit-list .commit-list-item .gobutton:hover{text-decoration:none;border-color:#cedee5;background-color:#eaf4f8;background-image:-moz-linear-gradient(#fbfdfe, #eaf4f8);background-image:-webkit-linear-gradient(#fbfdfe, #eaf4f8);background-image:linear-gradient(#fbfdfe, #eaf4f8);background-repeat:repeat-x}.commit-list .commit-list-item .gobutton>.sha,.commit-list .commit-list-item .gobutton:hover>.sha{display:inline-block;height:22px;margin-right:-3px;font-size:11px;font-family:Monaco, "Liberation Mono", Courier, monospace}.commit-list .commit-list-item .gobutton>.sha .octicon,.commit-list .commit-list-item .gobutton:hover>.sha .octicon{position:relative;top:1px;border-radius:30px;border:1px solid #CFDEE5;background-color:rgba(255,255,255,0.5);color:#91a6b1;margin-left:5px;width:16px;text-align:center}.commit-list .commit-list-item .browse-button{float:right;clear:left;margin-top:1px;font-size:11px;font-weight:bold;text-align:right;color:#999}.commit-list .commit-list-item .browse-button .octicon{position:relative;top:1px;margin-left:2px}.commit-list .commit-list-item .browse-button:hover{color:#4183C4;background-position:100% -95px}.commit-list .commit-list-item .browse-button:hover .octicon{color:#4183C4}.commit-comments-header{margin:20px 0 5px 0;font-size:16px}.commit-comments-header-sha{font-weight:normal;font-size:14px}.commit-comments-header-quiet{font-style:normal;font-weight:normal;color:#888}.commit-comments-toggle-line-notes-wrapper{position:relative;top:5px;float:right;font-size:11px;font-weight:normal;color:#666}.commit-comments-toggle-line-notes{position:relative;top:1px;margin-right:5px}.commit-comments{margin-bottom:20px}.commit-gitnotes{background:#f5f5f5;padding:5px}.commit-gitnotes-content{border:1px solid #aaa;background:#ffd;padding:15px 10px 10px}.commit-gitnotes-ref{font-size:12px;background:#eea;padding:3px}.form-actions .tip{margin:0 0 10px 0;float:left;width:350px;padding:5px;text-align:left;font-size:12px;color:#333;background:#fafbd2;border:1px solid #e8eac0;border-right-color:#f5f7ce;border-bottom-color:#f5f7ce;border-radius:4px}.form-actions .tip img{float:left;margin-right:10px;border:1px solid #ccc}.form-actions .tip p{margin:2px 0}.commit .commit-title,.commit .commit-title a{color:#4e575b}.commit .commit-title.blank,.commit .commit-title.blank a{color:#9cabb1}.commit .commit-title .issue-link{color:#4183C4;font-weight:bold}.commit .commit-title .commit-link{color:#4183C4;font-weight:normal}.commit .commit-desc pre{max-width:700px;white-space:pre-wrap;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:13px;color:#596063;margin:10px 0}.commit .sha-block,.commit .sha{font-size:11px;font-family:Monaco, "Liberation Mono", Courier, monospace}.commit .commit-desc{display:none}.commit.open .commit-desc{display:block}.commit-tease{padding:8px 8px 0;background:#e6f1f6;border:1px solid #b7c7cf;border-bottom-color:#d8e6ec;border-top-right-radius:2px;border-top-left-radius:2px}.commit-tease .comment-count{float:right;margin-top:1px;color:#7f9199;font-size:11px}.commit-tease .comment-count .octicon{vertical-align:middle;margin-left:5px}.commit-tease p.commit-title{margin:0 0 6px 0}.commit-tease .commit-desc{margin:-3px 0 10px 0}.commit-tease .commit-desc pre{font-size:11px}.commit-tease .commit-meta{margin-left:-8px;margin-right:-8px;padding:8px;background:#fff;border-top:1px solid #d8e6ec;-moz-box-sizing:border-box;box-sizing:border-box}.commit-tease .commit-meta .loader-loading{margin:0 0 -9px}.commit-tease .zeroclipboard-link{float:right;margin-left:5px;margin-top:-2px}.commit-tease .sha-block{float:right;color:#888}.commit-tease .sha-block>.sha{color:#444}.commit-tease .sha-block>a{color:#444;text-decoration:none}.commit-tease .authorship{margin:-2px 0 -4px -4px;font-size:12px;color:#999}.commit-tease .authorship a{color:#444;text-decoration:none;font-weight:bold}.commit-tease .authorship a:hover{text-decoration:underline}.commit-tease .authorship .gravatar{margin:-2px 3px 0 0;vertical-align:middle;border-radius:3px}.commit-tease .authorship .author-name{color:#444}.commit-tease .authorship .committer{display:block;margin-left:30px;font-size:11px}p.branch-discussion{float:right;margin:8px 8px 0 0;font-weight:bold;font-size:16px}p.history-link{float:right;margin:8px 0 0 20px;font-weight:bold;font-size:16px}h3.commit-group-heading{margin:15px 0 0 0;padding:5px 8px;font-size:13px;color:#3a505b;text-shadow:0 1px white;background:#e6f1f6;border:1px solid #c5d5dd;border-top-right-radius:4px;border-top-left-radius:4px}.commit-group{list-style-type:none;margin:0 0 15px 0;background:#f7fbfc;border:1px solid #c5d5dd;border-top:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.commit-group-item{position:relative;padding:8px 8px 8px 52px;border-top:1px solid #e2eaee}.commit-group-item:first-child{border-top:none}.commit-group-item:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.commit-group-item:nth-child(2n+1){background:#fff}.commit-group-item.navigation-focus{background:#fcfce2}.commit-group-item .gravatar{float:left;margin-left:-44px;border-radius:4px}.commit-group-item .commit-title{margin:1px 0 1px 0;font-size:14px;font-weight:bold;color:#333}.commit-group-item .commit-title a{color:#333}.commit-group-item .commit-desc pre{margin-top:5px;margin-bottom:10px;font-size:12px;color:#596063;border-left:1px solid #e5e5e5;padding-left:8px}.commit-group-item .authorship{font-size:12px;color:#888}.commit-group-item .authorship a{color:#444}.commit-group-item .authorship .author-name{color:#444}.commit-group-item .authorship .committer{display:block;font-size:11px}.commit-group-item .commit-links{position:absolute;top:7px;right:8px;white-space:nowrap}.commit-group-item .zeroclipboard-button{visibility:hidden;float:left;margin-right:7px}.commit-group-item:hover .zeroclipboard-button,.zeroclipboard-button.zeroclipboard-is-hover,.zeroclipboard-button.zeroclipboard-is-active{visibility:visible}.commit-group-item .gobutton{float:left;height:24px;padding:0 10px;line-height:24px;font-size:11px;color:#4e575b;text-shadow:0 1px rgba(255,255,255,0.5);background-color:#ddecf3;background-image:-moz-linear-gradient(#eff6f9, #ddecf3);background-image:-webkit-linear-gradient(#eff6f9, #ddecf3);background-image:linear-gradient(#eff6f9, #ddecf3);background-repeat:repeat-x;border:1px solid #cedee5;border-radius:3px}.commit-group-item.navigation-focus .gobutton{color:#5a5b4e}.commit-group-item:nth-child(2n+1) .gobutton{border-color:#d5dcdf;background-color:#e3eaed;background-image:-moz-linear-gradient(#f2f5f6, #e3eaed);background-image:-webkit-linear-gradient(#f2f5f6, #e3eaed);background-image:linear-gradient(#f2f5f6, #e3eaed);background-repeat:repeat-x}.commit-group-item.navigation-focus .gobutton{border-color:#e7e86d;background-color:#f3f494;background-image:-moz-linear-gradient(#f9fac9, #f3f494);background-image:-webkit-linear-gradient(#f9fac9, #f3f494);background-image:linear-gradient(#f9fac9, #f3f494);background-repeat:repeat-x}.commit-group-item .gobutton:hover{text-decoration:none;border-color:#cedee5;background-color:#eaf4f8;background-image:-moz-linear-gradient(#fbfdfe, #eaf4f8);background-image:-webkit-linear-gradient(#fbfdfe, #eaf4f8);background-image:linear-gradient(#fbfdfe, #eaf4f8);background-repeat:repeat-x}.commit-group-item .gobutton>.sha,.commit-group-item.navigation-focus .gobutton:hover>.sha{display:inline-block;height:22px;margin-right:-3px}.commit-group-item .gobutton>.sha .octicon,.commit-group-item.navigation-focus .gobutton:hover>.sha .octicon{position:relative;top:1px;border-radius:30px;border:1px solid #CFDEE5;background-color:rgba(255,255,255,0.5);color:#91a6b1;margin-left:5px;width:16px;text-align:center}.commit-group-item.navigation-focus .gobutton>.sha .octicon{border:1px solid #E7E86D;color:#c3c45c}.commit-group-item .gobutton.with-comments{padding-left:5px}.commit-group-item .gobutton.with-comments .sha,.commit-group-item.navigation-focus .gobutton.with-comments:hover .sha{padding-left:8px;border-left:1px solid #cfdee5}.commit-group-item.navigation-focus .gobutton.with-comments .sha{border-left-color:#e1e29e}.commit-group-item .gobutton .comment-count,.commit-group-item.navigation-focus .gobutton:hover .comment-count{float:left;height:22px;padding-right:9px;line-height:24px;font-weight:bold;border-right:1px solid #f6fafc}.commit-group-item .gobutton .comment-count .octicon,.commit-group-item.navigation-focus .gobutton:hover .comment-count .octicon{color:#91A6B1}.commit-group-item.navigation-focus .gobutton .comment-count .octicon{color:#C3C45C}.commit-group-item .browse-button{float:right;clear:left;margin-top:1px;font-size:11px;font-weight:bold;text-align:right;color:#999}.commit-group-item .browse-button .octicon{position:relative;top:1px;margin-left:2px}.commit-group-item .browse-button:hover{color:#4183C4;background-position:100% -95px}.commits-condensed{margin-top:0;border:none;background-color:#fff}.commits-condensed td{padding:4px;vertical-align:top;border-top:1px solid #E2EAEE}.commits-condensed tr:nth-child(2n) td{background:#F7FBFC}.commits-condensed tr:first-child td{border-top:0}.commits-condensed td.commit{padding-left:0.5em}.commits-condensed td.gravatar{width:1%;padding:5px}.commits-condensed span.gravatar{display:block;line-height:1px;padding:1px;border:1px solid #ddd;background:#fff;-moz-box-sizing:border-box;box-sizing:border-box}.commits-condensed span.gravatar a{display:inline-block}.commits-condensed td.author{padding-left:0;color:#666;width:80px;font-weight:bold}.commits-condensed td.author span.commit-author{display:inline-block;width:80px;text-overflow:ellipsis;overflow:hidden;line-height:22px;white-space:nowrap}.commits-condensed td.author a{color:#333}.commits-condensed td.date{text-align:right;color:#777}.commits-condensed td.message{padding-left:0}.commits-condensed td.message .user-mention{font-weight:normal}.commits-condensed td.message a{color:#333}.commits-condensed td.message code,.commits-condensed td.message em{line-height:22px}.commits-condensed td.commit-meta{width:1%;text-align:right;white-space:nowrap;padding-right:10px}.commits-condensed td.commit-meta code{line-height:22px}.commits-condensed code{font-family:Monaco, "Liberation Mono", Courier, monospace}.commits-condensed .commit-desc pre{margin-top:5px;margin-bottom:4px;padding-left:8px;font-size:11px;font-weight:normal;color:#596063;word-break:break-word;border-left:1px solid #e5e5e5}.full-commit{margin:10px 0;padding:8px 8px 0;background:#e6f1f6;border:1px solid #c5d5dd;border-radius:4px}.full-commit .browse-button{float:right;margin:-3px -3px 0 0;height:26px;padding:0 10px;line-height:26px;font-size:13px;font-weight:bold;text-shadow:0 1px rgba(255,255,255,0.5);background-color:#ddecf3;background-image:-moz-linear-gradient(#eff6f9, #ddecf3);background-image:-webkit-linear-gradient(#eff6f9, #ddecf3);background-image:linear-gradient(#eff6f9, #ddecf3);background-repeat:repeat-x;border:1px solid #cedee5;border-radius:3px}.full-commit p.commit-title{margin:0 0 8px 0;font-size:18px;font-weight:bold;color:#213f4d;text-shadow:0 1px rgba(255,255,255,0.5)}.full-commit .commit-desc,.commit-desc-container .commit-desc{display:block;margin:-5px 0 10px 0}.full-commit .commit-desc pre,.commit-desc-container .commit-desc pre{max-width:100%;font-size:14px;text-shadow:0 1px rgba(255,255,255,0.5)}.full-commit .commit-branches{color:#818c90;font-size:12px;vertical-align:middle;margin-top:-6px;margin-bottom:8px}.full-commit .commit-branches .octicon{vertical-align:middle}.full-commit .commit-desc+.commit-branches{border-top:solid 1px #d1e2eb;margin-top:2px;padding-top:8px}.full-commit .branches-list{display:inline-block;list-style:none;margin-right:10px;vertical-align:middle}.full-commit .branches-list li{padding-left:3px;display:inline-block}.full-commit .branches-list li:before{content:'+';padding-right:6px}.full-commit .branches-list li:first-child{color:#596063;font-weight:bold;padding-left:0}.full-commit .branches-list li:first-child:before{content:'';padding-right:0}.full-commit .branches-list li.loading{color:#818c90;font-weight:normal}.full-commit .branches-list li.pull-request{color:#818c90;font-weight:normal}.full-commit .branches-list li.pull-request:before{content:"";margin-left:-8px}.full-commit .branches-list li a{color:inherit}.full-commit .tag-list{display:inline-block;list-style:none;margin-right:10px;vertical-align:middle}.full-commit .tag-list li{padding-left:3px;display:inline-block}.full-commit .tag-list li:first-child{color:#596063;font-weight:bold;padding-left:0}.full-commit .tag-list li.loading{color:#818c90;font-weight:normal}.full-commit .tag-list li.abbrev-tags{cursor:pointer}.full-commit .tag-list li a{color:inherit}.full-commit .tag-list li .hidden-text-expander a{background-color:#dae5eb}.full-commit .tag-list li .hidden-text-expander a:hover{background-color:#d1dbe0}.full-commit .commit-meta{margin-left:-8px;margin-right:-8px;padding:8px;background:#fff;border-top:1px solid #d8e6ec;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-moz-box-sizing:border-box;box-sizing:border-box}.full-commit .sha-block{float:right;margin-left:15px;color:#888;font-size:12px}.full-commit.merge-commit .sha-block{clear:right}.full-commit.merge-commit .sha-block+.sha-block{margin-top:2px}.full-commit .sha-block>.sha{color:#444}.full-commit .sha-block>a{color:#444;text-decoration:none;border-bottom:1px dotted #ccc}.full-commit .sha-block>a:hover{border-bottom:1px solid #444}.full-commit .authorship{margin-top:-2px;margin-left:-4px;margin-bottom:-4px;font-size:14px;color:#999}.full-commit .authorship .gravatar{margin-top:-2px;margin-right:3px;vertical-align:middle;border-radius:3px}.full-commit .authorship a{color:#444;text-decoration:none;font-weight:bold}.full-commit .authorship a:hover{text-decoration:underline}.full-commit .authorship .author-name{color:#444}.full-commit .authorship .hint a{color:#4183c4}.full-commit .authorship .committer{display:block;margin-top:-2px;margin-left:34px;font-size:12px}.commit.file-history-tease{margin:10px 0;padding:9px 8px 0 8px;font-size:14px;color:#7b878c;background:#e7ecee;border:1px solid #d2d9dd;border-radius:4px}.commit.file-history-tease .main-avatar{margin-top:-4px;vertical-align:middle;border-radius:3px}.commit.file-history-tease .author a{color:#000;font-weight:bold}.commit.file-history-tease .commit-title{display:inline}.commit.file-history-tease .sha{font-size:13px}.commit.file-history-tease .loader-loading,.commit.file-history-tease .loader-error{margin:0}.commit.file-history-tease .loader-loading img,.commit.file-history-tease .loader-error img{vertical-align:middle}.commit.file-history-tease .participation{margin:7px -8px 0;padding:0 8px;line-height:30px;font-weight:normal;font-size:12px;color:#666;background:#fff;border-top:1px solid #d8e6ec;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-moz-box-sizing:border-box;box-sizing:border-box}.commit.file-history-tease .participation p.quickstat{display:inline-block;margin:0 10px 0 0}.commit.file-history-tease .participation a{color:#888;text-decoration:none}.commit.file-history-tease .participation p.quickstat strong{color:#000}.commit.file-history-tease .participation .avatar{position:relative;display:inline-block;height:20px;margin-right:3px}.commit.file-history-tease .participation .avatar img{vertical-align:middle;border-radius:3px}.commit-loader .loader-error{display:none;margin:0;color:#bd2c00;font-weight:bold;font-size:12px}.commit-loader.error .loader-loading{display:none}.commit-loader.error .loader-error{display:block}p.last-commit{margin:10px 0 -5px 0;font-size:11px;color:#888}p.last-commit .octicon{color:#bbb}p.last-commit strong{color:#444}.commit-ref{position:relative;height:20px;display:inline-block;padding:0 5px;border-radius:3px;font:10px/20px Monaco,"Liberation Mono",Courier,monospace;color:#336479;white-space:nowrap;vertical-align:middle;background-color:#e8f0f8;box-shadow:inset 0 -1px 0 #cbd2d9}.commit-ref .user{color:#598a9f}a.commit-ref:hover{text-shadow:-1px -1px 0 rgba(0,0,0,0.2);background-color:#2a5177;background-image:-moz-linear-gradient(#74a4d4, #2a5177);background-image:-webkit-linear-gradient(#74a4d4, #2a5177);background-image:linear-gradient(#74a4d4, #2a5177);background-repeat:repeat-x;border-color:#2a5177;text-decoration:none}.compare-range{margin-top:-15px;float:right}.compare-range em{padding:0 4px;font-style:normal;color:#666}.compare-range .switch{display:inline-block;width:16px;height:16px;text-indent:-9999px;background:url("/images/modules/compare/switch_icon.png?21158b39") 0 0 no-repeat}.compare-range .minibutton{margin-right:15px}.compare-cutoff,.diff-cutoff{margin:5px 0;padding:8px 0;font-weight:bold;color:#000;text-align:center;background:#FCFFDA;border:1px solid #e5e2c8;border-radius:3px}#toc{padding:0;margin:15px 0}#toc li{border-bottom:1px solid #ddd;list-style-type:none;padding:5px 0}#toc li:last-child{border:none}#toc .content{font:12px Monaco, "Liberation Mono", Courier, monospace;clear:both}#toc p.explain{margin:0}#toc .octicon-diff-removed{color:#bd2c00}#toc .octicon-diff-renamed{color:#677a85}#toc .octicon-diff-modified{color:#d0b44c}#toc .octicon-diff-added{color:#6cc644}#toc .show-diff-stats,#toc.open .hide-diff-stats{display:block}#toc .hide-diff-stats,#toc.open .show-diff-stats{display:none}#toc .diffstat{float:right}span.diffstat{white-space:nowrap;text-align:right;font-family:Helvetica, arial, freesans, clean, sans-serif;color:#666;font-weight:bold;font-size:11px;cursor:default}span.diffstat a{text-decoration:none;color:#666}span.diffstat .diffstat-bar{margin-left:3px;display:inline-block;height:12px;text-decoration:none;text-align:left;color:#eee;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;font-size:16px;letter-spacing:1px}span.diffstat .diffstat-bar.diff-deleted,span.diffstat .diffstat-bar i.minus{color:#bd2c00;font-style:normal}span.diffstat .diffstat-bar.diff-added,span.diffstat .diffstat-bar i.plus{color:#6cc644;font-style:normal}span.no-nl-marker{position:relative;top:2px;color:#bd2c00;margin-left:4px}.symlink .no-nl-marker{display:none}.existing-pull{margin:10px 0}.tmp-reusable-bubble{margin:15px 0}.tmp-reusable-bubble .bubble-inner{background:#fff;border:1px solid #cacaca;border-radius:2px}.tmp-reusable-bubble .bubble-inner:before,.tmp-reusable-bubble .bubble-inner:after{content:" ";display:table}.tmp-reusable-bubble .bubble-inner:after{clear:both}.contributing{margin:20px 0 15px 0;font-size:13px;color:#666}.contributing a{font-weight:bold}.pull-request-composer{position:relative}.pull-request-composer .discussion-topic{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:732px;border-right:1px solid #ddd}.pull-request-composer .composer-meta{-moz-box-sizing:border-box;box-sizing:border-box;float:right;width:179px;padding:0 10px;text-align:center}.pull-request-composer .composer-meta .composer-submit{-moz-box-sizing:border-box;box-sizing:border-box;width:159px;position:absolute;bottom:14px;right:14px}.pull-request-composer .composer-meta .merge-status-icon{float:none;display:inline-block;margin:15px 0}.pull-request-composer .composer-meta .merge-branch-heading{font-size:14px}.pull-request-composer .composer-meta .merge-branch-description{margin:10px 0;font-size:12px}.pull-request-composer .composer-meta .mergeable-clean .merge-branch-heading{color:#6cc644}.pull-request-composer .preview-content{min-height:100px}div.edu_contact_hidden{display:none;margin:1em 0}.edu-contact-container.open .edu_contact_hidden{display:block}div.edu_contact_hidden p:first-child{margin-top:0}#contact-big-notice{width:580px}#contact-github textarea{width:100%;height:100px}.heartocat{display:block;margin:0 auto}.documentation-results-wrapper{position:relative;top:-19px}.documentation-results{position:absolute;margin-top:5px;-webkit-box-shadow:0px 0px 5px rgba(0,0,0,0.2);-moz-box-shadow:0px 0px 5px rgba(0,0,0,0.2);box-shadow:0px 0px 5px rgba(0,0,0,0.2);clear:both;z-index:2;width:400px;top:0}.documentation-results ul{width:100%}.documentation-results ul li:first-child a{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;border-bottom-right-radius:0;border-bottom-left-radius:0}.documentation-results .documentation-results-footer a{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box}.documentation-results a{outline:none;padding:5px 10px;display:block;color:#333;font-weight:bold;cursor:pointer;text-decoration:none;border:solid #ddd;border-width:0 1px 1px 1px;background-color:#fff}.documentation-results a:hover{background-color:#3586c3;color:#fff}.documentation-results a.selected{background-color:#3586c3;color:#fff}ul.documentation-results-group{list-style-type:none}.context-loader-container .context-loader{display:none}.context-loader-container .context-loader-overlay{opacity:1;transition:opacity 0.2s ease-in;-webkit-transition:opacity 0.2s ease-in 0}.context-loader-container .context-loader.is-context-loading{display:block;white-space:nowrap}.context-loader-container .context-loader-overlay.is-context-loading{opacity:0.5}.page-context-loader{margin-left:10px;display:none}.page-context-loader.is-context-loading{display:inline-block}body.disables-context-loader .page-context-loader,body.disables-context-loader .context-loader{display:none !important}.contributions-tab{margin-top:20px}.grid .col{display:table-cell;width:1%;vertical-align:top}.grid .col:first-child{padding-right:10px}.grid .col:last-child{padding-left:10px}.popular-repos .col.single-column{padding-right:0;padding-left:0}.capped-box{-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:20px;background-color:#fff;border-radius:3px;border:1px solid #ddd}.capped-box h3{margin:0;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:1px solid #ddd;padding:10px;line-height:100%;background:#f7f7f7}.capped-box h3:after{content:".";display:block;clear:both;visibility:hidden;height:0}.capped-box h3 .octicon{float:right}.period-filter{position:relative}.period-filter h2{display:inline-block;margin:0;padding:0}.period-filter .select-menu{float:right}.user-lang{padding:10px;border-bottom:1px solid #ddd}.user-lang:before,.user-lang:after{content:" ";display:table}.user-lang:after{clear:both}.user-lang .repository-lang-stats{float:none;width:auto;padding-bottom:0;opacity:1}.user-lang .repository-lang-stats-graph{height:12px;margin-bottom:10px}.user-lang .repository-lang-stats-graph span{height:10px;border-bottom:2px solid rgba(0,0,0,0.2);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2)}.user-lang ol.list-tip{left:40%}.calendar-graph{min-height:107px;text-align:center;padding:5px 0 3px 0}.calendar-graph.days-selected rect.day{opacity:0.5}.calendar-graph.days-selected rect.day.active{opacity:1}.calendar-graph .activity{margin-top:0}.calendar-graph .dots{margin:20px auto 0 auto;width:64px;height:64px}.calendar-graph text.month{font-size:10px;fill:#aaa}.calendar-graph text.wday{fill:#ccc;font-size:9px}#contributions-calendar:before,#contributions-calendar:after{content:" ";display:table}#contributions-calendar:after{clear:both}#contributions-calendar rect.day{shape-rendering:crispedges}#contributions-calendar rect.day:hover{stroke:#555;stroke-width:1px}#contributions-calendar rect.day.empty:hover{stroke:none}#contributions-calendar .contrib-details{clear:right}#contributions-calendar .contrib-details div{-moz-box-sizing:border-box;box-sizing:border-box;padding:10px 0 0 0;text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd;color:#999}#contributions-calendar .contrib-details div .lbl{display:block;font-weight:bold;padding:10px 0;color:#777;border-top:1px solid #f7f7f7;margin-top:10px;font-size:11px}#contributions-calendar .contrib-details div .num{font-weight:bold;font-size:16px;display:block;color:#333}#contributions-calendar .contrib-details div:first-child{border-left:none}.contrib-footer{padding:0px 10px 10px 10px}.contrib-footer .contrib-info{font-size:11px;color:#999;float:left}.contrib-footer .contrib-info .octicon{margin-right:5px;color:#999}.contrib-legend{font-size:11px;color:#777;font-weight:bold;float:right}.contrib-legend span{font-weight:normal;color:#999}.contrib-legend ul.legend{display:inline-block;list-style:none;margin:0 5px}.contrib-legend ul.legend li{display:inline-block;width:10px;height:10px}#contribution-activity .blankslate{margin-top:20px}#contribution-activity .dots{margin:20px auto 0 auto;width:64px;height:64px;display:block}ul.simple-conversation-list a.meta{color:#777}li.contribution{list-style:none;padding:10px 0}li.contribution:last-child{border-bottom:none}li.contribution h3{font-size:14px;display:inline-block;margin:0}li.contribution h3 a{color:#4183C4}li.contribution .cmeta{display:block;font-size:12px;color:#aaa;font-weight:normal}li.contribution .cmeta a{color:#666}li.contribution .cmt{color:#999}li.contribution .d{color:#c00}li.contribution .a{color:#8cac29}li.contribution .num{color:#777}.contribution-status{float:right;font-size:12px;margin-top:10px}.commits-summary-list h3{margin:0}.contribution-pulls-list .cmeta{margin-left:87px}.contribution-pulls-list .state{display:block;float:left;clear:none}.contribution-pulls-list .contribution-pull-info{float:right;clear:none;width:653px;margin-bottom:3px}.contribution-pulls-list .contribution-pull-info .title{font-size:14px}.ctags-search-form .query{margin-top:5px;padding:8px;font-size:18pt;width:900px}.ctags-search-form.pjax-active .query{background:url("/images/spinners/octocat-spinner-64.gif?e25ff4c8") no-repeat 98% 50%}.ctags-cols{width:880px;padding:0 10px}.ctags-search-result{padding:5px 5px 5px 0;border-bottom:1px solid #ccc;cursor:pointer}.ctags-search-result.navigation-focus{background:#ffffef !important}.ctags-search-result .name{font-family:Consolas, "Liberation Mono", Courier, monospace;font-size:1.1em;white-space:nowrap;display:inline-block}.ctags-search-result .name .kind{display:inline-block;padding:1px 2px;font-size:12px;color:#777;text-align:right;width:60px;white-space:nowrap;overflow:hidden}.ctags-search-result .name .full{display:inline-block;max-width:600px;overflow:hidden;text-overflow:ellipsis}.ctags-search-result .name em{font-style:normal;font-weight:bold}.ctags-search-result .link{float:right;font-size:12px;overflow:hidden}.ctags-search-result .link a{float:right;white-space:nowrap}p.tip{margin:0;display:inline-block;font-size:13px;color:#999}p.tip strong.protip{font-weight:normal;color:#000}.bootcamp{margin:0 0 20px 0}.bootcamp h1{color:#fff;font-size:16px;font-weight:bold;background-color:#405a6a;background-image:-moz-linear-gradient(#829aa8, #405a6a);background-image:-webkit-linear-gradient(#829aa8, #405a6a);background-image:linear-gradient(#829aa8, #405a6a);background-repeat:repeat-x;border:1px solid #677c89;border-bottom-color:#6b808d;border-radius:5px 5px 0 0;text-shadow:0 -1px 0 rgba(0,0,0,0.7);margin:0;padding:8px 10px;position:relative}.bootcamp h1 a{color:#fff;text-decoration:none}.bootcamp h1 span{color:#e9f1f4;font-size:70%;font-weight:normal;text-shadow:none}.bootcamp .octicon-remove-close{font-size:16px;line-height:16px}.bootcamp .dismiss-bootcamp{display:block;width:16px;height:16px;background-repeat:no-repeat;background-position:0px 0px;position:absolute;right:9px;top:9px}.bootcamp .dismiss-bootcamp:hover{background-position:0px -19px}.bootcamp .bootcamp-body{padding:10px 0px 10px 10px;background-color:#e9f1f4;overflow:hidden;border-style:solid;border-width:1px 1px 2px;border-color:#e9f1f4 #d8dee2 #d8dee2;border-radius:0 0 5px 5px}.bootcampo ul{list-style-type:none;position:relative}.bootcamp ul li{color:#666666;font-size:13px;font-weight:normal;background-color:#f5f3b4;background-image:-moz-linear-gradient(#fffff5, #f5f3b4);background-image:-webkit-linear-gradient(#fffff5, #f5f3b4);background-image:linear-gradient(#fffff5, #f5f3b4);background-repeat:repeat-x;border:1px solid #dfddb5;border-radius:5px 5px 5px 5px;display:block;width:230px;height:215px;float:left;position:relative;margin:0 10px 0 0;overflow:hidden;box-shadow:0px 1px 0px #fff}.bootcamp ul li:hover{background-color:#f1eea3;background-image:-moz-linear-gradient(#fcfce9, #f1eea3);background-image:-webkit-linear-gradient(#fcfce9, #f1eea3);background-image:linear-gradient(#fcfce9, #f1eea3);background-repeat:repeat-x;border:1px solid #d6d4ad}.bootcamp ul li a{color:#666666;text-decoration:none}.bootcamp .image{display:block;position:relative;height:133px;border-bottom:1px solid #f1efaf;background-repeat:no-repeat;background-position:center center}.bootcamp .setup .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_setup.png?0e767b60");background-size:129px 96px}.bootcamp .create-a-repo .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_repo.png?42a731c0");background-size:129px 96px}.bootcamp .fork-a-repo .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_fork.png?74c9d5ac");background-size:178px 96px}.bootcamp .be-social .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_collabocats.png?ec371395");background-size:207px 96px}.bootcamp ul li:hover .image{border-bottom:1px solid #f1eea3}.bootcamp .desc{padding:15px;display:block;height:50px;overflow:hidden;border-top:1px solid #fff;background-repeat:no-repeat;position:relative;z-index:2}.bootcamp ul li:hover .desc{border-top:1px solid #fcfce9}.bootcamp .desc h2{margin:0px;padding:0px;font-size:15px;color:#393939}.bootcamp .desc p{margin:0px;padding:0px;line-height:1.2em}.bootcamp .step-number{background-repeat:no-repeat;display:block;width:60px;height:120px;position:absolute;right:0px;bottom:0px;z-index:0;font-size:120px;color:#e4e1a8;font-weight:bold;text-shadow:0 1px 0 rgba(255,255,255,0.75);opacity:.75}.box-header .new-repo{float:right;margin-top:4px;margin-right:4px;font-size:11px}.box-header .new-repo .octicon{margin-right:3px}.dashboard-sidebar .repo-list .repo-description{display:none}.user-repos .repo-list-item .repo-and-owner{max-width:290px}.user-repos .repo-list-item .owner{max-width:145px}#dashboard .notice{margin-top:0;margin-bottom:0;padding:15px;text-align:center}#example_octofication{float:right;margin:0;width:335px}.octofication{margin-bottom:15px}.octofication .message{padding:10px 10px 10px 35px;background:url("/images/modules/dashboard/octofication.png?15f11f72") 0 50% no-repeat #dcf7dd;border:1px solid #bbd2bc;border-top-color:#d1ead2;border-radius:5px}.octofication .message h3{margin:0;font-size:14px;text-shadow:1px 1px 0 #fff}.octofication .message p{font-size:12px;color:#333;padding:0;margin:0}.octofication .message p+p{margin-top:15px}.octofication ul.actions{margin:5px 0 0 0;font-size:10px;height:15px}.octofication ul.actions li{list-style-type:none;margin:0}.octofication li.hide{float:left;font-weight:bold}.octofication li.hide a{color:#666;text-decoration:none}.octofication li.hide a:hover{color:#000}.octofication li.hide a:hover strong{color:#a60000}.octofication li.more{float:right}.github-jobs-promotion{margin-bottom:15px}.github-jobs-promotion p{position:relative;padding:10px 18px;font-size:12px;text-align:center;color:#1b3650;border:1px solid #cee0e7;border-radius:4px;background-color:#e4f0ff;background-image:-moz-linear-gradient(#f5fbff, #e4f0ff);background-image:-webkit-linear-gradient(#f5fbff, #e4f0ff);background-image:linear-gradient(#f5fbff, #e4f0ff);background-repeat:repeat-x}.github-jobs-promotion p a{color:#1b3650}.github-jobs-promotion a.jobs-logo{display:block;text-align:center;font-size:11px;color:#999}.github-jobs-promotion a.jobs-logo:hover{text-decoration:none}.github-jobs-promotion a.jobs-logo strong{display:inline-block;width:62px;height:12px;text-indent:-9999px;background:url("/images/modules/jobs/logo.png?240c6fbe") 0 0 no-repeat;background-size:62px auto;vertical-align:middle}.github-jobs-promotion .job-location{white-space:nowrap}.github-jobs-promotion a.octicon-info{position:absolute;bottom:5px;right:5px;text-decoration:none;cursor:pointer;color:#a9b8be;opacity:.8}.github-jobs-promotion p:hover .octicon-info{opacity:1.0}#dashboard:before,#dashboard:after{content:" ";display:table}#dashboard:after{clear:both}#dashboard h1{font-size:160%;margin-bottom:.5em}#dashboard h1 a{font-size:70%;font-weight:normal}.dashboard-sidebar{float:right;width:335px}.dashboard-sidebar .capped-box{margin-bottom:0}.dashboard-sidebar .repos-contributions .css-truncate-target{max-width:220px}.news{float:left;width:620px}.news .release{margin-top:0;margin-bottom:0}.news-full,.page-profile .news{float:none;width:auto}.news blockquote{color:#666}.news h1{margin-bottom:0}.filter,.feed_filter{border-bottom:1px solid #AAAAAA;padding-bottom:.25em;margin-bottom:1em}.filter li,.feed_filter li{clear:none;display:inline}.news .alert{padding:0 0 1em 45px;overflow:hidden;position:relative;border-top:1px solid #f1f1f1}.news .alert .commits{padding-left:40px}.news .alert .css-truncate.css-truncate-target,.news .alert .css-truncate .css-truncate-target{max-width:180px}.news .alert p{margin:0}.news .alert .markdown-body blockquote{border:0 none;padding:0 0 0 40px}.news .alert .mega-octicon{position:absolute;top:14px;left:0;width:32px;height:32px;padding:3px;color:#bbb}.news .alert .mega-octicon::before{color:inherit}.news .alert .octicon{color:#bbb;width:16px;height:16px}.news .alert .body{border-bottom:none;overflow:hidden;padding:1em 0 0 0;font-size:14px}.news .alert .time{font-size:12px;color:#bbb}.news .alert .title{padding:0;font-weight:bold}.news .alert .title .subtle{color:#bbb}.news .alert .gravatar{background-color:#fff;float:left;line-height:0;margin-right:.6em}.news .alert .gravatar img{border-radius:2px;margin-top:3px}.news .alert .simple>.octicon{position:absolute !important;left:11px;width:16px;height:16px}.news .alert .simple .title{color:#666;display:inline-block;font-size:13px;font-weight:normal}.news .alert .simple .time{display:inline-block}.news .alert .pull-info,.news .alert .branch-link{background:#e8f1f6;border-radius:3px;color:rgba(0,0,0,0.5);display:inline-block;font-size:12px;margin-top:5px;padding:3px 7px}.news .alert .pull-info em,.news .alert .branch-link em{font-style:normal;font-weight:bold}.news .alert .branch-link{font-family:Monaco, "Liberation Mono", Courier, monospace;margin:0;position:relative;top:-2px}.news .alert .branch-link .octicon{color:#B0C4CE}.news .alert:first-child{border-top:none}.news .alert:first-child .body{padding-top:0}.news .alert .release-assets{padding-left:40px}.news .alert .release-assets li{margin-top:0.15em;list-style-type:none}.news .alert .release-assets .more{font-size:11px;padding-top:2px}.news .alert .css-truncate.css-truncate-target,.news .alert .css-truncate .css-truncate-target{max-width:180px}.news .git_hub .done{text-decoration:line-through;color:#666}.activity-tab .blankslate{margin-top:10px}.activity-tab .news .markdown-body blockquote,.activity-tab .news .alert .commits{padding-left:0}.activity-tab .news a.gravatar,.activity-tab .news div.gravatar{display:none}.news .commits li{margin-top:0.15em;list-style-type:none}.news .commits li .committer{padding-left:0.5em;display:none}.news .commits li img{vertical-align:middle;background-color:#fff;margin:0 1px 0 0;border-radius:2px}.news .commits li img.emoji{border:0;padding:0;margin:0}.news .commits li .message{display:inline-block;font-size:13px;line-height:1.3;margin-top:2px;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:390px}.news div.message,.news li blockquote{color:#666;display:inline;font-size:13px}.news .commits li.more{font-size:11px;padding-top:2px}#dashboard .followers{float:right;width:35em;margin-bottom:2em}#dashboard .followers h1{margin-bottom:0.3em;border-bottom:1px solid #ddd}#dashboard .followers ul{list-style-type:none}#dashboard .followers ul li{display:inline}#dashboard .followers ul li img{border:1px solid #d0d0d0;padding:1px}#dashboard .news.public_news{float:right;width:35em}#dashboard .news.public_news h1{margin-bottom:0.3em;border-bottom:1px solid #ddd}#dashboard .repos h1{margin-bottom:0}#dashboard .repos img{vertical-align:middle}.discussions-new,.discussions-index{max-width:800px}.discussions-new .composer-tip{float:left;margin-left:65px;color:#666}.discussions-new .composer-tip a{font-weight:bold}.discussions-new .composer-tip strong{color:#333}.discussions-index h3.discussions-index-subject{margin:0px 0 5px 0}.discussions-index p.discussions-index-info{float:right;margin:0;padding:3px 0}.discussions-index .discussion-participants{margin-left:22px}.discussion-topic-type a{color:#bbb;text-decoration:none;display:block;float:right}.discussion-topic-type a:hover{color:#999}.discussion-timeline .email-hidden-container{margin:3px 0}.discussion-hidden{transition:.2s opacity;-moz-transition:.2s opacity;opacity:.5}.discussion-hidden:hover{opacity:1}.discussion-hidden .discussion-bubble-content:before{display:none}.discussion-hidden .discussion-comment-header{background:none;border-bottom:none}.discussion-hidden .discussion-comment-header .octicon{margin:0 3px}.discussion-hidden .discussion-comment-header .comment-snippet{display:inline-block}.discussion-hidden .discussion-comment-header .comment-snippet p{width:400px;overflow:hidden;text-overflow:ellipsis;display:inline-block;white-space:nowrap;margin:0 0 0 3px;line-height:1}.discussion-hidden .comment-header-actions li{font-size:11px;line-height:33px}.discussion-hidden .discussion-comment-label{background:#eee;border-radius:3px;color:#666;padding:2px 4px;margin:0 5px 0 0}.discussion-hidden+.discussion-hidden{margin-top:-23px}.discussions-section-heading{border-bottom:1px solid #eee;padding-bottom:20px;margin-bottom:25px}.draft-indicator{display:none}.draft-container .draft-indicator{display:inline;color:#CCC;font-size:10pt}.draft-container .draft-indicator .draft-indicator-label{display:inline;margin-left:15px}.draft-container .draft-indicator .draft-flushed{visibility:hidden;padding:1px 5px}.draft-container .draft-indicator .draft-flushed .draft-indicator-icon{visibility:hidden;position:absolute;transition:visibility 0.015s ease;-webkit-transition:visibility 0.015s ease 0}.draft-container.has-resumed-draft .draft-flushed{visibility:visible}.draft-container.has-resumed-draft .draft-flushed .draft-indicator-resumed-icon{visibility:visible}.draft-container.is-flushing-draft .draft-flushed{visibility:visible}.draft-container.is-flushing-draft .draft-flushed .draft-indicator-flushing-icon{z-index:10;visibility:visible;-webkit-animation:rotating 1s linear infinite;-moz-animation:rotating 1s linear infinite;animation:rotating 1s linear infinite}.draft-container.has-flushed-draft .draft-flushed{visibility:visible}.draft-container.has-flushed-draft .draft-flushed .draft-indicator-flushed-icon{visibility:visible}@-webkit-keyframes rotating{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotating{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@keyframes rotating{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.emoji-icon{display:inline-block;height:20px;width:20px;vertical-align:middle;background-repeat:no-repeat;background-size:20px 20px}.explore-head .container{position:relative}.explore-head .marketing-nav{bottom:-20px}.repo-collection>ul{list-style-type:none;border:1px solid #F1F1F1;overflow:hidden;background:#F9F9F9}.repo-collection .collection-item{-moz-box-sizing:border-box;box-sizing:border-box;padding:15px;overflow:hidden;float:left;height:70px;width:50%;position:relative}.repo-collection .collection-item .octicon-remove-close{position:absolute;top:10px;right:10px;text-decoration:none;color:#CCC}.repo-collection .collection-item .repo-name{font-size:16px;font-weight:bold;display:block}.repo-collection .collection-item .css-truncate-target{max-width:380px}.repo-collection .collection-item .repo-description{margin:0}.repo-collection .collection-item .collection-stat{color:#444;float:right;font-size:12px;margin-left:10px}.repo-collection .collection-item .collection-stat .octicon{margin-right:5px;color:#a7a7a7}.featured-label{margin:0 20px;padding:5px;font-size:10px;font-weight:bold;text-transform:uppercase;border:1px solid #f19e58;border-radius:2px;background:#f5b987;color:#d26911}.featured-collection .featured-video{float:left}.featured-collection .featured-content{width:500px;margin-left:464px;padding-top:20px}.featured-collection .featured-repo-title .mega-octicon{margin-right:10px;color:#bbb}.featured-collection .featured-repo-short-info{font-size:14px;max-width:400px}.featured-collection .featured-commit-activity-graph,.featured-collection .featured-repo-logo{width:444px;height:250px;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:6px;background:#F9F9F9;float:left;position:relative}.featured-collection .loading-graph-spinner{position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:-16px}.featured-collection .featured-graph-title{margin:0;position:absolute;top:25px;right:25px;font-weight:normal;font-size:14px;color:#AAA}.featured-collection .featured-commit-activity-graph svg{margin:25px auto;display:block}.featured-collection .featured-repo-logo{display:table}.featured-collection .featured-repo-image-container{display:table-cell;text-align:center;vertical-align:middle}.featured-collection .featured-repo-image{max-width:350px;max-height:200px}.featured-collection .repo-leaderboard-contributors{overflow:hidden;display:block;margin-bottom:20px}.featured-collection .repo-leaderboard-contributors .avatar,.featured-collection .repo-leaderboard-contributors .contributor-avatar-text{border-radius:3px;float:left;margin-right:5px;color:#999}.explore-collection h2{font-size:18px;font-weight:normal;color:#2A2A2A;margin:0 0 10px}.explore-collection h2 .select-menu{display:inline-block;position:relative}.explore-collection h2 .select-menu-button{font-weight:bold;cursor:pointer}.explore-collection h2 .mega-octicon{vertical-align:middle}.explore-collection .see-more-link{font-size:14px;float:right;margin-top:7px;color:inherit}.explore-section{padding:40px 0 50px;border-bottom:1px solid #eee;position:relative}.explore-section:nth-child(even){background:#F9F9F9}.explore-section:nth-child(even) .repo-collection>ul{background:#fff}.explore-section:first-child{padding-top:20px}.explore-section:nth-child(odd):last-child{border-bottom:0;padding-bottom:0}.explore-pjax-container{position:relative}.repo-top-list .top-repo-list-item{overflow:hidden;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #F1F1F1;list-style-position:inside}.repo-top-list .top-repo-list-item .repo-info{display:inline-block;margin:0;vertical-align:top;margin-left:5px}.repo-top-list .top-repo-list-item .repo-name{display:block;font-size:14px;font-weight:bold}.repo-top-list .top-repo-list-item .repo-lang{display:block;font-size:11px;color:#999}.repo-top-list .top-repo-list-item .author-gravatar{float:none;vertical-align:top;margin-left:5px;margin-right:0;width:60px;height:60px}.repo-leaderboard-list .repo-leaderboard-title{margin:0;font-size:18px;font-weight:normal}.repo-leaderboard-list .repo-leaderboard-title .title-meta{font-size:11px;color:#999}.repo-leaderboard-list .repo-leaderboard-title .repository-name{text-decoration:none}.repo-leaderboard-list .repo-leaderboard-title .repository-name:hover .owner-name,.repo-leaderboard-list .repo-leaderboard-title .repository-name:hover strong{text-decoration:underline}.repo-leaderboard-list .repo-leaderboard-title .separator{padding:0 3px;color:#333333}.repo-leaderboard-list .repo-leaderboard-list-item .mega-octicon{float:left}.repo-leaderboard-list .repo-leaderboard-list-item .mega-octicon:before{color:#bbb}.repo-leaderboard-list .repo-leaderboard-description{margin-top:10px;margin-bottom:0}.repo-leaderboard-list .repo-leaderboard-contributors{padding-top:10px;overflow:hidden;display:block}.repo-leaderboard-list .repo-leaderboard-contributors .avatar,.repo-leaderboard-list .repo-leaderboard-contributors .contributor-avatar-text{border-radius:3px;float:left;margin-right:5px;color:#999}.repo-leaderboard-list.leaderboard-list .leaderboard-list-content{margin-left:35px}.user-leaderboard-list .follow-list-info{margin-top:12px;margin-bottom:0;font-size:12px;color:#666}.user-leaderboard-list .follow-list-info .css-truncate.css-truncate-target{max-width:none}.user-leaderboard-list .user-leaderboard-list-name{margin:0;font-size:18px;font-weight:normal}.user-leaderboard-list .user-leaderboard-list-name .full-name{font-weight:bold;margin-left:5px;color:#5C5C5C}.user-leaderboard-list .repo-list-item{border-top:0;padding-left:21px;padding-top:10px;padding-bottom:0px}.user-leaderboard-list .repo-list-item .repo-description,.user-leaderboard-list .repo-list-item .repo-and-owner{max-width:530px}.user-leaderboard-list .repo-list-item .repo{color:#5C5C5C}.leaderboard-list{list-style-type:none;margin:0}.leaderboard-list .leaderboard-action{float:right;margin-top:-3px;margin-left:10px}.leaderboard-list .leaderboard-list-rank{position:absolute;left:0;top:25px;width:25px;text-align:right;font-size:11px;text-transform:uppercase;color:#B9B9B9;font-weight:300}.leaderboard-list .leaderboard-list-item{padding-top:20px;padding-bottom:20px;border-bottom:1px solid #eee;position:relative;padding-left:35px}.leaderboard-list .leaderboard-list-item:last-child{border-bottom:0}.leaderboard-list .leaderboard-gravatar{float:left;width:48px;height:48px}.leaderboard-list .leaderboard-list-content{margin-left:58px;min-height:48px}.leaderboard-list .leaderboard-list-content h2 a:visited{color:#585858}.repo-top-list .author-gravatar,.repo-collection .author-gravatar,.grid-list .author-gravatar{float:left;background:white;margin-right:10px;border-radius:3px}.explore-page .language-filter-list{margin-bottom:10px}.developers-corner{margin-bottom:40px;overflow:hidden}.developers-corner .developer-bar{overflow:hidden;background:#F5f5f5;border:1px solid #ddd}.developers-corner .developer-bar .developer-name{margin:10px 0 0;font-size:18px;font-weight:normal}.developers-corner .developer-bar .developer-title{margin:0 0 10px;font-size:14px}.developers-corner .developer-bar .author-gravatar{float:left;margin-right:10px}.developers-corner .repo-collection{margin-bottom:0;border-top:0 none}.explore-grid{margin-bottom:40px}.grid-list{list-style-type:none;overflow:hidden}.grid-list .grid-item{float:left}.grid-list .grid-item .author-gravatar{margin-bottom:5px;margin-right:19px;float:none}.grid-list .grid-item .repo-name,.grid-list .grid-item .repo-lang{display:block}.grid-list .grid-item .repo-name{font-size:14px;font-weight:bold;max-width:90px}.grid-list .grid-item .repo-lang{font-size:11px;color:#999}.showcase-body{font-size:15px;line-height:22px;margin-bottom:20px;border:1px solid #DDD;padding:20px;background-color:#F9f9f9;margin-top:0}.showcase-image{border:1px solid #DDD;border-bottom:0 none}.showcase-image img{display:block;width:100%}.language-listing{text-align:center;margin-top:35px}.language-listing .language:after{content:"•"}.language-listing .language:last-child:after{content:""}.explore-paginations{margin-top:15px}.explore-paginations .pagination{vertical-align:middle;margin-right:10px}.explore-paginations .pagination-info{display:inline-block;vertical-align:middle}.create-showcase .showcase-asset-box{border:1px dashed #CCC;padding:20px}.create-showcase .showcase-asset-box img{display:block;width:100%}.create-showcase .is-default .showcase-asset-box{border:0 none;padding:0}.facebox{position:absolute;top:0;left:0;z-index:100;padding-bottom:40px}.facebox-popup{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.25);border-radius:5px;box-shadow:0 0 18px rgba(0,0,0,0.4);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.facebox-content{width:425px;padding:15px}.facebox-content:before,.facebox-content:after{content:" ";display:table}.facebox-content:after{clear:both}.facebox-close{position:absolute;top:8px;right:5px;padding:10px;-webkit-appearance:none;background-color:transparent;border:0;opacity:.25;cursor:pointer}.facebox-close:hover{opacity:1}.facebox-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.facebox-overlay-hide{z-index:-100}.facebox-overlay-active{z-index:99;background-color:#000}.facebox-loading{min-height:64px;background-image:url("/images/spinners/octocat-spinner-64.gif?e25ff4c8");background-position:center center;background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.facebox-loading{background-image:url("/images/spinners/octocat-spinner-128.gif?ab2b97f3");background-size:64px 64px}}.facebox-header{margin:-15px -15px 15px;padding:15px;font-size:18px;font-weight:normal;border-bottom:1px solid #e5e5e5}.facebox-alert,.facebox-danger{margin:-16px -15px 15px;padding:10px 15px;border-style:solid;border-width:1px 0}.facebox-alert{color:#796620;background-color:#f8eec7;border-color:#f2e09a}.facebox-danger{padding-left:40px;color:#9c342e;background-color:#f7d9d7;border-color:#f2c4c2}.facebox-danger .octicon{float:left;margin-left:-25px}.facebox-separator{margin:20px -15px}.facebox ul{margin-left:25px;margin-bottom:15px}.facebox .facebox-staff-links{margin:-15px -15px 15px;padding:10px 15px;background-color:#f5f5f5;border-bottom:1px solid #e5e5e5}.facebox .facebox-staff-links li{display:inline-block;margin-right:10px;color:#999;list-style:none}.facebox .facebox-staff-links a{font-weight:bold}.facebox-staff-search .hfields{margin-top:0;margin-bottom:0}.facebox-staff-search .hfields input[type="text"]{width:340px;margin-right:0}.facebox-staff-search .hfields .button{margin-top:29px;margin-right:0}.facebox-staff-search .status-check-list{float:none;margin:15px 0 0 0}.facebox pre{-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;background-color:#eee;border:1px solid #ddd;border-radius:3px}.facebox .cheatsheet{width:810px}.facebox .cheatsheet .row:before,.facebox .cheatsheet .row:after{content:" ";display:table}.facebox .cheatsheet .row:after{clear:both}.facebox .cheatsheet .col{float:left;margin-left:15px;width:260px}.facebox .cheatsheet h3{margin-top:0;margin-bottom:5px}.facebox .cheatsheet p{margin-top:0;margin-bottom:5px;color:#888}.facebox .cheatsheet pre{margin-bottom:15px}.facebox .cheatsheet hr{margin-top:10px;margin-bottom:20px}.facebox .cheatsheet hr:before,.facebox .cheatsheet hr:after{content:" ";display:table}.facebox .cheatsheet hr:after{clear:both}#facebox .billing-credit-cards{margin:0 0 15px}#facebox .billing-credit-cards li{margin:0 4px 0 0}.keyboard-shortcuts{float:right;font-size:11px;color:#999}.keyboard-shortcuts .mini-icon{position:relative;top:2px;margin-left:5px}.facebox .shortcuts{width:860px}.shortcuts .columns-one-third{float:left;width:32%}.shortcuts .columns-one-third+.columns-one-third{margin-left:2%}.shortcuts .rule{margin-left:-15px;margin-right:-15px;border-bottom-color:#e5e5e5}.keyboard-mappings{font-size:12px;color:#555}.keyboard-mappings th{padding-top:25px;font-size:14px;line-height:1.5;color:#333;text-align:left}.keyboard-mappings tbody:first-child tr:first-child th{padding-top:0}.keyboard-mappings td{padding-top:3px;padding-bottom:3px;vertical-align:top;line-height:20px}.keyboard-mappings .keys{padding-right:10px;color:#999;text-align:right;white-space:nowrap}.keyboard-mappings .key{display:inline-block;min-width:20px;padding:5px 6px;font-size:11px;line-height:1;color:#eee;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,0.5);text-transform:capitalize;background-color:#333;border-radius:3px;box-shadow:inset 0 -2px 0 #111;-moz-box-sizing:border-box;box-sizing:border-box}.keyboard-mappings .platform-mac{display:none}.macintosh .keyboard-mappings .platform-mac{display:inline}.macintosh .keyboard-mappings .platform-other{display:none}.facebox .facebox-user-list{margin-left:0;margin-bottom:0;max-height:400px;overflow:auto}.facebox-user-list-item{padding:3px 0;list-style:none;font-weight:bold;vertical-align:middle}.facebox-user-list-item a{color:#000}.facebox-user-list-item img{margin-right:5px;border-radius:3px;vertical-align:middle}.linejump .linejump-input{width:340px;background-color:#fafafa}.linejump .linejump-input,.linejump .button{font-size:16px;padding:10px 15px}.linejump+.facebox-close{top:18px}.transfer-application .button-block{margin-top:5px}.facebox .lineprofiler{width:900px}.facebox .lineprofiler pre{overflow-x:scroll;white-space:pre;word-wrap:normal}.site-footer{position:relative;margin-top:40px;padding-top:40px;padding-bottom:40px;font-size:12px;line-height:1.5;color:#777;border-top:1px solid #eee}.site-footer:before,.site-footer:after{content:" ";display:table}.site-footer:after{clear:both}.site-footer .octicon-mark-github{position:absolute;top:38px;left:50%;height:24px;width:24px;margin-left:-12px;font-size:24px;color:#ccc}.site-footer .octicon-mark-github:hover{color:#bbb}.site-footer-links{float:left;margin:0;list-style:none}.site-footer-links.right{float:right}.site-footer-links li{display:inline-block;line-height:16px}.site-footer-links li+li{margin-left:10px}.site-footer-links img{display:block}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.column{-moz-box-sizing:border-box;box-sizing:border-box;float:left;padding:15px}.one-third{width:33%}.two-thirds{width:67%}.one-fourth{width:25%}.one-half{width:50%}.three-fourths{width:75%}.offset-one-fourth{margin-left:25%}.header{text-shadow:0 1px 0 #fff;border-bottom:1px solid #e5e5e5;min-width:1000px}.header-logged-in{background-color:#f3f3f3;background-image:-moz-linear-gradient(#f9f9f9, #f3f3f3);background-image:-webkit-linear-gradient(#f9f9f9, #f3f3f3);background-image:linear-gradient(#f9f9f9, #f3f3f3);background-repeat:repeat-x}.header-logo-invertocat{float:left;padding:8px 10px 6px;margin-left:-10px;margin-right:5px;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0;white-space:nowrap}.header-logo-invertocat .octicon-mark-github{float:left;width:24px;height:25px;font-size:25px}.header-logo-invertocat:hover{color:#4183c4;text-decoration:none}.logo-subbrand{margin-left:6px;font-size:16px;font-weight:bold;line-height:26px}.header-logo-wordmark{position:relative;float:left;margin-top:5px;margin-right:5px;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}.header-logo-wordmark:hover{color:#4183c4}.header-logo-wordmark .octicon-logo-github{font-size:32px}.notification-indicator{float:left;width:42px;height:100%;margin-right:15px;text-align:center;line-height:40px;padding-left:1px;border-left:1px solid #e5e5e5;border-right:1px solid #e5e5e5;box-shadow:inset 1px 0 0 rgba(255,255,255,0.15),1px 0 0 rgba(255,255,255,0.15);-moz-box-sizing:border-box;box-sizing:border-box}.notification-indicator .mail-status{display:inline-block;width:8px;height:8px;border-radius:100px;background-color:#aaa;background-color:#cccccc;background-image:-moz-linear-gradient(#aaa, #ccc);background-image:-webkit-linear-gradient(#aaa, #ccc);background-image:linear-gradient(#aaa, #ccc);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 1px 0 #fff}.notification-indicator:hover .mail-status{background-color:#bbbbbb;background-image:-moz-linear-gradient(#999, #bbb);background-image:-webkit-linear-gradient(#999, #bbb);background-image:linear-gradient(#999, #bbb);background-repeat:repeat-x}.notification-indicator .unread{background-color:#3269a0;background-image:-moz-linear-gradient(#4183c4, #3269a0);background-image:-webkit-linear-gradient(#4183c4, #3269a0);background-image:linear-gradient(#4183c4, #3269a0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 0 rgba(0,0,0,0.1),0 0 10px #4183c4}.notification-indicator:hover .unread{background-color:#2c5d8d;background-image:-moz-linear-gradient(#3876b4, #2c5d8d);background-image:-webkit-linear-gradient(#3876b4, #2c5d8d);background-image:linear-gradient(#3876b4, #2c5d8d);background-repeat:repeat-x}.notification-indicator.contextually-unread{background-color:#d2e4f9;background-image:-moz-linear-gradient(#e9f2fc, #d2e4f9);background-image:-webkit-linear-gradient(#e9f2fc, #d2e4f9);background-image:linear-gradient(#e9f2fc, #d2e4f9);background-repeat:repeat-x;position:relative;z-index:2;border-left-color:#c2d5eb;border-right-color:#c2d5eb;box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5),1px 0 0 #fff,0 1px 0 #c2d5eb}.notification-indicator.contextually-unread:hover{background-position:0 -15px}.top-nav{float:left;list-style:none}.top-nav>li{float:left}.top-nav>li+li{margin-left:5px}.top-nav>li>a{display:block;padding:5px;font-size:13px;font-weight:bold;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}.top-nav>li>a:hover{color:#4183c4;text-decoration:none}.header-logged-out{padding:15px 0}.dropdown-menu{position:absolute;top:100%;left:50%;z-index:100;float:left;width:180px;list-style:none;margin:2px 0 0 -90px;padding-top:7px;padding-bottom:7px;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.15);border-radius:5px;box-shadow:0 3px 12px rgba(0,0,0,0.15)}.dropdown-menu:before{content:'';display:inline-block;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #ccc;border-bottom-color:rgba(0,0,0,0.15);position:absolute;top:-8px;left:82px}.dropdown-menu:after{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff;position:absolute;top:-7px;left:83px}.new-menu.js-menu-container .js-menu-content{display:none}.new-menu.js-menu-container.active .js-menu-content{display:block}.dropdown-menu>li.section-title{padding-left:10px;padding-top:10px;padding-bottom:5px;font-weight:bold;font-size:12px}.dropdown-menu>li>a{display:block;padding:4px 10px 4px 38px;color:#333}.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;text-shadow:none;background-color:#4183c4}.dropdown-menu>li>a>.octicon{float:left;margin-top:1px;margin-left:-23px;color:#555}.dropdown-menu>li>a>.octicon.octicon-log-out{margin-left:-22px}.dropdown-menu>li>a:hover>.octicon{color:#fff}.dropdown-divider{height:1px;margin:8px 1px;background-color:#e5e5e5}.dropdown-header{padding:4px 15px;font-size:11px;color:#999;text-transform:uppercase}.dropdown-toggle{position:relative}.dropdown-arrow{content:'';display:inline-block;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #333333;vertical-align:middle;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}#user-links>li .dropdown-arrow{margin-top:-5px}#user-links>li>a:hover .dropdown-arrow,#user-links>.dropdown-toggle.open>a .dropdown-arrow{border-top-color:#4183c4}#user-links>.dropdown-toggle.open>a{color:#4183c4}.header-actions{float:right}.header-actions .button{margin-left:5px}#user-links{float:right;margin:7px 0 0;padding:0;list-style:none}#user-links>li{position:relative;float:left;margin-left:5px}#user-links>li>a{display:block;padding:5px;font-size:13px;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}#user-links>li>a:hover{color:#4183c4;text-decoration:none}#user-links .dropdown-menu{margin-top:6px}#user-links .name{font-weight:bold;line-height:16px;white-space:nowrap}#user-links .name img{float:left;margin:-2px 5px 0 0;border-radius:3px;box-shadow:0 1px 0 #fff}#user-links .settings-warning{position:absolute;top:-5px;right:-4px;padding:3px 6px;font-size:10px;font-weight:bold;color:#fff;line-height:1;background-color:#d26911;border-bottom:1px solid #8f4f07;border-radius:2px}.enterprise .header,.enterprise.marketing .header-logged-out{background-color:#2a2c2e;background-image:-moz-linear-gradient(#434648, #2a2c2e);background-image:-webkit-linear-gradient(#434648, #2a2c2e);background-image:linear-gradient(#434648, #2a2c2e);background-repeat:repeat-x;border-bottom-color:#000}.enterprise #serverstats.enabled+.header{box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}.enterprise .header-logo-wordmark,.enterprise .header-logo-invertocat,.enterprise .top-nav a,.enterprise #user-links>li>a{color:white;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .header-logo-wordmark:hover,.enterprise .header-logo-invertocat:hover,.enterprise .top-nav a:hover,.enterprise #user-links>li>a:hover{color:#4183c4}.enterprise #user-links .name img{box-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .header .dropdown-arrow{border-top-color:white}.enterprise .header-logged-out .header-logo-invertocat{margin-top:3px;margin-bottom:3px}.enterprise .notification-indicator{border-left-color:#2a2c2e;border-right-color:#2a2c2e}.enterprise .notification-indicator .mail-status{background-color:#434648;background-image:-moz-linear-gradient(#2a2c2e, #434648);background-image:-webkit-linear-gradient(#2a2c2e, #434648);background-image:linear-gradient(#2a2c2e, #434648);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15)}.enterprise .notification-indicator .mail-status.unread{background-color:#3269a0;background-image:-moz-linear-gradient(#689cd0, #3269a0);background-image:-webkit-linear-gradient(#689cd0, #3269a0);background-image:linear-gradient(#689cd0, #3269a0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 0 rgba(0,0,0,0.1),0 0 10px #4183c4}.enterprise .notification-indicator.contextually-unread{background-color:#304254;background-image:-moz-linear-gradient(#425567, #304254);background-image:-webkit-linear-gradient(#425567, #304254);background-image:linear-gradient(#425567, #304254);background-repeat:repeat-x;border-color:#273644 #273644 #273644 #2a2c2e;box-shadow:inset 1px 0 rgba(255,255,255,0.1),1px 0 rgba(255,255,255,0.1)}.enterprise .header-actions .button{border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 1px rgba(0,0,0,0.5)}.unsupported-browser{padding:15px 0;color:#211e14;background-color:#fae692;background-image:-moz-linear-gradient(#feefae, #fae692);background-image:-webkit-linear-gradient(#feefae, #fae692);background-image:linear-gradient(#feefae, #fae692);background-repeat:repeat-x;border-bottom:1px solid #b3a569}.unsupported-browser .container{background:url("/images/icons/ie-notice.png?d2d9c93b") no-repeat}.unsupported-browser h5{font-size:13px;padding-left:48px}.unsupported-browser p{margin:0;padding-left:48px}.unsupported-browser .button{float:right;padding:5px 9px;margin-top:15px;color:#fff;background-color:#b3a569;background-image:none}.unsupported-browser .button:hover{text-decoration:none;background-color:#9b8c4e}.mobile-banner a{display:block;padding:30px 0 45px 0;background-color:#444;color:#eaeaea;font-size:60px;text-align:center;font-weight:bold}.mobile-banner a .mega-octicon{position:relative;top:-8px;margin-right:5px;color:#ddd;font-size:48px}.linux .show-mac,.macintosh .show-mac{display:block}.linux .hide-mac,.macintosh .hide-mac{display:none}.windows .show-mac{display:none}.homepage .container{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.homepage .header-logged-out .primary{display:none}.marketing-header{margin-bottom:40px;text-align:center}.marketing-header h1{margin-top:0;margin-bottom:0;font-size:42px;font-weight:normal}.marketing-header .lead{margin-top:0;margin-bottom:0;color:#777}.marketing-header .button{margin-top:15px;padding:12px 20px;font-size:18px;font-weight:normal;border-radius:6px}.marketing-header .button .octicon{font-size:inherit}.marketing-section{position:relative;padding-top:80px;padding-bottom:80px;border-bottom:1px solid #e5e5e5}.marketing-section:before,.marketing-section:after{content:" ";display:table}.marketing-section:after{clear:both}.marketing-section .divider-short{width:50%;margin:50px auto;border-bottom-color:#eee}.marketing-section-depth{position:absolute;right:0;bottom:0;left:0;z-index:10;display:block;content:"";height:30px;background-image:-moz-linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.15));background-image:-webkit-linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.15));box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}.marketing-section-signup{text-shadow:0 1px 3px #222;background:#202021 url("/images/modules/home/octicons-bg.png?5d89c13d") center repeat}.marketing-section-signup .heading{margin-top:0;padding-top:10px;font-size:70px;font-weight:normal;line-height:1;color:#fff;letter-spacing:-1px}.marketing-section-signup .subheading{margin:10px 0 0;font-size:21px;line-height:1.5;color:#fff}.marketing-section-signup .subheading a{font-weight:500}.form-signup-home{float:right;width:320px;margin-left:40px}.form-signup-home .text-muted:last-child{margin-bottom:0}.form-signup-home dl.form{position:relative;margin-top:0;margin-bottom:10px}.form-signup-home .button,.form-signup-home dl.form input[type="text"],.form-signup-home dl.form input[type="password"]{padding:10px;font-size:16px;border-radius:5px}.form-signup-home .button{border:0;padding-top:11px;padding-bottom:11px}.form-signup-home .button:focus{border-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.05),0 0 12px rgba(255,255,255,0.75)}.form-signup-home dl.form input[type="text"],.form-signup-home dl.form input[type="password"]{width:100%;margin-right:0;border-color:#fff}.form-signup-home dl.form input[type="text"]:focus,.form-signup-home dl.form input[type="password"]:focus{background-color:#fff;border-color:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 12px rgba(255,255,255,0.75)}.form-signup-home dl.form dd+.text-muted{margin-top:5px}.form-signup-home dl.form.errored dd.error,.form-signup-home dl.form.errored dd.warning{position:absolute;top:100%;left:0;right:0;z-index:5;margin-top:2px;font-size:12px;font-weight:normal;padding:10px;border:0;text-align:left;border-radius:5px;background-color:#333;color:#fff}.form-signup-home dl.form.errored dd.error:after,.form-signup-home dl.form.errored dd.warning:after{position:absolute;left:10px;bottom:100%;height:0;width:0;content:"";border:solid transparent;border-bottom-color:#333;border-width:8px;pointer-events:none}.form-signup-home dl.form.errored dd.error:empty,.form-signup-home dl.form.errored dd.warning:empty{display:none}.form-signup-home dl.form dd input.is-autocheck-successful,.form-signup-home dl.form dd input.is-autocheck-errored,.form-signup-home dl.form dd input.is-autocheck-loading{background-image:none}.form-signup-home dl.successed:after,.form-signup-home dl.errored:after{position:absolute;top:15px;right:10px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.form-signup-home dl.successed:after{content:"\f03a";color:#6cc644}.form-signup-home dl.errored:after{content:"\f02d";color:#bd2c00}.form-signup-home dl.is-loading:after{position:absolute;top:15px;right:10px;display:block;width:16px;height:16px;content:"";background-image:url("/images/spinners/octocat-spinner-16px.gif?8c695afe")}.form-signup-home .placeholder{color:#aaa}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.form-signup-home dl.is-loading:after{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px 16px}}.text-muted{color:#999}.text-center{text-align:center}.marketing-benefits .column{text-align:center}.marketing-benefits .column h3{margin:0 0 9px;font-size:21px;font-weight:normal;line-height:1.1;color:#2a2a2a}.marketing-benefits .column p{margin:0;font-size:14px;color:#5a5a5a}.marketing-benefits .teaser-icon{width:100px;height:100px;margin:0 auto 15px;color:#4183c4;text-align:center;border:1px solid #e5e5e5;border-radius:50px}.marketing-benefits .mega-octicon{font-size:48px;line-height:100px}.marketing-benefits .octicon-checklist{margin-left:6px}.marketing-section-img{display:block;max-width:980px;margin:30px auto;border-radius:5px;border:1px solid rgba(0,0,0,0.25);box-shadow:0 5px 15px rgba(0,0,0,0.15)}.marketing-desktop{border-bottom:0}.marketing-desktop .button .octicon{margin-right:3px}.marketing-more-apps{margin-top:25px}.marketing-more-apps li{display:inline-block;list-style:none;padding-left:20px;padding-right:20px}.marketing-more-apps img{height:50px}.marketing-more-apps a:hover{opacity:.75}.marketing-section-enterprise{z-index:2;overflow:hidden;max-height:341px;margin-bottom:-41px;text-shadow:0 1px 2px rgba(0,0,0,0.3);background-color:#333;background-image:url("/images/modules/home/gh-enterprise-bg.jpg?d6f63ced");background-size:cover;background-position:center center;background-repeat:no-repeat;border-bottom:0;box-shadow:inset 0 10px 20px rgba(0,0,0,0.1)}.marketing-section-enterprise h1{color:#fff}.marketing-section-enterprise .marketing-header .lead{color:#cecbda}.marketing-section-enterprise .button{border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 2px 6px rgba(0,0,0,0.25)}.marketing-section-enterprise .button:active{box-shadow:inset 0 3px 6px rgba(0,0,0,0.25),0 1px 0 rgba(255,255,255,0.25)}.issue-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px}.issue-list .title{padding:0;min-height:24px;font-weight:normal;font-size:18px;line-height:24px;margin:0 0 10px}.issue-list .title .mega-octicon{color:#888;position:absolute;left:0;top:-4px}.issue-list .title .closed.mega-octicon{color:#BD2C00}.issue-list .title .open.mega-octicon{color:#6CC644}.issue-list .title a:visited{color:#7C65C2}.issue-list .issue-number{float:right;color:#999999}.issue-list .description{margin:0 0 10px;line-height:20px;overflow:hidden}.issue-list .created-at{font-size:11px;font-weight:normal;margin:0px}.issue-list .created-at a{color:#999999;font-weight:bold}.issue-list .created-at a:visited{color:#999999}.issue-list .issue-meta{font-size:11px;margin:0;list-style-type:none;overflow:hidden;color:#999999}.issue-list .issue-meta>li{float:left;margin-right:10px}.issue-list .issue-meta a{color:#333333}.issue-list .issue-meta .octicon{color:#838383;vertical-align:middle}.issue-list .issue-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 40px;margin:0 0 20px 0;position:relative}.issues-list-sidebar{font-size:12px}.issues-list-sidebar .progress-bar{margin-bottom:6px}.manage-labels-toggle{display:block;text-align:center;margin:0 5px}.label-select-menu .color{display:inline-block;width:14px;height:14px;margin-right:2px;margin-bottom:2px;border-radius:3px;vertical-align:middle}.label-select-menu .selected .select-menu-item-icon{color:inherit !important}.label-select-menu .selected:active{background-color:transparent !important}.label-select-menu .select-menu-item.navigation-focus{background-color:#f4f4f4;color:inherit}.label-select-menu .select-menu-item.navigation-focus.selected{color:#777}.label-select-menu .select-menu-item.navigation-focus .select-menu-item-icon{color:transparent}.label-select-menu .select-menu-item .octicon-remove-close{display:none;float:right;margin:1px 10px 0 0;opacity:0.6}.label-select-menu .select-menu-item.selected .octicon-remove-close{display:block;color:inherit}.label-select-menu>form{position:relative}.sidebar-milestone-widget{position:relative}.sidebar-milestone-widget .sidebar-milestone-widget-text{color:#999999;line-height:26px}.sidebar-milestone-widget .sidebar-milestone-widget-text.no-select{color:#666666}.sidebar-milestone-widget .info-main{font-weight:bold;margin-bottom:5px;line-height:26px}.sidebar-milestone-widget .info-main .label{color:#999999}.sidebar-milestone-widget .info-main .title{color:#333333}.sidebar-milestone-widget .info-main .css-truncate-target{max-width:121px}.sidebar-milestone-widget .info-secondary{font-size:11px}.sidebar-milestone-widget .info-secondary .open{color:#999999;font-weight:bold}.sidebar-milestone-widget .info-secondary .octicon{color:#bd2c00}.sidebar-milestone-widget .select-menu{position:absolute;right:0}.issue-head{margin-top:-15px;padding:10px;border:1px solid #d5d5d5;border-width:0 1px 2px 1px;border-radius:0 0 5px 5px;font-weight:bold;color:#999}.issue-head .number{float:right;font-size:14px}.issue-head .number strong{color:#666}.discussion-sidebar{float:right;width:100px}.discussion-sidebar hr{margin:10px 0}.discussion-sidebar .state-indicator{padding:7px 10px;margin-bottom:10px}.discussion-sidebar p{font-size:12px;text-align:center;color:#666;margin:0}.discussion-sidebar p strong{color:#333}.discussion-sidebar ul.changes{list-style-type:none;line-height:25px}.discussion-sidebar ul.changes span{font-weight:bold}.discussion-sidebar ul.changes .addition{color:#309c00}.discussion-sidebar ul.changes .deletion{color:#bc0101}.discussion-sidebar .label-manager{display:table;margin-bottom:10px;width:100%}.discussion-sidebar .label-manager>strong{vertical-align:middle;display:table-cell}.discussion-sidebar .label-manager .select-menu{width:1%;display:table-cell;position:relative}.discussion-sidebar .label-manager .select-menu-modal-holder{right:0}.discussion-sidebar .color-label{font-weight:bold}ul.color-label-list .filter-item{cursor:default}ul.color-label-list.editable .color{width:14px}ul.color-label-list.editable .octicon-remove-close{display:inline-block;color:#aaa;position:relative;z-index:10}ul.color-label-list.editable .octicon-remove-close:hover{color:#ba3d37}ul.color-label-list .edit-color-label-form{display:none}ul.color-label-list .color-label{line-height:16px;border:1px solid transparent}ul.color-label-list .color-label.active{z-index:25;position:relative;border:1px solid #ddd;border-radius:3px;box-sizing:border-box}ul.color-label-list .color-label.active .edit-color-label-form{display:block}ul.color-label-list .color-label.active .octicon-remove-close{display:none}ul.color-label-list .color-label a{text-decoration:none}ul.color-label-list .color-label.selected{font-weight:bold;background:98% 5px no-repeat transparent;-webkit-font-smoothing:antialiased}ul.color-label-list .color-label.selected .count,ul.color-label-list .color-label.selected .color{display:none}ul.color-label-list .color-label.selected .octicon-remove-close{display:inline-block}ul.color-label-list .color-label.zeroed,ul.color-label-list .color-label.zeroed .count{color:#999}ul.color-label-list .filter-item:hover .octicon-remove-close{opacity:1}ul.color-label-list .filter-item:hover .color{border-color:#eee}ul.color-label-list .count{color:#333}ul.color-label-list .name a{color:#333}ul.color-label-list .color{display:block;float:left;margin-left:-5px;margin-right:4px;width:6px;height:14px;border-radius:3px;border:1px solid #fff}ul.color-label-list .octicon-remove-close{display:none;float:right;opacity:0.8}ul.color-label-list .nolabels{margin:10px 0;font-size:11px;color:#666}.edit-color-label-form{padding:5px}.edit-color-label-form input[type="text"]{width:100%}.edit-color-label-form .form-actions{margin-top:5px;padding:0;overflow:hidden}.edit-color-label-form .form-actions button{box-sizing:border-box}.edit-color-label-form .optional{margin:0;padding-top:0;float:left;font-size:11px}.edit-color-label-form .color-editor{margin-top:5px;position:relative;height:25px}.edit-color-label-form .color-editor .color-editor-input{position:absolute;left:0;background-color:transparent;min-height:25px;border-left-width:26px;padding-top:3px;padding-bottom:3px;width:130px}.edit-color-label-form .color-editor .octicon{position:absolute;top:4px;left:6px;color:rgba(0,0,0,0.8);z-index:10}.edit-color-label-form .color-editor .invalid-color-indicator{display:none;position:absolute;top:5px;left:9px;color:#c00;z-index:10;font-weight:bold}.edit-color-label-form .color-editor .minibutton{position:absolute;right:0}.edit-color-label-form .color-editor .octicon-check{display:none}.edit-color-label-form.new-label-form{margin-top:10px}.edit-color-label-form.new-label-form .new-label-form-title{margin-bottom:5px}.edit-color-label-form.new-label-form .color-chooser,.edit-color-label-form.new-label-form .color-editor{display:none}.edit-color-label-form .color-editor-bg{position:absolute;left:0;height:25px;width:130px;opacity:0.12;border-radius:3px}.edit-color-label-form.open .color-chooser,.edit-color-label-form.open .color-editor{display:block}.edit-color-label-form.open .name-input{border-bottom-right-radius:0;border-bottom-left-radius:0}.edit-color-label-form.is-valid .color-editor .octicon-check{display:block}.edit-color-label-form.is-not-valid .color-editor .invalid-color-indicator{display:block}ul.color-chooser{height:25px;list-style-type:none;display:table-row}ul.color-chooser li{display:table-cell;width:1%;vertical-align:top}ul.color-chooser .color-cooser-color{display:block;text-align:center;height:25px;cursor:pointer;box-sizing:border-box;border:solid 2px transparent}ul.color-chooser .color-cooser-color label{cursor:pointer}ul.color-chooser input{display:none}ul.color-chooser .octicon-check{visibility:hidden}ul.color-chooser+.color-chooser li:first-child .color-cooser-color{border-radius:0 0 0 3px}ul.color-chooser+.color-chooser li:last-child .color-cooser-color{border-radius:0 0 3px 0}.closed-banner{margin:15px 0 15px 60px;height:7px;overflow:hidden;background:url("/images/modules/comments/closed_pattern.gif?f975aacb");border-radius:5px}.state-indicator{display:block;font-size:14px;font-weight:bold;color:#fff;text-align:center;border-radius:3px;background:#999}.state-indicator.open,.state-indicator.reopened{background:#6cc644}.state-indicator.merged{background:#8fb6dc}.state-indicator.closed{background:#bd2c00}.state-indicator.renamed{background-color:#fffa5d}.issues-list-options{margin-bottom:15px}.issues-list-options .select-menu,.issues-list-options .button-group{display:inline-block;margin-right:10px}.issues-list-options .pagination{float:right;margin:0}.issues-list-options .add-button{float:right;margin-left:10px}.issues-keyboard-shortcuts{float:left;margin-top:10px}.keyboard-shortcuts{font-size:11px;color:#999}.keyboard-shortcuts .octicon{margin-left:4px;vertical-align:middle}.clear-issue-filters{margin-top:0}.clear-issue-filters a{color:#999;font-weight:bold;text-decoration:none}.clear-issue-filters a:hover{color:#666}.clear-issue-filters a:hover .octicon{color:#4183c4}.repository-lang-stats{position:relative}.repository-lang-stats ol.repository-lang-stats-numbers li{display:table-cell;width:1%;border-bottom:none;text-align:center;padding:11px 5px;white-space:nowrap}.repository-lang-stats ol.repository-lang-stats-numbers li span.percent{float:none}.repository-lang-stats ol.repository-lang-stats-numbers li>a,.repository-lang-stats ol.repository-lang-stats-numbers li>span{color:#999999;text-decoration:none;font-weight:bold}.repository-lang-stats ol.repository-lang-stats-numbers li .lang{color:#333333}.repository-lang-stats ol.repository-lang-stats-numbers li .language-color{display:inline-block;width:10px;height:10px;border-radius:50%}.repository-lang-stats ol.repository-lang-stats-numbers li a:hover{background:transparent}.stats-switcher-viewport{overflow:hidden;height:38px}.stats-switcher-viewport .numbers-summary{-moz-transition:margin 0.25s ease-in-out;-webkit-transition:margin 0.25s ease-in-out;transition:margin 0.25s ease-in-out}.stats-switcher-viewport.is-revealing-lang-stats .numbers-summary{margin-top:-38px}.repository-lang-stats-graph{display:block;width:100%;height:auto;line-height:12px;white-space:nowrap;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.repository-lang-stats-graph span{display:inline-block;height:8px;background:#ccc;text-indent:-9999px}.repository-lang-stats-graph .language-color{height:auto;line-height:12px;vertical-align:top}.repository-lang-stats-graph .language-color:first-child{border-bottom-left-radius:3px}.repository-lang-stats-graph .language-color:last-child{border-bottom-right-radius:3px}ol.list-tip,ul.list-tip{border-radius:3px;box-shadow:0 0 5px #ccc;border:1px solid #ddd;background:#fff;position:absolute;top:20px;left:-20px;width:170px;z-index:100;display:none}ol.list-tip:before,ul.list-tip:before{content:"▲";font-size:14px;margin:0 auto;width:14px;display:block;margin-top:-13px;color:#fff;text-shadow:-1px -1px 2px #ccc}ol.list-tip li,ul.list-tip li{margin:0;line-height:100%;list-style:none;border-bottom:1px solid #eee;font-weight:bold}ol.list-tip li span.color-block,ul.list-tip li span.color-block{display:inline-block;width:8px;height:10px;margin-right:5px}ol.list-tip li a,ol.list-tip li .other,ul.list-tip li a,ul.list-tip li .other{color:#333;padding:8px 10px;display:block}ol.list-tip li a:hover,ul.list-tip li a:hover{text-decoration:none;background-color:#E6F1F6}ol.list-tip li span.percent,ul.list-tip li span.percent{float:right;color:#999}ol.list-tip li:last-child,ul.list-tip li:last-child{border-bottom:none}.language-color{background-color:#ccc}.list-group-item{position:relative;display:block;margin-bottom:-1px;padding:8px 10px 10px 40px;border:1px solid #e5e5e5}.list-group-item a:hover{text-decoration:none}.list-group-item:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.list-group-item:first-child .issue-item-unread{border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.list-group-item:last-child .issue-item-unread{border-bottom-left-radius:3px}.list-group-item.closed{background-color:#fcfcfc}.list-group-item.selectable{padding-left:60px}.list-group-item.selected{background-color:#ffffef}.list-group-item.navigation-focus{background-color:#f5f9fc}.list-group-item a:not(.status){color:#333333}.list-group-item a:not(.status).list-group-repo-name{color:#666666}.list-group-item a:not(.status).quiet{color:#999999}.list-group-item .status{position:relative;top:2px;margin-right:-7px;float:right}.logged_in .list-group-item.unread .issue-item-unread{position:absolute;top:0;left:-1px;bottom:0;width:3px;background-color:#4183c4}.list-group-item-number{position:relative;top:2px;float:right;margin-left:12px;font-size:13px;color:#999}.list-group-item-name{margin:0 60px 0 0;font-size:15px;line-height:1.3;margin-bottom:2px;word-wrap:break-word}.list-group-item-name .type-icon{float:left;margin-top:1px;margin-left:-24px}.closed.octicon{color:#bd2c00}.open.octicon{color:#6cc644}.list-group-item-summary{margin-top:2px}.list-group-item-summary p{margin:0 0 5px}.standalone .list-group-item-summary p{margin-bottom:0}.list-group-item-check{position:absolute;top:12px;left:12px}.list-group-item-meta{font-size:11px;line-height:17px;list-style-type:none;overflow:hidden;color:#999999}.list-group-item-meta>li{display:inline-block;margin-right:4px}.list-group-item-meta .gravatar img{position:relative;top:-1px;margin-right:2px;vertical-align:middle;border-radius:2px}.list-group-item-meta .octicon{vertical-align:middle}.list-group-item-meta .branch-name .css-truncate-target{position:relative;top:-1px;vertical-align:middle;max-width:200px}.list-group-item .type-icon{vertical-align:middle;position:relative;top:1px}.list-group-item .assignee{float:right}.list-group-item .assignee img{display:block;border-radius:2px}.list-group-item .labels{display:inline-block;position:relative;top:-2px;margin-bottom:-2px;margin-left:4px}.list-group-item .label{display:inline-block;font-size:11px;padding:2px 4px;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.12)}.list-group-item .label.lighter{text-shadow:0 -1px 0 rgba(0,0,0,0.2)}.list-group-item .label.darker{text-shadow:0 1px 0 rgba(255,255,255,0.4)}.issues-list-actions{padding:6px 10px;font-size:11px;background-color:#f5f5f5}.issues-list-actions .note{margin:0 0 0 5px;display:inline-block;font-size:11px;color:#9ca9a9}.issues-list-actions .select-all{padding:5px 6px 5px 2px;margin-right:25px}.issues-list-actions .dropdown-button{position:relative;padding-right:18px}.issues-list-actions .dropdown-button:after{content:"";display:block;position:absolute;border:3px solid #333333;border-color:#333333 transparent transparent;top:10px;right:8px;width:0px;height:0px}.issues-list-actions .select-menu{display:inline-block}.pulls-list-group .list-group-item{padding-left:34px}.legacy-chromed-list-browser{border:1px solid #ddd;border-radius:5px}.legacy-chromed-list-browser .list-browser-filterbar{border-radius:3px 3px 0 0}.animated-ellipsis-container{display:inline-block;overflow:hidden;height:16px;width:12px;-webkit-transform:translateZ(0)}.animated-ellipsis-container>.animated-ellipsis{overflow:hidden;display:inline-block;vertical-align:bottom;-webkit-animation:ellipsis 1s infinite;-moz-animation:ellipsis 1s infinite}@-webkit-keyframes ellipsis{from{width:2px}to{width:12px}}@-moz-keyframes ellipsis{from{width:2px}to{width:12px}}.large-loading-area{text-align:center;padding:100px 0}.loading-area{text-align:center}.context-loader.large-format-loader{position:absolute;display:none;top:0;left:0;bottom:0;right:0;margin:0;width:auto;padding:190px 0 0 0;font-weight:normal;background:rgba(255,255,255,0.8);border:none;z-index:9999;text-align:center;color:#999999}.context-loader.large-format-loader.is-loading{display:block}.member-adder{display:none;position:absolute;background:#eee;padding:0px 5px 5px;z-index:2;box-shadow:0px 0px 3px #999999}.member-adder.active{display:inherit}.member-adder ul{list-style-type:none}.member-adder ul li{margin-top:4px;clear:both;min-width:400px;border-bottom:1px solid #ddd;background:#fff;padding:3px}.member-adder ul li a.button{margin-top:10px;float:right}.member-adder .navigation-focus{background-color:#4183c4;color:#fff}.member-adder .avatar{float:left;margin-right:5px}.member-adder .login{font-weight:bold}.member-adder .add-to-repo{float:right;margin-top:15px}.member-adder .no-results{display:none}.member-adder .no-results.active{display:inherit}form.member-capability-update{display:inline}.milestone-list .milestone{padding:10px 10px 10px 15px}.milestone-list h3{margin:5px 0 0;font-size:16px}.milestone-list .date{margin:5px 0 5px 0;font-size:14px;color:#999}.milestone-list .pastdue .date{font-weight:bold;color:#bd2c00}.milestone-list .description{margin-top:10px;width:100%;padding:10px 0 0;border-top:1px solid #eee;font-size:12px;font-weight:300;color:#666}.milestone-list .description strong{color:#333}.milestone-list .milestone-progress{float:right;width:390px}.milestone-list .progress-bar{position:relative;height:30px;margin-top:3px;overflow:hidden}.milestone-list .progress-bar .progress{height:30px}.milestone-list .progress-bar .percent{position:absolute;top:4px;left:7px;font-size:16px;font-weight:bold;color:#fff;text-shadow:0 0 2px rgba(0,0,0,0.7)}.milestone-list .meta{font-size:11px}.milestone-list .meta li{list-style-type:none;margin:0 0 0 15px;float:right;font-weight:bold}.milestone-list .meta .numbers{float:left;margin-left:0;color:#888;font-weight:normal}.progress-bar{display:block;height:15px;border-radius:3px;background-color:#d8d8d8;background-image:-moz-linear-gradient(#e2e2e2, #d8d8d8);background-image:-webkit-linear-gradient(#e2e2e2, #d8d8d8);background-image:linear-gradient(#e2e2e2, #d8d8d8);background-repeat:repeat-x}.progress-bar .progress{display:block;height:15px;border-radius:3px 0 0 3px;background-color:#65bd10;background-image:-moz-linear-gradient(#8dcf16, #65bd10);background-image:-webkit-linear-gradient(#8dcf16, #65bd10);background-image:linear-gradient(#8dcf16, #65bd10);background-repeat:repeat-x}.date_selector .button{padding:0;border-color:#ddd;box-shadow:none}.new_milestone dd.required{display:none}.milestones-next ul.tabs{display:none}.milestones-next .repohead{border-bottom:1px solid #ddd}.milestones-next-container{position:relative}.milestones-next-container h1{margin:0}.milestones-next-container h2{margin:0 20px 0 0}.milestones-next-container p{font-size:14px;color:#777;margin:0 0 20px 0}.milestones-next-container .milestone-author{float:left;margin:0 0 20px 0;padding:0 0 15px 0;color:#999}.milestones-next-container .milestone-author a{color:#777}.milestones-next-container .pull-participation{float:right;margin:-2px 0 0 0}.milestones-next-container .milestone-back{position:absolute;left:-44px;top:2px;padding:0 1px 0 4px;color:#ccc}.milestones-next-container .milestone-back:hover{color:#4183c4}.milestones-next-container .milestone-back .octicon{position:absolute;top:9px;left:-10px}.milestones-next-container .menu-container{float:left;width:148px;clear:left}.milestones-next-container .milestone-content{float:right;width:682px}.milestones-next-container .milestone-activity{margin-bottom:40px}.milestones-next-container .milestone-stats{margin:0 0 20px 0;padding:0;box-sizing:border-box;-moz-box-sizing:border-box}.milestones-next-container .milestone-stats li{display:inline-block;margin:0;padding:0;border-right:1px solid #eaeaea;width:223px;font-size:14px;text-align:center}.milestones-next-container .milestone-stats li:last-child{border:none}.milestones-next-container .milestone-stats a{display:block;padding:10px 0;color:#999}.milestones-next-container .milestone-stats a:hover{text-decoration:none;background:#fafafa}.milestones-next-container .milestone-stats .octicon{color:#aaa}.milestones-next-container .milestone-stats .num{color:#222;font-weight:bold}.milestones-next-container .hashtag{font:12px Monaco, "Liberation Mono", Courier, monospace;color:#222}.milestones-next-container .simple-conversation-list{margin:0 0 40px 0;font-size:14px}.milestones-next-container .simple-conversation-list .title{max-width:450px}.milestones-next-container .simple-conversation-list>li{position:relative;padding:10px 0}.milestones-next-container .simple-conversation-list .meta{position:absolute;top:5px;right:0}.milestones-next-container .simple-conversation-list .assign{font-size:13px;width:90px;text-align:right;width:30px}.milestones-next-container .simple-conversation-list .assign a{color:#999}.milestones-next-container .simple-conversation-list .assign a:hover{color:#4183c4}.milestones-next-container .simple-conversation-list .summary{display:block;clear:both;margin:0 0 0 20px;color:#999;font-size:12px;line-height:20px}.milestones-next-container .simple-conversation-list .task-list-summary{margin-right:5px}.milestones-next-container .simple-conversation-list .summary a{color:#999}.milestones-next-container .simple-conversation-list .a{color:#6cc644}.milestones-next-container .simple-conversation-list .d{color:#bd2c00}.milestones-next-container .milestone-list-heading{margin:0 0 20px 0}.milestones-next-container .conversation-list-actions{line-height:20px;color:#999;background-color:#fff;position:absolute;top:9px;right:0;z-index:10}.milestones-next-container .conversation-list-actions li{float:left;list-style:none;margin-left:10px}.milestones-next-container .conversation-list-actions .age{width:110px}.milestones-next-container .blankslate{margin:20px 0 40px 0}.milestones-next-container .milestone-description{position:relative}.milestones-next-container .edit-description-button{position:absolute;top:0;right:0}.milestones-next-container .octicon-issue-opened{color:#6cc644}.milestones-next-container .octicon-issue-closed{color:#bd2c00}.milestones-next-container .open{color:#6cc644}.milestones-next-container .closed{color:#bd2c00}.milestones-next-container .merged{color:#81a5c7}.milestones-next-container .milestone-assign{float:right}.milestones-next-container .js-details-container .content{display:none}.milestones-next-container .js-details-container.open .content{display:block}.milestones-next-container .js-details-container.open .hidden-text-expander{display:none}.milestones-next-container .js-details-container.open .milestone-summary{display:none}.page-new-repo .new-repo-container{width:700px;margin:0 auto;padding-top:20px}.page-new-repo .new-repo-container h2{font-size:22px;font-weight:normal;color:#666;border-bottom:1px solid #ddd;padding-bottom:5px;margin-bottom:.5em}.page-new-repo ul.repo-templates{margin:10px 0}.page-new-repo ul.repo-templates>li{list-style-type:none;display:inline-block;margin:0 10px 0 0}.page-new-repo ul.repo-templates .select-menu{float:left}.page-new-repo .owner-reponame{position:relative}.page-new-repo .owner-reponame dl.form{margin-top:5px;margin-bottom:0}.page-new-repo .owner-reponame .owner,.page-new-repo .owner-reponame .slash,.page-new-repo .owner-reponame .reponame{float:left}.page-new-repo .owner-reponame .slash{font-size:21px;color:#666;padding-top:32px;margin:0 8px}.page-new-repo .owner-reponame .icon-preview{display:none;position:absolute;top:20px;left:-95px}.page-new-repo .owner-reponame .icon-preview .mega-octicon,.page-new-repo .owner-reponame .icon-preview .label{text-align:right;display:inline-block;position:relative}.page-new-repo .owner-reponame .icon-preview .mega-octicon{top:10px;left:5px;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.page-new-repo .owner-reponame .icon-preview .label{font-size:11px;text-transform:uppercase;color:#B9B9B9;font-weight:300;width:50px;top:4px}.page-new-repo .owner-reponame .icon-preview-public .octicon-repo{color:#bbb;top:12px}.page-new-repo .owner-reponame .icon-preview-private .octicon-lock{color:#e9dba8}.page-new-repo .owner-reponame .icon-preview-private .label{top:4px;right:5px}.page-new-repo .owner-reponame .icon-preview-private .label span{padding:3px 6px 2px;background-color:#F8EEC7;border-radius:3px;color:#A1882B}.page-new-repo .reponame-suggestion{color:#34631a;cursor:pointer}.page-new-repo .team-select{display:none}.page-new-repo div.form-checkbox .mega-octicon{color:#666;font-size:24px;float:left;margin-right:5px}.page-new-repo div.form-checkbox .octicon-repo{color:#bbb}.page-new-repo div.form-checkbox .octicon-lock{color:#e9dba8}.page-new-repo .upgrade-upsell{padding-left:33px}.page-new-repo .upgrade-upsell .cc-upgrade{padding-left:20px}.page-new-repo .license-info{float:left;margin-top:5px;margin-left:10px;color:#ccc}.page-new-repo .license-container{border-left:1px solid #ccc;padding-left:15px}.featured-license{font-weight:bold}.oauth-section{margin:20px auto}.oauth-section .flash{margin-bottom:20px;padding:0 15px}.oauth-section .access-heading{font-weight:normal;margin-top:0;margin-bottom:5px}.oauth-section .access-leader{margin-bottom:25px}.oauth-section .access-owner{margin-top:0}.oauth-section .box{float:left;color:#999;border:1px solid #ddd;margin:0 31px 15px 0;border-radius:3px;height:80px;width:80px;padding:5px}.oauth-section .box img{border-radius:3px;height:80px;width:80px}.oauth-section .description{padding-top:1px;margin-left:120px}.oauth-section .description p{color:#999;font-size:15px}.oauth-section .details .content{display:none}.oauth-section .details.open .content{display:block}.oauth-section .open .hidden-text-expander{display:none}.oauth-section .hidden-text-expander{float:left}.oauth-section .avatar{vertical-align:middle;border-radius:3px}.oauth-section .access-details{border-top:1px solid #ddd;clear:both}.oauth-section .access-details .user-box{float:left;width:92px;margin-right:32px}.oauth-section .access-details .avatar{vertical-align:middle;border-radius:2px}.oauth-section .access-details .octicon-arrow-down{color:#ddd;margin:-7px 0 6px 36px}.oauth-section .access-details .details-user{text-align:center}.oauth-section .access-details .details-user p{color:#999;margin:8px 0 0 0;border-top:1px solid #DDD;padding-top:12px;font-size:11px}.oauth-section .access-details .details-user p.login{margin-top:5px;padding:0;border:none;font-size:14px;font-weight:bold}.oauth-section .access-details .permissions{float:left;width:500px;color:#666;margin-top:5px}.oauth-section .access-details .permissions p{font-size:18px}.oauth-section .access-details .question{font-size:16px;border-top:1px solid #eee;padding:30px 0 40px 0}.oauth-section .access-details .question button{padding:7px 32px}.oauth-section .access-details .sidebar{float:right;width:277px;background:#EEE;margin-top:20px;border-radius:2px}.oauth-section .access-details .infotip{font-size:13px;color:#777;background:#fff;border:1px solid #BBB;border-radius:2px;margin:3px;padding:15px}.oauth-section ul.permission-list{font-size:14px;margin:20px 0}.oauth-section ul.permission-list>li{list-style-type:none;padding:7px 0 7px 0}.oauth-section ul.permission-list>li:first-child span.permission{font-weight:bolder}.oauth-section span.permission{display:inline-block;margin-left:4px}.oauth-section .circle{display:inline-block;width:5px;height:5px;border-radius:5px;margin-right:5px;border:2px solid}.oauth-section span.label{display:inline-block;font-weight:bold;text-align:center;font-size:14px;padding:3px 10px;margin-right:4px;border-radius:3px;border:2px solid;text-shadow:0 1px 0 #fff}.oauth-section span.read{color:#7cc45c;background:rgba(124,196,92,0.2);border-color:#7cc45c}.oauth-section span.read .circle{background:#7cc45c;border-color:#7cc45c}.oauth-section span.write{color:#ee9c49;background:rgba(238,156,73,0.2);border-color:#ee9c49}.oauth-section span.write .circle{background:#ee9c49;border-color:#ee9c49}.oauth-section span.delete{color:#c64939;background:rgba(198,73,57,0.3);border-color:#c64939;min-width:123px;text-shadow:0 1px 0 rgba(255,255,255,0.6)}.oauth-section span.delete .circle{background:#c64939;border-color:#c64939}.oauth-section span.off{color:#dddddd;background:#eeeeee;border-color:#dddddd}.oauth-section span.off .circle{background:none;border-color:#dddddd}.header-with-actions{position:relative}.header-with-actions h3{margin-top:5px}.header-with-actions .select-menu{float:right;margin-top:-5px}.header-with-actions .select-menu-modal-holder{right:0}.header-with-actions .select-menu-modal{width:140px}.pulse-blankslate{margin-top:20px}.diffstat-summary{font-size:16px;text-align:center;vertical-align:middle;border-radius:3px;color:#777;line-height:1.8;text-align:left;padding:0 20px 0 0}.diffstat-summary a{color:#555}.diffstat-summary strong{color:#333}.overall-summary .graphs{border-bottom:1px solid #eee}.overall-summary .graphs .graph{-moz-box-sizing:border-box;box-sizing:border-box;display:table-cell;width:459px;padding:15px}.overall-summary .graphs .graph:first-child{border-right:1px solid #eee}.overall-summary .graphs .desc{color:#777;margin-bottom:0}.overall-summary .graphs .num{font-weight:bold;color:#333}.overall-summary .graphs a{font-weight:bold;color:#333}.overall-summary .graphs .mini-bar-graph{display:table;width:100%;background:#eee}.overall-summary .graphs .mini-bar-graph a{background:#6cc644;display:table-cell;height:10px}.overall-summary .graphs .mini-bar-graph a.merged-pulls{background:#333333}.overall-summary .graphs .mini-bar-graph a.closed-issues{background:#bd2c00}.authors-and-code{margin:20px 0 0 0}.authors-and-code .insertions{color:#6cc644}.authors-and-code .deletions{color:#bd2c00}.authors-and-code .section{-moz-box-sizing:border-box;box-sizing:border-box;height:100px;display:table-cell;width:459px}.authors-and-code .code-stats{padding:0 0 0 20px}.authors-and-code .code-stats .files-changed{color:#333;display:block;font-size:24px;border-bottom:1px solid #eee}.authors-and-code .code-stats .files-changed .mega-octicon{color:#999}.pulse-authors-graph{min-height:150px}.pulse-authors-graph .dots{margin:0 auto;margin-top:20px;width:64px;height:64px;-moz-box-sizing:border-box;box-sizing:border-box}.pulse-authors-graph .bar rect{fill:#ff9933;fill-opacity:0.7}.pulse-authors-graph .bar rect:hover{fill-opacity:1;cursor:pointer}.pulse-authors-graph .bar image{cursor:pointer}.pulse-authors-graph .commit-label{fill:#333;text-anchor:middle;font-weight:bold;text-shadow:1px 1px 0 #fff}.page-pulse .overall-summary{border-radius:3px}ul.summary-stats li{-moz-box-sizing:border-box;box-sizing:border-box;list-style-type:none;display:table-cell;margin:0;width:229px;text-align:center;color:#999;border-left:1px solid #eee}ul.summary-stats li a{display:block;text-decoration:none;color:#999;padding-bottom:10px}ul.summary-stats li a:hover{background:#fafafa}ul.summary-stats li .octicon-git-pull-request{color:#333333}ul.summary-stats li .octicon-git-branch-create{color:#6cc644}ul.summary-stats li .octicon-issue-closed{color:#bd2c00}ul.summary-stats li .octicon-issue-opened{color:#6cc644}ul.summary-stats li:first-child{border-left:none;border-bottom-left-radius:3px}ul.summary-stats li .num{display:block;padding-top:10px;font-size:16px;font-weight:bold;color:#000}ul.summary-stats li .lbl{display:block;margin-top:10px;padding-top:3px;padding-bottom:6px;font-size:11px;color:#999;border-top:1px solid #f7f7f7}.participants-list:before,.participants-list:after{content:" ";display:table}.participants-list:after{clear:both}.pulse-sections{clear:both;margin-top:20px}.pulse-section{clear:both;padding:0 0 0 0;font-size:14px;color:#666}.pulse-section.first-section{padding-top:15px}.pulse-section p{margin-top:20px}table.tag-list{margin:20px 0;width:100%;border-top:1px solid #eee}table.tag-list tr{border-bottom:1px solid #eee}table.tag-list td{padding:12px 0;vertical-align:top}table.tag-list td.date{padding-right:10px;white-space:nowrap}table.tag-list td.date a{color:#999}table.tag-list td.main{padding-right:10px}table.tag-list td.ancillary{white-space:nowrap;text-align:right}table.tag-list h4{margin:0;font-size:14px}table.tag-list p{margin:0;color:#999;font-size:13px}table.tag-list p a{color:#666;font-weight:bold}.tag-info h3{margin-top:0;margin-bottom:0;font-size:14px;line-height:20px}.tag-info h3 a{color:#666}.tag-info h3 a .tag-name{color:#000}.tag-references{margin:0;list-style-type:none;font-size:13px}.tag-references>li{margin-right:10px;display:inline-block}.tag-references>li.commit{font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:12px;line-height:20px}.tag-references>li a{color:#999;text-decoration:none}.tag-references>li a:hover{color:#4183c4}.release-downloads{margin:15px -5px 0;list-style-type:none}.release-downloads li{display:inline-block;margin:5px}.release .tag-references{margin-top:8px}.release .tag-references>li{display:block;margin:0 0 5px}.release-timeline{position:relative;border-top:2px solid #eee}.release-timeline-tags{list-style-type:none}.release-timeline-tags>li{display:block}.release-timeline-tags>li:before,.release-timeline-tags>li:after{content:" ";display:table}.release-timeline-tags>li:after{clear:both}.release-timeline-tags .date,.release-timeline-tags .main{position:relative;float:left;-moz-box-sizing:border-box;box-sizing:border-box;padding:20px}.release-timeline-tags .main{width:80%;border-left:2px solid #eee}.release-timeline-tags .date{width:20%;line-height:40px;text-align:right;color:#999}.release-timeline-tags .date:after{content:" ";display:block;position:absolute;top:50%;right:-7px;z-index:10;width:8px;height:8px;margin-top:-6px;background-color:#eee;border:2px solid #fff;border-radius:6px}.release-timeline-tags .octicon-tag{padding-left:5px;color:#ccc}.release-timeline-tags .expander{position:relative;display:none}.release-timeline-tags .expander .date{padding-right:35px;line-height:20px}.release-timeline-tags .expander .date:after{display:none}.release-timeline-tags .expander .main{padding-left:35px;line-height:20px}.release-timeline-tags.is-collapsed .expander{display:block}.release-timeline-tags.is-collapsed>.collapsable{display:none}.release-timeline-tags .expander-dots{position:absolute;top:18px;left:-22px;width:40px;height:20px;text-align:center;background-color:#eee;border:2px solid #fff;border-radius:4px;z-index:10;cursor:pointer}.release-timeline-tags .expander-dots .expander-dot{display:inline-block;margin-top:-2px;width:4px;height:4px;vertical-align:middle;border-radius:2px;background-color:#999}.release-timeline-tags .expander-text{font-weight:bold;color:#666;cursor:pointer}.release-timeline-tags .expander-text:hover{color:#4183c4}.release-timeline-tags .expander-text:hover .expander-dots{background-color:#4183c4}.release-timeline-tags .expander-text:hover .expander-dots .expander-dot{background-color:#fff}.release:before,.release:after{content:" ";display:table}.release:after{clear:both}.release .release-meta,.release .release-body{-moz-box-sizing:border-box;box-sizing:border-box;float:left}.release .release-meta{width:20%;padding:40px 20px;text-align:right;vertical-align:top}.release .release-body{width:80%;padding:40px 20px;border-left:2px solid #eee}.release .release-title{margin:0 60px 0 0}.release .release-edit{float:right}.release .release-authorship{margin-top:5px;margin-bottom:20px;font-size:14px;color:#999}.release .release-authorship a{font-weight:bold;color:#666}.release .release-authorship .avatar img{border-radius:3px;vertical-align:middle}.release .release-label{display:inline-block;margin-top:1px;margin-bottom:10px;padding:5px 10px;font-size:14px;font-weight:bold;color:#fff;background-color:#000;border-radius:4px}.release .release-label.latest{background-color:#6cc644}.release .release-label.draft{background-color:#bd2c00}.release .release-label.prerelease{background-color:#ff9933}.tag-detail{margin:20px 0;padding:12px 0 0 50px;border-top:1px solid #ddd}.tag-detail .octicon-tag{float:left;margin:10px 0 0 -50px;color:#bbb}.tag-detail h2{margin:10px 0 5px 0;font-size:20px;font-weight:normal}.tag-detail h2 .tag-name{font-weight:bold}.tag-detail p{margin:0 0 15px 0;font-size:16px;color:#999}.tag-detail .rule{margin-top:25px;border-color:#eee}.tag-detail .downloads .minibutton{margin-right:10px}.tag-detail .downloads .octicon{margin-right:0;vertical-align:0}.tag-detail .tag-references{margin:15px 0;font-size:14px;font-weight:bold}.tag-detail .tag-references>li{margin-right:20px}.tag-detail .tag-references>li a{color:#4183c4}.new-release .sidebar h3{margin:40px 0 -10px;font-size:14px}.new-release .sidebar h3:first-child{margin-top:15px}.new-release .default,.new-release .saved,.new-release .saving,.new-release .error{display:none}.new-release .error{color:#bd2c00}.new-release .is-default .default{display:inline-block}.new-release .is-saving .saving{display:inline-block}.new-release .is-saving .saving img{vertical-align:top}.new-release .is-saved .saved{display:inline-block}.new-release .is-failed .error{display:inline-block}.drop-target .mega-octicon{vertical-align:middle;color:#e5e5e5}.drop-target p{height:65px;font-size:14px;line-height:65px;text-align:center;border-color:#ddd;border-style:dashed}.drop-target .octospinner{vertical-align:middle}.uploaded-files.is-populated+.drop-target p{border-top-right-radius:0;border-top-left-radius:0;border-top:none}.uploaded-files{background:#fff;border-top-right-radius:4px;border-top-left-radius:4px}.uploaded-files.is-populated{border:1px solid #ddd;border-bottom-color:#e5e5e5}.uploaded-files>li{list-style-type:none;margin:0;padding:8px 10px;border-top:1px solid #eee;line-height:22px}.uploaded-files>li.template{display:none}.uploaded-files>li .delete-pending{display:none}.uploaded-files>li.delete{background:#f9f9f9;color:#999}.uploaded-files>li.delete:nth-child(2){border-top-right-radius:4px;border-top-left-radius:4px}.uploaded-files>li.delete .delete-pending{display:block}.uploaded-files>li.delete .live{display:none}.uploaded-files>li.delete .filename{color:#bd2c00}.uploaded-files>li:nth-child(2){border-top:none}.uploaded-files .filename{font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:11px}.uploaded-files .filesize{font-size:12px;color:#999}.uploaded-files input[type=text]{width:490px;margin-right:6px;padding:2px 4px;border-radius:2px}.uploaded-files .remove{float:right;margin-top:2px;color:#999}.uploaded-files .remove:hover{color:#bd2c00}.uploaded-files .undo{float:right}.upload-progress{background:#fff;border:none;border-radius:30px;box-shadow:0 1px 1px #fff,inset 0 1px 1px rgba(255,255,255,0.5);height:3px;margin-top:3px;position:relative}.upload-progress .upload-meter{background-color:#58b8f4;background-image:-moz-linear-gradient(#8dd2f7, #58b8f4);background-image:-webkit-linear-gradient(#8dd2f7, #58b8f4);background-image:linear-gradient(#8dd2f7, #58b8f4);background-repeat:repeat-x;border-radius:30px;height:100%;position:absolute;top:0}.release-body-form .previewable-comment-form .write-content,.release-body-form .previewable-comment-form .preview-content{padding:0 0 10px}.release-tag-form .for-loading,.release-tag-form .for-empty,.release-tag-form .for-valid,.release-tag-form .for-invalid,.release-tag-form .for-duplicate,.release-tag-form .for-pending{display:none}.release-tag-form.is-loading .for-loading{display:block}.release-tag-form.is-empty .for-empty{display:block}.release-tag-form.is-valid .for-valid{display:block}.release-tag-form.is-invalid .for-invalid{display:block}.release-tag-form.is-duplicate .for-duplicate{display:block}.release-tag-form.is-pending .for-pending{display:block}.release-target-wrapper{display:inline-block}.release-target-wrapper.hidden{display:none}.releases-target-menu{display:inline-block;margin-left:5px}.releases-target-menu .minibutton{line-height:32px}.releases-target-menu .select-menu-button:before{top:14px}.release-show{border-top:2px solid #eee}.release-show .release-edit{display:none}.repolist{padding-top:10px}.repolist .repolist-name{font-size:20px;line-height:32px;margin-top:0;margin-bottom:0;white-space:nowrap}.repolist .repolist-name .css-truncate-target{max-width:540px}.repolist .repolist-icon{float:left;margin-left:-35px;color:#bbb}.repolist .octicon-lock,.repolist .octicon-mirror-private,.repolist .private .octicon-repo-forked{color:#e9dba5}.repolist .fork-flag{margin-top:-5px;margin-bottom:5px;font-size:12px;color:#777}.repolist>li{position:relative;min-height:66px;padding-left:35px;padding-bottom:20px;margin:0 0 20px;list-style:none;border-bottom:1px solid #eee}.repolist>li.simple{min-height:0}.repolist>li.simple .fork-flag{display:none}.repolist .body{text-shadow:0 0 5px #fff, 0 0 5px #fff, 0 0 5px #fff}.repolist .participation-graph{position:absolute;right:0;bottom:0;z-index:-1;width:640px}.repolist .participation-graph.disabled{display:none}.repolist .participation-graph .bars{position:absolute;bottom:0}.repolist .description{margin:0 0 5px;color:#333333}.repolist .updated-at{margin:0;font-size:11px;color:#999999}.repolist .repo-stats{position:relative;top:9px;z-index:5;float:right}.repolist .repo-stats .is-starred .octicon-star{color:#e9dba5}.page-security .filter-list h4{padding-bottom:6px}.page-security p.explain{margin-top:-3px;margin-bottom:15px;font-size:12px}.page-security p.explain a{color:#999}.page-security p.explain a strong{color:#666}.page-security p.explain a .octicon{color:#ccc}.page-security .security-section .mega-octicon{float:left;margin:-4px 4px 0 -4px;color:#ccc}.page-security .security-section h2{margin-top:0;margin-bottom:1px;font-weight:normal;color:#999}.page-security .security-section h2 strong{color:#666}.page-security .security-section .explain{color:#666}.page-security .security-section span.label{border-radius:4px;padding:3px 5px;color:white;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);margin:0 2px;opacity:0.8}.page-security .security-section span.repo-scope{background:#E80C02}.page-security .security-section span.public-repo-scope{background:#FF9E00}.page-security .security-section span.user-scope{background:#666}.page-security .security-section span.gist-scope{background:#6CC644}.page-security .security-section a.audit{float:right;margin-top:8px}.page-security .security-section a.application{font-size:16px}.page-security .security-section a.revoke{float:right;margin-top:4px}.page-security span.red{color:#c54242}.page-security .main ul.numbers{margin-left:40px;font-size:72px;color:#999;overflow:hidden}.page-security .main ul.numbers>li{position:relative;list-style-type:none;float:left;margin:0 15px 5px 0}.page-security .main ul.numbers>li span{font-size:12px;color:#bababa}.page-security .sidebar{margin-bottom:23px;color:#999}.page-security .sidebar h2{color:#777;margin-bottom:13px}.page-security .sidebar .security-tips{font-size:12px}.page-security .sidebar ul.security-tips>li{list-style-type:none;margin-bottom:4px}.page-security .sidebar ul.security-tips .octicon-check{margin-right:2px;display:none}.page-security ul.user-filter{margin:20px 0;list-style-type:none;float:right}.page-security ul.user-filter:before,.page-security ul.user-filter:after{content:" ";display:table}.page-security ul.user-filter:after{clear:both}.page-security ul.user-filter>li{float:left;margin:0 18px 0 0;font-size:13px;color:#999}.page-security ul.user-filter>li>a.selected{color:#999}.page-security ul.app-security-graph{margin:5px 0 32px 0;padding-top:5px;overflow:hidden}.page-security ul.app-security-graph>li{position:relative;list-style-type:none;float:left;height:20px;width:20px;margin-right:5px;margin-bottom:5px}.page-security ul.app-security-graph>li a{display:block}.page-security ul.app-security-graph>li .avatar{position:absolute;bottom:0;border-radius:2px}.page-security img.almost-hidden{opacity:0.15}.page-security ul.user-security-graph{margin:20px 0 0 0px;width:600px;padding-top:10px}.page-security ul.user-security-graph>li{position:relative;list-style-type:none;float:left;width:600px;height:20px;margin-bottom:5px;margin-left:20px}.page-security ul.user-security-graph>li a{display:block;height:20px}.page-security ul.user-security-graph>li .avatar{position:absolute;bottom:0;border-radius:2px}.page-security ul.user-security-graph>li .key-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#ddd}.page-security ul.user-security-graph>li .deploy-key-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#999}.page-security ul.user-security-graph>li .app-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#90D35B}.page-security ul.user-security-graph>li .private-repo-app-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#C52323}.page-security ul.user-security-graph>li.org{height:40px;margin-left:0}.page-security ul.user-security-graph>li.org a{height:40px}.page-security ul.user-security-graph>li.org .org-graph-bar{left:43px}.select-menu-button{padding-right:25px}.select-menu-button .octicon{margin-right:1px}.select-menu-button:before{position:absolute;top:10px;right:10px;display:block;width:0;height:0;content:"";border:4px solid #333;border-color:#333 transparent transparent}.select-menu-button.with-gravatar:before{top:13px}.select-menu-button.icon-only{padding-right:18px;padding-left:7px}.select-menu-button.icon-only:before{right:8px}.select-menu-button.primary:before{border-top-color:#fff}.select-menu-button.primary:hover:active{background-color:#4a993e}.select-menu .spinner{float:left;margin:4px 0 0 -24px}.select-menu.active .select-menu-modal-holder{display:block}.select-menu.right-aligned{float:right;position:relative}.select-menu.right-aligned .select-menu-modal-holder{right:0}.select-menu.is-showing-clear-item .select-menu-clear-item{display:block}.select-menu.is-showing-clear-item .select-menu-clear-item .octicon{color:inherit}.select-menu.is-showing-clear-item .select-menu-clear-item+.select-menu-no-results{display:none}.select-menu.is-loading .select-menu-loading-overlay{display:block}.select-menu.has-error .select-menu-error-shell{display:block}.select-menu-loading-overlay{display:none;text-indent:100%;height:100%;width:100%;position:absolute;top:0;border-radius:5px;box-sizing:border-box;border:1px solid transparent;background-color:rgba(255,255,255,0.8);animation:pulse 2s infinite linear;-webkit-animation:pulse 2s infinite linear;-moz-animation:pulse 2s infinite linear}.select-menu-loading-overlay:before{position:absolute;left:50%;top:50%;margin:-16px 0 0 -16px;width:32px;content:"\f008";font:normal normal 32px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;text-indent:0}@keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}@-webkit-keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}@-moz-keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}@-o-keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}.select-menu-error-shell{padding:5px;border-bottom:1px solid #eee;display:none}.select-menu-error-shell .select-menu-error{display:block;padding:5px 10px;font-weight:bold;color:#900;background-color:#FFEAEA;border:1px solid #E2A0A0}.select-menu-modal-holder{position:absolute;display:none;z-index:21}.select-menu-modal{position:relative;width:300px;margin-top:4px;margin-bottom:20px;overflow:hidden;font-size:12px;color:#666;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:5px;box-shadow:0 3px 12px rgba(0,0,0,0.25)}.select-menu-header{padding:8px 10px;background-color:#eeeeee;background-image:-moz-linear-gradient(#fafafa, #eee);background-image:-webkit-linear-gradient(#fafafa, #eee);background-image:linear-gradient(#fafafa, #eee);background-repeat:repeat-x;border-bottom:1px solid #ddd}.select-menu-header .select-menu-title{font-weight:bold;color:#333;text-shadow:0 1px 0 #fff}.select-menu-header .octicon{display:block;float:right;color:#ccc;cursor:pointer}.select-menu-header .octicon:hover{color:#555}.select-menu-filters{background-color:#f8f8f8}.select-menu-text-filter{padding:10px 10px 0}.select-menu-text-filter:first-child:last-child{padding-bottom:10px;border-bottom:1px solid #DDD}.select-menu-text-filter input{display:block;width:100%;max-width:100%;padding:5px;border:1px solid #DDD;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.select-menu-text-filter input::-webkit-input-placeholder,.select-menu-text-filter input:-moz-placeholder{color:#aaa}.select-menu-tabs{height:33px;border-bottom:1px solid #ddd}.select-menu-tabs ul{overflow:hidden;padding:14px 10px 0 10px}.select-menu-tabs .select-menu-tab{display:inline-block}.select-menu-tabs a{height:20px;padding:5px 8px;font-size:11px;font-weight:bold;color:#888;text-decoration:none;line-height:20px;border-radius:3px 3px 0 0;cursor:pointer}.select-menu-tabs a:hover{color:#333}.select-menu-tabs a.selected{padding:4px 5px;border:1px solid #ddd;border-bottom:1px solid #fff;background-color:#fff;color:#333}.select-menu-list{max-height:400px;overflow:auto;position:relative}.select-menu-list.select-menu-tab-bucket{display:none}.select-menu-list.select-menu-tab-bucket.selected{display:block}.select-menu-item{cursor:pointer;border-bottom:1px solid #eee;display:table;table-layout:fixed;width:100%;overflow:hidden;color:inherit}.select-menu-item:hover{text-decoration:none}.select-menu-item.select-menu-item-template{display:none}.select-menu-item.select-menu-clear-item{display:none}.select-menu-item.disabled,.select-menu-item.disabled.selected{color:#999}.select-menu-item.disabled .select-menu-item-gravatar,.select-menu-item.disabled.selected .select-menu-item-gravatar{opacity:.5}.select-menu-item .octicon{color:#333}.select-menu-item input[type="radio"]{display:none}.select-menu-item .select-menu-item-icon{display:table-cell;color:transparent;vertical-align:top;padding:8px 0 8px 8px;width:24px;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}.select-menu-item .select-menu-item-icon.is-shown{color:inherit}.select-menu-item.navigation-focus,.select-menu-item.navigation-focus.selected,.select-menu-item.navigation-focus.select-menu-action{background-color:#4183c4;color:#fff}.select-menu-item.navigation-focus>.octicon,.select-menu-item.navigation-focus.selected>.octicon,.select-menu-item.navigation-focus.select-menu-action>.octicon{color:#fff}.select-menu-item.navigation-focus .description,.select-menu-item.navigation-focus.selected .description,.select-menu-item.navigation-focus.select-menu-action .description{color:#fff}.select-menu-item.select-menu-action,.select-menu-item.selected{color:#333}.select-menu-item.select-menu-action .description,.select-menu-item.selected .description{color:#666}.select-menu-item.select-menu-action>.octicon,.select-menu-item.selected>.octicon{color:#333}.select-menu-item.select-menu-action .select-menu-item-text{font-weight:bold}.select-menu[data-multiple] .select-menu-item:active{background-color:transparent !important}.select-menu-item a{color:inherit;text-decoration:none}.select-menu-item .hidden-select-button-text{display:none}.select-menu-item .css-truncate-target{display:table-cell;max-width:none}form.select-menu-item>div:first-child{display:none !important}.select-menu-item.last-visible,.select-menu-list:last-child .select-menu-item:last-child{border-bottom:0;border-radius:0 0 3px 3px}.select-menu-actions .select-menu-item:hover{background-color:#4183c4;color:#fff}.select-menu-actions .select-menu-item:hover>.octicon{color:#fff}.select-menu-actions .select-menu-item:hover .description{color:#fff}.select-menu-no-results{padding:9px;display:none;cursor:auto;color:#999}.select-menu-list.filterable-empty .select-menu-no-results,.select-menu-no-results:only-child{display:block}.select-menu-button-gravatar,.select-menu-item-gravatar{overflow:hidden;line-height:0;width:20px}.select-menu-button-gravatar img,.select-menu-item-gravatar img{height:20px;width:20px;display:inline-block;border-radius:3px}.select-menu-item-gravatar{display:table-cell;padding:6px 0 6px 8px;vertical-align:top;width:28px;-moz-box-sizing:border-box;box-sizing:border-box}.select-menu-button-gravatar{display:inline-block;margin:6px 3px 6px 0;margin-right:5px;vertical-align:middle}.select-menu-item-text{display:table-cell;vertical-align:top;padding:8px 0 8px 8px}.select-menu-item-text:first-child{margin-left:5px}.select-menu-item-text .description{color:#999;font-size:11px;max-width:265px;display:block;margin-top:2px;margin-bottom:2px}.select-menu-item-text h4{margin-top:0;margin-bottom:0}.select-menu-item-text h4 .description{font-weight:normal;display:inline}.select-menu-footer{padding:8px;font-weight:bold;border-top:1px solid #eee}.select-menu-footer a{display:inline-block;margin-top:1px;vertical-align:top}.select-menu-footer .octicon{color:#666}.select-menu-new-item-form{display:none}.select-menu-new-item-form .octicon{color:#4183c4}.select-menu-list.is-showing-new-item-form .select-menu-new-item-form{display:table}.select-menu-list.is-showing-new-item-form .select-menu-no-results,.select-menu-list.is-showing-new-item-form .select-menu-clear-item{display:none}.modal-backdrop{display:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.menu-active .modal-backdrop{display:block;position:fixed;top:0;left:0;height:100%;width:100%;z-index:20}.facebox .sudo{padding:0}.facebox .sudo .auth-form-header{border-width:0 0 1px}.facebox .sudo .auth-form-header .mini-icon{display:none}.facebox .sudo .auth-form-body{border-width:0}.facebox .sudo+.facebox-close{padding:5px;color:#fff}#js-sudo-prompt{display:none}.js-sudo-error{display:none}.discussions-header{margin:0 0 8px;padding:0 0 10px}.discussions-header h3{margin:0;line-height:1.85}.discussions-filters .select-menu{display:inline-block}.discussions-filters .tabnav-widget{margin-top:0}.discussions-menu .select-menu-modal{width:260px}.discussions-menu .select-menu-item{position:relative}.discussions-menu .counter{position:absolute;right:15px;top:9px}.discussions{margin:0 0 20px}.discussions .discussion{color:#9B9B9B;font-size:15px;list-style-type:none;padding:16px 0 16px 43px;border-top:1px solid #eee;position:relative}.discussions .discussion .discussion-icon{position:absolute;left:0}.discussions .discussion p,.discussions .discussion h3{margin:0;line-height:1.6;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.discussions .discussion h3 a{font-size:18px;color:#333;font-weight:normal;letter-spacing:-0.055em}.discussions .discussion .avatar img{width:20px;height:20px;position:relative;top:4px}.discussions .discussion .discussion-extra{margin:0 0 4px}.discussions .discussion .pull-info{background:#e8f1f6;border-radius:3px;color:rgba(0,0,0,0.5);display:inline-block;font-size:12px;margin-top:5px;padding:3px 7px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.12)}.discussions .discussion .pull-info em{font-style:normal}.discussions .discussion .discussion-meta{font-size:13px}.discussions .discussion .discussion-username{margin-left:4px;color:#333}.discussions .discussion .discussion-participants{float:right}.discussions .discussion.unseen .mega-octicon{color:#4183c4}.discussions .discussion.unseen h3 a{font-weight:bold}.user-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px}.user-list .tabnav-widget{clear:right;float:right;margin-top:0}.user-list .gravatar{position:absolute;left:0px;top:0px;width:48px;height:48px}.user-list .gravatar img{border-radius:5px}.user-list .user-list-info{padding:0;min-height:48px;font-weight:normal;font-size:18px}.user-list .user-list-info a:visited{color:#7C65C2}.user-list .user-list-meta{font-size:11px;margin:3px 0 0;list-style-type:none;overflow:hidden;color:#999999}.user-list .user-list-meta>li{float:left;margin-right:10px}.user-list .user-list-meta a{color:#333333}.user-list .user-list-meta .octicon{color:#838383;vertical-align:bottom;margin:0 3px 0 0}.user-list .user-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 58px;margin:0 0 20px 0;position:relative}.follow-list{list-style-type:none}.follow-list .follow-list-container{margin-left:90px}.follow-list .follow-list-item{float:left;width:305px;padding-bottom:20px;margin-bottom:20px;margin-right:20px;border-bottom:1px solid #eee}.repository-with-sidebar .follow-list .follow-list-item{width:285px}.follow-list .follow-list-name{font-weight:normal;margin:0 0 5px}.follow-list .follow-list-name a{color:inherit}.follow-list .follow-list-info{margin-top:0;margin-bottom:10px;font-size:12px;color:#666666}.follow-list .css-truncate.css-truncate-target{max-width:195px}.repository-with-sidebar .follow-list .css-truncate.css-truncate-target{max-width:170px}.follow-list .gravatar{float:left;display:block;width:75px;height:75px}.zeroclipboard-link{color:#4183c4;cursor:pointer}.zeroclipboard-link .octicon{display:block}.zeroclipboard-inline{display:inline-block;padding:0 10px;line-height:24px;box-shadow:none} \ No newline at end of file diff --git a/public/css/github2.css b/public/css/github2.css new file mode 100644 index 0000000..66fb115 --- /dev/null +++ b/public/css/github2.css @@ -0,0 +1 @@ +.addon-store .pagehead .container{position:relative}.addon-store .pagehead h1{display:inline-block}.addon-store .pagehead .electrocat-small{position:absolute;bottom:-27px;right:0}.addon-store .marketing-nav{right:370px;bottom:-20px}.addon-store .addon-install-arrow{display:block;color:#999;text-align:center}.addon-summary{-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #eee;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.05);float:left;list-style-type:none;margin:0 10px 10px 0;padding:10px;position:relative;width:32%}.addon-summary:before,.addon-summary:after{content:" ";display:table}.addon-summary:after{clear:both}.addon-summary a:hover{text-decoration:none}.addon-summary .addon-icon,.addon-summary .addon-summary-contents{display:inline-block;vertical-align:middle}.addon-summary .addon-icon{width:100px;height:100px;margin-right:10px}.addon-summary .addon-details{width:170px}.addon-summary .addon-name{font-size:18px;line-height:1em}.addon-summary .addon-provider{font-size:13px;color:#aaa}.addon-summary .addon-provider a{color:#222;font-weight:bold}.addon-summary .addon-actions{margin-top:5px}.addon-summary .private-addon-indicator{background:#E9DBA5;border:1px solid #D6C685;border-radius:3px 0 0 3px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.3);text-shadow:0 1px 0 rgba(255,255,255,0.3);color:#B7A353;padding:3px 0;position:absolute;top:21px;right:-5px;width:24px;text-align:center}.addon-summary .private-addon-indicator:before{content:"";position:absolute;top:-5px;right:-1px;border-color:transparent transparent #D6C685 #D6C685;border-style:solid;border-width:2px;width:0;height:0}.addon-summary .addon-actions .octicon{margin-right:0}.addon-form{margin-top:40px}.addon-form .addon-enclosure{-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #eee;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.05)}.addon-form .addon-enclosure:before,.addon-form .addon-enclosure:after{content:" ";display:table}.addon-form .addon-enclosure:after{clear:both}.addon-form .addon-enclosure .icon-upload,.addon-form .addon-enclosure dl.form{margin:5px}.addon-form .addon-field-group{padding:10px;border-top:1px solid #eee}.addon-form .addon-field-group:first-child{border-top:none}.addon-form .addon-name,.addon-form .addon-owner{display:inline-block;vertical-align:middle}.addon-form .addon-name{width:210px}.addon-form .addon-name>dd input[type="text"]{width:100%}.addon-form .icon-upload,.addon-form .primary-addon-fields{display:inline-block;vertical-align:top}.icon-upload{-moz-box-sizing:border-box;box-sizing:border-box;background-color:#eee;border:1px solid #ccc;border-radius:3px}.icon-upload .icon-placeholder{color:#999;text-align:center;text-shadow:0 1px 0 #fff;padding:23px 0}.icon-upload .icon-placeholder .mega-octicon,.icon-upload .icon-placeholder p{margin:0}.icon-upload .icon-message{color:#aaa;background-color:#fafafa;padding:5px 10px;border-radius:0 0 3px 3px;border-top:1px solid #ccc}.addon-event-types{width:600px}.addon-event-types .addon-event-type{-moz-box-sizing:border-box;box-sizing:border-box;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;display:inline-block;vertical-align:top;width:140px;height:40px;margin:0 5px 10px 0;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05);padding:10px;color:#666;cursor:pointer;text-shadow:0 1px 0 rgba(255,255,255,0.5);position:relative}.addon-event-types .addon-event-type .addon-event-icon,.addon-event-types .addon-event-type .addon-event-name{display:inline-block}.addon-event-types .addon-event-type:before{content:"";width:6px;height:20px;position:absolute;right:10px;background:#c00;border-radius:15px;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3),0 1px 0 rgba(255,255,255,0.5)}.addon-event-types .addon-event-type.is-selected{background-color:#d8f8dc;background-image:-moz-linear-gradient(#bae8c3, #d8f8dc);background-image:-webkit-linear-gradient(#bae8c3, #d8f8dc);background-image:linear-gradient(#bae8c3, #d8f8dc);background-repeat:repeat-x;border-color:#76A172;box-shadow:inset 0 1px 5px rgba(0,0,0,0.3)}.addon-event-types .addon-event-type.is-selected .addon-event-icon{color:#425542}.addon-event-types .addon-event-type.is-selected .addon-event-name{color:#587258}.addon-event-types .addon-event-type.is-selected:before{background:#6cc644;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3),0 1px 0 rgba(255,255,255,0.5),0 0 10px rgba(108,198,68,0.5)}.addon-event-types .addon-event-checkbox{display:none}.addon-event-types .addon-event-icon{color:#888}.addon-event-types .addon-event-name{color:#666;font-weight:bold;margin-top:1px;font-size:13px}.addon-field-editor{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:auto;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.1)}.addon-field-editor .addon-field-list,.addon-field-editor .addon-new-field{text-align:center}.addon-field-editor .addon-field-list{border:1px solid #ddd;border-bottom:none;border-radius:3px 3px 0 0}.addon-field-editor .addon-new-field{background-color:#d0e3ef;background-image:-moz-linear-gradient(#d8ebf8, #d0e3ef);background-image:-webkit-linear-gradient(#d8ebf8, #d0e3ef);background-image:linear-gradient(#d8ebf8, #d0e3ef);background-repeat:repeat-x;border:1px solid #97c1da;border-radius:0 0 3px 3px}.addon-field-editor .addon-field-property,.addon-field-editor .addon-field-actions{display:inline-block}.addon-field-editor .addon-field,.addon-field-editor .addon-new-field,.addon-field-editor .no-addon-fields{padding:6px 5px}.addon-field-editor .addon-field{border-bottom:1px solid #ddd}.addon-field-editor .addon-field:last-child{border-bottom:none}.addon-field-editor .no-addon-fields{text-align:center}.addon-field-editor .no-addon-fields p{margin:.5em 0}.addon-field-editor .button{width:50px;text-align:center}dl.form>dd .addon-field-editor .addon-field-input{width:290px}.addon-config-editor .addon-field{margin:10px 0}.addon-config-editor .addon-field-name{display:block}.addon-select-target{text-align:center}.addon-select-target .addon-target-selector,.addon-select-target .addon-owner-select,.addon-select-target .addon-target-slash,.addon-select-target .addon-target-repository,.addon-select-target .addon-install-button{display:inline-block;text-align:left}.addon-select-target .addon-target-slash{font-size:21px;color:#666;margin:0 5px;position:relative;top:4px}.addon-select-target .addon-target-repository .select-menu-button{padding:4px 30px 4px 10px}.addon-select-target .addon-target-repository .select-menu-button:before{top:14px}.addon-select-target .addon-install-button{margin-left:5px}.avatar-stack{position:relative;width:auto}.avatar-stack .avatar{float:left;width:20px;height:20px;border-radius:2px;position:relative}.avatar-stack.multiple-avatars{padding-left:1px}.avatar-stack.multiple-avatars.leftmost{border-left:0;border-right:1px solid #ddd;padding-left:0;padding-right:1px}.avatar-stack.multiple-avatars:before{content:"";float:left;display:block;position:absolute;top:0;left:-3px;width:18px;height:18px;border:1px solid #d7d7d7;border-right:none;border-radius:2px;background-color:#ccc;box-shadow:inset 1px 0 0 #eee}.avatar-stack.multiple-avatars .avatar{display:none}.avatar-stack.multiple-avatars .avatar:last-child{display:inline-block;box-shadow:-1px 0 0 #eee}.avatar-stack.multiple-avatars.leftmost .avatar:last-child{display:none}.avatar-stack.multiple-avatars.leftmost .avatar:first-child{display:inline-block}.avatar-stack.multiple-avatars:hover{border:none}.avatar-stack.multiple-avatars:hover:before{display:none}.avatar-stack.multiple-avatars:hover .avatar{display:inline-block;margin-left:2px}.avatar-stack.multiple-avatars:hover.leftmost .avatar{margin-left:0;margin-right:2px;display:inline-block}.heat1{background-color:#ffeca7}.heat2{background-color:#ffdd8c}.heat3{background-color:#ffdd7c}.heat4{background-color:#fba447}.heat5{background-color:#f68736}.heat6{background-color:#f37636}.heat7{background-color:#ca6632}.heat8{background-color:#c0513f}.heat9{background-color:#a2503a}.heat10{background-color:#793738}.blame-breadcrumb .css-truncate-target{max-width:680px}.blame{font-size:12px;font-family:Monaco, "Liberation Mono", Courier, monospace;background-color:#fff}.blame .commitinfo{padding:5px 10px;background-color:#f7f7f7;border-right:1px solid #e5e5e5}.blame .file-blame .diff-line-num{vertical-align:middle;cursor:pointer}.blame .commit-date{color:#888}.blame .section-first td{border-top:1px solid #ccc}.blame .line-data{white-space:pre}.blame .commitinfo code{font-size:12px}.blame .commitinfo .date{color:#666;display:block;float:left;padding-right:5px}.blame .commitinfo .message{display:block;width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;float:right}.line-age{padding:0 1px}.line-age-legend{float:right;margin-top:-25px;font-size:12px;color:#777}.line-age-legend ol{display:inline-block;list-style:none;margin:0 5px}.line-age-legend ol li{display:inline-block;width:8px;height:10px}.blankslate{text-align:center;padding:30px;background-color:#fafafa;border:solid 1px #ddd;border-radius:3px;box-shadow:inset 0 0 8px #eee;position:relative}.blankslate.has-fixed-width{margin:0 auto;width:485px}.blankslate.large-format h3{margin:0.75em 0 0.75em 0;font-size:20px}.blankslate.large-format p{font-size:16px}.blankslate.large-format .mega-octicon{font-size:40px;height:40px;width:40px;color:#aaa}.blankslate code{padding:2px 5px 3px;background:#fff;font-size:14px;border:1px solid #eee;border-radius:3px}.blankslate>.mega-octicon{color:#aaa}.blankslate .mega-octicon+.mega-octicon{margin-left:10px}.tabnav+.blankslate{margin-top:20px}.blankslate .context-loader.large-format-loader{padding-top:50px}#blog-main .pagehead h1{margin-top:3px;font-size:24px}#blog-main .pagehead h1 a.title{color:#333333}.blog-search{position:relative;float:right}.blog-search .blog-search-input{padding-left:28px;width:200px}.blog-search .octicon-search{position:absolute;left:7px;top:9px;z-index:5;color:#999}.blog-search-results em{background-color:#FAFFA6;padding:.1em}.blog-aside{float:right}.blog-aside .button{margin-bottom:20px;text-align:center}.blog-aside .menu-container{float:none;margin-bottom:30px}.blog-aside .rss{display:inline-block;margin-left:5px;color:#999999}.blog-aside .rss .octicon{float:left;margin-right:5px;color:#ff9933}.blog-content{width:685px;font-family:"Helvetica Neue", Helvetica, Arial, freesans, sans-serif}.blog-content h1,.blog-content h2,.blog-content h3{font-weight:500}.blog-draft .blog-draft-indicator{color:#bd2c00}.blog-post+.blog-post{margin-top:60px}.blog-post-meta{list-style:none;margin-bottom:10px;color:#999999}.blog-post-meta li{display:inline;padding-right:20px}.blog-post-meta a{color:#999999}.blog-post-meta .octicon,.blog-post-meta .author-avatar{vertical-align:top;border-radius:3px}.blog-post-title{margin-top:0;margin-bottom:10px;font-size:32px}#blog-home{color:#ccc;font-size:15px;font-weight:100;margin-right:10px;margin-left:-25px;vertical-align:middle}#blog-home:hover{color:#999}.blog-post-body{font-size:16px;line-height:1.6;color:#444;padding-top:10px}.blog-post-body code{font-size:16px}.blog-post-body img{padding:3px;border:1px solid #D8D8D8}.blog-post-body img.emoji{width:30px !important;height:30px !important;border:0}.blog-post-body iframe{border:none;width:100%;height:500px}.blog-content .pagination{margin-top:60px}.blog-feedback{margin:50px 0;background-color:#f1f1f1;background-image:-moz-linear-gradient(#fafafa, #f1f1f1);background-image:-webkit-linear-gradient(#fafafa, #f1f1f1);background-image:linear-gradient(#fafafa, #f1f1f1);background-repeat:repeat-x;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:3px;box-shadow:inset 0 1px 0 #fff, 0 1px 5px #f1f1f1}.blog-feedback-header{background:url("/images/icons/twitter.png?34a6a9a3") 648px 1px no-repeat;background-size:32px auto;margin:0;padding:10px;border-bottom:1px solid #ddd;box-shadow:0 1px 0 #fff;font-size:14px;font-weight:bold}.blog-feedback-description{margin:0;padding:10px;color:#999}.boxed-group{position:relative;background:#efefef;padding:3px;border-radius:3px;margin:0 0 15px 0}.boxed-group+.boxed-group{margin-top:35px}.boxed-group .boxed-group-action{position:absolute;right:0;top:0;z-index:10;margin:9px 10px 0 0}.boxed-group .boxed-group-inner{padding:1px 10px;background:#fff;border:1px solid #d8d8d8;border-top:1px solid #ccc;border-bottom-left-radius:1px;border-bottom-right-radius:1px;color:#666;font-size:13px}.boxed-group .boxed-group-inner strong{color:#000}.boxed-group .boxed-group-inner.markdown-body{padding-top:10px;padding-bottom:10px}.boxed-group .boxed-group-inner.seamless{padding:0}.boxed-group .boxed-group-inner h4{margin:15px 0 -5px 0;font-size:14px;color:#000}.boxed-group .boxed-group-inner .boxed-action{float:right}.boxed-group .boxed-group-inner .help{clear:both;margin:1em -10px 0 -10px;padding:1em 10px 1em 35px;border-top:1px solid #ddd;color:#999}.boxed-group .boxed-group-inner .help .octicon{margin-left:-25px;margin-right:5px}.boxed-group.flush .boxed-group-inner{padding:0}.boxed-group.condensed .boxed-group-inner{font-size:12px;padding:0}.boxed-group>h3,.boxed-group .heading{background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x;margin:0;border-top-left-radius:1px;border-top-right-radius:1px;border:1px solid #d8d8d8;border-bottom:none;padding:10px 10px 11px 10px;font-size:14px;text-shadow:0 1px 0 #fff}.boxed-group>h3 a.boxed-group-breadcrumb,.boxed-group .heading a.boxed-group-breadcrumb{color:#666;font-weight:normal;text-decoration:none}.boxed-group>h3 .avatar,.boxed-group .heading .avatar{margin-top:-4px;border-radius:3px;vertical-align:middle}.boxed-group.dangerzone>h3{background-color:#df3e3e;background-image:-moz-linear-gradient(#f97171, #df3e3e);background-image:-webkit-linear-gradient(#f97171, #df3e3e);background-image:linear-gradient(#f97171, #df3e3e);background-repeat:repeat-x;border-bottom:1px solid #900;color:#fff;text-shadow:0 -1px 0 #900}.boxed-group.condensed>h3{padding:6px 6px 7px;font-size:12px}.boxed-group.condensed>h3 .octicon{padding:0 6px 0 2px}.boxed-group hr.bleed-flush{width:100%;padding:0 10px;margin-left:-10px}.boxed-group hr.compact{margin-top:10px;margin-bottom:10px}.boxed-group .form-help{float:right;margin-top:40px;width:200px;text-align:center}.boxed-group .form-help a{font-weight:bold}.boxed-group .form-help p{margin:10px 0}.fieldWithErrors{display:inline}ul.compact-options{margin:-6px 0 13px 0}ul.compact-options li{margin:0 12px 0 0;display:inline-block;list-style-type:none;font-weight:bold}ul.compact-options li label{float:left}ul.compact-options li .spinner{float:left;width:16px;height:16px;margin-left:5px;display:block}.boxed-group-list{list-style:none;margin:0}.boxed-group-list>li{display:block;margin-left:-10px;margin-right:-10px;padding:5px 10px;line-height:23px;border-bottom:1px solid #e5e5e5;-moz-box-sizing:border-box;box-sizing:border-box}.boxed-group-list>li:hover{background:#ffe}.boxed-group-list>li:first-child{border-top:1px solid #ddd}.boxed-group-list>li:last-child{border-bottom:none}.boxed-group-list>li.selected{background:#e5f9e2}.boxed-group-list>li.approved .minibutton,.boxed-group-list>li.rejected .minibutton{display:none}.boxed-group-list>li.approved:before,.boxed-group-list>li.rejected:before{margin-right:5px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;content:"\f03a";color:#5ec051;font-size:16px}.boxed-group-list>li.rejected:before{content:"\f050";color:#bc0000}.boxed-group-list>li.rejected a{text-decoration:line-through}.boxed-group-list>li img{margin-top:-2px;margin-right:4px;vertical-align:middle;border-radius:3px}.boxed-group-list>li .minibutton{float:right;margin:-1px 0 0 10px}.boxed-group-list>li .button-group{float:right}.boxed-group-list>li .button-group .minibutton{float:left}.boxed-group-list .access-level{color:#777;margin-left:10px}.boxed-group.flush .boxed-group-list li{margin-left:0;width:auto;padding-left:0;padding-right:0}.boxed-group-list.standalone{margin-top:-1px}.boxed-group-list.standalone>li:first-child{border-top:none}.boxed-group-list>li.linked-item{position:relative}.boxed-group-list>li.linked-item>a{display:block}.boxed-group-list>li.linked-item>a:hover{background-position:100% -98px}.boxed-group-list>li.linked-item>a:hover:after{color:#73a2d4;background-color:#e7ecf0}.boxed-group-list>li.linked-item>a .description{color:#999;font-style:normal}.boxed-group-list>li.linked-item>a:after{position:absolute;top:7px;right:7px;padding:1px 1px 1px 2px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;content:"\f03e";color:#b3b3b3;text-decoration:none;font-size:16px;line-height:16px;float:right;border-radius:20px;border:1px solid #E5E5E5;background-color:#eee;width:15px;text-align:center}.boxed-group-list>li.linked-item .item-stat{float:right;margin-right:25px;color:#999}.boxed-group-list>li.linked-item .item-stat strong{color:#333}.boxed-group-table{width:100%;text-align:left}.boxed-group-table th,.boxed-group-table td{padding:9px;border-bottom:1px solid #eee}.boxed-group-table th{background-color:#fafafa}.boxed-group-table td{vertical-align:top}#ajax-error-message{display:none;position:fixed;top:-200px;left:50%;width:914px;z-index:9999;margin:0 3px;margin-left:-457px;-moz-box-sizing:border-box;box-sizing:border-box;transition:top 0.5s ease-in;-webkit-transition:top 0.5s ease-in 0}#ajax-error-message.visible{top:0}#ajax-error-message>.octicon-alert{vertical-align:text-top}.command-bar{position:relative;float:left;margin-top:6px}.header-logged-out .command-bar{width:626px;margin-top:3px;margin-left:15px}.homepage .header-logged-out .command-bar{width:770px}.command-bar .command-bar-form{position:relative;z-index:95;width:220px;transition:width 0.2s ease-in-out;-webkit-transition:width 0.2s ease-in-out 0}.command-bar input[type="text"]{position:relative;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;min-height:28px;padding:4px 20px 4px 8px;font-size:12px;transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out 0}.command-bar:not(.command-bar-focus) input[type="text"]{border-color:#ddd;background:#fcfcfc;box-shadow:1px 1px 0 #fff}.command-bar .help{position:absolute;top:0;bottom:0;right:10px;width:12px;height:auto;line-height:24px;z-index:96;color:#999}.command-bar .octicon-question{font-size:12px;cursor:pointer}.command-bar.in-repository .command-bar-form{width:340px}.command-bar.in-repository input[type="text"]{padding-left:123px}.command-bar.in-repository .search-context-select-menu{text-shadow:none}.command-bar.in-repository .search-context-select-menu .select-menu-button{position:absolute;top:1px;left:1px;margin:0;width:118px;height:26px;padding-right:7px;line-height:26px;font-size:11px;border:none;border-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:1px solid #ddd;background-color:#f4f4f4;background-image:-moz-linear-gradient(#f8f8f8, #f4f4f4);background-image:-webkit-linear-gradient(#f8f8f8, #f4f4f4);background-image:linear-gradient(#f8f8f8, #f4f4f4);background-repeat:repeat-x;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:none}.command-bar.in-repository .search-context-select-menu .select-menu-button:hover,.command-bar.in-repository .search-context-select-menu .select-menu-button.selected{background-color:#e4e4e4;background-image:-moz-linear-gradient(#e8e8e8, #e4e4e4);background-image:-webkit-linear-gradient(#e8e8e8, #e4e4e4);background-image:linear-gradient(#e8e8e8, #e4e4e4);background-repeat:repeat-x}.command-bar.in-repository .search-context-select-menu .select-menu-button:before{top:11px;border-color:#999 transparent transparent}.command-bar.in-repository .search-context-select-menu .select-menu-modal{width:150px}.header-logged-in .command-bar .top-nav{position:absolute;top:0;left:230px;z-index:99;width:211px;transition:opacity 0.2s linear;-webkit-transition:opacity 0.2s linear 0;opacity:1;z-index:1}.header-logged-out .command-bar .top-nav{position:absolute;top:0;z-index:99;transition:opacity 0.2s linear;-webkit-transition:opacity 0.2s linear 0;opacity:1;z-index:1;margin-top:0px;margin-right:0;right:0}.header-logged-in .in-repository .top-nav{left:350px}.header-logged-in .command-bar-focus .top-nav,.header-logged-out .command-bar-focus .top-nav{opacity:0}.header-logged-in .command-bar-hidden .top-nav{left:0}.command-bar-focus .command-bar-form{width:400px}.command-bar-focus.in-repository .command-bar-form{width:520px}.command-bar-focus .help{display:none}.enterprise.logged_out.private-mode .command-bar{width:765px}.enterprise.logged_out .command-bar{width:678px}.enterprise .command-bar-form input[type="text"]{border-color:#080909;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075),0 1px 0 rgba(255,255,255,0.075)}.enterprise .command-bar-form input[type="text"]:focus{border-color:#000;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075)}.enterprise .in-repository .minibutton.select-menu-button{background-color:#313436;background-image:-moz-linear-gradient(#4a4e50, #313436);background-image:-webkit-linear-gradient(#4a4e50, #313436);background-image:linear-gradient(#4a4e50, #313436);background-repeat:repeat-x;color:#eee;text-shadow:0 -1px 0 #222}.enterprise .in-repository .minibutton.select-menu-button:hover{background-color:#393b3e;background-image:-moz-linear-gradient(#525558, #393b3e);background-image:-webkit-linear-gradient(#525558, #393b3e);background-image:linear-gradient(#525558, #393b3e);background-repeat:repeat-x}.enterprise .in-repository .active .minibutton.select-menu-button{background-color:#4a4e50;background-image:-moz-linear-gradient(#313436, #4a4e50);background-image:-webkit-linear-gradient(#313436, #4a4e50);background-image:linear-gradient(#313436, #4a4e50);background-repeat:repeat-x;box-shadow:inset 0 3px 5px rgba(0,0,0,0.3);text-shadow:0 1px 3px #222}.commandbar{position:relative}.commandbar .display{position:absolute;top:100%;left:0;right:0;z-index:95;-moz-box-sizing:border-box;box-sizing:border-box;max-height:300px;overflow-y:auto;font-size:13px;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,0.25);-webkit-transition:opacity .2s linear, visibility 0s linear .21s;-moz-transition:opacity .2s linear, visibility 0s linear .21s;transition:opacity .2s linear, visibility 0s linear .21s;opacity:1;visibility:visible}.commandbar .display.hidden{opacity:0;visibility:hidden}.commandbar .choice,.commandbar .loading{position:relative;padding:8px;margin-bottom:-1px;overflow:hidden;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);white-space:nowrap;border:solid rgba(0,0,0,0.05);border-width:1px 0;display:block}.commandbar .choice:last-child,.commandbar .loading:last-child{border-radius:0 0 2px 2px;border-bottom:0;margin-bottom:0}.commandbar .choice:hover,.commandbar .loading:hover{background-color:#eff7fd;z-index:2;border-color:rgba(0,0,0,0.1);text-decoration:none}.commandbar .choice .command,.commandbar .loading .command{display:inline-block;margin-right:10px;color:#333}.commandbar .choice .prefix,.commandbar .loading .prefix{text-align:right;float:left;width:20px;height:20px;margin-right:5px}.commandbar .choice .prefix .octicon,.commandbar .loading .prefix .octicon{vertical-align:middle}.commandbar .choice .octicon-lock,.commandbar .choice .octicon-git-fork-private,.commandbar .loading .octicon-lock,.commandbar .loading .octicon-git-fork-private{color:#d5ba53}.commandbar .choice .command-user-avatar,.commandbar .loading .command-user-avatar{height:20px;width:20px;border-radius:3px}.commandbar .choice mark,.commandbar .loading mark{background-color:transparent;font-weight:bold;color:inherit}.commandbar .choice.selected,.commandbar .loading.selected{z-index:3;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3269a0;background-image:-moz-linear-gradient(#4183c4, #3269a0);background-image:-webkit-linear-gradient(#4183c4, #3269a0);background-image:linear-gradient(#4183c4, #3269a0);background-repeat:repeat-x}.commandbar .choice.selected .command,.commandbar .choice.selected .octicon,.commandbar .choice.selected mark,.commandbar .loading.selected .command,.commandbar .loading.selected .octicon,.commandbar .loading.selected mark{color:#fff}.commandbar .loading .description{background:url("/images/spinners/octocat-spinner-16px.gif?8c695afe") 0 50% no-repeat;display:block;line-height:16px;margin:-1px 0;padding-left:24px}.commandbar .display table{width:100%;border-collapse:collapse}.commandbar .display table td{padding:0 8px;color:#999;line-height:30px;white-space:nowrap;border-top:1px solid rgba(0,0,0,0.05)}.commandbar .display table td span{display:block;overflow:hidden;text-overflow:ellipsis}.commandbar .display table td:first-child{font-weight:bold;width:1px;color:#333}.commandbar .display table tr:first-child td{border:0}.commandbar .message{position:absolute;top:0;left:0;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;padding:5px 8px;background:#fff;border-radius:4px;border:1px solid #51A7E8;z-index:97;overflow:hidden;-webkit-transition:opacity .2s linear, visibility 0s linear .21s;-moz-transition:opacity .2s linear, visibility 0s linear .21s;transition:opacity .2s linear, visibility 0s linear .21s;opacity:0;visibility:hidden;white-space:nowrap;text-overflow:ellipsis;text-shadow:none}.commandbar .message.visible{-webkit-transition:left .06s linear, opacity .2s linear;-moz-transition:left .06s linear, opacity .2s linear;transition:left .06s linear, opacity .2s linear;opacity:1;visibility:visible}.commandbar .message.visible ~ input::-webkit-input-placeholder{color:transparent}.commandbar .message.loading{color:#999}.commandbar .message.success{color:#396}.commandbar .message.error{color:#911}h3.conversation-list-heading{margin:35px 0 10px 0;height:0;text-align:center;font-size:16px;font-weight:normal;color:#999999;border-bottom:1px solid #ddd}h3.conversation-list-heading .inner{display:inline-block;position:relative;top:-10px;padding:0 5px;background:#fff}h3.conversation-list-heading strong{font-weight:bold;color:#333333}.simple-conversation-list{margin:15px 0;font-size:13px;color:#999999}.simple-conversation-list>li{margin:0;padding:8px 0;list-style-type:none;border-top:1px solid #eeeeee}.simple-conversation-list>li:first-child{border-top:none}.simple-conversation-list>li .title{font-weight:bold}.simple-conversation-list>li .title .num{color:#999999}.simple-conversation-list>li .state{display:inline-block;margin-right:3px;height:20px;padding:0 10px;line-height:20px;font-size:12px;font-weight:bold;color:#fff;text-align:center;text-shadow:0 1px 1px rgba(0,0,0,0.2);background:#666;border-radius:2px}.simple-conversation-list>li .state-merged{background:#8fb6dc}.simple-conversation-list>li .state-closed{background:#bd2c00}.simple-conversation-list>li .state-open{background:#6cc644}.simple-conversation-list>li .state-proposed{background:#6cc644}.simple-conversation-list>li .meta{float:right}.simple-conversation-list.varied-states .state{width:80px;-moz-box-sizing:border-box;box-sizing:border-box}.simple-conversation-list .pull-meta a{color:#999}.simple-conversation-list .pull-meta .a{color:#6cc644}.simple-conversation-list .pull-meta .d{color:#bd2c00}.logged_out.enter-coupon{background-color:#f9f9f9}.logged_out.enter-coupon .coupon-form-body{margin-bottom:-20px}.logged_out.enter-coupon .header-logged-out{background-color:#fff}.logged_out.enter-coupon .site-footer{border-top:0}.logged_out.enter-coupon .coupon-form-body{background-image:none;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 1px 0 #fff,0 0 200px #fff}.coupons .setup-plans td img{vertical-align:middle;margin-top:-2px}.coupons .is-hidden{display:none}.coupons .coupon-signin-title{margin-top:40px}.coupons .coupon-form-body{width:230px;margin:100px auto 60px;padding:20px;font-size:14px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;text-align:center;background-color:#fff;background-image:linear-gradient(#fefefe, #fafafa);border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 1px 0 #fff}.coupons .coupon-form-body .coupon-icon{width:80px;height:80px;margin:0 auto 15px;color:#4183c4;border:1px solid #dedede;border-radius:40px}.coupons .coupon-form-body .coupon-icon .mega-octicon{margin-left:2px;font-size:48px;line-height:80px}.coupons .coupon-form-body .coupon-title{margin-bottom:20px;font-weight:500}.coupons .coupon-form-body .input-block{margin-bottom:15px}.coupons .coupon-form-body .small_notice{display:inline;padding:0 10px}.coupons .coupon-form-body .button{display:block;width:100%}.ghe-license-status{padding:40px 0;font-size:16px;text-align:center}.ghe-license-status .octocat{width:225px;margin-bottom:20px}.ghe-license-status h1{margin-bottom:10px}.ghe-license-status p{margin-top:0;margin-bottom:5px;color:#777}.fakelogin{text-align:center;font-size:14px;line-height:34px;background-color:#b33630;background-image:-moz-linear-gradient(#dc5f59, #b33630);background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);background-repeat:repeat-x;border-bottom:1px solid #900;color:#fff;text-shadow:0 -1px 0 rgba(153,0,0,0.25)}.fakelogin a{color:#f3d9d7;text-decoration:underline}.fakelogin a:hover{color:#fff}#fork-select:before,#fork-select:after{content:" ";display:table}#fork-select:after{clear:both}#fork-select img{border-radius:5px;margin-bottom:5px;opacity:.3}#fork-select .target{width:100px;padding:10px;margin:0 8px 10px 8px;float:left;text-align:center;border:2px solid transparent;border-radius:5px}#fork-select .target .css-truncate-target{max-width:90px}#fork-select .target.disabled{cursor:not-allowed;color:#999999}#fork-select .target:not(.disabled){cursor:pointer;font-weight:bold}#fork-select .target:not(.disabled) img{opacity:1}#fork-select .target:not(.disabled):hover{background-color:#dde9f4;color:#4183c4;border-color:#4183c4}#fork-select .target:not(.disabled):active{color:#265079;background-color:#8fb6dc}#fork-select-page h2{font-weight:400}#fork-select-page .target{margin-left:0}.enable-fullscreen.minibutton{display:inline-block;margin-top:4px;margin-left:5px;padding:0 6px}.enable-fullscreen.minibutton .octicon{margin-right:0}.new-file .enable-fullscreen{margin-left:11px}.write-content{position:relative}.write-content .enable-fullscreen{position:absolute;top:5px;right:16px;color:#333333;opacity:.5;line-height:1em}.write-content .enable-fullscreen:hover{opacity:1}.fullscreen-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;background:#fff;text-shadow:none;z-index:1000}.fullscreen-overlay .fullscreen-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-width:800px;height:100%;margin:0 auto;padding:30px 0}.fullscreen-overlay .textarea-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:relative}.fullscreen-overlay textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;padding:20px;border:0;background:#fff;color:#999999;font-size:21px;line-height:1.6em;resize:none;-moz-transition:color 0.15s ease-in 0;-webkit-transition:color 0.15s ease-in 0;transition:color 0.15s ease-in 0;box-shadow:none}.fullscreen-overlay textarea:focus,.fullscreen-overlay textarea:hover{outline:none;color:#333333}.fullscreen-overlay .fullscreen-sidebar{position:absolute;top:30px;right:30px;text-align:right;z-index:1002}.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen,.fullscreen-overlay .fullscreen-sidebar .fullscreen-info,.fullscreen-overlay .fullscreen-sidebar .theme-switcher{color:#b3b3b3;float:right;clear:right;margin-bottom:15px}.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen:hover,.fullscreen-overlay .fullscreen-sidebar .fullscreen-info:hover,.fullscreen-overlay .fullscreen-sidebar .theme-switcher:hover{color:#333333;text-shadow:0 0 10px #fff}.fullscreen-overlay .fullscreen-sidebar .theme-switcher{margin-right:8px}.fullscreen-overlay.dark-theme{background:#1d1f21}.fullscreen-overlay.dark-theme textarea{background:#1d1f21;color:#a4b1b1}.fullscreen-overlay.dark-theme textarea:focus,.fullscreen-overlay.dark-theme textarea:hover{color:#dbe0e0}.fullscreen-overlay.dark-theme .fullscreen-sidebar{color:#dbe0e0}.fullscreen-overlay.dark-theme .fullscreen-sidebar .exit-fullscreen,.fullscreen-overlay.dark-theme .fullscreen-sidebar .theme-switcher{color:#a4b1b1}.fullscreen-overlay.dark-theme .fullscreen-sidebar .exit-fullscreen:hover,.fullscreen-overlay.dark-theme .fullscreen-sidebar .theme-switcher:hover{color:#dbe0e0;text-shadow:0 0 10px #000}.fullscreen-overlay .suggester-container{top:5px;left:0}.fullscreen-overlay-enabled .wrapper,.fullscreen-overlay-enabled #footer{display:none}.fullscreen-overlay-enabled .fullscreen-overlay{display:block}.previewable-comment-form .input-with-fullscreen-icon{padding-right:24px;margin-right:-24px}.previewable-comment-form .upload-enabled .fullscreen-overlay textarea{max-height:none;border:none;border-radius:0}#wiki-wrapper .ie #gollum-editor{padding-bottom:1em}#gollum-editor{margin:10px 0 50px;padding:10px;background-color:#f9f9f9;border:1px solid #e4e4e4;border-radius:5px}.singleline{display:block;margin:10px 0}#gollum-editor-title-field.active{border-bottom:1px solid #ddd;display:block;margin:0 0 3px 0;padding:0 0 5px 0}#gollum-editor-page-title{font-weight:bold;margin-top:0}#gollum-editor-page-title.ph{color:#000}#gollum-editor-function-bar{margin:10px 0}#gollum-editor-type-switcher{display:none}#gollum-editor-function-bar{height:26px;padding-bottom:10px;border-bottom:1px solid #ddd}#gollum-editor-function-bar #gollum-editor-function-buttons{display:none;float:left}#gollum-editor-function-bar.active #gollum-editor-function-buttons{display:block}#gollum-editor-function-bar #gollum-editor-format-selector{padding-top:5px}#gollum-editor-function-bar #gollum-editor-format-selector select{float:right;margin:0}#gollum-editor-function-bar #gollum-editor-format-selector label{color:#999;float:right;font-size:11px;font-weight:bold;line-height:17px;padding:0 5px 0 0}#gollum-editor-function-buttons .minibutton{width:30px;padding-left:0;padding-right:0;text-align:center}#gollum-editor-function-buttons .minibutton .octicon{margin-right:0}#gollum-error-message{display:none;padding-top:12px;font-size:1.8em;color:#f33}#gollum-editor #gollum-editor-body{font-family:Monaco, "Liberation Mono", Courier, monospace;line-height:22px;margin:13px 0 5px;height:390px;resize:vertical}#gollum-editor #gollum-editor-body+.collapsed,#gollum-editor #gollum-editor-body+.expanded{border-top:1px solid #ddd;margin-top:7px}#gollum-editor .collapsed,#gollum-editor .expanded{border-bottom:1px solid #ddd;display:block;overflow:hidden;padding:10px 0 5px}#gollum-editor .collapsed a.button,#gollum-editor .expanded a.button{border:1px solid #ddd;color:#333;display:block;float:left;height:25px;overflow:hidden;margin:2px 5px 7px 0;padding:0;text-shadow:0 1px 0 #fff;width:25px;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px}#gollum-editor .collapsed a.button:hover,#gollum-editor .expanded a.button:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);text-decoration:none;background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x}#gollum-editor .collapsed a.button span,#gollum-editor .expanded a.button span{margin:4px}#gollum-editor .collapsed h4,#gollum-editor .expanded h4{font-size:16px;float:left;margin:0;padding:6px 0 0 4px;text-shadow:0 -1px 0 #fff}#gollum-editor .collapsed a.button span.octicon-triangle-right{display:inline-block}#gollum-editor .collapsed textarea,#gollum-editor .collapsed a.button span.octicon-triangle-down{display:none}#gollum-editor .expanded a.button span.octicon-triangle-down{display:inline-block}#gollum-editor .expanded a.button span.octicon-triangle-right{display:none}#gollum-editor .expanded textarea{border:1px solid #ddd;clear:both;display:block;font-size:12px;font-family:Monaco, "Liberation Mono", Courier, monospace;height:84px;margin:8px 0;padding:6px;width:883px;resize:vertical}#gollum-editor a.gollum-minibutton,#gollum-editor a.gollum-minibutton:visited{background-color:#f7f7f7;border:1px solid #d4d4d4;color:#333;cursor:pointer;display:block;font-size:12px;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-weight:bold;margin:0 0 0 9px;padding:5px 12px;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px}#gollum-editor a.gollum-minibutton:hover,#gollum-editor a.gollum-minibutton:visited:hover{background:#3072b3;border-color:#518cc6 #518cc6 #2a65a0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);text-decoration:none;background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x}#gollum-editor-help{margin-top:-10px;overflow:hidden;padding:0;border:1px solid #ddd;border-width:0 1px 1px 1px}#gollum-editor-help-parent,#gollum-editor-help-list{display:block;float:left;height:170px;list-style-type:none;overflow:auto;margin:0;padding:10px 0;width:160px;border-right:1px solid #eee}#gollum-editor-help-parent li,#gollum-editor-help-list li{font-size:12px;line-height:1.6;margin:0;padding:0}#gollum-editor-help-parent li a,#gollum-editor-help-list li a{border:1px solid transparent;border-width:1px 0;display:block;font-weight:bold;padding:2px 12px;text-shadow:0 -1px 0 #fff}#gollum-editor-help-parent li a:hover,#gollum-editor-help-list li a:hover{background:#fff;border-color:#f0f0f0;text-decoration:none;box-shadow:none}#gollum-editor-help-parent li a.selected,#gollum-editor-help-list li a.selected{border:1px solid #eee;border-bottom-color:#e7e7e7;border-width:1px 0;background:#fff;color:#000;box-shadow:0 1px 2px #f0f0f0}#gollum-editor-help-list{background:#fafafa}#gollum-editor-help-wrapper{background:#fff;overflow:auto;height:170px;padding:10px}#gollum-editor-help-content{font-size:12px;margin:0 10px 0 5px;padding:0;line-height:1.8}#gollum-editor-help-content p{margin:0 0 10px 0;padding:0}.ie #gollum-editor .singleline input{padding-top:0.25em;padding-bottom:0.75em}#gollum-footer{font-size:12px;line-height:19px}#gollum-footer #last-edit{color:#999;margin:10px 0 0}#gollum-dialog-dialog h4{border-bottom:1px solid #ddd;color:#333;font-size:16px;line-height:normal;font-weight:bold;margin:0 0 12px 0;padding:0 0 6px;text-shadow:0 -1px 0 #f7f7f7}#gollum-dialog-dialog-body{font-size:12px;line-height:16px;margin:0;padding:0}#gollum-dialog-dialog-body fieldset{display:block;border:0;margin:0;overflow:hidden;padding:0 12px}#gollum-dialog-dialog-body fieldset .field{margin:0 0 18px 0;padding:0}#gollum-dialog-dialog-body fieldset .field:last-child{margin:0 0 12px 0}#gollum-dialog-dialog-body fieldset label{color:#666666;display:block;font-size:14px;font-weight:bold;line-height:1.6;margin:0;padding:0;min-width:80px}#gollum-dialog-dialog-body fieldset input[type="text"]{display:block;margin:3px 0 0 0;width:100%}#gollum-dialog-dialog-body fieldset input.code{font-family:'Monaco', 'Courier New', Courier, monospace}#gollum-dialog-dialog-buttons{border-top:1px solid #ddd;overflow:hidden;margin:14px 0 0 0;padding:12px 0 0}a.gollum-minibutton,a.gollum-minibutton:visited{border:1px solid #d4d4d4;color:#333;cursor:pointer;display:inline;font-size:12px;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-weight:bold;float:right;width:auto;margin:0 0 0 9px;padding:4px 12px;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px}a.gollum-minibutton:hover,a.gollum-minibutton:visited:hover{border-color:#518cc6 #518cc6 #2a65a0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);text-decoration:none;background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x}#wiki-wrapper.edit h1{color:#999;font-weight:normal}#wiki-wrapper.edit h1 strong{color:#000;font-weight:bold;line-height:normal}.boxed-group-critical{background:#bd2c00}.boxed-group-critical .alert-badge{color:#bd2c00}.boxed-group-warn{background:#ff9933}.boxed-group-warn .alert-badge{color:#ff9933}.boxed-group-alert .boxed-group-inner h4{margin-bottom:5px}.boxed-group-alert .boxed-group-inner h4 .mini-bar-legend{float:right}.icon-and-label .col{-moz-box-sizing:border-box;box-sizing:border-box;border-right:1px solid #eee;text-align:center;padding:10px}.icon-and-label .col:last-child{border-right:none}.icon-and-label .label{display:block;font-size:12px;margin-top:10px;color:#555}.icon-and-label .octicon-stop{color:#bd2c00}.icon-and-label .octicon-check{color:#6cc644}.icon-and-label .octicon-alert{color:#ff9933}.alert-item-list{list-style:none;margin-top:10px}.alert-item{padding:10px;border-bottom:1px solid #eee}.alert-item .info{float:right;color:#777}.alert-item .label{font-size:12px;margin-left:10px}.alert-info{font-size:14px}.mini-bar-graph{display:table;width:100%;background:#eee}.mini-bar-graph .graph-bar{background:#333333;display:table-cell;height:10px}.mini-bar-graph .graph-bar.positive-area{background:#6cc644}.mini-bar-graph .graph-bar.negative-area{background:#bd2c00}.mini-bar-graph .graph-bar.neutral-area{background:#333333}.mini-bar-legend{font-size:12px;font-weight:normal;display:table}.mini-bar-legend li.key-value{display:table-cell;padding:5px}.mini-bar-legend .key{width:10px;height:10px;background:#ccc;display:inline-block;margin-right:2px}.mini-bar-legend .key-positive{background-color:#6cc644}.mini-bar-legend .key-negative{background-color:#bd2c00}.mini-bar-legend .key-neutral{background-color:#999999}.mini-bar-legend .value{color:#777}.marketing .pagehead h1{font-size:30px}.marketing .pagehead p{margin-top:4px;margin-bottom:0;font-size:14px;color:#777}.marketing .pagehead ul.actions{margin-top:10px}.marketing h2.subdued{font-size:16px;color:#666}.marketing h2 .secure{float:right;padding:1px 0;font-size:11px;font-weight:bold;text-transform:uppercase;color:#6cc644}p.read-it{margin:36px 0 0 0;color:#000;text-align:center;font-size:25px;font-weight:bold}.marketing .questions textarea{width:100%;padding:5px;height:200px}.marketing .equacols .form-actions{margin-top:15px;margin-bottom:15px}.marketing .questions p{font-size:14px;color:#666}.marketing .questions h2{font-size:16px;margin:15px 0 -10px 0}ul.bottom-nav,.content ul.bottom-nav{margin:15px 0;padding:10px 0;border-top:1px solid #ddd;font-size:14px}ul.bottom-nav:after{content:".";display:block;height:0;clear:both;visibility:hidden}* html ul.bottom-nav{height:1%}ul.bottom-nav{display:inline-block}ul.bottom-nav{display:block}ul.bottom-nav li{list-style-type:none}ul.bottom-nav li.prev{float:left}ul.bottom-nav li.next{float:right}.plan-intro{font-size:18px;padding-bottom:18px}.plan-intro .sub-head{font-size:15px;color:#777;margin-top:-10px}.current-plan-intro{font-size:16px;margin-bottom:26px}.current-plan-intro .price{display:inline}.free-plan-intro{border-bottom:solid 1px #ddd;margin-bottom:26px}.free-plan-intro .button{margin-left:50px}.act-plans{list-style:none}.act-plan{display:block;float:left;margin-bottom:20px;position:relative;border-radius:5px;-moz-box-sizing:border-box;box-sizing:border-box}.act-plan+.act-plan{margin-left:25px}.act-plan.current-plan{position:relative;top:-13px}.act-plan-personal{width:310px}.act-plan-biz{width:226px}.act-plan-header{color:#fff;font-size:24px;padding:10px 10px;border-top-left-radius:5px;border-top-right-radius:5px}.act-plan-header .price{float:right}.act-plan-header .price .symbol{opacity:0.7;position:relative;top:-5px;font-size:16px}.act-plan-header .price .amount{font-weight:bold}.act-plan-header .price .duration{opacity:0.7;font-size:16px}.act-plan-personal-header{background-color:#5294c9}.act-plan-biz-header{background-color:#76c759}.current-plan-indicator{background-color:#ffc;color:#4d4d3e;padding:4px 10px;border-left:solid 1px #dadaae;border-right:solid 1px #dadaae;position:relative}.current-plan-indicator:after{position:absolute;left:15px;bottom:100%;content:" ";height:0;width:0;pointer-events:none;border:solid transparent;border-width:5px;border-bottom-color:#ffc}.act-plan-repos{padding:8px 10px;font-size:18px}.act-plan-personal-repos{background-color:#e3edf5;color:#1b3752;border-left:solid 1px #b4cde6;border-right:solid 1px #b4cde6}.act-plan-biz-repos{background-color:#e7f3e3;color:#234119;border-left:solid 1px #c0deb5;border-right:solid 1px #c0deb5}.act-plan-description{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border:solid 1px #ddd;border-top:0;padding:10px}.act-plan-description .button{display:block;margin-top:12px;text-align:center}.act-plan-points{list-style:none;font-size:14px}.act-plan-points li+li{margin-top:5px}.act-plan-enterprise{margin-top:10px;padding:20px 0 30px;font-size:15px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,0.5);text-align:center;background:#4e3572 url("/images/modules/home/gh-enterprise-bg.jpg?d6f63ced") center center no-repeat;background-size:cover}.act-plan-enterprise h2{font-size:24px}.act-plan-enterprise a{color:#fff;font-weight:bold}.act-plan-enterprise p{margin-bottom:20px}.act-plan-enterprise .button{font-size:14px;border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 2px 6px rgba(0,0,0,0.25)}.act-plan-enterprise .button:active{box-shadow:inset 0 3px 6px rgba(0,0,0,0.25),0 1px 0 rgba(255,255,255,0.25)}.plan.fi{margin-top:0;background-color:#0f0f0f;background-image:-moz-linear-gradient(#616161, #0f0f0f);background-image:-webkit-linear-gradient(#616161, #0f0f0f);background-image:linear-gradient(#616161, #0f0f0f);background-repeat:repeat-x;border:0}.plan.fi:hover{box-shadow:0 0 25px rgba(0,0,0,0.35)}.fi h3{color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.5)}.fi p{color:#999;text-shadow:-1px -1px 0 rgba(0,0,0,0.8)}.fi .button{border-color:#000}.fi .octicon{vertical-align:top}.plans-features{margin:15px 0 20px;font-size:14px;text-align:center}.plans-features .octicon{color:#60b044}.plans-features li{list-style-type:none;display:inline-block;margin:0 0 0 20px;font-weight:bold;color:#000}.plans-features .intro{font-weight:normal;color:#666;padding:0;background:transparent}.faqs{color:#666;font-size:14px}.faqs strong.highlight{color:#444;background:#fdffe0}.faqs h2{margin:30px 0 -10px 0;font-size:16px;color:#000}.faqs h2:first-child{margin-top:15px}.faqs a{font-weight:bold}.featured-brands{margin:20px 0;padding:5px 10px;background-color:#f2f8fa;background-image:-moz-linear-gradient(#fefefe, #f2f8fa);background-image:-webkit-linear-gradient(#fefefe, #f2f8fa);background-image:linear-gradient(#fefefe, #f2f8fa);background-repeat:repeat-x;border:1px solid #ddd;border-radius:5px;text-align:center;font-size:14px;color:#677a84}.steps{margin:30px auto 0;padding:0;overflow:hidden;list-style:none;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05);-moz-box-sizing:border-box;box-sizing:border-box}.steps li{float:left;width:33.3%;padding:10px 15px;color:#ccc;cursor:default;border-left:1px solid #ddd;background-color:#fafafa;-moz-box-sizing:border-box;box-sizing:border-box}.steps li.current{background-color:#fff;color:#333}.steps li.current .mega-octicon{color:#4183c4}.steps li .mega-octicon{float:left;margin-right:15px}.steps li .step{display:block}.steps li:first-child{border-left:0}.steps .complete{color:#777}.steps .complete .mega-octicon{color:#6cc644}.pagehead .hero{width:958px;padding:0;margin:-16px 0 15px -19px}.pagehead .hero h1{position:relative;margin:0;height:auto;padding:8px 10px;font-size:16px;font-weight:bold;color:#fff;-webkit-font-smoothing:antialiased;letter-spacing:0;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:0 2px 0 rgba(0,0,0,0.15)}.pagehead .hero h1 em{font-weight:normal;color:#fff;opacity:0.75}.hero h1{display:block;background-color:#999999;background-image:-moz-linear-gradient(#ddd, #999);background-image:-webkit-linear-gradient(#ddd, #999);background-image:linear-gradient(#ddd, #999);background-repeat:repeat-x}.hero.golden h1{background-color:#94890d;background-image:-moz-linear-gradient(#ded356, #94890d);background-image:-webkit-linear-gradient(#ded356, #94890d);background-image:linear-gradient(#ded356, #94890d);background-repeat:repeat-x}.hero.features-theme h1{background-color:#405a6a;background-image:-moz-linear-gradient(#829aa8, #405a6a);background-image:-webkit-linear-gradient(#829aa8, #405a6a);background-image:linear-gradient(#829aa8, #405a6a);background-repeat:repeat-x}.hero ul.subnav{position:relative;float:right;margin:-32px 10px 0 0;height:25px;z-index:5}.hero ul.subnav li{list-style-type:none;margin:0 0 0 10px;float:left;font-size:11px;font-weight:bold}.hero ul.subnav li a{display:block;height:23px;padding:0 8px;line-height:23px;color:#fff;color:rgba(255,255,255,0.8);border:1px solid transparent;border-radius:3px;text-decoration:none;-webkit-font-smoothing:antialiased}.hero ul.subnav li a:hover{color:#fff;background:rgba(0,0,0,0.2)}.hero ul.subnav li a.selected{color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.3);background:rgba(255,255,255,0.15);border-top-color:rgba(0,0,0,0.3);border-left-color:rgba(0,0,0,0.3);border-bottom-color:rgba(255,255,255,0.2);border-right-color:rgba(255,255,255,0.2);cursor:pointer}.hero img{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.hero .heroimage{position:relative;line-height:1px}.hero p.photocredit{position:absolute;bottom:0;left:0;margin:0;padding:5px 10px;font-size:11px;line-height:1.3;font-weight:bold;color:#999;background:#000;-webkit-font-smoothing:antialiased;background:rgba(0,0,0,0.5);border-bottom-left-radius:3px}p.photocredit a{color:#999}.hero .textographic{padding:15px 10px;text-align:center;font-size:14px;color:#666;background:url("/images/modules/hero/textographic-border.png?ba91f8f8") 0 100% no-repeat #eee}.hero .textographic p{margin:0}.hero .screenographic{position:relative;padding:15px 10px 0;line-height:1px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background-color:#d3e1e8;background-image:-moz-linear-gradient(#edf3f6, #d3e1e8);background-image:-webkit-linear-gradient(#edf3f6, #d3e1e8);background-image:linear-gradient(#edf3f6, #d3e1e8);background-repeat:repeat-x}.hero .screenographic>.bigcount,.hero .screenographic>.caption,.hero .screenographic>.floating-text{line-height:1.3}.hero .screenographic:after{content:".";display:block;height:0;clear:both;visibility:hidden}* html .hero .screenographic{height:1%}.hero .screenographic{display:inline-block}.hero .screenographic{display:block}.screenographic .browsercap{float:left;margin:0 5px 0 -5px;width:540px;height:145px;padding:21px 23px 0 17px;background:url("/images/modules/features/hero_browser.png?4369ed15") 0 0 no-repeat}.screenographic .caption{float:right;margin:25px 13px 0 0;width:320px;padding:12px;font-size:14px;color:#555;text-align:left;background:#f8fcff;border:1px solid #d0d7da;border-right:none;border-bottom:none;border-radius:4px}.screenographic .caption p{margin:0}.screenographic .bottom{position:absolute;left:0;bottom:0;width:100%;height:6px;background:url("/images/modules/features/screenographic-bottom.png?1ebeb8a9");opacity:0.07}.screenographic.community img{margin:-14px 0 0 -10px}.hero .screenographic p.photocredit{color:#aaa;background:rgba(0,0,0,0.75);border-bottom-left-radius:4px}.hero .screenographic p.photocredit a{color:#fff}.screenographic .bigcount{padding:12px 20px;line-height:1.0;color:#fff;white-space:nowrap;background:#1a2933;background:rgba(35,45,52,0.8);border-radius:5px}.screenographic .bigcount p.count{margin:-6px 0 0 0;font-size:50px;line-height:50px;text-shadow:0 0 10px rgba(0,0,0,0.8)}.screenographic .bigcount p.subtext{margin:0 0 0 0;font-size:12px;font-weight:bold;text-align:center;color:#ccc;color:rgba(255,255,255,0.7)}.screenographic.hosting{padding-top:20px;padding-bottom:22px;padding-right:15px}.screenographic.hosting .bigcount{float:left;margin:0 15px 0 5px}.screenographic.community .bigcount{display:none;position:absolute;top:25px;left:50%}.screenographic .floating-text h3{margin-top:7px;margin-bottom:0;font-size:18px;color:#2f424e}.screenographic .floating-text p{margin-top:5px;margin-bottom:0;font-size:14px;color:#50585d}.wider .pagehead{position:relative;margin-top:20px;padding-left:6px;padding-right:6px}.wider .pagehead .hero{margin-left:0}div.content{font-size:14px;color:#333}.marketing .content h2{margin:40px 0 -10px 0;font-size:18px;color:#000}.feature-content h2{margin:0 0 -10px 0;font-size:18px}.content h2:first-child,.content .rule+h2{margin-top:0}.marketing .content h3{color:#000;margin:1.5em 0 -0.5em 0}.marketing .content h3:first-child{margin-top:5px}.content .figure{margin:15px 0;padding:1px;border:1px solid #e5e5e5}.content .figure:first-child{margin-top:0}.marketing .content ul{margin:25px 0 25px 25px}.miniprofile{margin:15px 0}.miniprofile h3{margin:0;font-size:16px}.miniprofile p{margin:0 0 10px 0;color:#666}.miniprofile .profile-link,.miniprofile .public-info{margin:2px 0;font-size:11px;color:#999}ul.checklist{margin:20px 0;font-size:12px;font-weight:bold}.miniprofile ul.checklist{margin:30px 0}ul.checklist li{list-style-type:none;margin:15px 0;padding-left:25px;background:url("/images/modules/marketing/check.png?af172011") 0 2px no-repeat}ul.dates{margin:20px 0;font-size:12px}ul.dates li{list-style-type:none;margin:15px 0;padding-left:25px;background:url("/images/modules/marketing/calendar.png?2cfd5c0a") 0 2px no-repeat}ul.dates li strong{color:#000;display:block}.content .quote{margin:25px 30px}.sidebar .quote{margin:20px 0}.content .quote blockquote{margin:0;font-family:Georgia, Times, serif;font-style:italic;color:#666}.content .quote cite{display:block;font-size:12px;font-weight:bold;font-style:normal;color:#333;text-align:right}.popout{padding:10px;font-size:12px;color:#36361d;background:#e3f2d4;border-radius:4px}.popout p{margin:0;line-height:1.5}.popout p+p{margin-top:10px}pre.terminal{padding:10px 10px 10px 23px;color:#fff;background:url("/images/modules/features/terminal_sign.png?c8a21285") 10px 50% no-repeat #333;border-radius:4px}.wider .centered-graphic{text-align:center;line-height:1px;padding-bottom:37px;background:url("/images/modules/features/centered-graphic-glow.gif?7085b33b") 50% 100% no-repeat}.centered-graphic .feature-text{line-height:1}.centered-graphic h2{margin-top:20px}.centered-graphic p{color:#444}.big-notice{margin:15px 0;padding:5px 20px;background-color:#bedebe;background-image:-moz-linear-gradient(#efe, #bedebe);background-image:-webkit-linear-gradient(#efe, #bedebe);background-image:linear-gradient(#efe, #bedebe);background-repeat:repeat-x;border:1px solid #bedebe;border-radius:5px}.big-notice h3{margin-bottom:-10px}.contact-notice{margin:15px 0;padding:5px 20px;background-color:#bebebe;background-image:-moz-linear-gradient(#eee, #bebebe);background-image:-webkit-linear-gradient(#eee, #bebebe);background-image:linear-gradient(#eee, #bebebe);background-repeat:repeat-x;border:1px solid #bebebe;border-radius:5px}.contact-notice h3{margin-bottom:-10px}ul.feature-tabs{position:relative;margin:15px 0;padding:0 2px 29px;background:url("/images/modules/features/curly_rule.png?c34bbe30") 0 100% no-repeat}ul.feature-tabs li{list-style-type:none;position:relative;float:left;margin:0 0 0 30px;width:215px;height:150px;text-align:center;z-index:5}ul.feature-tabs li:first-child{margin-left:0}ul.feature-tabs li.highlight{position:absolute;bottom:5px;left:-1000px;margin:0;width:224px;height:97px;background:url("/images/modules/features/feature-tab-highlight.png?32168763");z-index:1}.feature-tabs a{text-decoration:none}.feature-tabs .tab-button{display:block;position:absolute;top:80px;left:0;width:100%;padding:15px 0;text-decoration:none;text-shadow:1px 1px 0 rgba(255,255,255,0.5);background-color:#eeeeee;background-image:-moz-linear-gradient(#fdfdfd, #eee);background-image:-webkit-linear-gradient(#fdfdfd, #eee);background-image:linear-gradient(#fdfdfd, #eee);background-repeat:repeat-x;border:1px solid #e9e9e9;border-radius:4px;cursor:pointer;z-index:5}.feature-tabs a:hover .tab-button{border-color:#ddd;box-shadow:0 0 10px rgba(65,131,196,0.3)}.feature-tabs .tab-button h3{margin:0;font-size:14px}.feature-tabs .tab-button p{margin:0;color:#888}.feature-tabs a.selected{cursor:default}.feature-tabs a.selected .tab-button{background-color:#f1efcc;background-image:-moz-linear-gradient(#fdfdf6, #f1efcc);background-image:-webkit-linear-gradient(#fdfdf6, #f1efcc);background-image:linear-gradient(#fdfdf6, #f1efcc);background-repeat:repeat-x;box-shadow:none;cursor:default}.feature-tabs .selected .tab-button h3{color:#000}.feature-tabs .selected .tab-button p{color:#666}.browsered{margin-bottom:-15px;width:460px;background:url("/images/modules/features/browsered_browser.png?9a3593be") 0 0 no-repeat}.browsered.mini{width:300px;background-image:url("/images/modules/features/browsered_browser-mini.png?cd12a059")}.browsered .inner{line-height:1px;padding:14px 16px 35px 13px;background:url("/images/modules/features/browsered_shadow.png?105ba720") 0 100% no-repeat}.browsered.mini .inner{padding-top:10px;background-image:url("/images/modules/features/browsered_shadow-mini.png?d3250b3f")}.caption{margin-top:-5px;margin-bottom:30px;padding:18px 8px 8px;font-size:11px;text-align:center;color:#384141;background:url("/images/modules/features/caption_back.png?4d18f3f8") 50% 0 no-repeat;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.caption p{margin:0}.browsered+h3{margin-top:5px}.access-infographic{text-align:center}.access-infographic p{margin:10px 0;font-size:12px;font-weight:bold;color:#444}.access-infographic p.subtext{margin-top:-10px;font-weight:normal;font-size:11px}.access-infographic p.repo{height:80px;padding-top:12px;font-size:22px;color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);-webkit-font-smoothing:antialiased;background:url("/images/modules/features/infographics/hosting-access.png?8085dbf0") 0 0 no-repeat}.access-infographic p.methods{margin-top:15px;margin-bottom:-5px;font-size:16px;color:#000}.access-infographic .sep{padding:0 5px}.logged_out.signup .header-logged-out .container,.logged_out.signup .site-footer{width:750px}.logged_out.signup .site-footer{margin-right:auto;margin-left:auto}.logged_out.signup .header-actions .primary,.logged_out.signup .site-footer-links,.logged_out.signup .command-bar{display:none}.logged_out.signup .site-footer .octicon-mark-github{top:30px}.logged_out.signup.alt-signup .setup-secondary{display:none}.logged_out.signin.alt-signin .header-actions .signin,.logged_out.signin.alt-signin .command-bar{display:none}.setup-wrapper{padding-top:60px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.setup-header,.setup-wrapper{width:750px;margin:0 auto;-moz-box-sizing:border-box;box-sizing:border-box}.setup-header{padding-bottom:20px;margin-bottom:30px;text-align:left;text-shadow:0 1px 0 white;border-bottom:1px solid #ddd}.setup-header h1{margin-top:0;margin-bottom:0;font-size:45px;font-weight:normal;letter-spacing:-1px}.setup-header .lead{margin-top:2px;margin-bottom:0;font-size:21px}.setup-org{padding-bottom:0;border-bottom:0}.setup-main{float:left;width:450px}.setup-secondary{float:right;width:250px}.setup-secondary .info{padding:0 15px;color:#777;font-size:13px;text-align:center}.setup-info-module{margin-top:31px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.075);border:1px solid #ccc;border-radius:3px}.setup-info-module h2{padding:15px;margin-top:0;margin-bottom:15px;overflow:hidden;font-size:16px;border-bottom:1px solid #ddd}.setup-info-module h2 .price{float:right;color:#777;font-weight:bold}.setup-info-module h3{margin:0 0 -7px;padding:0 15px;font-size:14px}.setup-info-module p{margin:15px 0;padding:0 15px}.setup-info-module .features-list{margin:0;padding:0 15px 15px;list-style:none;font-size:14px}.setup-info-module .features-list li{margin-top:10px}.setup-info-module .features-list li:first-child{margin-top:0}.setup-info-module .features-list .list-divider{border-top:1px solid #eee;margin:15px -15px}.setup-info-module .features-list .octicon{margin-right:5px;color:#60b044}.setup-info-module .features-list-org{padding-bottom:0}.setup-info-module .footer-repos{margin:0;padding:15px;font-size:14px;border-top:1px solid #eee}.setup-info-module .footer-repos a{font-size:12px}.setup-form-container .setup-form-title{margin-top:0;font-size:16px}.setup-form-container .secure{float:right;margin-top:2px;color:#60b044;font-size:11px;text-transform:uppercase}.setup-form-container .note{margin-top:-10px;color:#999}.setup-form-container hr{margin-top:25px;margin-bottom:25px}.setup-form-container .form-actions{padding-top:0;padding-bottom:0;text-align:left}.setup-form{padding-bottom:15px}.setup-form .form dt.input-label{display:none}.setup-form .form dd input[type="text"],.setup-form .form dd input[type="password"],.setup-form .form dd input[type="email"]{padding:10px;width:100%}.setup-form dd{position:relative}.setup-form dd .octicon{position:absolute;right:25px;top:8px}.setup-form .octicon-alert:before{color:#bd2c00}.setup-form .octicon-check:before{color:#6cc644}.setup-form .text-muted{margin-top:5px}.setup-form .tos-info{padding:15px 0;margin:15px 0;border-top:1px solid #eee;border-bottom:1px solid #eee}.setup-form .setup-plans{margin-bottom:25px;border:solid #ccc;border-width:1px 1px 0 1px;border-collapse:separate;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.075);overflow:hidden}.setup-form .setup-plans tr.selected{background-color:#f0f7fd}.setup-form .setup-plans th,.setup-form .setup-plans td{vertical-align:middle;border-bottom:1px solid #ccc}.setup-form .setup-plans .name{font-weight:bold}.setup-creditcard-form .form dd input.input-expiration,.setup-creditcard-form .form dd input.input-cvv{float:left}.setup-creditcard-form .form dd input.input-expiration{width:160px}.setup-creditcard-form .form dd input.input-cvv{width:86px}.setup-creditcard-form .form select.select-country{width:160px}.setup-creditcard-form .form select.select-state{width:86px}.setup-creditcard-form.is-eu-country .vat-field{display:block}.setup-creditcard-form.is-international .form select.select-country{width:250px}.setup-creditcard-form.is-international .select-state{display:none}.setup-creditcard-form .vat-field{display:none}.instructor-bio{padding-left:150px}.instructor-bio img{float:left;margin-top:5px;margin-left:-150px;padding:1px;border:1px solid #ddd}.instructor-bio h2{margin-top:15px}#signup_form dd{position:relative}#signup_form dd .octicon{position:absolute;right:25px;top:8px}#signup_form .octicon-alert:before{color:#bd2c00}#signup_form .octicon-check:before{color:#6cc644}.hanging-list li,.hanging-icon-list li{margin:10px 0;font-size:14px}.hanging-list li{margin-left:12px;list-style-position:inside}.hanging-icon-list li{padding-left:25px;list-style-type:none}.hanging-icon-list .octicon{float:left;margin-left:-20px;color:#999}.hanging-icon-list .octicon-check{color:#6cc644}.hanging-icon-list .octicon-x{color:#bd2c00}.logos-page h3{font-size:18px}.logos-download{position:relative;display:block;float:left;width:32%;height:290px;margin-bottom:30px;padding-top:20px;text-align:center;border:1px solid #ddd;border-radius:6px;-moz-box-sizing:border-box;box-sizing:border-box}.logos-download+.logos-download{margin-left:2%}.logos-download-link{position:absolute;right:0;bottom:0;left:0;display:block;padding:15px 20px;font-size:16px;font-weight:bold;background-color:#f5f5f5;border-top:1px solid #ddd;border-radius:0 0 5px 5px}.logos-download-link .octicon{vertical-align:2px}.logos-download:hover{text-decoration:none}.logos-download:hover .logos-download-link{background-color:#eee}.logos-download .gh-logo{margin-top:70px}.logos-download .gh-octocat{margin-top:10px}.col-2 ul.members-list li{display:block;border-bottom:1px solid #f1f1f1;width:inherit}.col-2 ul.members-list li:before,.col-2 ul.members-list li:after{content:" ";display:table}.col-2 ul.members-list li:after{clear:both}ul.members-list{font-size:0;margin:5px 0}ul.members-list li{display:inline-block;width:165px;position:relative;list-style-type:none;margin:0;padding:10px 0 10px 58px;vertical-align:top}ul.members-list li h4{margin:-1px 0 0 0;font-size:16px;line-height:1.2}ul.members-list li h4 a{display:inline-block;text-overflow:ellipsis;overflow-x:hidden;width:100%}ul.members-list li h4 em{font-style:normal;font-weight:normal;color:#99a7af;display:block}ul.members-list li p{margin:-1px 0 0 0;font-size:11px;color:#bbb}ul.members-list .gravatar{float:left;margin-left:-58px;border-radius:3px}ul.members-list .placeholder .gravatar{opacity:0.5}ul.members-list .placeholder h4 a{color:#999}ul.members-list .minibutton{position:absolute;top:10px;right:0}ul.members-list p.details span.octicon{margin-left:15px;vertical-align:middle}ul.members-list p.details span.octicon:first-child{margin-left:0}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(-360deg)}}.merge-pr{margin:20px 0 0 0;padding-top:10px;border-top:1px solid #ddd}.merge-pr .push-more{margin:10px 0;font-size:12px;color:#777}.merge-pr .push-more code{color:#333}.merge-pr .push-more a{color:#333;font-weight:bold}.merge-branch{margin:10px 0}.merge-branch,.new-commit{padding-left:60px}.merge-status-icon,.new-commit-icon{float:left;margin-left:-60px;width:48px;height:48px;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,0.1);border-radius:3px;background-color:#999;box-shadow:inset 0 1px 1px rgba(0,0,0,0.1)}.merge-status-icon .mega-octicon,.new-commit-icon .mega-octicon{margin-top:8px}.merge-status-icon .octicon-git-merge{display:none}.merge-branch .bubble,.new-commit .bubble{position:relative}.merge-branch .bubble:after,.new-commit .bubble:after{position:absolute;top:15px;right:100%;content:" ";height:0;width:0;pointer-events:none;border:solid transparent;border-right-color:#eee;border-width:10px}.merge-branch .mergeable,.new-commit .bubble-contents{padding:15px 11px;background-color:#fff;border:1px solid #c5c5c5;border-radius:1px}.merge-branch-heading,.merge-branch-description{margin:0}.merge-branch-description{margin-right:160px;color:#777}.merge-branch-description .zeroclipboard-link .octicon{top:2px}.merge-branch-action,.desktop-app-action{float:right;margin-left:5px}.desktop-app-action{padding-left:10px;padding-right:10px}.merged .merge-branch-description .commit-ref .css-truncate-target{max-width:180px}.merge-branch .branch-status{padding:7px 12px;font-size:11px;color:#666;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:transparent;border:1px solid #ccc;border-bottom:none;border-top-right-radius:1px;border-top-left-radius:1px}.merge-branch .branch-status p{margin:0}.merge-branch .branch-status .octicon{display:none}.merge-branch .branch-status+.mergeable{border-top-left-radius:0;border-top-right-radius:0}.mergeable .spinner{display:block;float:right;width:32px;height:32px;margin-top:3px;margin-left:10px;background:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd") no-repeat}.mergeable-dirty .mergeable{background-image:url("/images/modules/pulls/dirty-shade.png?aa53f501");background-repeat:repeat-x}.merge-branch-form{display:none}.merge-branch.open .merge-branch-form{display:block}.merge-branch.open .merge-message{display:none}.merge-branch-form .author,.new-commit .author{float:left;padding:2px 0 0 36px;font-size:12px;line-height:15px;color:#999}.merge-branch-form .author img,.new-commit .author img{float:left;margin-left:-36px;border-radius:3px}.merge-branch-form .author .author-email,.new-commit .author .author-email{display:block}.merge-branch-form .merge-commit-message{width:100%;margin:10px 0;background-color:#fafafa}.merge-branch-form-actions{text-align:right}.merge-branch-form .merge-form-failed{display:none}.merge-branch-form.error .merge-form-failed{display:block}.merge-branch-form.error .merge-form-contents{display:none}.merge-branch .delete-branch-failure{display:none}.merge-branch.error .delete-branch-failure{display:block}.merge-branch.error .merge-message{display:none}.merge-branch-manually{display:none;margin-top:14px;padding-top:15px;border-top:1px solid #ddd}.merge-branch-manually h3,.merge-branch-manually p{margin:0}.merge-branch-manually .intro{margin-top:0;padding-bottom:10px}.merge-branch-manually .step{margin:15px 0 5px}.merge-branch-manually .url-box{margin-left:0;max-width:585px;padding:0;border:0}.merge-branch-manually .clone-urls{width:100%}.merge-branch-manually .copyable-terminal{margin-right:25px;margin-bottom:10px;padding:10px;color:#fff;background-color:#333;border:none;border-radius:4px 0 4px 4px;overflow:auto}.merge-branch-manually .for-copyable-terminal .zeroclipboard-button{float:right;border-radius:0 4px 4px 0;width:19px;text-align:center}.merge-branch-manually .for-copyable-terminal{float:right}.merge-branch-manually .for-copyable-terminal .zeroclipboard-button .octicon{margin:0 auto;padding-left:1px}.open>.merge-branch-manually{display:block}.merge-branch-manually-steps{max-width:585px}.mergeable-clean .branch-status{color:#5d8a4a;border-color:#95c97e}.mergeable-clean .bubble{background-color:#d8f5cd}.mergeable-clean .bubble:after{border-right-color:#d8f5cd}.mergeable-clean .merge-status-icon{background-color:#74c550}.mergeable-clean .bubble .mergeable{border-color:#95c97e}.mergeable-unknown .branch-status,.mergeable-unstable .branch-status{color:#a1882b;border-color:#e2cc7a}.mergeable-unknown .bubble,.mergeable-unstable .bubble{background-color:#f8eec7}.mergeable-unknown .bubble:after,.mergeable-unstable .bubble:after{border-right-color:#f8eec7}.mergeable-unknown .merge-status-icon,.mergeable-unstable .merge-status-icon{background-color:#f0d266}.mergeable-unknown .bubble .mergeable,.mergeable-unstable .bubble .mergeable{border-color:#e2cc7a}.mergeable-error .branch-status{color:#ca534d;border-color:#e97a74}.mergeable-error .bubble{background-color:#f4cdcb}.mergeable-error .bubble:after{border-right-color:#f4cdcb}.mergeable-error .merge-status-icon{background-color:#e4514a}.mergeable-error .bubble .mergeable{border-color:#e97a74}.mergeable-merged .bubble{background-color:#dde9f4}.mergeable-merged .bubble:after{border-right-color:#dde9f4}.mergeable-merged .merge-status-icon{background-color:#8fb6dc}.mergeable-merged .bubble .mergeable{border-color:#8fb6dc}.mergeable-closed-dirty .merge-status-icon{background-color:#8c8c8c}.merge-branch.open .merge-status-icon .octicon-git-pull-request{display:none}.merge-branch.open .merge-status-icon .octicon-git-merge{display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.mergeable .spinner{background-image:url("/images/spinners/octocat-spinner-64.gif?e25ff4c8");background-size:32px 32px}.mergeable-dirty .mergeable{background-size:3px 2px}}#network h2{margin-bottom:.25em}#network p{font-size:120%;margin:1em 0}#network .repo{font-size:140%}#network .repo img{vertical-align:middle}#network .repo img.gravatar{padding-right:4px;padding:1px;border:1px solid #ccc;background-color:#fff}#network .repo span{background-color:#FFF6A9}#network .repo a.commit{color:#888;font-size:80%;line-height:1em}#network .help_actions{margin-left:5px}#network .help_actions a{font-size:12px}#network .network-help .show-help,#network .network-help.open .hide-help{display:block}#network .network-help .hide-help,#network .network-help.open .show-help{display:none}#network .network-help #help{display:none}#network .network-help.open #help{display:block}#network #help pre{font-size:80%;line-height:1.2em;margin-bottom:1.5em;border:1px solid black;color:#eee;background-color:#222;padding:1em}#network .notice{border:1px solid #EFCF00;background-color:#FFFAD6;padding:.5em;color:#837200;text-align:center}#network .explain{color:#666;font-size:13px;font-style:italic;margin:-5px 0 20px 2px}#network .explain b{color:#333;font-weight:normal}#network .graph-date{text-align:right;margin:-30px 4px 5px 0;color:#555;font-size:12px}#network .graph-date abbr{font-style:normal;color:#444}#network #ng{position:relative}#network #ng .large-loading-area{position:absolute;top:0;right:0;left:0;display:none}.text-success{color:#6cc644}.notifications .list-group-item{padding-left:34px;border-width:1px 0}.notifications .list-group-item:first-child{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.notifications .list-group-item-name a{display:block;max-width:460px}.notifications .issue-notification .type-icon{color:#489d00}.notifications .commit-notification .type-icon{color:#156f9e}.notifications .pull-request-notification .type-icon{color:#9e157c}.notifications .notifications-more{padding:0}.notifications .notifications-more>a{display:block;padding:10px 15px;font-weight:bold;color:#4183c4;text-align:center}.notifications .notifications-more>a:hover{text-decoration:underline}.notifications .confirmation{color:#666;text-align:center}.notifications .confirmation+.list-group-item{margin-top:-1px;border-top-color:#d5d5d5}.notifications .read{background-color:#fafafa}.notifications .read .type-icon{color:#999}.notifications .read .list-group-item-name a{color:#777}.notifications .read .notification-actions{opacity:.5}.notifications .read .delete{visibility:hidden}.notifications .read.navigation-focus{background-color:#f5f9fc}.notifications-list{float:left;width:100%}.notification-actions{float:right;list-style:none}.notification-actions li{float:right;margin-left:10px;font-size:16px;line-height:20px}.notification-actions .age{width:100px;font-size:12px;color:#999}.notification-actions .button-link{padding-left:5px;padding-right:5px;color:#999}.notification-actions .button-link:hover{color:#4183c4;text-decoration:none}.repo-subscription-container{margin:0 auto;width:600px}.repo-subscription-container .spinner{float:right}.repo-subscription-container h2{font-size:22px;margin-bottom:-10px;font-weight:normal}.repo-subscription-container p.intro{font-size:14px;color:#666}.subscriptions-sidebar p.checkbox label{position:relative;font-size:14px}.subscriptions-sidebar p.checkbox label img{position:absolute;right:-21px;top:-2px}.subscriptions-sidebar .note{color:#666}.subscriptions-content .repo-list .subscription-row>.octicon{vertical-align:middle;color:#999}.subscriptions-content .repo-list form{display:inline}.subscriptions-content .repo-list .only-loading{display:none}.subscriptions-content .repo-list .loading .only-loading{display:inline-block}.subscriptions-content .repo-list .only-unsubed{display:none}.subscriptions-content .repo-list .unsubscribed .only-unsubed{display:inline}.subscriptions-content .repo-list .unsubscribed .only-subed{display:none}.subscriptions-content .repo-list .only-unignored{display:none}.subscriptions-content .repo-list .unsubscribed .only-unignored{display:inline}.subscriptions-content .repo-list .unsubscribed .only-ignored{display:none}.subscriptions-content .unsubscribed{background-color:#f5f5f5}.subscriptions-content .unsubscribed a{color:#666}.subscriptions-content .unsub-all-button{float:right;margin-top:8px}.thread-subscription-status{clear:both;margin:40px 0 20px 0;padding:10px;background:#fff;border:1px solid #eee;border-radius:4px}.thread-subscription-status .mega-octicon{vertical-align:middle;margin-right:10px}.thread-subscription-status .mega-octicon:before{color:#ccc}.thread-subscription-status .octicon.unread{color:#4183c4}.thread-subscription-status .minibutton:hover .octicon.unread{color:#fff}.thread-subscription-status p.reason{vertical-align:middle;display:inline-block;margin:0 10px;color:#999}.thread-subscription-status .thread-subscribe-form{display:inline-block;vertical-align:middle}.thread-subscription-status .octicon-mute{color:#cc0000}.inbox-zero-octocat{margin-top:20px;text-align:center}.subscription .loading{opacity:.5}.equacols .column>.fieldgroup:first-child{margin-top:0}ul.fieldpills.usernames li img{margin-right:2px;padding:1px;background:#fff;border:1px solid #ddd;vertical-align:middle}ul.fieldpills.repos-pills>li{margin:0 0 5px 0;padding:3px 0 3px 5px}ul.fieldpills.repos-pills>li .fork-flag{line-height:18px;font-weight:normal}ul.grouplist{margin:15px 0 20px 0;border-top:1px solid #ddd}ul.grouplist>li{list-style-type:none;position:relative;padding:8px 0;border-bottom:1px solid #ddd}ul.grouplist .icontip{position:absolute;display:block;width:32px;height:32px;top:8px;left:0}ul.grouplist>li.iconed{padding-left:38px}ul.grouplist>li.org-icon{background:url("/images/modules/organizations/org_icon.gif?11cf48c6") 0 0 no-repeat}ul.grouplist>li.admin.org-icon{background-position:0 -100px}ul.grouplist li h3{margin:0;font-size:16px}ul.grouplist li p{margin:-2px 0 0 0;font-size:12px;color:#999}ul.grouplist>li ul.actions{position:absolute;top:50%;right:0;margin:-12px 0 0 0}ul.grouplist>li ul.actions li{display:inline-block;margin:0 0 0 5px}.pagehead.orgs-next-pagehead .button{z-index:2;display:inline-block}.orgs-next-filter-bar{width:150px;float:left;margin-right:30px}.orgs-next-filter-bar input[type=text]{width:100%}.orgs-next-filter-bar .button{margin-top:10px;width:120px;text-align:center}.orgs-next-nav{float:right;width:170px}.orgs-next-nav a.selected{cursor:inherit}.orgs-next-nav .menu-container{box-sizing:border-box;margin-bottom:10px;width:170px}.orgs-next-content{position:relative;float:left;width:790px}.orgs-next-content.people{width:600px}.orgs-next-content.people .is-showing-all .blankslate{display:none}.orgs-next-content img.avatar{border-radius:3px}.orgs-next-content .capped-box{width:385px}.orgs-next-content .add-member-link{float:right;line-height:35px}.orgs-next-content #all-teams{display:none}.orgs-next-content #all-teams-filter-field{display:none}.orgs-next-content .pending-invitations .error{color:#bd2c00;margin-bottom:15px}.orgs-next-content .pending-invitations li{margin-bottom:15px;list-style-type:none}.orgs-next-content .pending-invitations li time{color:#999999}.orgs-next-content .pending-invitations li img{border-radius:2px;margin-right:4px;float:left}.orgs-next-content .pending-invitations .actions{float:right}.orgs-next-content .new-member{padding:0;padding-top:10px;position:relative}.orgs-next-content .new-member .add-to-button{display:none}.orgs-next-content .new-member .danger{display:inline-block}.orgs-next-content .new-member .avatar{float:left;margin:0 10px 0 0;border-radius:3px}.orgs-next-content .new-member .avatar .mega-octicon{font-size:46px}.orgs-next-content .new-member .login{display:block;font-weight:bold;margin-bottom:3px}.orgs-next-content .new-member .login .no-link{display:none}.orgs-next-content .new-member li{height:40px;clear:both;margin-bottom:20px;display:block}.orgs-next-content .new-member li .octicon-lock{color:#e9dba5}.orgs-next-content .new-member .select-menu{float:left;margin-right:10px}.org-dash-header .no-results{display:none}.org-dash-header.open .new-member-form{display:block}.org-dash-header.no-results .no-results{display:block}.org-dash-header.no-results .new-member-form{display:block}.org-dash-header input.is-loading+.spinner{display:inline-block}.no-results p{margin-top:0px}.add-member{width:340px}.new-team-form input{margin-top:10px}.new-team-form .team-name{width:430px}.new-team-form .team-description{width:430px}.restore-team h3{margin-top:5px}.org-dash-filter{padding:0 0 10px 0;margin:0 0 10px 0;border-bottom:1px solid #eaeaea}.org-dash-filter .button{float:right}.org-dash-filter input[type="text"]{width:350px}.member-list{list-style:none}.member-list li{position:relative;float:left;width:50%;padding:10px 0;border-bottom:1px solid #ddd}.member-list img.avatar{float:left;margin:0 10px 0 0;border-radius:3px}.member-list .member>a{display:block;font-weight:bold}.member-list .member-details{float:left}.member-list p{font-size:13px;color:#777;margin:0;line-height:25px;min-height:25px}.member-list .repo-capabilities{width:700px}.member-list select,.member-list small,.member-list .spinner{position:absolute;top:10px;right:50px}.member-list .spinner{right:135px;top:12px;display:inherit}.member-list .hidden{display:none}.member-list small{color:#999}.member-list .team-member .notice{color:#ff9933;font-weight:bold}.member-list .team-member .select-menu{float:right;margin-right:5px}.member-list .team-member .select-menu-modal{width:200px}.member-list .team-member .remove-member{float:right;margin-right:10px;width:10px}.member-list .octicon-credit-card{color:#999;position:absolute;top:25px;right:50px}.team-list{list-style:none}.team-list li{position:relative;float:left;width:355px;clear:left}.team-list li:nth-child(2n){float:right;clear:none}.team-list .delete-team{position:absolute;top:8px;right:10px;color:#999}.team-list .delete-team:hover{color:#bd2c00}.team-list p{padding:0 10px}.team-list .meta{margin:0;padding-top:5px;padding-left:5px;padding-bottom:0px;border-top:1px solid #eaeaea;font-size:12px;height:24px;overflow:hidden}.team-list .meta a{color:#999;text-decoration:none}.team-list .meta img{border-radius:3px}.team-list .meta .team-repo-count{float:right}.team-list .meta .show-more-members{background:#eee;border-radius:3px;cursor:pointer;height:20px;width:20px;display:inline-block;vertical-align:top;text-align:center;font-weight:bold;text-decoration:none}.team-list .meta .show-more-members:hover{background:#f3f3f3}.team-list .meta .show-more-members:active{background:#e0e0e0}.team-list .meta.show-all{height:auto;min-height:24px}.team-suggestions .notice,.repository-suggestions .notice,.org-member-suggestions .notice{color:#ff9933}.team-suggestions select,.team-suggestions .select-menu,.repository-suggestions select,.repository-suggestions .select-menu,.org-member-suggestions select,.org-member-suggestions .select-menu{display:none}.team-suggestions .login .no-link,.repository-suggestions .login .no-link,.org-member-suggestions .login .no-link{display:inherit}.team-suggestions .login .link,.repository-suggestions .login .link,.org-member-suggestions .login .link{display:none}.full-width-team-list li{float:none;width:730px;border-bottom:1px solid #ddd;line-height:20px;padding:0 10px}.full-width-team-list>a{display:block;font-weight:bold;font-size:14px}.full-width-team-list .team-description{display:block;margin:5px 0;width:100%;color:#777;font-size:14px;line-height:20px}.full-width-team-list .team-meta{float:right;color:#777}.team-list .new-team{background:#6cc644;margin:0 0 0 5px;padding:1px 6px 0 6px;border-radius:3px;display:inline-block;color:#fff;line-height:14px;font-size:11px;font-weight:bold;cursor:pointer}.team-list .member-count{display:inline-block;vertical-align:top;text-align:center;float:right;color:#999999;font-size:10px}.create-team .spinner{display:none}.create-team.is-loading .spinner{margin:2px;display:inline-block}ul.fieldpills .org-member .spinner{display:inline-block}.org-member.is-loading .spinner{display:inline-block}.member-view .member{padding:10px;margin-bottom:10px}.create-team-message{display:none}.filterable-empty.filterable-active+.create-team-message{display:block}.new-team-form .warning{display:inline-block;background:#333333;color:#fff;margin-top:10px;padding:2px 4px;font-weight:normal;font-size:10px;border-radius:3px}.team-reference-list .open{color:#6cc644}.team-reference-list .closed{color:#bd2c00}.team-reference-list .merged{color:#333333}#activity-list>li{list-style-type:none;padding:10px;border-bottom:1px solid #eee}#activity-list>li.activity-timestamp{font-size:10px;color:#999999}.update-member-form .success{color:#6cc644}.update-member-form .select-menu .octicon-check{color:transparent}.update-member-form .selected .octicon-check{color:inherit}.update-member-form .remove-member{float:right}.org .pagehead{color:#666;border:0;margin-bottom:0}.org .pagehead .container{min-height:80px;padding-left:100px;position:relative}.org .pagehead .avatar,.org .pagehead .avatar img{width:80px;height:80px;display:block}.org .pagehead .avatar{position:absolute;top:0;left:0}.org .pagehead .avatar img{border-radius:3px}.org .pagehead h1{font-size:24px;line-height:1.125;color:#000}.org .pagehead h1 a{color:#000}.org .pagehead p{font-size:16px;line-height:1.25;margin:0.25em 0 0.75em}.org .pagehead .details{list-style:none}.org .pagehead .details li{margin-right:2em;display:inline-block}.org .pagehead .details .octicon{color:#ccc}.org .tabnav{margin-bottom:0}.org-section{margin:20px 0 40px}.org-section *,.org-section *:before,.org-section *:after{-moz-box-sizing:border-box;box-sizing:border-box}.org-section header{border-bottom:1px solid #ddd;margin-bottom:20px}.org-section header h2{font-size:24px;line-height:1.25;font-weight:normal;margin:2px 0 4px;display:inline-block}.org-section header p{font-size:16px;line-height:1.25;color:#666;margin:0 0 20px}.org-section header form{margin-bottom:10px;display:inline-block}.org-section .actions{background:#f5f5f5;padding:10px;border:1px solid #ddd;border-bottom:0}.org-section .actions .select-menu{display:inline-block;position:relative}.org-section .actions .split-button .select-menu{float:left}.org-section .actions .split-button .select-menu .minibutton{border-radius:0;border-top-right-radius:3px;border-bottom-right-radius:3px;margin-left:-1px}.org-section .actions .split-button .select-menu-button{width:0}.org-section .actions .select-menu-modal-holder{top:100%;left:0}.org-section .actions .select-menu-item-text p{margin:0}.org-section .more{width:25%;text-align:center;margin:auto}.org-section .more .button{width:100%}.org-overview .org-section{margin-top:35px}.org input[type="search"]{width:355px;min-height:26px;padding:3px 6px;outline:none;color:#333;background-color:#fff;background-repeat:no-repeat;background-position:right center;border:1px solid #ccc;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075);-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;vertical-align:middle}.org input[type="search"].focus,.org input[type="search"]:focus{border-color:#51a7e8;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}.org input[type="search"]+.octicon-search{font-size:14px;color:#999;vertical-align:middle;position:relative;left:-24px}.org input[type="search"]+.octicon-search+.spinner{vertical-align:text-top;margin-left:-10px;height:16px;width:16px}.repo-grid{width:1000px;position:relative;left:-10px}.repo-grid:before,.repo-grid:after{content:" ";display:table}.repo-grid:after{clear:both}.repo-grid .repo-item{width:33.3333333333%;height:172px;padding:0 11px;margin-bottom:20px;float:left;position:relative}.repo-grid .repo-item:before{content:'';border:1px solid #ddd;border-radius:5px;position:absolute;top:0;right:10px;bottom:0;left:10px;z-index:-1}.repo-grid .repo-item:hover:before{box-shadow:0 0 6px #ccc}.repo-grid .repo-item>a:first-child{height:108px;text-decoration:none;padding:16px;display:block}.repo-grid .repo-item>a:first-child:hover h2,.repo-grid .repo-item>a:first-child:focus h2,.repo-grid .repo-item>a:first-child:active h2,.repo-grid .repo-item>a:first-child:hover h3,.repo-grid .repo-item>a:first-child:focus h3,.repo-grid .repo-item>a:first-child:active h3{text-decoration:underline}.repo-grid .repo-item>a:first-child h2,.repo-grid .repo-item>a:first-child h3{font-size:16px;line-height:1.25;margin:0 0 2px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.repo-grid .repo-item>a:first-child .description{font-size:13px;line-height:18px;color:#333;margin:0}.repo-grid .repo-item footer{color:#666;background:#f2f2f2;position:absolute;right:11px;bottom:1px;left:11px}.repo-grid .repo-item .participation-graph{height:68px;position:absolute;bottom:100%;z-index:-1}.repo-grid .repo-item .participation-graph.disabled{display:none}.repo-grid .repo-item .participation-graph canvas{position:absolute;bottom:-1px}.repo-grid .repo-item .repository-lang-stats-graph{height:6px;line-height:6px;border-radius:0;position:absolute;top:0;left:0;z-index:2}.repo-grid .repo-item .repository-lang-stats-graph .language-color{line-height:6px;border-radius:0;float:left}.repo-grid .repo-item .updated{margin:0}.repo-grid .repo-item .updated>a{text-decoration:none;color:#666;padding:12px 16px 12px 58px;border-top:6px solid #e6e6e6;border-bottom-right-radius:3px;border-bottom-left-radius:3px;position:relative;display:block}.repo-grid .repo-item .updated>a>span{display:block}.repo-grid .repo-item .updated>a .avatar,.repo-grid .repo-item .updated>a .avatar img{width:32px;height:32px;display:block}.repo-grid .repo-item .updated>a .avatar{margin:auto;position:absolute;top:0;bottom:0;left:16px}.repo-grid .repo-item .updated>a .avatar img{border-radius:3px}.repo-grid .repo-item .updated>a .username{color:#333}.repo-grid .repo-item .updated>a:hover .username,.repo-grid .repo-item .updated>a:focus .username,.repo-grid .repo-item .updated>a:active .username{text-decoration:underline}.person-grid{width:1000px;position:relative;left:-10px}.person-grid .person{width:12.5%;height:150px;padding:0 10px;margin-bottom:20px;float:left;position:relative}.person-grid .person a:hover,.person-grid .person a:focus,.person-grid .person a:active{text-decoration:none}.person-grid .person input[type="checkbox"]{position:absolute;top:25%;left:25%;z-index:-1}.person-grid .person label{display:block;position:relative;cursor:pointer}.person-grid .person input[type="checkbox"]:checked+label{width:100%;background:#3998f7;border:3px solid #3998f7;top:-3px;left:-3px;-moz-box-sizing:content-box;box-sizing:content-box}.person-grid .person .octicon-check{text-align:center;display:block;position:absolute;top:2px;right:2px;bottom:2px;left:2px;z-index:2;display:block;opacity:0;transition:opacity 0.2s ease;-webkit-transition:opacity 0.2s ease 0}.person-grid .person label:hover .octicon-check,.person-grid .person input[type="checkbox"]:focus+label .octicon-check{opacity:1}.person-grid .person .octicon-check:before{width:24px;height:24px;color:#b3b3b3;background:#fff;padding-top:4px;border-radius:50%;margin:20px 0 0 20px;display:block;position:absolute;top:50%;left:50%;z-index:1}.person-grid .person input[type="checkbox"]:checked+label .octicon-check{opacity:1}.person-grid .person input[type="checkbox"]:checked+label .octicon-check:before{color:#3998f7}.person-grid .person img{max-width:100%;height:auto;border:2px solid transparent;margin-bottom:6px;display:block}.person-grid .person a:hover img,.person-grid .person a:focus img,.person-grid .person a:active img,.person-grid .person label:hover img,.person-grid .person input[type="checkbox"]:focus+label img{border-color:#fff;box-shadow:0 0 6px rgba(0,0,0,0.5)}.person-grid .person input[type="checkbox"]:checked+label img{margin-bottom:0;border-color:transparent;box-shadow:none}.person-grid .person h2,.person-grid .person h3{margin:0}.person-grid .person a:hover .username,.person-grid .person a:focus .username,.person-grid .person a:active .username,.person-grid .person .username:hover,.person-grid .person .username:focus,.person-grid .person .username:active{text-decoration:underline}.person-grid .person a.username{color:#333}.person-grid .person .username,.person-grid .person .full-name{margin-left:2px;display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.person-grid .person .username{font-size:16px;line-height:1.25}.person-grid .person .full-name{font-size:13px;line-height:1.38461538461;font-weight:normal;color:#666}.person-grid .labels{position:absolute;top:2px;left:12px}.person-grid .labels .label{border-radius:0;display:block;float:left;clear:left}.person-grid .labels .label,.team-grid .labels .label,.team-list-view .labels .label{font-size:10px;font-weight:bold;text-transform:uppercase;vertical-align:text-bottom;color:#fff;background:#ccc;padding:2px 6px;border-radius:2px;display:inline-block}.person-grid .labels .label.label-admin,.team-grid .labels .label.label-admin,.team-list-view .labels .label.label-admin{background:rgba(255,0,255,0.9)}.person-grid .labels .label.label-billing,.team-grid .labels .label.label-billing,.team-list-view .labels .label.label-billing{background:rgba(2,215,225,0.9)}.person-grid .labels .label.label-guest,.team-grid .labels .label.label-guest,.team-list-view .labels .label.label-guest{background:rgba(255,153,51,0.9)}.person-grid .labels .label.label-new,.team-grid .labels .label.label-new,.team-list-view .labels .label.label-new{background:rgba(108,198,68,0.9)}.person-grid .labels .label.label-private,.team-grid .labels .label.label-private,.team-list-view .labels .label.label-private{background:rgba(242,204,102,0.9)}.team-list-view{position:relative;top:-20px}.team-list-view .team{float:left;width:48%;margin-right:10px;margin-top:10px;padding:10px;padding-bottom:5px;border:1px solid #ddd;border-radius:3px;position:relative}.team-list-view .team:before,.team-list-view .team:after{content:" ";display:table}.team-list-view .team:after{clear:both}.team-list-view .team:hover{background:#f5f9fc}.team-list-view .team a.team-link{text-decoration:none;display:block;width:364px;margin-bottom:5px}.team-list-view .team a.team-link .avatar{width:40px;height:40px;border-radius:3px;margin-right:8px;float:left}.team-list-view .team a.team-link h2,.team-list-view .team a.team-link h3{font-size:18px;line-height:1.25;margin:-4px 3px 6px 0;display:inline-block}.team-list-view .team .description{font-size:13px;line-height:18px;margin-top:5px;color:#333;margin:0}.team-list-view .team .description .blank{color:#aaa}.team-list-view .team>.minibutton{text-align:center;float:right}.team-list-view .team>.labels{text-align:center;margin-top:-13px;position:absolute;top:50%;right:2px}.team-list-view .team>.labels{margin-top:-11px}.team-list-view .team>.minibutton,.team-list-view .team>.labels .label{width:80px}.team-list-view .team ul.members{margin-top:8px;clear:both}.team-list-view .team ul.members li{float:left;list-style:none}.team-list-view .team ul.members li:before,.team-list-view .team ul.members li:after{content:" ";display:table}.team-list-view .team ul.members li:after{clear:both}.team-list-view .team ul.members li a,.team-list-view .team ul.members li img{width:20px;height:20px;display:block}.team-list-view .team ul.members li a{line-height:20px;text-align:center;text-decoration:none;color:#333;background:#f2f2f2;border-radius:3px;margin-right:3px;overflow:hidden;opacity:0.9}.team-list-view .team ul.members li a:hover,.team-list-view .team ul.members li a:focus,.team-list-view .team ul.members li a:active{color:#4183c4;opacity:1}.team-grid{width:1000px;position:relative;left:-10px}.team-grid:before,.team-grid:after{content:" ";display:table}.team-grid:after{clear:both}.team-grid .team{width:50%;height:178px;padding:0 11px;margin-bottom:20px;float:left;position:relative}.team-grid .team:before{content:'';border:1px solid #ddd;border-radius:5px;position:absolute;top:0;right:10px;bottom:0;left:10px;z-index:-1}.team-grid .team:hover:before{box-shadow:0 0 6px #ccc}.team-grid .team>a:first-child{height:90px;text-decoration:none;padding:16px;display:block}.team-grid .team>a:first-child:hover h2,.team-grid .team>a:first-child:focus h2,.team-grid .team>a:first-child:active h2,.team-grid .team>a:first-child:hover h3,.team-grid .team>a:first-child:focus h3,.team-grid .team>a:first-child:active h3{text-decoration:underline}.team-grid .team>a:first-child .avatar{width:60px;height:60px;border-radius:3px;margin-right:12px;float:left}.team-grid .team>a:first-child h2,.team-grid .team>a:first-child h3{font-size:16px;line-height:1.25;margin:2px 3px 2px 0;display:inline-block}.team-grid .team>a:first-child .description{font-size:13px;line-height:18px;color:#333;margin:0}.team-grid .team>.minibutton,.team-grid .team>.labels{position:absolute;right:26px;bottom:10px;z-index:2}.team-grid .team>.labels{bottom:12px}.team-grid .team footer{color:#666;background:#f2f2f2;padding-bottom:44px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;position:absolute;right:11px;bottom:1px;left:11px;overflow:hidden}.team-grid .team footer h3,.team-grid .team footer h4{font-size:13px;font-weight:normal;line-height:18px;margin:0;position:absolute;bottom:13px;left:16px}.team-grid .team footer ul{width:9999em;list-style:none}.team-grid .team footer ul:before,.team-grid .team footer ul:after{content:" ";display:table}.team-grid .team footer ul:after{clear:both}.team-grid .team footer ul li{display:block;float:left}.team-grid .team footer ul li a,.team-grid .team footer ul li img{display:block}.team-grid .team footer ul li img{width:42px;height:42px}.team-grid .team footer ul li a{opacity:0.9}.team-grid .team footer ul li a:hover,.team-grid .team footer ul li a:focus,.team-grid .team footer ul li a:active{opacity:1}.add-people-form{padding-right:270px;position:relative}.add-people-form input[type="text"]{width:100%}.add-people-form .octicon-search{color:#999;position:absolute;top:9px;right:279px}.add-people-form>img{width:16px;height:16px;background:#fff;position:absolute;top:9px;right:279px;z-index:2}.add-people-form .button{width:250px;text-align:center;position:absolute;top:0;right:0}.org .member-adder{width:710px;padding:0;border:5px solid #eee;border-radius:3px;margin-top:10px;top:100%;z-index:3}.org .member-adder ul{border-radius:3px;overflow:hidden}.org .member-adder ul li{min-height:58px;padding:10px;border:none;border-top:1px solid #ddd;margin:0;position:relative}.org .member-adder ul li:first-child{border:0}.org .member-adder .avatar{margin-right:10px}.org .member-adder .avatar img{width:36px;height:36px}.org .member-adder .login{font-size:16px;line-height:1.25}.org .member-adder .name{line-height:18px;color:#666}.org .member-adder .octicon.octicon-plus{width:24px;height:24px;text-align:center;color:#fff;padding-top:2px;border:2px solid transparent;border-radius:50%;position:absolute;top:17px;right:13px}.org .member-adder .navigation-focus{color:#333;background:#f5f9fc}.org .member-adder .navigation-focus .octicon.octicon-plus{color:rgba(65,131,196,0.5);border-color:rgba(65,131,196,0.5)}.org-invite .blankslate{width:710px;margin-top:20px}.person-list{width:710px;list-style:none}.person-list li{min-height:58px;padding:10px 0;border-bottom:1px solid #ddd;position:relative}.person-list li>a:first-child{line-height:18px;text-decoration:none;color:#666;padding-left:48px;display:block}.person-list li>a:first-child img{width:36px;height:36px;border-radius:3px;position:absolute;top:12px;left:2px}.person-list li>a:first-child strong{font-size:16px;line-height:1.25;color:#333;display:block}.person-list li>a:first-child:hover strong,.person-list li>a:first-child:focus strong,.person-list li>a:first-child:active strong{text-decoration:underline}.person-list li .buttons{position:absolute;top:12px;right:0}.person-list li .buttons .button,.person-list li .buttons .minibutton{font-weight:normal;color:#666;background:transparent;border-color:#ddd}.person-list li .buttons .button{padding:7px 12px}.person-list li .buttons .minibutton.switcher{min-width:160px;height:34px}.person-list li .buttons .minibutton.switcher>span{height:32px;line-height:32px;padding:0 44px 0 12px}.person-list li .buttons .minibutton.switcher>span:before{border-width:5px;border-color:#666 transparent transparent;top:13px;right:12px}.person-list li .buttons .minibutton.switcher>span:after{background:#ddd;right:34px;box-shadow:none}.confirm-removal{padding:10px;margin-bottom:10px;border:1px solid #aaa;border-radius:3px}.confirm-removal h3{margin-top:0px}.confirm-removal p{margin-bottom:0px}.confirm-removal li{list-style-type:none}.confirm-removal img{border-radius:3px;width:20px;height:20px}.removing{background:#fafafa;padding:10px;border:1px solid #eee;border-radius:3px;margin-top:10px}.removing h3{margin-top:0px}.removing li{list-style-type:none}.org-invite .roles{width:250px;color:#666;float:right}.org-invite .roles>div{padding:0 10px;margin:26px 0}.org-invite .roles h4{font-size:16px;line-height:1.25;color:#333;margin:0 0 2px}.org-invite .roles p{margin:0px}.page-notice{margin:15px auto;width:400px;padding:20px;color:#333;font-size:14px;background:#fffeeb;border:1px solid #ddd;border-radius:5px}.page-notice h2{margin:0;font-size:16px;color:#000}.page-notice p:last-child{margin-bottom:0}.pagehead{position:relative;margin-bottom:20px;padding-top:20px;padding-bottom:20px;border-bottom:1px solid #eee}.pagehead .account-switcher{display:inline-block;margin-top:-2px;margin-bottom:-4px;margin-right:10px}.pagehead ul.pagehead-actions{margin:0;float:right;z-index:21}.pagehead h1{margin-top:0;margin-bottom:0;font-size:20px;font-weight:normal;line-height:28px}.pagehead h1 strong{font-weight:bold}.pagehead h1 a{color:#4183c4;white-space:nowrap}.pagehead h1.avatared img{vertical-align:middle;margin-right:5px;width:32px;height:32px;margin-top:-3px;margin-bottom:-2px}.admin{background:url("/images/modules/pagehead/background-yellowhatch-v3.png?8793ced3") 0 0 repeat-x}.pagehead.repohead.mirror h1,.pagehead.repohead.fork h1{margin-top:-5px;margin-bottom:15px;height:auto}.pagehead.repohead h1{color:#666;padding-left:34px;position:relative;float:left}.pagehead.repohead h1.private .mega-octicon:before{color:#e9dba5}.pagehead.repohead h1.private .repo-label span{padding:3px 6px 2px;background-color:#f8eec7;border-radius:3px;color:#A1882B}.pagehead.repohead h1 .octicon-lock,.pagehead.repohead h1 .octicon-mirror-private,.pagehead.repohead h1 .octicon-repo,.pagehead.repohead h1 .octicon-mirror-public,.pagehead.repohead h1 .octicon-repo-forked{position:absolute;left:0;top:12px;line-height:32px;margin-top:-13px}.pagehead.repohead h1 .octicon-lock:before,.pagehead.repohead h1 .octicon-mirror-private:before,.pagehead.repohead h1 .octicon-repo:before,.pagehead.repohead h1 .octicon-mirror-public:before,.pagehead.repohead h1 .octicon-repo-forked:before{color:#bbb}.pagehead.repohead .octicon-mirror-public,.pagehead.repohead .octicon-mirror-private{left:-3px}.pagehead.repohead .octicon-lock{top:10px}.pagehead.repohead span.fork-flag,.pagehead.repohead span.mirror-flag{display:block;font-size:11px;line-height:10px;white-space:nowrap}.pagehead.repohead .repohead-name-divider{padding-right:5px;padding-left:5px}.pagehead.repohead span.repo-label{position:absolute;top:15px;left:-75px;width:65px;margin-top:-14px;text-align:right;font-size:11px;text-transform:uppercase;color:#b9b9b9;font-weight:300;text-shadow:none;transition:all 0.4s ease-in-out;-webkit-transition:all 0.4s ease-in-out 0}@media only screen and (max-width: 1155px){.pagehead.repohead span.repo-label{opacity:0}}.pagehead-actions>li{list-style-type:none;font-size:11px;color:#333;margin:0 10px 0 0;float:left}.pagehead-actions>li:last-child{margin-right:0}.pagehead-actions a.feed{display:inline-block;height:24px;padding:0 6px;line-height:26px;border:1px solid #eee;border-radius:3px}.pagehead-actions a.feed .octicon{vertical-align:middle;margin-top:-2px;color:#ff9933}.pagehead-actions .octicon-mute{color:#cc0000}.context-loader{position:absolute;top:0;left:50%;margin-left:-75px;width:154px;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px 10px 10px 30px;font-weight:bold;font-size:12px;color:#666;background:url("/images/spinners/octocat-spinner-16px.gif?8c695afe") 10px 50% no-repeat #eee;border:1px solid #ddd;border-top:1px solid #fff;border-radius:5px;border-top-left-radius:0;border-top-right-radius:0;z-index:20}@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2){.context-loader{background:url("/images/spinners/octocat-spinner-32-EAF2F5.gif?cc07bd9a") 10px 50% no-repeat #eee;background-size:16px auto}}#pages-composer{margin:10px 0 15px 0;padding:3px;background:#eee;border-radius:4px}#pages-composer #editor-body-buffer{display:none}#pages-composer .body{padding:20px;background:#f9f9f9;border:1px solid #ddd;border-radius:2px}#pages-composer dl.form{margin:0 0 20px 0}#pages-composer dt label{text-shadow:0 1px 0 #fff}#pages-composer input{margin-top:10px;width:860px;border:1px solid #DDD}#pages-composer #gollum-editor{width:870px;margin:0 0 20px 0;padding:0 0 5px 0;border:none}#pages-composer .textareaClone{margin:0;padding:0}#gollum-editor-function-bar #load-readme{float:right;margin-top:3px}#gollum-editor-function-bar #load-readme:first-child{padding:0 5px}#gollum-editor-function-bar #undo-load-readme{float:right;margin-top:7px;margin-right:10px;display:none}#pages-composer span.function-divider{display:block;float:left;width:0.5em}#pages-composer #gollum-editor-body{margin-top:10px;border:1px solid #ddd}body.pages_generator{background:url("/images/modules/pages_generator/theme_picker_body_bg.png?a6cd5691") #fff repeat center}#theme-picker-wrap{background:#fff}#theme-picker-full{position:relative;width:920px;margin:0 auto;background:#fff;text-align:center;overflow:hidden}#theme-picker-full .theme-picker-scroll-backwards,#theme-picker-full .theme-picker-scroll-forwards{position:absolute;width:32px;height:32px;margin-top:52px;overflow:hidden;opacity:1;color:#cecece;font-size:32px;top:0}#theme-picker-full .theme-picker-scroll-backwards:hover,#theme-picker-full .theme-picker-scroll-forwards:hover{color:#0084c8;text-decoration:none}#theme-picker-full .theme-picker-scroll-backwards.hide,#theme-picker-full .theme-picker-scroll-forwards.hide{cursor:default;opacity:0}#theme-picker-full .theme-picker-scroll-backwards{left:0}#theme-picker-full .theme-picker-scroll-forwards{right:0}.thumbnail-selector{overflow:hidden;margin:15px auto}.thumbnail-selector.themes{width:845px;white-space:nowrap;padding-top:5px}.thumbnail-selector .theme-thumbnail{display:inline-block;list-style-type:none;margin:0 21px}.theme-thumbnail a{color:#000;font-weight:bold}.theme-thumbnail a:hover{text-decoration:none}.theme-thumbnail a span{display:block;text-align:center}.theme-thumbnail a img{width:120px;height:90px;background:#e0e0e0;border:3px solid #d3d3d3}.theme-thumbnail a:hover img{border-color:#4183C4}.theme-thumbnail a.selected img{border-color:#3db738;box-shadow:0 0px 5px #3db738}.theme-thumbnail .name{display:none}#theme-action-bar{position:relative;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;height:50px;border-top:1px solid #cacaca;border-bottom:1px solid #cacaca;box-shadow:0 3px 10px 0px rgba(0,0,0,0.4)}#theme-action-bar #loader{position:absolute;top:8px;right:50%;opacity:0;transition:opacity 0.2s ease-in;-webkit-transition:opacity 0.2s ease-in 0}#theme-action-bar #loader.visible{opacity:1}#theme-actions-wrap{position:relative;width:940px;height:50px;margin:0 auto}#theme-action-bar ul.page-actions{float:right;height:34px;width:160px;padding:2px 10px 6px 0;text-align:right}#theme-action-bar ul.page-actions li{list-style-type:none;display:inline-block;margin:0}#theme-action-bar ul.page-actions li a{display:block;width:48px;color:#888;font-size:9px;letter-spacing:1px;text-align:center;text-decoration:none;overflow:hidden;text-transform:uppercase}#theme-action-bar ul.page-actions li a:hover .octicon-jump-up,#theme-action-bar ul.page-actions li a:hover .octicon-jump-down,#theme-action-bar ul.page-actions li a:hover .octicon-arrow-left,#theme-action-bar ul.page-actions li a:hover .octicon-check{color:#4183c4}#theme-action-bar ul.page-actions #page-edit .octicon-arrow-left{padding:0 2px}#theme-action-bar ul.page-actions #page-publish .octicon-check{color:#6CC644}#page-hide.hide .for-hiding{display:none}#page-hide.show .for-showing{display:none}#theme-picker-mini{display:inline-block;width:500px;height:46px;background-size:70px 30px;background-position:10px 10px;overflow:hidden;text-overflow:ellipses}#theme-picker-mini a{display:inline-block;float:left;width:16px;height:16px;overflow:hidden;color:#aaa;text-decoration:none}#theme-picker-mini a:hover{color:#4183c4}#theme-picker-mini .theme-picker-section-themes{height:16px;margin:17px 0 0 8px}.theme-name{float:left;margin-left:10px;color:#888;text-shadow:0 1px 1px #fff}#page-preview{position:relative;width:100%;height:100%;border:none;padding:0;z-index:-100;background:#fff;margin-bottom:-5px;box-shadow:0 0 10px rgba(0,0,0,0.5)}.pagination{font-family:helvetica, arial, freesans, clean, sans-serif;margin:7px 0;display:inline-block;overflow:hidden}.pagination a,.pagination span{position:relative;float:left;padding:3px 10px;color:#555;font-size:13px;text-decoration:none;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border:1px solid #ddd;border-bottom:1px solid #c5c5c5}.pagination a+a,.pagination a+span,.pagination span+a,.pagination span+span{margin-left:-1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.2)}.pagination a:first-child,.pagination span:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination a:last-child,.pagination span:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.pagination a:hover,.pagination a:active,.pagination span:hover,.pagination span:active{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.pagination a:active,.pagination span:active{background-color:#599bdc;background-image:-moz-linear-gradient(#3072b3, #599bdc);background-image:-webkit-linear-gradient(#3072b3, #599bdc);background-image:linear-gradient(#3072b3, #599bdc);background-repeat:repeat-x}.pagination a.current,.pagination a.current:hover,.pagination span.current,.pagination span.current:hover{color:#fff;font-weight:bold;text-shadow:0 -1px 0 rgba(0,0,0,0.5);background-color:#9e9e9e;background-image:-moz-linear-gradient(#767676, #9e9e9e);background-image:-webkit-linear-gradient(#767676, #9e9e9e);background-image:linear-gradient(#767676, #9e9e9e);background-repeat:repeat-x;border-color:#686868}.pagination a:hover,.pagination a:active,.pagination a.current,.pagination a.current:hover,.pagination span:hover,.pagination span:active,.pagination span.current,.pagination span.current:hover{z-index:2;box-shadow:none}.pagination a.disabled,.pagination a.disabled:hover,.pagination a.gap,.pagination a.gap:hover,.pagination span.disabled,.pagination span.disabled:hover,.pagination span.gap,.pagination span.gap:hover{color:#bbb;cursor:default;text-shadow:none;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-color:#ddd #ddd #c5c5c5}.pagination a.prev_page,.pagination a.next_page,.pagination span.prev_page,.pagination span.next_page{font-size:9px;line-height:18px}.pagination.ajax_paginate{display:block}.pagination.ajax_paginate a{float:none;display:block;padding:6px;text-align:center}.pagination.ajax_paginate.loading a{text-indent:-3000px;background-color:#eaeaea;background-image:url("/images/spinners/octocat-spinner-16px.gif?8c695afe");background-repeat:no-repeat;background-position:center center;border-color:#c5c5c5}@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2){.pagination.ajax_paginate.loading a{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px auto}}#watchers{margin:15px 0;border-top:1px solid #ddd}#watchers li{border-bottom:1px solid #ddd}#watchers .profile-name{max-width:420px;color:#999}#watchers .tabnav-widget{margin-top:0}ul.members{list-style:none}.members li{position:relative;font-size:14px;margin:0;padding:5px 0;overflow:hidden;line-height:24px;font-weight:bold}.members li em{font-style:normal;color:#999}.members li a.follow,.members li a.unfollow{position:absolute;top:5px;right:0}.members li .gravatar{border:1px solid #ddd;padding:1px;background-color:#fff;float:left;margin-right:10px}body.page-profile .tab-content{position:relative}body.page-profile .feed-icon{position:absolute;right:0;z-index:2}body.page-profile .feed-icon a{display:block;width:18px;height:18px;background:#f37538;color:#fff;border-radius:3px;padding:1px;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}body.page-profile .box-header .octicon-lock{margin-top:8px;margin-right:10px;color:#999}body.page-profile .profilecols .first{float:left;width:220px}body.page-profile .profilecols .last{float:right;width:740px}body.page-profile .profilecols ul.stats{border-bottom:1px solid #ddd;margin:0 0 17px 0;padding:6px 0 15px 0;text-align:center}body.page-profile .profilecols ul.stats li{display:inline-block;list-style-type:none;min-width:70px}body.page-profile .profilecols ul.stats li:last-child{margin-right:0}body.page-profile .profilecols ul.stats li strong{display:block;font-size:28px;line-height:1;font-weight:bold;color:#222}body.page-profile .profilecols ul.stats li span{display:block;margin-top:-2px;font-size:11px;color:#999}body.page-profile .profilecols ul.stats li a:hover,body.page-profile .profilecols ul.stats li a:active{text-decoration:none}body.page-profile .profilecols ul.stats li a:hover strong,body.page-profile .profilecols ul.stats li a:hover span{color:#4183c4;text-decoration:none}body.page-profile .profilecols .orgs h3{margin:0 0 5px 0;font-size:12px}body.page-profile .profilecols .orgs h3 a{font-weight:normal;margin-left:5px}body.page-profile .profilecols .orgs ul.avatars{margin:0}body.page-profile .profilecols .orgs ul.avatars li{list-style-type:none;display:inline;margin:0 1px 0 0}body.page-profile .profilecols .orgs ul.avatars li img{border:1px solid #ddd;box-shadow:none;padding:1px;width:36px;height:36px}body.page-profile .profilecols .tabnav{position:relative}body.page-profile .profilecols .tabnav .pagehead-actions{float:none;top:0px}body.page-profile .profilecols .tabnav .pagehead-actions li.text{display:inline-block;margin-top:12px}body.page-profile .profilecols .tabnav .subnav li:first-child{margin-left:10px}body.page-profile .profilecols .filter-bar{position:relative;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #ddd}body.page-profile .profilecols .filter-bar .repo-search{display:inline}body.page-profile .profilecols .filter-bar .new-repo{float:right;margin-left:15px}body.page-profile .profilecols .filter-bar .filter_input{width:260px}body.page-profile .profilecols .filter-bar .repo_filterer{float:right;margin-top:8px}body.page-profile .profilecols .filter-bar li{position:relative;float:right;list-style:none;margin-left:10px;font-size:14px}body.page-profile .profilecols .filter-bar li a{display:inline-block}body.page-profile .profilecols .filter-bar li .filter-selected{color:#000;font-weight:bold}body.page-profile .profilecols .noactions{margin:5px 0 0 0;padding:10px;color:#333;font-size:14px;font-weight:normal;text-align:center;background:#ffffee;border:1px solid #ddd}body.page-profile .profilecols .noactions p{margin:0;line-height:1.2;text-shadow:1px 1px 0 #fff}body.page-profile .profilecols .blankslate{margin-top:30px}body.page-profile .profilecols h1.avatared .tooltipped{display:inline-block}body.page-profile h1.avatared strong{border-left:1px solid #eee;margin-left:5px;padding:5px 10px;vertical-align:middle}body.page-profile .select-menu-modal{width:130px}body.page-profile .select-menu-modal-holder{right:0}body.page-profile .vcard img{padding:5px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,0.15);width:222px;height:222px;border:1px solid #ddd;-moz-box-sizing:border-box;box-sizing:border-box}body.page-profile .vcard h1{font-size:26px;letter-spacing:-1px;color:#495961;margin-top:6px;margin-bottom:0}body.page-profile .vcard h1 span{line-height:1;display:inline-block;width:100%;line-height:26px;text-overflow:ellipsis;overflow-x:hidden;padding-bottom:4px;margin-bottom:-12px}body.page-profile .vcard h1 span.name-only{margin-bottom:11px}body.page-profile .vcard h1 em{display:inline-block;width:100%;text-overflow:ellipsis;overflow-x:hidden;font-size:20px;font-style:normal;font-weight:300;line-height:24px;color:#666;margin-bottom:12px;vertical-align:top;letter-spacing:0}body.page-profile .vcard .staff-badge{border-radius:3px;color:#fff;font-size:10px;font-weight:bold;padding:2px 5px;position:relative;text-transform:uppercase;top:-1px;background-color:#4183C4;-webkit-font-smoothing:antialiased}body.page-profile .vcard .avatared{position:relative}body.page-profile .vcard .details{border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin:0 0 8px 0;padding:18px 0 15px 0;-webkit-font-smoothing:antialiased}body.page-profile .vcard .details .join-label{color:#a0a0a0}body.page-profile .vcard dl{margin:5px 0 0 0;font-size:14px;-webkit-font-smoothing:antialiased}body.page-profile .vcard dl:first-child{margin-top:0}body.page-profile .vcard dl dt{margin:0;float:left;width:22px;color:#d0d0d0}body.page-profile .vcard dl dd{margin:0 0 0 22px;width:195px;overflow-x:hidden;text-overflow:ellipsis}.hide-line-numbers .diff-line-num{-webkit-user-select:none;-moz-user-select:none;user-select:none}.hide-line-numbers .diff-line-num:before{content:attr(data-line-number)}.hide-line-numbers .line-num-content{display:none;visibility:hidden}.file-diff:hover [data-number]:before{content:attr(data-number)}.discussion-timeline-cols .main{float:left;width:660px}.discussion-timeline-cols .sidebar{float:right;width:240px}.discussion-timeline-cols ul.discussion-actions{float:right;margin:0 0 0 0;text-align:right}.discussion-timeline-cols ul.discussion-actions li{list-style-type:none;margin:-10px 0 0 5px;display:inline-block}.discussion-timeline .breakout{width:920px}.discussion-timeline p.explain{margin:0;font-size:12px}.discussion-timeline{width:800px}.discussion-timeline .body .commits-compare-link{padding-left:0.5em}.discussion-timeline pre.diff-excerpt{font-size:11px;background:#fafbfc;color:#888;padding:0;margin:0;overflow:auto}.discussion-timeline pre.diff-excerpt div{padding:0 3px}.discussion-timeline pre.diff-excerpt div.gc{color:#777;padding:3px 3px}ul.userlist{margin:0;border-top:1px solid #ddd}ul.userlist li{list-style-type:none;margin:0;padding:4px 0;border-bottom:1px solid #ddd}ul.userlist li .gravatar{display:inline-block;margin-top:-2px;padding:1px;font-size:1px;background:#fff;border:1px solid #eee;vertical-align:middle}ul.userlist li a{display:inline-block;font-size:12px;font-weight:bold;color:#666}#commits_bucket .boxed-group+.boxed-group{margin-top:0}ul.tab-actions{float:right;height:25px;margin:0 0 -25px 0}ul.tab-actions li{list-style-type:none;margin:0 0 0 5px;display:inline-block;font-size:11px;font-weight:bold}.pull-participation{margin:-10px 0 0;padding-left:60px;font-size:13px;font-weight:300;color:#666}.pull-participation p.quickstat{display:inline-block;margin:0 5px 0 0}.pull-participation .avatar{position:relative;display:inline-block;height:24px;top:-2px;margin-right:3px;margin-bottom:3px}.pull-participation .avatar .overlay{position:absolute;top:0;left:0}.pull-participation .avatar img{vertical-align:middle}.pull-participation a{color:#666}.pull-participation a.add-comment{font-weight:bold}.filterbox{margin-bottom:8px}.filterbox input{width:100%;background-color:#fafafa}.filterbox input:focus{background-color:#fff}.browser-title{margin:0 0 10px 0}.browser-title h2{margin:0;font-size:16px;font-weight:bold}.pull-form{margin:0 0 0}.pull-form textarea{height:200px}.pull-form input[type=text]{font-size:14px;padding:5px 5px;margin:0 0 5px 0;width:98%;color:#444}.pull-form .preview-content{background:#fff}.pull-form .preview-content .content-body{padding:10px;font-size:13px}.new-pull-form-error{margin:5px 0 10px 0;font-weight:bold;color:#A00}.pull-dest-repo{margin-top:0}.pull-dest-repo .octicon-arrow-right{position:relative;top:2px}.pull-dest-repo a{font-size:12px;font-weight:bold;padding:5px 0}.pull-dest-repo p{font-size:11px;color:#999;margin:5px 0 15px 0}.new-pull-request .pull-tabs{clear:both}.new-pull-request .tab-content{margin-top:20px}.new-pull-request .explain,.view-pull-request .explain{margin:15px 0}.pull-heading{position:relative;z-index:21}div.pull-head{margin-bottom:20px;background-color:#fafafa;border:1px solid #eee;border-bottom-width:2px;border-radius:3px}div.pull-head .pull-description{height:36px}div.pull-head .pull-description .css-truncate-target{max-width:180px}div.pull-head .pull-description .css-truncate-target+.css-truncate-target{max-width:90px}div.pull-head .pull-description .state-indicator{font-size:13px;display:inline-block;height:20px;line-height:20px;padding:0 5px}div.pull-head .pull-description .pull-state{float:left;padding:8px;margin-right:8px;border-right:1px solid #eee}div.pull-head .pull-description .pull-head-meta{position:relative;float:right;overflow:hidden}div.pull-head .pull-description .pull-head-meta>span{display:block;position:relative;float:left}div.pull-head .pull-description .pull-head-meta .diffstat{padding:0 10px 0 5px;margin:10px 0}div.pull-head .pull-description .pull-head-meta .pull-number{height:36px;padding:0 10px;font-size:14px;font-weight:bold;line-height:36px;border-left:1px solid #eee}div.pull-head .pull-description .pull-head-meta .pull-number a{color:#333}div.pull-head .pull-description .pull-state+p .gravatar:first-child{margin-left:0}div.pull-head .pull-description span.attention-icon{position:relative;float:left;margin-right:10px;padding:10px 12px;border-right:1px solid #eee;color:#D26911}div.pull-head .pull-description p{position:relative;float:left;margin:0;line-height:36px;font-size:13px;max-width:690px;white-space:nowrap}div.pull-head .pull-description p .pull-header-username{font-weight:bold;color:#333}div.pull-head .pull-description p .unknown-repo{color:#aaa}div.pull-head .pull-description p .commit-ref{top:7px;vertical-align:top;z-index:1}div.pull-head .pull-description p .octicon-clippy{color:#666666}.pull-head .commit-ref a,.action-bubble .commit-ref a{color:inherit}.pull-head .commit-ref a:hover,.action-bubble .commit-ref a:hover{text-decoration:none}.pull-head .zeroclipboard-link,.action-bubble .zeroclipboard-link{color:#666666}.mergeable .commit-ref a{color:#fff}.pull-heading.loading .range-loading-overlay{display:block}.pull-heading.loading span.flag{background:#fafafa url("/images/spinners/octocat-spinner-32.gif?ca28a0dd") 12px 12px no-repeat;background-size:16px auto}.pull-heading.loading span.flag .octicon{color:transparent;width:16px}.pull-heading.loading .pull-description,.pull-heading.loading .range-editor-base,.pull-heading.loading .range-editor-head{opacity:0.5}.bubble{padding:3px;background:#eee;border-radius:3px}.bubble .comment-form{margin:0}.bubble .action-bar{width:100%;padding:2px 3px 5px 3px;text-align:right;margin-left:-3px;border-bottom:1px solid #ccc;min-height:26px}.bubble .action-bar .minibutton:last-child{margin-right:2px}.bubble .action-bar h3{margin:5px 0 0 5px;float:left;font-size:13px;font-weight:bold}.bubble .file-box{margin-bottom:0}.avatar img{border-radius:3px}.outdated-diff-comment-container .discussion-bubble-content{display:none}.outdated-diff-comment-container.open .discussion-bubble-content{display:block}.outdated-diff-comment-container .toggle-open{display:none}.outdated-diff-comment-container .toggle-closed{display:inline}.outdated-diff-comment-container.open .toggle-open{display:inline}.outdated-diff-comment-container.open .toggle-closed{display:none}.action-bubble{margin:15px 0 15px 60px}.action-bubble .state-indicator{display:inline-block;margin-right:8px;font-size:12px;padding:0 5px;line-height:24px;width:65px}.action-bubble .action{float:left;line-height:29px}.action-bubble .bubble{font-size:13px;font-weight:300;background-color:transparent}.action-bubble .bubble strong{font-weight:bold}.action-bubble .avatar{position:relative;top:-2px;display:inline-block;height:24px;margin-right:3px;line-height:1px}.action-bubble .avatar img{vertical-align:middle}.action-bubble a{color:#444;color:inherit}.action-bubble a.commit-ref{color:#fff;cursor:pointer}.action-bubble code>a{border-bottom:1px dotted #ccc;text-decoration:none}.action-bubble code>a:hover{border-bottom:1px solid #444}.action-bubble .bubble p{margin:0;line-height:26px}.signed-out-comment{margin:15px 0 0 60px;padding:10px;background:#fafbd2;border:1px solid #e8eac0;border-right-color:#f5f7ce;border-bottom-color:#f5f7ce;border-radius:4px}.signed-out-comment .minibutton{margin-right:3px}.inline-comment-form{max-width:842px}.inline-comment-form .signed-out-comment{margin:3px;padding:0;background:none;border:none}.inline-comment-form .signed-out-comment .minibutton{margin-top:0}.status:before{opacity:0.6}.status:hover{text-decoration:none}.status:hover:before{opacity:1}.status-unknown{color:#999999}.status-pending{color:#ff9933}.status-success{color:#6cc644}.status-error{color:#666666}.status-failure{color:#bd2c00}.stale-files-tab{display:none;margin-bottom:10px}.stale-files-tab .container{width:auto;padding-left:0;padding-right:0}.stale-files-tab.sticky.stick{top:-1px;border-top-left-radius:0;border-top-right-radius:0}#files_bucket.is-stale .stale-files-tab{display:block}#pull_request ul{list-style-type:none}#pull_request label.repo span.name{font-size:160%}#pull_request label.repo span span.sha{color:#aaa}#pull_request .label label{display:inline;margin:0;font-size:100%;font-weight:bold}#pull_request .label div{margin:.2em}#pull_request .recipients{max-height:200px;overflow:auto}#readme{padding:3px;background:#EEE;border-radius:3px}#readme.contributing>div{max-height:250px;overflow:auto}#readme span.name{font-size:16px;line-height:20px;font-weight:bold;padding:10px 10px;color:#555;text-shadow:0 1px 0 #fff;display:block;border:1px solid #CACACA;border-bottom:0 none;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x}#readme .markdown-body,#readme .plain{background-color:#fff;border:1px solid #CACACA;padding:30px}#readme .plain pre{font-size:15px;white-space:pre-wrap}#files #readme{background-color:#fff;border:0 none;padding:0;border-radius:0}#files #readme .markdown-body{border:0 none;padding:30px;border-radius:0}#files #readme .markdown-body table[data-table-type="yaml-metadata"]{line-height:1;font-size:12px}#files #readme .markdown-body table[data-table-type="yaml-metadata"] table{margin:0}#readme.rst .borderless,#readme.rst table.borderless td,#readme.rst table.borderless th{border:0}#readme.rst table.borderless td,#readme.rst table.borderless th{padding:0 0.5em 0 0 !important}#readme.rst .first{margin-top:0 !important}#readme.rst .last,#readme.rst .with-subtitle{margin-bottom:0 !important}#readme.rst .hidden{display:none}#readme.rst a.toc-backref{text-decoration:none;color:black}#readme.rst blockquote.epigraph{margin:2em 5em}#readme.rst dl.docutils dd{margin-bottom:0.5em}#readme.rst div.abstract{margin:2em 5em}#readme.rst div.abstract p.topic-title{font-weight:bold;text-align:center}#readme.rst div.admonition,#readme.rst div.attention,#readme.rst div.caution,#readme.rst div.danger,#readme.rst div.error,#readme.rst div.hint,#readme.rst div.important,#readme.rst div.note,#readme.rst div.tip,#readme.rst div.warning{margin:2em;border:medium outset;padding:1em}#readme.rst div.admonition p.admonition-title,#readme.rst div.hint p.admonition-title,#readme.rst div.important p.admonition-title,#readme.rst div.note p.admonition-title,#readme.rst div.tip p.admonition-title{font-weight:bold;font-family:sans-serif}#readme.rst div.attention p.admonition-title,#readme.rst div.caution p.admonition-title,#readme.rst div.danger p.admonition-title,#readme.rst div.error p.admonition-title,#readme.rst div.warning p.admonition-title{color:red;font-weight:bold;font-family:sans-serif}#readme.rst div.dedication{margin:2em 5em;text-align:center;font-style:italic}#readme.rst div.dedication p.topic-title{font-weight:bold;font-style:normal}#readme.rst div.figure{margin-left:2em;margin-right:2em}#readme.rst div.footer,#readme.rst div.header{clear:both;font-size:smaller}#readme.rst div.line-block{display:block;margin-top:1em;margin-bottom:1em}#readme.rst div.line-block div.line-block{margin-top:0;margin-bottom:0;margin-left:1.5em}#readme.rst div.sidebar{margin:0 0 0.5em 1em;border:medium outset;padding:1em;background-color:#ffffee;width:40%;float:right;clear:right}#readme.rst div.sidebar p.rubric{font-family:sans-serif;font-size:medium}#readme.rst div.system-messages{margin:5em}#readme.rst div.system-messages h1{color:red}#readme.rst div.system-message{border:medium outset;padding:1em}#readme.rst div.system-message p.system-message-title{color:red;font-weight:bold}#readme.rst div.topic{margin:2em}#readme.rst h1.section-subtitle,#readme.rst h2.section-subtitle,#readme.rst h3.section-subtitle,#readme.rst h4.section-subtitle,#readme.rst h5.section-subtitle,#readme.rst h6.section-subtitle{margin-top:0.4em}#readme.rst h1.title{text-align:center}#readme.rst h2.subtitle{text-align:center}#readme.rst hr.docutils{width:75%}#readme.rst img.align-left,#readme.rst .figure.align-left,#readme.rst object.align-left{clear:left;float:left;margin-right:1em}#readme.rst img.align-right,#readme.rst .figure.align-right,#readme.rst object.align-right{clear:right;float:right;margin-left:1em}#readme.rst img.align-center,#readme.rst .figure.align-center,#readme.rst object.align-center{display:block;margin-left:auto;margin-right:auto}#readme.rst .align-left{text-align:left}#readme.rst .align-center{clear:both;text-align:center}#readme.rst .align-right{text-align:right}#readme.rst div.align-right{text-align:left}#readme.rst ol.simple,#readme.rst ul.simple{margin-bottom:1em}#readme.rst ol.arabic{list-style:decimal}#readme.rst ol.loweralpha{list-style:lower-alpha}#readme.rst ol.upperalpha{list-style:upper-alpha}#readme.rst ol.lowerroman{list-style:lower-roman}#readme.rst ol.upperroman{list-style:upper-roman}#readme.rst p.attribution{text-align:right;margin-left:50%}#readme.rst p.caption{font-style:italic}#readme.rst p.credits{font-style:italic;font-size:smaller}#readme.rst p.label{white-space:nowrap}#readme.rst p.rubric{font-weight:bold;font-size:larger;color:maroon;text-align:center}#readme.rst p.sidebar-title{font-family:sans-serif;font-weight:bold;font-size:larger}#readme.rst p.sidebar-subtitle{font-family:sans-serif;font-weight:bold}#readme.rst p.topic-title{font-weight:bold}#readme.rst pre.address{margin-bottom:0;margin-top:0;font:inherit}#readme.rst pre.literal-block,#readme.rst pre.doctest-block{margin-left:2em;margin-right:2em}#readme.rst span.classifier{font-family:sans-serif;font-style:oblique}#readme.rst span.classifier-delimiter{font-family:sans-serif;font-weight:bold}#readme.rst span.interpreted{font-family:sans-serif}#readme.rst span.option{white-space:nowrap}#readme.rst span.pre{white-space:pre}#readme.rst span.problematic{color:red}#readme.rst span.section-subtitle{font-size:80%}#readme.rst table.citation{border-left:solid 1px gray;margin-left:1px}#readme.rst table.docinfo{margin:2em 4em}#readme.rst table.docutils{margin-top:0.5em;margin-bottom:0.5em}#readme.rst table.footnote{border-left:solid 1px black;margin-left:1px}#readme.rst table.docutils td,#readme.rst table.docutils th,#readme.rst table.docinfo td,#readme.rst table.docinfo th{padding-left:0.5em;padding-right:0.5em;vertical-align:top}#readme.rst table.docutils th.field-name,#readme.rst table.docinfo th.docinfo-name{font-weight:bold;text-align:left;white-space:nowrap;padding-left:0}#readme.rst h1 tt.docutils,#readme.rst h2 tt.docutils,#readme.rst h3 tt.docutils,#readme.rst h4 tt.docutils,#readme.rst h5 tt.docutils,#readme.rst h6 tt.docutils{font-size:100%}#readme.rst ul.auto-toc{list-style-type:none}.render-container{background:#ddd;text-align:center;padding:30px;height:70px}.render-container .render-viewer{border:0;display:none;width:100%;height:100%}.render-container .render-viewer-trigger{margin-top:15px}.render-container .octospinner{display:none}.render-container .render-viewer-error{margin-top:25px;display:none}.render-container .render-viewer-fatal{margin-top:25px;display:none}.render-container.is-render-automatic .octospinner{display:inline-block}.render-container.is-render-requested .octospinner{display:inline-block}.render-container.is-render-requested .render-viewer-trigger{display:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed){background:none;height:500px;padding:0}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer{display:block}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) :not(.render-viewer){display:none}.render-container.is-render-requested.is-render-failed .render-viewer-error{display:inline-block}.render-container.is-render-requested.is-render-failed>:not(.render-viewer-error){display:none}.render-container.is-render-requested.is-render-failed-fatal .render-viewer-fatal{display:inline-block}.render-container.is-render-requested.is-render-failed-fatal>:not(.render-viewer-fatal){display:none}.render-notice td{background:#f7f7f7;padding:10px;text-align:center;border-bottom:1px solid #eee;font-size:12px}.repo-selector{border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05);margin-bottom:10px;width:425px;-moz-box-sizing:border-box;box-sizing:border-box}.repo-selector .repo-entry-list{background:#fff;border:1px solid #ddd;border-top:0;border-radius:0 0 3px 3px}.repo-selector.scrollable .repo-entry-list{max-height:200px;overflow-y:scroll}.repo-selector .repo-entry,.repo-selector .repo-select-blank,.repo-selector .repo-entry-form{padding:5px}.repo-selector .repo-entry:before,.repo-selector .repo-entry:after,.repo-selector .repo-select-blank:before,.repo-selector .repo-select-blank:after,.repo-selector .repo-entry-form:before,.repo-selector .repo-entry-form:after{content:" ";display:table}.repo-selector .repo-entry:after,.repo-selector .repo-select-blank:after,.repo-selector .repo-entry-form:after{clear:both}.repo-selector .repo-entry .entry-actions,.repo-selector .repo-select-blank .entry-actions,.repo-selector .repo-entry-form .entry-actions{float:right}.repo-selector .repo-entry .entry-content,.repo-selector .repo-select-blank .entry-content,.repo-selector .repo-entry-form .entry-content{float:left}.repo-selector .repo-entry .entry-content,.repo-selector .repo-select-blank .entry-content{line-height:24px;color:#666}.repo-selector .repo-select-blank .entry-content{text-align:center;width:100%;margin:1px 0}.repo-selector .repo-entry{border-bottom:1px solid #ddd}.repo-selector .repo-entry .entry-content{padding-left:5px}.repo-selector .repo-entry .nwo-slash{color:#999}.repo-selector .repo-entry:last-child{border-bottom:none}.repo-selector .repo-entry-form{border:1px solid #d8d8d8;border-bottom:1px solid #ccc;border-radius:3px 3px 0 0;position:relative;background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x}.repo-selector .repo-entry-form .nwo-slash,.repo-selector .repo-entry-form .select-menu,.repo-selector .repo-entry-form .target-repo-menu.owner-is-active,.repo-selector .repo-entry-form .repo-action-add{display:inline-block;line-height:1em}.repo-selector .repo-entry-form .target-repo-menu{display:none}.repo-selector .repo-entry-form .nwo-slash{font-size:21px;color:#666;margin:0 5px;position:relative;top:4px}.repo-selector .repo-entry-form .triangle{content:"";border-color:#ccc transparent transparent transparent;border-style:solid;border-width:5px 10px;height:0;width:0;position:absolute;bottom:-10px;left:48%}.repo-list{list-style:none}.repo-list>li:first-child .repo-list-item{border-top:0}.repo-list>li:last-child .repo-list-item{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.repo-list .no-repo{padding:15px;color:#999;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}.repo-list-item{position:relative;display:block;padding:6px 30px;font-size:14px;border-top:1px solid #e5e5e5;-moz-box-sizing:border-box;box-sizing:border-box}.repo-list-item:hover{text-decoration:none}.repo-list-item:hover .repo,.repo-list-item:hover .owner{text-decoration:underline}.repo-list-item .repo-icon{float:left;margin-top:2px;margin-left:-20px;color:#666}.repo-list-item .repo-and-owner{max-width:220px}.repo-list-item .owner{max-width:110px}.repo-list-item .repo{font-weight:bold}.repo-list-item .stars{position:absolute;top:0;right:10px;margin-top:6px;font-size:12px;color:#888}.repo-list-item .repo-description{display:block;max-width:230px;color:#777;font-size:12px}.popular-repos .repo-list-item .stars{margin-top:16px}.popular-repos .no-description .repo-list-item{padding-top:14px;padding-bottom:14px}.private .repo-list-item{background-color:#fcf8e9}.private .repo-list-item .repo-icon{color:#a1882b}.filter-repos{padding:10px 10px 0;background-color:#fafafa;border-bottom:1px solid #e5e5e5}.filter-repos:before,.filter-repos:after{content:" ";display:table}.filter-repos:after{clear:both}.filter-repos .filter-input{width:100%;min-height:26px;padding:3px 10px;font-size:11px;border-radius:12px}.repo-filterer{margin-top:5px;list-style:none}.repo-filterer .repo-filter{float:left;margin-right:5px;padding:5px;font-size:11px;color:#777}.repo-filterer .repo-filter:hover{text-decoration:none}.repo-filterer .repo-filter:hover,.repo-filterer .filter-selected{padding-bottom:3px;border-bottom:2px solid #e5e5e5}.repo-filterer .filter-selected{color:#333}.more-repos{text-align:center;box-shadow:inset 0 1px 0 #e5e5e5}.more-repos img{margin:11px auto}.more-repos-link{display:block;padding:10px;color:#7ba9d6}.more-repos-link:hover{color:#4183c4;text-decoration:none}.more-repos-link.is-loading{text-indent:-9999px;cursor:default;background-image:url("/images/spinners/octocat-spinner-16px.gif?8c695afe");background-repeat:no-repeat;background-position:center center}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.more-repos-link.is-loading{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px 16px}}.empty-repo{margin:0 auto;width:710px}.empty-repo .url-box{display:inline-block;margin:0 0 -10px 0;width:auto;height:auto;padding:0;border:none}.empty-repo .clone-urls{width:499px}.empty-repo .or-text{margin-left:5px;margin-right:5px}.empty-repo h3{margin-top:35px}.empty-repo .new-repo-cli-container{padding-top:10px;text-align:center}.empty-repo .new-repo-cli-container pre{text-align:left}.empty-repo #member-list{margin-top:10px}.empty-repo-recommendations{text-align:center}.repo-stats{margin-left:0}.repo-stats li{float:left;list-style:none;font-size:11px;font-weight:bold;line-height:20px;color:#666}.repo-stats li+li{margin-left:10px}.repo-stats li a{display:inline-block;padding:0 5px;color:#666}.repo-stats li a .octicon{color:#888}.repo-stats li a:hover{color:#4183c4;text-decoration:none}.repo-stats li a:hover .octicon{color:inherit}#change_default_branch{clear:left}#change_default_branch dt,#change_default_branch dd{float:left}#change_default_branch dt{margin:0 30px 0 0}.addon{margin:0;padding:10px}.addon dl.form{margin:0}.addon input[type=checkbox]{float:left;margin:5px 0 0 0}.addon p{margin:0 0 0 20px;color:#444}.addon p+p{margin-top:1em;margin-bottom:0}.addon .hfields{margin-left:2em}.addon.loading .indicator{display:inline-block;margin-left:5px;margin-top:-2px;width:16px;height:16px;background:url("/images/spinners/octocat-spinner-32-EAF2F5.gif?cc07bd9a") 0 0 no-repeat;background-size:16px}.addon.success .indicator:before,.addon.error .indicator:before{font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;margin-left:5px}.addon.success .indicator:before{content:"\f03a";color:#6cc644}.addon.error .indicator:before{content:"\f02d";color:#bd2c00}.boxed-group .boxed-group-inner .addon h4{margin:2px 0 2px 20px}.rule.no-margin{margin:0}ul.hook-list{margin:0 0 15px 0;border-top:1px solid #ddd}ul.hook-list li{list-style-type:none;margin:0;padding:1px 0;font-size:12px;font-weight:bold;border-bottom:1px solid #ddd}ul.hook-list li .service-indicator{display:none;float:right;margin-top:3px;margin-right:5px;color:#aaa}ul.hook-list li.enabled .service-indicator{display:inline-block}ul.hook-list li.enabled .active{display:inline-block;color:#6cc644}ul.hook-list li.enabled .inactive{display:inline-block;color:#ff9933}ul.hook-list li.selected{color:#fff;background-color:#3d7cb9}ul.hook-list li a{display:inline-block;padding:3px 0 3px 5px;color:#999;text-decoration:none}ul.hook-list li.enabled a{color:#000}ul.hook-list li.selected a{color:#fff}#repo-settings .usage-bar{padding-left:0;padding-right:0}.repo-settings-content{position:relative;float:right;width:685px}.repo-settings-content .fieldgroup .fields{padding:0;background:none}.github-repository-module .github-repository-header{border-left:1px solid #dedede;border-right:1px solid #dedede;background-color:#fbfbfb;padding:10px;margin:0;font-weight:normal}.github-repository-module .github-repository-header.no-languages{border-top:1px solid #dedede;border-top-right-radius:3px;border-top-left-radius:3px}.github-repository-module .github-repository{font-weight:bold}.github-repository-module .github-repository-owner-gravatar{width:24px;height:24px;border-radius:2px;vertical-align:middle;margin-right:5px}.github-repository-module .github-repository-full{background-color:#fff;border:1px solid #d8d8d8;padding:10px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.github-repository-module .github-repository-description{margin:0 0 10px}.github-repository-module .github-repository-meta{margin:0;padding:0;list-style-type:none}.github-repository-module .github-repository-meta-entry{display:inline-block;margin-right:20px}.github-repository-module .github-repository-meta-entry a,.github-repository-module .github-repository-meta-entry a:hover{color:#999;cursor:pointer;text-decoration:none}.github-repository-module .github-repository-meta-entry a .octicon{color:#ccc}.github-repository-module .github-repository-meta-entry a.is-starred .octicon{color:#E9DBA5}.github-repository-module .github-repository-meta-entry a b{color:#333}.github-repository-module .github-repository-lang-stats-graph{overflow:hidden;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#999;height:10px}.github-repository-module .github-repository-lang-stats-graph .language-color{height:10px;float:left;text-indent:-10000px}.timeout{margin:20px 0;width:auto;height:300px;padding:0;border:none;background-color:transparent}.timeout h3{padding-top:100px;color:#999}.repo-container{min-height:345px}@-webkit-keyframes mini-nav-pulse{0%{-webkit-transform:scale(0.9)}25%{-webkit-transform:scale(1)}70%{-webkit-transform:scale(1.1);opacity:1.0}100%{-webkit-transform:scale(1);opacity:0}}@-moz-keyframes mini-nav-pulse{0%{-moz-transform:scale(0.9)}25%{-moz-transform:scale(1)}70%{-moz-transform:scale(1.1);opacity:1.0}100%{-moz-transform:scale(1);opacity:0}}@keyframes mini-nav-pulse{0%{transform:scale(0.9)}25%{transform:scale(1)}70%{transform:scale(1.1);opacity:1.0}100%{transform:scale(1);opacity:0}}@-webkit-keyframes mini-nav-loader{0%{opacity:0}90%{opacity:0}100%{opacity:1.0}}@-moz-keyframes mini-nav-loader{0%{opacity:0}90%{opacity:0}100%{opacity:1.0}}@keyframes mini-nav-loader{0%{opacity:0}90%{opacity:0}100%{opacity:1.0}}.repo-nav-contents{box-shadow:inset 1px 0 0 #eee;background-image:-webkit-linear-gradient(left, #f6f6f6 0%, #fff 8px);background-image:-moz-linear-gradient(left, #f6f6f6 0%, #fff 8px);background-image:linear-gradient(to right, #f6f6f6 0%, #fff 8px);padding:12px 0 15px;margin:0 0 10px;position:relative}.repo-nav-contents li{list-style-type:none}.repo-nav-contents:before,.repo-nav-contents:after{content:"";position:absolute;height:15px;width:100%;left:0}.repo-nav-contents:before{background-image:-webkit-linear-gradient(top, #fff, rgba(255,255,255,0));background-image:-moz-linear-gradient(top, #fff, rgba(255,255,255,0));background-image:linear-gradient(to bottom, #fff, rgba(255,255,255,0));top:0}.repo-nav-contents:after{background-image:-webkit-linear-gradient(bottom, #fff, rgba(255,255,255,0));background-image:-moz-linear-gradient(bottom, #fff, rgba(255,255,255,0));background-image:linear-gradient(to top, #fff, rgba(255,255,255,0));bottom:0}.repo-menu a{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;padding:8px 10px;margin:5px 0;display:block;text-shadow:0 1px 0 #fff;text-decoration:none;border:1px solid transparent;outline:0}.repo-menu a:focus,.repo-menu a:hover{box-shadow:inset 2px 0 0 #ccc}.repo-menu a.selected{background:#fff;box-shadow:1px 1px 3px rgba(0,0,0,0.05);border:1px solid #eee;border-left:1px solid transparent;color:#333333;font-weight:bold;position:relative}.repo-menu a.selected:after{content:"";position:absolute;width:3px;top:-1px;bottom:-1px;right:-1px;background-color:#ba5d0f;background-image:-moz-linear-gradient(#d26911, #ba5d0f);background-image:-webkit-linear-gradient(#d26911, #ba5d0f);background-image:linear-gradient(#d26911, #ba5d0f);background-repeat:repeat-x;box-shadow:inset -1px -1px 0 rgba(0,0,0,0.1);border-radius:0 2px 2px 0}.repo-menu a .counter{position:absolute;top:8px;right:0;padding:2px 5px;font-size:11px;font-weight:bold;color:#999;background:#eee;border-radius:2px;box-shadow:inset 0 -1px 0 #e3e3e3}.repo-menu a .octicon{left:-1px;color:#999999;transition:color 0.25s ease-in;-webkit-transition:color 0.25s ease-in 0;width:16px;text-align:center}.repo-menu a .mini-loader{display:none;position:absolute;top:9px;left:9px}.repo-menu a.is-loading .mini-loader{display:inline-block;-webkit-animation-duration:0.4s;-moz-animation-duration:0.4s;animation-duration:0.4s;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-name:mini-nav-loader;-moz-animation-name:mini-nav-loader;animation-name:mini-nav-loader}.repo-menu a.is-loading .octicon{-webkit-animation-duration:0.3s;-moz-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-name:mini-nav-pulse;-moz-animation-name:mini-nav-pulse;animation-name:mini-nav-pulse}.repo-menu a:hover .octicon{color:#333333}.repo-menu a.selected .octicon{color:#333333}.repo-menu a .counter{display:none}.repo-menu a .full-word{display:none}.with-full-navigation .repo-menu a .counter{display:block}.with-full-navigation .repo-menu a .full-word{display:inline-block;width:128px;vertical-align:top}.only-with-full-nav{display:none}.with-full-navigation .only-with-full-nav{display:block}.repo-menu-separator{position:relative;display:block;margin:8px 0 6px;height:5px;background-image:-webkit-radial-gradient(left top, farthest-side, #f4f4f4, rgba(244,244,244,0));background-image:-moz-radial-gradient(left top, farthest-side, #f4f4f4, rgba(244,244,244,0));background-image:radial-gradient(farthest-side at left top, #f4f4f4, rgba(244,244,244,0));margin-left:1px}.repo-menu-separator:before{width:100%;position:absolute;height:1px;content:"";background-image:-webkit-linear-gradient(left, #eee 70%, #fff 100%);background-image:-moz-linear-gradient(left, #eee 70%, #fff 100%);background-image:linear-gradient(to right, #eee 70%, #fff 100%);top:0px;border-top:1px solid #eee\9}.new-repository-collaboration{margin:5px 0 10px 0;padding:5px;background:#fffef1;border:1px solid #e5e2c8;border-radius:4px}.new-repository-collaboration label{display:inline-block;margin:0px;color:#666666}.new-repository-collaboration input{padding:3px}.new-repository-collaboration #member-list{margin-top:10px}.new-repository-collaboration #member-list:empty{margin-top:0}.new-repository-collaboration #member-list .avatar{float:left}.new-repository-collaboration #member-list .select-menu{float:right}.new-repository-collaboration #member-list .button.danger{float:right}.new-repository-collaboration #member-list p{margin:0px}.repository-with-sidebar:before,.repository-with-sidebar:after{content:" ";display:table}.repository-with-sidebar:after{clear:both}.repository-with-sidebar .repository-sidebar{float:right;width:38px;overflow:hidden;transition:width 0.1s ease-in-out}.repository-with-sidebar .repository-sidebar .menu-container{margin-bottom:10px;-moz-box-sizing:border-box;box-sizing:border-box;width:170px}.repository-with-sidebar .repository-sidebar .sidebar-button{margin:0 0 10px 0;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;text-align:center}.repository-with-sidebar .repository-sidebar h3{margin:10px 0 5px 0;font-size:11px;font-weight:normal;color:#999}.repository-with-sidebar .repository-sidebar h3>strong{font-weight:bold;color:#000}.repository-with-sidebar .repository-sidebar .clone-url{display:none;overflow:hidden;margin-top:-5px}.repository-with-sidebar .repository-sidebar .clone-url.open{display:block}.repository-with-sidebar .repository-sidebar .clone-url-box{display:table;-moz-box-sizing:border-box;box-sizing:border-box;border-collapse:separate}.repository-with-sidebar .repository-sidebar input.clone{display:table-cell;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;white-space:nowrap;min-height:26px;padding:4px 5px;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:11px;color:#999;border-top-right-radius:0;border-bottom-right-radius:0}.repository-with-sidebar .repository-sidebar .url-box-clippy{display:table-cell;-moz-box-sizing:border-box;box-sizing:border-box;width:1%}.repository-with-sidebar .repository-sidebar .clone-options{margin:8px 0 15px 0;font-size:11px;color:#666}.repository-with-sidebar .repository-sidebar .clone-options .octicon-question{position:relative;bottom:1px;font-size:11px;cursor:pointer;color:#000}.repository-with-sidebar .repository-content{float:left;width:920px}.repository-with-sidebar.with-full-navigation .repository-content{width:790px}.repository-with-sidebar.with-full-navigation .repository-sidebar{width:170px}.overall-summary{margin-bottom:0;border-radius:3px 3px 0 0;border-bottom:none;position:relative;box-shadow:0 1px 0 rgba(0,0,0,0.1)}.overall-summary.without-lang-stats{border-radius:3px;border-bottom:1px solid #ddd;box-shadow:none}.overall-summary .numbers-summary a,.overall-summary .numbers-summary span.nolink{display:block;padding:10px 0;color:#999;transition:color 0.1s ease-in;-webkit-transition:color 0.1s ease-in 0;text-decoration:none}.overall-summary .numbers-summary li{padding:0;white-space:nowrap;list-style-type:none;display:table-cell;margin:0;width:1%;text-align:center;color:#999}.overall-summary .numbers-summary li a:hover{color:#4183c4}.overall-summary .numbers-summary li a:hover .num{color:#4183c4;transition:color 0.1s ease-in;-webkit-transition:color 0.1s ease-in 0}.overall-summary .numbers-summary li a:hover .num .octicon{color:#4183c4;opacity:0.4}.overall-summary .numbers-summary li .num{display:inline;padding:0;font-size:13px;font-weight:bold;color:#000}.overall-summary .numbers-summary li .num .octicon{color:#ccc}.repository-meta{margin:0 0 13px 0}.repository-meta:before,.repository-meta:after{content:" ";display:table}.repository-meta:after{clear:both}.repository-meta p{margin:0}.repository-meta .repository-description{display:inline;font-size:16px;color:#666}.repository-meta .repository-description>p{display:inline}.repository-meta .repository-website{display:inline-block;font-size:16px}.repository-meta .edit-link{font-size:16px;color:#999}.repository-meta .edit-link a{color:#999}.repository-meta .edit-repository-meta{display:none;margin-bottom:5px}.repository-meta .edit-repository-meta .description-field input,.repository-meta .edit-repository-meta .website-field input{padding:7px 8px 8px;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:14px;color:#444;border-radius:4px}.repository-meta .edit-repository-meta .description-field input{width:380px}.repository-meta .edit-repository-meta .website-field input{width:270px}.repository-meta .edit-repository-meta .field{display:inline-block;margin-right:5px}.repository-meta .edit-repository-meta label{display:block;font-weight:bold;color:#333}.repository-meta.open .repository-description,.repository-meta.open .repository-website,.repository-meta.open .edit-link{display:none}.repository-meta.open .edit-repository-meta{display:block}.file-navigation.in-mid-page{margin-top:10px}.file-navigation .select-menu{display:inline-block;margin-right:5px}.file-navigation .breadcrumb{position:relative;top:2px;margin:0;display:inline-block}.file-navigation .pull-request-link{position:relative;top:1px;display:inline-block;margin-right:5px;font-size:13px;font-weight:bold;padding:0 8px 0;height:24px;line-height:24px;border:1px solid rgba(65,131,196,0.5);border-radius:3px}.file-navigation .pull-request-link:hover{background:#4183c4;border-color:#4183c4;color:#fff;text-decoration:none}.minibutton.compact .octicon{margin-right:2px}.files-bubble{margin:10px 0}table.files{-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #d8d8d8;border-top:none;border-radius:3px;background:#f8f8f8}table.files td{padding:7px 3px;border-top:1px solid #eee}table.files td.icon{width:17px;padding-left:10px;padding-right:2px;color:#777}table.files td.icon .octicon-file-directory{color:#80A6CD}table.files td.icon .spinner{display:none;position:relative;top:3px;margin-top:-2px}table.files td.content .css-truncate{max-width:180px}table.files td.message{padding-left:10px;height:20px;overflow:hidden;color:#888}table.files td.message a{color:#888}table.files td.message a:hover{color:#4183c4}table.files td.message .css-truncate{max-width:450px}table.files td.age{padding-right:10px;text-align:right;white-space:nowrap;color:#888}table.files td.age .css-truncate{max-width:100px}table.files tr.is-loading td.icon .octicon{display:none}table.files tr.is-loading td.icon .spinner{display:inline-block}table.files tr.up-tree{border-bottom:1px solid #eee}table.files tbody tr:first-child td{border-top:none}.branch-infobar{padding:8px 8px 7px 8px;font-size:11px;font-weight:bold;color:#999;background:#FAFAFA;border:1px solid #ccc;border-top-right-radius:3px;border-top-left-radius:3px}.branch-infobar p{float:left;margin:0}.branch-infobar .lightweight-actions{float:right;list-style-type:none}.branch-infobar .lightweight-actions>li{display:inline-block;margin:0 0 0 10px}.branch-infobar .lightweight-actions>li a{color:#999;text-decoration:none}.branch-infobar .lightweight-actions>li a:hover{color:#333}.branch-infobar .lightweight-actions>li .octicon{font-size:14px;color:#bbb}.branch-infobar+.commit-tease{border-top:none;border-radius:0}.blob-error{margin-top:5px;padding:15px;color:#666;background-image:linear-gradient(#fafafa, #f1f1f1);background-repeat:repeat-x;border:1px solid #ddd;border-radius:3px}.js-info-carrier{display:none}.url-box{width:100%;margin-top:10px;margin-left:-10px;padding:10px 10px 0;border-top:1px solid #ddd;height:26px}.no-desc.not-editable .url-box{margin-top:0;padding-top:0;border-top:0}.wiki-git-access .url-box{margin-left:0;border:none;padding:0}ul.native-clones{float:left;margin:0 10px 0 0}.wiki-git-access ul.native-clones{display:none}ul.native-clones li{margin:0;list-style-type:none;display:inline-block;margin-left:5px}ul.native-clones li:first-child{margin-left:0}.clone-urls{display:table;float:left;width:585px}.clone-urls-windows{width:550px}.clone-url-button{display:table-cell;width:1%;vertical-align:top}.clone-url-button:first-child a{border-top-left-radius:3px;border-bottom-left-radius:3px}.clone-url-button>a{position:relative;display:block;padding:0 9px;margin-right:-1px;font-size:11px;font-weight:bold;line-height:24px;color:#333;text-decoration:none;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #ccc;white-space:nowrap;cursor:pointer}.clone-url-button>a:hover,.clone-url-button>a:active{z-index:3;color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3072b3;background-image:-moz-linear-gradient(#599bcd, #3072b3);background-image:-webkit-linear-gradient(#599bcd, #3072b3);background-image:linear-gradient(#599bcd, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.clone-url-button>a:active{background-color:#3072b3;background-image:none;border-color:#25588c;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.clone-url-button+.clone-url-button>a{box-shadow:inset 1px 0 0 #fff}.clone-url-button+.clone-url-button>a:hover{box-shadow:none}.clone-url-button+.clone-url-button>a:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.clone-url-button.selected>a,.clone-url-button.selected>a:hover{z-index:2;color:#333;text-shadow:0 1px 0 rgba(255,255,255,0.6);border-color:#bbb;background-image:none;background-color:#ccc;background-color:#d5d5d5;background-image:-moz-linear-gradient(#ccc, #d5d5d5);background-image:-webkit-linear-gradient(#ccc, #d5d5d5);background-image:linear-gradient(#ccc, #d5d5d5);background-repeat:repeat-x;box-shadow:inset 0 2px 3px rgba(0,0,0,0.075)}.clone-url{display:table-cell;vertical-align:top}input.url-field{position:relative;width:100%;min-height:26px;padding:0 5px;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:12px;border-radius:0}input.url-field:focus{z-index:2}.url-box p{float:left;margin:0 0 0 5px;height:26px;line-height:26px;font-size:11px;color:#666}.url-box p strong{color:#000}.url-box-clippy{border-radius:0 3px 3px 0;border-left:0;margin-left:0 !important}.pagehead.repohead .select-menu-button.with-count{float:none}.pagehead.repohead .select-menu .social-count{float:right}.context-loader-container .large-format-loader{position:absolute;top:0;left:0;bottom:0;right:0;padding-top:190px;background:rgba(255,255,255,0.8);z-index:9999;text-align:center;color:#999999}.settings-content{position:relative;float:right;width:715px}.pagehead.settings-area{border-bottom:1px solid #eee}#repo-settings .settings-content{width:100%}.settings-nav{width:240px;-moz-box-sizing:border-box;box-sizing:border-box}.usage-bar{padding:8px 10px}.usage-bar.alert{background:#ffe9e9}.usage-bar.alert dt{color:#700}.usage-bar dt.numbers{float:right}.usage-bar dt{margin:0 0 5px 0;font-weight:bold;font-size:11px;text-transform:uppercase;color:#777;text-shadow:0 1px 0 rgba(255,255,255,0.3)}.usage-bar dt strong{float:right;color:#999}.usage-bar dd.bar span{text-indent:-9999px}.usage-bar dd{background-color:#f1f1f1;background-image:-moz-linear-gradient(#dadada, #f1f1f1);background-image:-webkit-linear-gradient(#dadada, #f1f1f1);background-image:linear-gradient(#dadada, #f1f1f1);background-repeat:repeat-x;display:block;margin:0 0 10px 0;border-radius:5px;border:1px solid #ccc;box-shadow:0 1px 0 #fff}.usage-bar dd:last-child{margin:none}.usage-bar dd span{background-color:#63ae26;background-image:-moz-linear-gradient(#81c54a, #63ae26);background-image:-webkit-linear-gradient(#81c54a, #63ae26);background-image:linear-gradient(#81c54a, #63ae26);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.4);display:block;border-radius:5px;height:5px}.usage-bar dd span.danger{background-color:#edc900;background-image:-moz-linear-gradient(#f6df60, #edc900);background-image:-webkit-linear-gradient(#f6df60, #edc900);background-image:linear-gradient(#f6df60, #edc900);background-repeat:repeat-x}.usage-bar dd span.maxed{background-color:#660000;background-image:-moz-linear-gradient(#900, #600);background-image:-webkit-linear-gradient(#900, #600);background-image:linear-gradient(#900, #600);background-repeat:repeat-x}.profile-photo{margin:10px 0 0 0}.profile-photo p{float:left;margin-top:7px}.profile-photo img{float:left;margin:0 10px 0 0;border-radius:3px}.app-owner{margin:10px 0 -10px 0}.settings-form dl.form input{width:394px;color:#999}.settings-form p.checkbox{margin:0;padding:0}dl.form dd textarea.jobs-profile{height:50px;padding:5px}.add-emails-form{background:#fff;border:none}.add-emails-form input{border:1p}dl.new-email-form{width:100%;padding:10px;margin:0 0 0 -10px;border-top:1px solid #E5E5E5}span.label.default{margin-left:4px;padding:4px 6px;background-color:#6cc644;color:#fff;border-radius:4px}span.label.visibility{margin-left:4px;padding:4px 6px;background-color:#999999;color:#fff;border-radius:4px}.settings-email .public.label{display:inline}.settings-email .private.label{display:none}.settings-email.private .public.label{display:none}.settings-email.private .private.label{display:inline}span.email-actions{float:right}span.email-actions>span,span.email-actions .minibutton{float:left}span.email-actions span.label{font-size:13px;color:#999;padding:0 10px}span.email-actions .octicon-alert{color:#ca5633}.user-emails .confirmed-email{position:relative;float:right;top:4px;color:#6cc644}.boxed-group.flush .settings-repos>li{margin:0;padding:5px 10px;border:0;border-bottom:1px solid #ddd;border-radius:0}.boxed-group.flush .settings-repos>li h3{margin:0}.boxed-group.flush .settings-repos>li h3 small{font-size:11px;color:#999}.boxed-group.flush .settings-repos>li .fork-flag{margin-top:0;margin-left:12px;margin-bottom:0;font-size:12px;color:#999}.boxed-group.flush .settings-repos>li .repo-stats{float:left;height:auto;margin:0;border-radius:0}.boxed-group.flush .settings-repos>li .repo-stats li{line-height:1}#ssh-help{float:right}#notification-center .overview{padding:0 10px 10px 10px;border-bottom:1px solid #ddd}#notification-center .notification-settings{margin:0 10px}.settings-content .notifications td{padding:5px 10px}.settings-content .notifications th{padding:10px 10px 5px 10px}#payment-history{width:100%}#payment-history th{text-align:left;padding:5px 10px;background:#f8f8f8;border-bottom:1px solid #ccc}#payment-history td{padding:5px 10px;border-bottom:1px solid #dadada}#payment-history tr:last-child td{border:none}#payment-history tr.failed td{background:#faf6f6;color:#900}#payment-history td.total{color:#090;font-weight:bold}#payment-history tr.failed td.total{font-weight:bold;text-transform:uppercase}#payments p{margin:0;padding:10px}.oauth-stats p.user-count{float:left;margin:12px 0 0 0;font-size:36px;color:#999;font-weight:300}.oauth-stats p.user-count strong{color:#333;font-weight:bold}.oauth-stats dl.keys{float:right;margin:0;text-align:right}.oauth-stats dl.keys dt{color:#999;font-weight:bold}.oauth-stats dl.keys dd{color:#333;font-family:Monaco, "Liberation Mono", Courier, monospace}.access-token .zeroclipboard-link,.access-token .css-truncate{display:inline-block}.access-token .token{max-width:320px;display:inline-block;font-size:14px;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.access-token .description{margin-left:5px}.access-token input[type="text"]{min-height:28px;font-size:12px;margin-left:10px;width:200px}.access-token button.save-note{float:none}.access-token .edit-note-container{display:inline}.access-token .edit-note-container .content{display:none}.access-token .edit-note-container a{font-size:12px}.access-token .edit-note-container .edit-note a{color:#777}.access-token .edit-note-container.open .token{max-width:200px}.access-token .edit-note-container.open .content{display:inline-block}.access-token .edit-note-container.open .add-note,.access-token .edit-note-container.open .edit-note,.access-token .edit-note-container.open .delete-note,.access-token .edit-note-container.open .description{display:none}.boxed-group.application-show-group .logo-upload{float:right;width:142px;background-color:#eee;position:relative}.boxed-group.application-show-group .logo-upload a.delete{position:absolute;right:0;padding:5px;display:none}.boxed-group.application-show-group .logo-upload a.delete:hover{color:#bd2c00}.boxed-group.application-show-group .logo-box{border:1px solid #ccc;border-top-left-radius:3px;border-top-right-radius:3px;height:140px}.boxed-group.application-show-group .logo-box img{height:140px;width:140px;border-radius:2px 2px 0 0;display:none}.boxed-group.application-show-group .logo-placeholder{height:140px;width:140px;color:#999;text-align:center;text-shadow:0 1px 0 #fff}.boxed-group.application-show-group .logo-placeholder span{margin:45px 0 0 0}.boxed-group.application-show-group .logo-placeholder p{margin:0;font-size:16px}.boxed-group.application-show-group .has-uploaded-logo .logo-placeholder,.boxed-group.application-show-group .has-uploaded-logo .or{display:none}.boxed-group.application-show-group .has-uploaded-logo:hover a.delete{display:block}.boxed-group.application-show-group .has-uploaded-logo .logo-box img{display:block}.boxed-group.application-show-group dl.form>dd input[type="text"].wide{width:460px}.boxed-group.application-show-group dl.form>dd input[type="textarea"].short{height:50px;min-height:50px}.boxed-group.application-show-group .errored .note{display:none}.boxed-group.application-show-group .drag-and-drop{padding:8px 5px 7px 5px;text-align:center}.boxed-group.application-show-group .drag-and-drop img{vertical-align:bottom;margin-bottom:1px}.boxed-group.application-show-group .drag-and-drop span{padding:0}.boxed-group.application-show-group .dragover .logo-box{box-shadow:#c9ff00 0 0 3px}.boxed-group.application-show-group .is-uploading .loading{display:block}.boxed-group.application-show-group .is-uploading .default{display:none}.boxed-group.application-show-group .is-failed .bad-request{display:block}.boxed-group.application-show-group .is-failed .default{display:none}.boxed-group.application-show-group .is-bad-file .bad-file{display:block}.boxed-group.application-show-group .is-bad-file .default{display:none}.boxed-group.application-show-group .is-too-big .file-too-big{display:block}.boxed-group.application-show-group .is-too-big .default{display:none}.boxed-group.application-show-group .default{display:block}.boxed-group p span{padding-left:5px}ul.security-history>li time{float:right;color:#999}table.security-history-detail{width:100%;font-size:12px}table.security-history-detail td{max-width:200px;word-wrap:break-word}.settings-email>.email-actions>.settings-remove-email{display:block}.settings-email>.email-actions>.settings-disabled-remove-email{display:none}.settings-email:only-child>.email-actions>.settings-remove-email{display:none}.settings-email:only-child>.email-actions>.settings-disabled-remove-email{display:block}#unsubscribe-from-newsletter .supportocat{float:left}#unsubscribe-from-newsletter .message{position:absolute;left:350px;top:50px}#unsubscribe-from-newsletter .message p{font-size:200%}.two-factor-intro{width:675px;margin:40px auto 0}.two-factor-intro #changing-2fa-warning p{display:inline;padding-left:10px}.two-factor-intro .two-factor-graphic{margin:20px 0 20px 0}.two-factor-intro .two-factor-explain{margin:0 0 40px 0;padding:0;font-size:13px;list-style:none}.two-factor-intro .two-factor-explain li{float:left;margin:0;padding:0}.two-factor-intro .two-factor-explain .step-one{width:185px;margin-right:36px}.two-factor-intro .two-factor-explain .step-two{width:230px;margin-right:42px}.two-factor-intro .two-factor-explain .step-three{width:180px}.two-factor-graphic{background-image:url("/images/modules/settings/2fa_guide.png?9891ebdc");background-repeat:no-repeat;width:675px;height:135px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.two-factor-graphic{background-image:url("/images/modules/settings/2fa_guide@2x.png?231e8662");background-size:675px 135px}}.markdown-body .sms-or-app{display:table;overflow:hidden;width:100%;margin:20px 0 0 0;padding:30px 0 0 0}.markdown-body .sms-or-app li{display:table-cell;padding:0}.markdown-body .sms-or-app li:first-child{padding-right:20px}.markdown-body .sms-or-app li:last-child{padding-left:20px}.markdown-body .sms-or-app li .button{display:block;text-align:center;margin:0 0 10px 0;padding-top:12px;padding-bottom:12px;font-size:15px;height:100%;width:100%}.markdown-body .sms-or-app strong{display:block}.two-factor-setup-container{width:600px;margin:0 auto}.two-factor-setup-container .form label{font-style:normal}.two-factor-setup-container .form dd{margin:0;padding:0}.two-factor-setup-container .octicon-alert{color:#bd2c00}.two-factor-setup-container .error-icon{position:relative;left:5px;top:2px;color:#bd2c00}.two-factor-setup-container .sent-message{position:relative;left:5px;top:2px;color:#6cc644}.two-factor-setup-container .select-menu{float:left}.two-factor-setup-container .select-menu .minibutton{padding-top:4px;padding-bottom:4px;margin-right:5px}.two-factor-setup-container .select-menu .minibutton input[type="radio"],.two-factor-setup-container .select-menu .minibutton .country{display:none}.two-factor-setup-container .select-menu .minibutton .country-code{width:auto}.two-factor-setup-container .select-menu .select-menu-button:before{top:14px}.two-factor-setup-container .select-menu .country-code{display:inline-block;margin-right:8px;width:35px}.two-factor-setup-container-sms,.two-factor-toggle{margin-top:40px}.two-factor-step-container{margin:0 0 20px 0;font-size:86.6667%}.two-factor-step-container .sms-form .form{margin-left:15px}.two-factor-step-container .form label{font-color:#777}.two-factor-step-container:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.two-factor-step-container h4{margin:0;font-size:13px}.two-factor-step-container p:last-child{margin-bottom:0}.markdown-body .two-factor-recovery-code-list{margin:0;padding:0}.markdown-body .two-factor-recovery-code-list li{list-style:none}.markdown-body .two-factor-recovery-code-list .octicon{color:#999}.markdown-body .two-factor-recovery-code-list .octicon-file-text{position:relative;top:-1px}.markdown-body .two-factor-recovery-code-list .text-file{padding-left:3px}.two-factor-sms-configuration .select-menu{float:left}.two-factor-sms-configuration .select-menu .minibutton{padding-top:4px;padding-bottom:4px;margin-right:5px}.two-factor-sms-configuration .select-menu .minibutton input[type="radio"],.two-factor-sms-configuration .select-menu .minibutton .country{display:none}.two-factor-sms-configuration .select-menu .minibutton .country-code{width:auto}.two-factor-sms-configuration .select-menu .select-menu-button:before{top:14px}.two-factor-sms-configuration .select-menu .country-code{display:inline-block;margin-right:8px;width:35px}.two-factor-sms-configuration .two-factor-code label{margin:0 0 0.2em 0;font-weight:bold}.two-factor-sms-configuration .two-factor-code input[type=number]{padding:6px}.two-factor-toggle{margin-top:40px}#facebox .backup-list{margin:0;padding:10px;border:1px solid #dbdbdb;border-radius:3px;background:#fafafa;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:14px;line-height:1.4;text-align:left;box-shadow:inset 0 0 8px #eee}.error-icon,.spinner,.sent-message,.sms-error-message,.fallback-error-message,.fallback-message,#text-code{display:none}.is-sending .spinner,.is-setting .spinner{display:inline-block}.is-sent .sent-message{display:inline-block}.is-not-sent .sms-error-message{display:block}.is-not-sent .error-icon{display:inline-block}.is-set .fallback-message{display:block;padding-top:10px}.is-not-set .fallback-error-message{display:block}.is-not-set .error-icon{display:inline-block}#configure-sms,#configure-app{display:none}.two-factor-secret{font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:13px}.markdown-body .qr-code-table,.qr-code-table{width:auto;float:right;margin:0 0 0 40px;border:1px solid #ddd}.markdown-body .qr-code-table tr,.qr-code-table tr{background:transparent;border:0}.markdown-body .qr-code-table th,.markdown-body .qr-code-table td,.qr-code-table th,.qr-code-table td{border:none;padding:0}.markdown-body .qr-code-table td,.qr-code-table td{width:3px;height:3px}.markdown-body .qr-code-table .black,.qr-code-table .black{background:#000}.markdown-body .qr-code-table .white,.qr-code-table .white{background:#fff}.markdown-body .two-factor-actions{clear:both;padding:20px 0 0 0;margin:20px 0 0 0;border-top:1px solid #eaeaea;font-size:13px}.markdown-body .two-factor-actions ul{width:600px;margin:0;padding:0}.markdown-body .two-factor-actions li{list-style:none;display:inline-block;margin-right:10px}.billing-managers .boxed-group-list>li:hover{background:inherit}.billing-managers .member-adder{background:#fff;padding-top:5px}.billing-managers .member-adder .boxed-group-list>li:hover{background:#4183c4}.billing-managers .member-adder .boxed-group-list>li{margin-left:0;width:inherit}.billing-managers .billing-manager-form{display:none}.billing-managers .billing-manager-form .active{display:inherit}.billing-managers .member-adder .minibutton{margin-top:10px}.billing-managers .octicon-alert{color:#bd2c00}.orgs-settings{margin-bottom:15px}.confirmation-phrase{font-weight:normal;font-style:italic}.do-not-copy-me{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}li.session-device{position:relative;line-height:18px;padding:15px;background-color:#fafafa;color:#999}li.session-device .button{float:right;margin-top:4px}li.session-device .session-state-indicator{float:left;width:8px;height:8px;margin-top:10px;border-radius:5px}li.session-device .session-state-indicator.active{background-color:#6cc644;box-shadow:0 0 10px rgba(108,198,68,0.5)}li.session-device .session-state-indicator.revoked{background-color:transparent;box-shadow:0 1px 0 #fff;background-color:#cccccc;background-image:-moz-linear-gradient(#aaa, #ccc);background-image:-webkit-linear-gradient(#aaa, #ccc);background-image:linear-gradient(#aaa, #ccc);background-repeat:repeat-x}li.session-device .mega-octicon{float:left;width:32px;margin-top:1px;margin-left:15px;text-align:center;color:#bbb}li.session-device .sessions-more-info{position:relative;display:none;margin-top:10px}li.session-device.session-current{background-color:#fff}li.session-device.session-current .session-last-accessed{color:#777}li.session-device.session-current .sessions-more-info{color:#777}li.session-device.session-current .sessions-more-info:after{border-top-color:#fff}li.session-device.session-current .mega-octicon{color:#777}.session-details{position:relative;width:350px;margin-left:70px}.session-details:hover .octicon{color:#4183c4;cursor:pointer}.session-details.open .sessions-more-info{display:block}.session-title{display:block}.session-title .session-ip{font-weight:normal;color:#777}.stars-browser .explore-main{margin-right:220px}.stars-browser .explore-aside{width:200px}.stars-browser .sort-bar .sort-form{margin-top:7px}.stars-browser .sort-bar .filter_input{width:400px}.stars-browser .jump-to-users{overflow:hidden}.stars-browser .jump-to-users a{float:left}.stars-browser .jump-to-users a:nth-child(6) img,.stars-browser .jump-to-users a:nth-child(12) img{margin-right:0}.stars-browser .jump-to-users img{width:27px;height:27px;border:1px solid #ddd;display:block;margin-right:5px;margin-bottom:5px}.starred-repo{list-style-type:none;padding:15px 0 0 52px;border-bottom:1px solid #eee}.starred-repo.navigation-focus{background:#fcfce2}.starred-repo:last-child{border-bottom:0;overflow:hidden}.starred-repo .mega-octicon{float:left;margin-top:3px;margin-left:-42px}.starred-repo .mega-octicon:before{color:#bbb}.starred-repo .octicon-lock::before{color:#e9dba5}.starred-repo .starring-container{float:right;margin-right:10px}.starred-repo h3{margin:0;display:inline-block}.starred-repo .sort-info{display:inline-block;font-size:11px;color:#999999}.starred-repo p.description{color:#666;margin-top:0}.stars-header img{width:32px;height:32px}.markdown-body .task-list{list-style-type:none;padding-left:10px}.task-list-item{padding-left:20px}.task-list-item label{font-weight:normal}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item-checkbox{float:left;margin-left:-20px;margin-top:4px}.orgs-next-container .team-header .team-avatar{margin-right:10px}.orgs-next-container .team-header .edit-team-description{display:none}.orgs-next-container .team-header.open .edit-team-description{display:block}.orgs-next-container .team-header.open .team-description{display:none}.orgs-next-container .team-actions{float:right}.orgs-next-container .team-actions a{margin-top:4px}.orgs-next-container .team-actions .select-menu-modal-holder{right:0}.orgs-next-container .team-description p{color:#666666;display:inline;font-size:16px;margin:0 0 10px 0}.orgs-next-container .team-description p.active{display:block}.orgs-next-container .team-description p a{color:#999999}.orgs-next-container .edit-team-description input[type="text"]{padding:7px 8px 8px;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:14px;color:#444;border-radius:4px;width:440px}.orgs-next-container .edit-team-description input[type="text"].active{display:inline-block}.orgs-next-container .team-name .text{display:inline-block}.orgs-next-container .team-name .text.active{display:none}.orgs-next-container .team-name .text:hover{background:#fffef1}.orgs-next-container .team-name input{display:none;font-size:26px;padding:0px;font-family:Helvetica, Arial, sans-serif;font-weight:bold;margin-top:-8px;margin-left:-2px;margin-bottom:-9px;width:70%}.orgs-next-container .team-name input.active{display:inline-block}.orgs-next-container .team-settings p{margin:0}.orgs-next-container .team-settings .select-menu-item-text{padding-top:7px}.tree-browser .actions{text-align:right;padding:0;padding-right:10px}.tree-browser .actions ul{display:inline-block;vertical-align:middle;font-size:13px;position:relative;top:2px}.tree-browser .actions li{list-style-type:none;float:left;margin:0 0 0 10px}.tree-browser .actions li .octicon{transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;text-decoration:none}.tree-browser .actions li:hover .octicon{color:#4183c4}.tree-browser .actions a{color:#666}.tree-browser{width:100%;margin:0;border-bottom:1px solid #cacaca;border-left:none;border-right:none}.tree-browser td{background:#f8f8f8;border-bottom:1px solid #eee;padding:7px 3px;color:#484848;vertical-align:middle;white-space:nowrap}.tree-browser td:first-child{border-left:1px solid #cacaca}.tree-browser td:last-child{border-right:1px solid #cacaca}.tree-browser img{vertical-align:text-bottom}.tree-browser tbody tr:last-child td{border-bottom:0}.tree-browser .tree-entries .message .error{display:none}.tree-browser .tree-entries.error .message .loading{display:none}.tree-browser .tree-entries.error .message .error{display:block}.tree-browser-wrapper{margin-bottom:30px}.tree-browser .history{float:right;padding-right:5px}.tree-browser tr.navigation-focus td{background:none;background-color:#fffeeb}.tree-browser td.icon{width:17px;padding-right:2px;padding-left:10px}.tree-browser .octicon-file-directory{color:#80a6cd}.tree-browser .octicon-file-submodule{color:#3cbf5e}.tree-browser .octicon-file-text{color:#777}.tree-browser .content{max-width:220px}.tree-browser .message{max-width:420px}.tree-browser .css-truncate-target{max-width:100%}.tree-browser td a.message{color:#484848}.tree-browser td span.ref{color:#aaa}.tree-browser.downloads td{vertical-align:top}.tree-browser.downloads td p{margin:0;padding:0}.tree-browser-result-template{display:none}.tree-browser-result .css-truncate-target{max-width:870px}.tree-browser-result mark{background-color:transparent;color:#4183C4;font-weight:bold}#files .file,.file-box{border:1px solid #ccc;margin-bottom:13px;position:relative}#files .file .meta,.file-box .meta{overflow:hidden;padding:5px 10px;font-size:12px;text-align:left;color:#555;text-shadow:0 1px 0 #fff;border-bottom:1px solid #d8d8d8;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;-moz-box-sizing:border-box;box-sizing:border-box}.file .meta ul.edit-preview-tabs{float:left;margin-left:11px;margin-top:4px}.file .edit-preview-tabs .minibutton{border-radius:0}.file .edit-preview-tabs li:first-child .minibutton{border-radius:3px 0 0 3px}.file .edit-preview-tabs li:last-child .minibutton{border-radius:0 3px 3px 0}.file .edit-preview-tabs li{list-style-type:none;float:left}#files .file .meta .info,.file-box .meta .info{float:left;height:33px;line-height:33px;font-family:Monaco, "Liberation Mono", Courier, monospace}#files .file .meta .info .css-truncate-target,.file-box .meta .info .css-truncate-target{max-width:600px}#files .file .meta .info span,.file-box .meta .info span{padding-left:9px;margin-left:5px;border-left:1px solid #c1c1c1;box-shadow:inset 1px 0 0 #fff}#files .file .meta .info span:first-child,#files .file .meta .info .icon+span,#files .file .meta .info .diffstat+span,.file-box .meta .info span:first-child,.file-box .meta .info .icon+span,.file-box .meta .info .diffstat+span{border-left:0 none;box-shadow:inset 0 0 0 transparent;margin-left:0;padding-left:0}#files .diffstat+.css-truncate-target{max-width:650px !important}#files .file .meta .info .minibutton.switcher span:first-child,.file-box .meta .info .minibutton.switcher span:first-child{padding-left:7px}#files .file .meta .info span.icon,#files .file .meta .info span.diffstat,.file-box .meta .info span.icon{line-height:0;display:inline-block;margin:5px 5px 0 0;padding:3px;background:#f7f7f7;border:1px solid #ccc;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}#files .file .meta .info span.icon .octicon-file-text,#files .file .meta .info span.diffstat .octicon-file-text,.file-box .meta .info span.icon .octicon-file-text{color:#aaa}#files .file .meta .info span.diffstat{padding:3px 6px 5px;line-height:1em;-moz-box-sizing:border-box;box-sizing:border-box}#files .file .meta .actions,.file-box .meta .actions{float:right;height:33px;line-height:33px}#files .file .meta .actions .show-inline-notes{display:none}#files .file.has-inline-notes .meta .actions .show-inline-notes{position:relative;display:block;float:left;margin-right:10px}#files .file.has-inline-notes .diffstat+.css-truncate-target{max-width:500px !important}#files .file tr.inline-comments{display:none}#files .file.show-inline-notes tr.inline-comments{display:table-row}tr.inline-comments .inline-comment-form,tr.inline-comments.show-inline-comment-form .show-inline-comment-form{display:none}.show-inline-comment-form{margin:10px}tr.inline-comments .show-inline-comment-form,tr.inline-comments.show-inline-comment-form .inline-comment-form{display:block}#files .file .meta .actions li,.file-box .meta .actions li{list-style-type:none;float:left;margin:0 0 0 7px}.file-box .meta .actions li.outdated-text{color:#BE2800;font-weight:bold}#files .file .meta .actions li:first-child,.file-box .meta .actions li:first-child{background:transparent;margin-left:0;padding-left:0}#files .file .meta .actions li code,.file-box .meta .actions li code{font-size:11px}#files .file .meta .actions li label input,.file-box .meta .actions li label input{position:relative;top:1px}#files .file .data.empty,.file-box .data.empty{padding:5px 10px;color:#777}#files .file .data.suppressed,#files .file.open .image{display:none}#files .file.open .data.suppressed{display:block}#files .image,.file-box .image{text-align:center;background-color:#ddd;padding:30px;position:relative}#files .file .image table,.file-box .image table{margin:0 auto}#files .file .image table td,.file-box .image table td{text-align:center;color:#888}#files .file .image .added-frame,.file-box .image .added-frame,#files .file .image .deleted-frame,.file-box .image .deleted-frame{border:1px solid #ddd;display:inline-block;line-height:0px;position:relative}#files .file .image .border-wrap,.file-box .image .border-wrap{background-color:#fff;border:1px solid #999;display:inline-block;line-height:0px;position:relative}#files .file .image .deleted-frame,.file-box .image .deleted-frame{background-color:#fff;border:1px solid #f77}#files .file .image .added-frame,.file-box .image .added-frame{border:1px solid #63c363}#files .file .image a,.file-box .image a{display:inline-block;line-height:0px}#files .file .image table td,.file-box .image table td{vertical-align:top;padding:0 5px}#files .file .image table td img,.file-box .image table td img{max-width:100%}#files .file .image img,.file-box .image img,#files .file .image canvas,.file-box .image canvas{background:url("/images/modules/commit/trans_bg.gif?faf4ca2c") right bottom #eee;max-width:600px;border:1px solid #fff}#files .file .image .view img,.file-box .image .view img,#files .file .image .view canvas,.file-box .image .view canvas{background:url("/images/modules/commit/trans_bg.gif?faf4ca2c") right bottom #eee;position:relative;top:0px;right:0px;max-width:inherit}#files .file .view-modes,.file-box .view-modes{font-size:12px;color:#333;background-color:#e8e8e8;background-image:-moz-linear-gradient(#fafafa, #e8e8e8);background-image:-webkit-linear-gradient(#fafafa, #e8e8e8);background-image:linear-gradient(#fafafa, #e8e8e8);background-repeat:repeat-x;text-shadow:1px 1px 0 rgba(255,255,255,0.5);overflow:hidden;text-align:center;position:absolute;width:100%;bottom:0px}#files .file .view-modes ul.view-modes-menu,.file-box .view-modes ul.view-modes-menu{display:inline-block;list-style-type:none;background-repeat:no-repeat;height:33px;position:relative;transition:background-position 0.5s ease-in;-webkit-transition:background-position 0.5s ease-in 0}#files .file .view-modes ul.view-modes-menu li,.file-box .view-modes ul.view-modes-menu li{display:inline-block;border-left:1px solid #c1c1c1;box-shadow:inset 1px 0 0 #fff;padding:0px 0px 0px 12px;margin:11px 10px 0 0;color:#777;cursor:pointer;height:12px;line-height:12px}#files .file .hidden,.file-box .hidden{display:none !important}#files .file .view-modes ul.view-modes-menu li:first-child,.file-box .view-modes ul.view-modes-menu li:first-child{border-left:0 none;box-shadow:inset 0 0 0 transparent}#files .file .view-modes ul.view-modes-menu li.active,.file-box .view-modes ul.view-modes-menu li.active{color:#333;cursor:default}#files .file .view-modes ul.view-modes-menu li.disabled:hover,.file-box .view-modes ul.view-modes-menu li.disabled:hover{text-decoration:none}#files .file .view-modes ul.view-modes-menu li.disabled,.file-box .view-modes ul.view-modes-menu li.disabled{color:#ccc;cursor:default}#files .file .view-modes ul.view-modes-menu li:hover,.file-box .view-modes ul.view-modes-menu li:hover{text-decoration:underline}#files .file .view-modes ul.view-modes-menu li.active:hover,.file-box .view-modes ul.view-modes-menu li.active:hover{text-decoration:none}#files .empty,.file-box .empty{background:none}#files .progress,.file-box .progress{margin:30px;z-index:101;position:relative}#files .progress h3,.file-box .progress h3{color:#555}#files .progress .progress-frame,.file-box .progress .progress-frame{display:block;height:15px;width:300px;background-color:#eee;border:1px solid #ccc;margin:0px auto;border-radius:10px;overflow:hidden}#files .progress .progress-bar,.file-box .progress .progress-bar{display:block;height:15px;width:5%;background-color:#f00;border-radius:10px;background-color:#4183c4;background-image:-moz-linear-gradient(#7db9e8, #4183c4);background-image:-webkit-linear-gradient(#7db9e8, #4183c4);background-image:linear-gradient(#7db9e8, #4183c4);background-repeat:repeat-x}#files .image .d-red{color:#F77}#files .image .a-green{color:#63c363}#files .image .view>span,.file-box .image .view>span{vertical-align:middle}#files .image .two-up,.file-box .image .two-up{display:block;letter-spacing:16px}#files .image .two-up .shell,.file-box .image .two-up .shell{display:inline-block;line-height:0px}#files .image .two-up .shell p,.file-box .image .two-up .shell p{letter-spacing:normal;font-size:12px;color:#999}#files .image .two-up .deleted,.file-box .image .two-up .deleted{display:inline-block}#files .image .two-up .added,.file-box .image .two-up .added{display:inline-block}#files .image .swipe.view{margin-top:-13px}#files .image .swipe .swipe-frame,.file-box .image .swipe .swipe-frame,#files .image .onion-skin .onion-skin-frame,.file-box .image .onion-skin .onion-skin-frame{display:block;margin:auto;position:relative}#files .image .swipe .deleted-frame,.file-box .image .swipe .deleted-frame,#files .image .swipe .swipe-shell,.file-box .image .swipe .swipe-shell{position:absolute;display:block;top:13px;right:7px}#files .image .swipe .swipe-shell,.file-box .image .swipe .swipe-shell{overflow:hidden;border-left:1px solid #999}#files .image .swipe .added-frame,.file-box .image .swipe .added-frame{display:block;position:absolute;top:0px;right:0px}#files .image .swipe .swipe-bar,.file-box .image .swipe .swipe-bar{display:block;height:100%;width:15px;z-index:100;position:absolute;cursor:pointer}#files .image .swipe .top-handle,.file-box .image .swipe .top-handle{display:block;height:14px;width:15px;position:absolute;top:0px;background:url("/images/modules/commit/swipemode_sprites.gif?e31d2506") 0 3px no-repeat}#files .image .swipe .bottom-handle,.file-box .image .swipe .bottom-handle{display:block;height:14px;width:15px;position:absolute;bottom:0px;background:url("/images/modules/commit/swipemode_sprites.gif?e31d2506") 0 -11px no-repeat}#files .image .swipe .swipe-bar:hover .top-handle,.file-box .image .swipe .swipe-bar:hover .top-handle{background-position:-15px 3px}#files .image .swipe .swipe-bar:hover .bottom-handle,.file-box .image .swipe .swipe-bar:hover .bottom-handle{background-position:-15px -11px}#files .image .onion-skin .deleted-frame,.file-box .image .onion-skin .deleted-frame,#files .image .onion-skin .added-frame,.file-box .image .onion-skin .added-frame{position:absolute;display:block;top:0px;left:0px}#files .image .onion-skin .controls,.file-box .image .onion-skin .controls{display:block;height:14px;width:300px;z-index:100;position:absolute;bottom:0px;left:50%;margin-left:-150px}#files .image .onion-skin .controls .transparent,.file-box .image .onion-skin .controls .transparent{display:block;position:absolute;top:2px;right:0px;height:10px;width:10px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") -2px 0px no-repeat}#files .image .onion-skin .controls .opaque,.file-box .image .onion-skin .controls .opaque{display:block;position:absolute;top:2px;left:0px;height:10px;width:10px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") -2px -10px no-repeat}#files .image .onion-skin .controls .drag-track,.file-box .image .onion-skin .controls .drag-track{display:block;position:absolute;left:12px;height:10px;width:276px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") -4px -20px repeat-x}#files .image .onion-skin .controls .dragger,.file-box .image .onion-skin .controls .dragger{display:block;position:absolute;left:0px;top:0px;height:14px;width:14px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") 0px -34px repeat-x;cursor:pointer}#files .image .onion-skin .controls .dragger:hover,.file-box .image .onion-skin .controls .dragger:hover{background-position:0px -48px}#files .image .difference .added-frame,.file-box .image .difference .added-frame{display:none}#files .image .difference .deleted-frame,.file-box .image .difference .deleted-frame{border-color:#999}.file-editor-textarea{padding:4px;width:908px;border:1px solid #eee;font-size:12px;font-family:Monaco, "Liberation Mono", Courier, monospace}.commit-message-summary-label,.commit-message-label{color:#666}.commit-message-summary,.commit-message{margin:5px 0 10px;width:100%;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:16px}.commit-message{min-height:100px}.too-long-message{display:none;color:#b44643;float:right;margin-bottom:-5px}.file-commit-form.is-too-long-error .too-long-message{display:block}.file-commit-form.is-too-long-error .commit-message-summary{color:#b44643}.check-for-fork{display:none}.check-for-fork img{vertical-align:text-bottom}.inline-review-comment,.file .highlight,.code-list-item .file-box,.blob-wrapper{overflow:auto;overflow-x:auto;overflow-y:hidden}.file-code{width:100%;background-color:#fff;border-collapse:separate}.file-diff-line,.file-code-lines{position:relative;text-shadow:0 1px 0 rgba(255,255,255,0.25)}.diff-line-num,.blob-line-nums{width:1%;padding-left:8px;padding-right:8px;font-family:Consolas, "Liberation Mono", Courier, monospace;line-height:18px;color:#aaa;color:rgba(0,0,0,0.3);vertical-align:top;text-align:right;border-right:1px solid #e5e5e5}.blob-line-nums a,.blob-line-nums span,.linkable-line-number a,.linkable-line-number span{cursor:pointer}.blob-line-nums{line-height:1;padding:5px 0}.blob-line-nums a,.blob-line-nums span{display:block;line-height:18px;padding:0 8px;color:inherit}.blob-line-nums a:hover{color:#4183c4}.blob-line-code .highlight{padding-top:5px;padding-bottom:5px;white-space:nowrap;line-height:18px}.blob-line-code .line{padding-left:10px}.diff-line-code{padding-left:10px;padding-right:10px;font-family:Consolas, "Liberation Mono", Courier, monospace;font-size:13px;color:#333;white-space:nowrap}.file-diff-line:hover .diff-line-code{background-color:#f8eec7}.file-diff-line:hover .diff-line-num{background-color:#f6e8b5;border-color:#f0db88}.gc .diff-line-code{color:#999;background-color:#f8f8ff}.gc .diff-line-num{background-color:#f3f3ff;border-color:#e4e4ff}.gi .diff-line-code{background-color:#dfd}.gi .diff-line-num{background-color:#ceffce;border-color:#b4e2b4}.gd .diff-line-code{background-color:#fdd}.gd .diff-line-num{background-color:#f7c8c8;border-color:#e9aeae}.expandable-line-num{text-align:center;padding:0}.expandable-line-num .diff-expander{cursor:pointer;width:auto;height:auto;display:block}.expandable-line-num .diff-expander .octicon{line-height:20px;margin-left:auto;margin-right:auto}.expandable-line-num .diff-expander:hover{color:#fff;text-shadow:none;border-color:#d1b753;background-color:#e6c856}.hide-line-numbers .expandable-line-num .diff-expander{display:none}.add-line-comment{position:absolute;left:0;width:25px;height:16px;margin-left:-25px;color:#4183C4;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.file-diff-line:hover .add-line-comment{opacity:1.0;filter:alpha(opacity=100)}input.tree-finder-input,input.tree-finder-input:focus{position:relative;top:1px;border:0;padding:0;outline:none;font-size:100%;box-shadow:none;min-height:0;height:22px;line-height:1px;vertical-align:top;-webkit-appearance:none}.tree-finder .results-list tr.navigation-focus td{background:#eee}.tree-finder .no-results th{text-align:center}.tree-finder tr td.icon{cursor:pointer}.tree-finder .tree-browser{border-top:1px solid #cacaca}.tree-finder .no-results{display:none}.tree-finder .filterable-empty+.no-results{display:block}.wiki-actions{float:right;padding:0;list-style-type:none}.wiki-actions li{float:left;margin-left:7px}#wiki-body .markdown-body{padding:0 30px;margin:0 -30px}#wiki-rightbar{background-color:#f7f7f7;border:1px solid #ddd;float:right;padding:10px;width:230px;border-radius:5px;-moz-box-sizing:border-box;box-sizing:border-box}#wiki-rightbar>*:first-child{margin-top:0}#wiki-rightbar ul,#wiki-rightbar ol{margin:5px 0 0 15px;padding:0}#wiki-rightbar ul li,#wiki-rightbar ol li{color:#333;font-size:12px;margin:0;padding:0;line-height:19px}#wiki-rightbar ul li a,#wiki-rightbar ol li a{font-weight:bold;text-shadow:0 1px 0 #fff}#wiki-rightbar ul{list-style-type:square}#wiki-rightbar p{font-size:12px;line-height:1.6}.has-rightbar #wiki-body,.has-rightbar #wiki-footer{margin-right:280px}#wiki-footer{clear:both;margin:20px 0 50px}#wiki-footer #gollum-footer-content{background-color:#f7f7f7;border:1px solid #ddd;font-size:12px;line-height:1.6;margin-top:18px;padding:12px;border-radius:5px}#wiki-footer #gollum-footer-content>*:first-child{margin-top:0}#wiki-footer #gollum-footer-content h3{font-size:14px;color:#333;margin:0;padding:0 0 2px;text-shadow:0 1px 0 #fff}#wiki-footer #gollum-footer-content p{margin:6px 0 0;padding:0}#wiki-footer #gollum-footer-content ul,#wiki-footer #gollum-footer-content ol{margin:6px 0 0 18px}#wiki-history{margin-top:14px}#wiki-history fieldset{border:0;margin:20px 0;padding:0}#wiki-history table,#wiki-history tbody{padding:0;margin:0;width:100%}#wiki-history table tr,#wiki-history tbody tr{padding:0;margin:0;background-color:#ebf2f6}#wiki-history table td,#wiki-history tbody td{border:1px solid #c0dce9;font-size:12px;margin:0;padding:3px 8px}#wiki-history table td.commit-name,#wiki-history tbody td.commit-name{border-left:0}#wiki-history table td.commit-name span.time-elapsed,#wiki-history tbody td.commit-name span.time-elapsed{color:#999}#wiki-history table td.commit-name a,#wiki-history tbody td.commit-name a{font-size:0.9em;font-family:Monaco, "Liberation Mono", Courier, monospace;padding:0 0.2em}#wiki-history table td.checkbox,#wiki-history tbody td.checkbox{min-width:24px;width:24px;padding:3px 0 2px 9px}#wiki-history table td.checkbox input,#wiki-history tbody td.checkbox input{cursor:pointer;display:block;margin:0;padding:0}#wiki-history table td.author,#wiki-history tbody td.author{width:20%}#wiki-history table td.author a,#wiki-history tbody td.author a{color:#000;font-weight:bold}#wiki-history table td.author span.username,#wiki-history tbody td.author span.username{display:block;padding-top:3px}#wiki-history table tr:nth-child(2n),#wiki-history table table tr.alt-row,#wiki-history tbody tr:nth-child(2n),#wiki-history tbody table tr.alt-row{background-color:#f3f7fa}#wiki-history table tr.selected,#wiki-history tbody tr.selected{background-color:#ffffea;z-index:100}#wiki-history table img,#wiki-history tbody img{background-color:#fff;border:1px solid #999;display:block;float:left;height:18px;overflow:hidden;margin:0 0.5em 0 0;width:18px;padding:2px}#wiki-wrapper.history #gollum-footer ul.actions li{margin:0 0.6em 0 0}#wiki-wrapper.results #results{border-bottom:1px solid #ccc;margin-bottom:2em;padding-bottom:2em}#wiki-wrapper .results #results ul{margin:2em 0 0 0;padding:0}#wiki-wrapper .results #results ul li{font-size:1.2em;line-height:1.6em;list-style-position:outside;padding:0.2em 0}#wiki-wrapper .results #results ul li span.count{color:#999}#wiki-wrapper .results #no-results{font-size:1.2em;line-height:1.6em;margin-top:2em}#wiki-wrapper .results #gollum-footer ul.actions li{margin:0 1em 0 0}#wiki-wrapper.compare #compare-content ul.actions li,#wiki-wrapper.compare #gollum-footer ul.actions li{margin-left:0;margin-right:0.6em}#wiki-wrapper.compare #compare-content ul.actions{margin-bottom:1.4em}#wiki-wrapper ul.actions{display:block;list-style-type:none;overflow:hidden;padding:0}#wiki-wrapper #files .file .data tr td.line_numbers{width:1%;font-size:12px} \ No newline at end of file diff --git a/public/css/style-ie.css b/public/css/style-ie.css new file mode 100644 index 0000000..588b1f2 --- /dev/null +++ b/public/css/style-ie.css @@ -0,0 +1,3 @@ +#nav { + padding-top: 18px; +} diff --git a/public/css/style.css b/public/css/style.css new file mode 100644 index 0000000..d9e1016 --- /dev/null +++ b/public/css/style.css @@ -0,0 +1,220 @@ +body { + margin: 0; + padding: 0; + font-size: 12px; + font-family: Arial, Helvetica, sans-serif; + line-height: 22px; +} + +#header { + height: 60px; + min-width: 1150px; + background-color: rgb(248, 248, 248); + background-image: url("../img/hw_000469.jpg"); + border-bottom: 1px solid rgb(255, 255, 255); + background-repeat: repeat-x; + border-bottom-color: rgb(255, 255, 255); + border-bottom-style: solid; + border-bottom-width: 1px; +} + +#bound { + overflow: hidden; + margin: 0px auto; + padding: 0 0 0 20px; +} + +#logo { + padding-top: 9px; +} + +#menu { + height: 46px; + min-width: 1150px; + overflow: hidden; + width: auto !important; + margin: 0px auto; + position: relative; + background: url("../img/hw_s_221828.jpg") repeat-x scroll left bottom rgb(248, 248, 248); + border-top: 1px solid rgb(215, 212, 207); + border-bottom: 1px solid rgb(196, 198, 195); +} + +#menu ul { + font-size: 18px; + min-width: 1000px; + color: #5964a1; +} + +#menu li:first-child { + padding-left: 0px !important; +} + +#menu li { + display: inline; + float: left; + padding-left: 35px; + margin-top: -5px; + font-weight:bold; +} + +#nav { + width: 300px; +} + +.active { + color: #5964a1; +} + +.inactive { + color: #c0c0c0; +} + +.passed { + color: #008000; +} + +#title { + font-size: 20px; + margin-top: 13px; + padding-left: 20px; + color: #5964a1; +} + +p { + font-size: 14px; + color: #5964a1; +} + +a { + text-decoration: none; + color: blue; +} + +h3 { + color: #5964a1; + font-size: 16px; + margin-bottom: 10px; +} + +h2 { + font-weight: 520; + font-size: 20px; + color: #5964a1; + margin-top: 8px; +} + +#content { + min-width: 1150px; + min-height: 200px; + overflow-x: hidden; + position: relative; + margin: 0; + background-color: whitesmoke; + + /* IE10 Consumer Preview */ + background-image: -ms-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* Mozilla Firefox */ + background-image: -moz-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* Opera */ + background-image: -o-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* Webkit (Safari/Chrome 10) */ + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(1, #CCCCCC)); + + /* Webkit (Chrome 11+) */ + background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* W3C Markup, IE10 Release Preview */ + background-image: linear-gradient(to bottom, #FFFFFF 0%, #CCCCCC 100%); +} + +.main-box { + padding-top: 20px; + padding-bottom: 20px; + padding-left: 30px; + padding-right:30px; +} + +.left-side { + float: left; + width: 48%; + min-width: 460px; +} + +.left-side ul { + font-size: 14px; + color: #5964a1; +} + +.inside { + padding-left: 20px; + padding-right: 20px; +} + +.inside table { + padding-top: 10px; + width: 100%; + border-spacing: 0; +} + +.inside th { + text-align: left; + padding-left: 10px; + border-bottom: 1px solid grey; +} + +.right-side { + float: left; + width: 48%; +} + +.right-side table { + padding-top: 0px; + width: 100%; + border-spacing: 0px 0px; +} + +.right-side th:first-child { + padding-left: 0px !important; +} + +.right-side th { + text-align: left; + padding-left: 10px; +} + +.right-side img { + padding-left: 30px; +} + +.continue { + margin-top: 20px; +} + +#footer { + width: 100%; + min-width: 1000px; + overflow: hidden; + position: absolute; + bottom: 0px; + padding-bottom: 20px; + text-align:center; + background-color: lightBlue; +} + +.unavailable { + opacity: 0.5; +} + +.loading { + vertical-align: middle; + opacity: 0; +} + +.go-back { + font-size: 15px; + padding-right: 10px; +} \ No newline at end of file diff --git a/public/img/add_button_16px.png b/public/img/add_button_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..62f1806e5ea64d83c2bce5a3dc37a2b3d863660c GIT binary patch literal 523 zcmV+m0`&cfP)WdKxYbs#Y_AWC&^ATls9GaxcCIx{&sGcq78FgP$U-ukrf00007bV*G` z2i*n^2LU&!0;LH6000SaNLh0L01m?d01m?e$8V@)00004XF*Lt006O%3;baP0004E zNkl1n*YyqcVxoU9C3z`uY07(WBS*RNj}WoBm1hD!i7v(KA1 z@9dj5Z~p)N`=GO{Dv;^X6kqR`9B3(nrMWebKuATRJD8!%_i95_2A zB?X0#tPbu15Cd64L_`F|24p@_1`r#Fa05Pl`t%uBK&@T77Hc5>{{5Tb!-o%VL2Ra% zFJIpO@#6>4i3o&m-n{wo)vH%)!3Ml|@gncQfdh|#>6|FdA3uI%xOVN@(VCi?(;x#F zK}36dyB08IEfEtFlLe+s5p3Q8YW@v$?Tfc>-yQ>Iym(+<_{l&G001u_W?qWSt6l&A N002ovPDHLkV1ha0&(i<^ literal 0 HcmV?d00001 diff --git a/public/img/ajax_loader.gif b/public/img/ajax_loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..1fe22daa21f27e18a389b05f8ab201f4bd5c06bb GIT binary patch literal 19110 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 z zg4sbY6J~Hs1U!Ttz>&y>v|+)Ze@~BfK=VIU+&{RbD5TdvxTW~Ng3?xc zZ!Yv)@n76hP-)c#x0K9+ZoZJgVXcJzfl98PPs7c97t>=3|H$-A-q_^ALdWd#%Io>X z^#KIc>dwmA#=(2o?$PxA*OPKc&iCJ4$3MYtLc|IiF)WzY!r7)WODGV*Ju^+L%oYrx zp>?k8r8en~PF4)lfK}(_g1AkSq;AJ$_a~Q_``g1!d9~iG!zT@VX$$IJD*2v9$a57A zXMrb}*{5lXs@?UKWIeYAZkxrL7PY5()0a#>h2XuuqD&5nj((=m zyXNoPQ#CG&L+@IS_lX_hm#)2U{rPQUtmN*e_wUY*4^{>;uYGv``|RY~_Tr}xA1=5w zm;ezAWpE_o;CzKde{$IkVgO1@U@1__%yB7*$)V5|>*=wv6pVf?z!l7uQuRyBm587B-rVvJT}yIKZQ@3`Ex;e7S`GC%q(2^lYh_&S zC#;A0jfURGdsChkggLT3v!e`4?JdL`saQDXMkc{E^SJV{P9dpk&GrTHe$9d*;t{8| zMHw8S&V|LPTehs_UOwujo`b1dG4<79!e!TnXZ$M&3#Tg;?R$mLGBtFGYn2?|z)pnu zaC1QIxXPIwbM3R3-TKM$!iNn)b{JvkN)mD}bTz|e8CrX1c&}wEX~V6RYf|k|2-rW= z4y(DLAAr@~cpiwA+|b{6CAy(6f+dHx-A9p=r@)e(Q07=Uq){_|3~MMq-HEecE7J5A z`~?^CH#}ixlyUXuD^i}rlIC%`iBy;0QN3)SkQkvBLAqR zzZt*~avc+3)cd3)jtoF;SNmP1wP*o$GRJ7AGniwI0sv zVOXbXN^K(9m3SaC4O!=I<_PLf+07zGoQvFH+bHM4Of zA&rBq>&C=5sa6q=1hyw#JSyTn3iK;a32bqO+C}@%Yye(qS8ZJ^-n$jA8GUz(u=}%x z-JrCgB1l0D6@wD<_ zQMGz*8caeHo>)&a`wU&04Jjz(8&NClF&O54s*pblF0P%74T6=H`=g(Rq|<<@>n8i# zW1BLv*&czWND<_1ld0-er6~$5up%amdQIV|4NzN##ar86&5eW97q%11go&X&$*@j8 zJFceKWnihPG*|8xSrGtwl&d!UT>r(rteCKvvt_ct4^69#i4cm{YHbW8HMcv$;OjK# zb0f+|udrn5fS;~i%{zLrWV?RtSQhqIo8Z^z^=e1Vd{LZQ|J{Y*ClWLX2WtM*DaJr( z76v2mQRdM2@MF7q3E+i zU4Lyb?A_LkN|9har8}cc`IO0LYf}<_3(^2k83N@R}p& z@*{0A8VJE+KHv+_4NfnL#wYJ%>+D{MG;3Y6e0R9X^3J7>uGFPgW;~{clDh5YvCEnI z1Ix(od!$XAUY`k?+DzuLguY{PyjSIcNRI_;HQk!u0V<RLzkYtLrSP2D=}~W8RY$`#^IXKiQIJ&b^Fr}WW9k)5=Qaa}gFG(Cr8$0nJF}x&`7; zxJ^zjumlsaQAMQMsF*Bsq5eI0Faf(4D(vPd5tct`)h;Ku}J)6$-1Y1q)`sp$?g`LPAbnWg2G915F- z4Ns-j3->*Y(?WG~LvjE3WK~c1=&0g?m!|9>=H9)^MGn2-rNdPbtT2lF3tpP5;Iamn zR_*n+?4IZtJNpqG8hCHK0I9W)X+Z9Pr{KMtJT;wph8%SETjYgp;U6M)tjx>6B@Ls*ElaA&Edsrh+*X?l3h z=h>Dw4817>4Mvi!*vz`vN$-bsgpf;R%%+W(!}CJ9S^aJDBo;+jcw9K>?D~}l?Bb=T z4Vv}khHpC=kf~ZcB|#T<^;b?RJ_!**-Q&JblUKjW_saufec0)}%Jei4QWwjW^_4)5 zU%k0Es@JoQvmDReJJey?!Cg5b?u~XurV;n=gp9?#=wwk4%k4RX7N3O}*$sYh3GVwH zA}>(2Xh~9ekf|!IWBVCvece64f^_t07nnTt2J9wv{)(mp{j)?>Hs<{J&a3QRB)C_c zMznzprHKL&02)dg^ipt(3j!6RG{us7@f_$woW~21ROYJ!2H;CmSv=>r>W#%SVw~w7 z@QBl(@vDhm7%e2T+6)l%!t@l3A%ocX-iLyR)j;fMRhHx8qG11y3Zsw8Re zFMO$V4_GBy2(4uv$h`4Y0ZD>_0s?r7!Nb*;2TnzfB7gy&kdvlJii}*nztomjTUrS! zD5L=}BD;?n(M2`pHW$5eMgmkaS2W30S_rqn=G0{u6Cjn)A~qJfL&N}x8p^r@uT0}) zd(_{q1_li&vSLXJb5XN2JU3nXq0>oc4uULL1`Ya*Fqbgs+oWxglzjYDGJR|_E3)Yj zwoNF`Hy&Y(JskoA^}i=Az(UVM@88KLkxOtd>&P&{o?Gcm9Nh1$mll^Olh3fjxXXU& zsk%&)@bha9=)|WVtP&g8k->jnP3TXP^hH?Uvse86Wgrkjnmok0NRT|mc3(mw<#i$7Q*h(540Y0?N2A&w_VOwcqN$-`=6;MJZ0DtPG)`;bYrM>QtTEUK1UrotNkB z_$!9no)zpWt2b{)5{^D>&rAM5&{s4J%|U8g&u4ML`;m)!hR$VJ53PXS+phNFYU z`054s&-+HR9g==N zHkZ{%xAtwc>>n>>Y$%E~P@PCtW2@Lu=N2@C!ooiBDKW{e1Tc8Kp?Is>UW0oS+^@qq zFAsD&)E>C@3NMS_>`~?wgLt{+WYPv*S87mo3Dcgj9)S&GM8FUqkMLMVT$=_~uEH0AO(-QH<&(wE-j9=JpdV+TzWNi%lTvmQ0_PNT83BPtw;=51U&8%R z3YdrZ7uCN=AVxM|FbWTbr(i^=ssAx_l3WP5!GFYX|Ft^ukHwP+!N7kko_Jquk|h1L zcoLtI`*$PtHxw(oSUicVsJm#Sm3FON-OcYW?Eitz3jvq#mw>C(yAW`Z7XofEm85ZY zb$Fh*u^{+mr)Pchpr5mF_j~WxlkvMhewFS21n%{1Xp2vLz{1tp1$&2Yvy>E!$+DkBwtSACOj02buJCLF6n$mpJ9mVtpFB^b z<|*9%JdRT2wmrEKjEpx{cSeRc?#84iZ`AF{@2Uw`>;Q)-JCo`AZ_G0k93tsUneV-I za3Fh-`lNX}o6IYJ3X>tQ$NV7CZkc^r3U z9Ai_}`UUg7MK4xMvfWthi!w44ovnFG^*%$(XFw%ISB6rZ%c?j~E})hldM;6|e=N93 ztL_-@RJC_Ix>k#pql6)!v<6(mcsg19>!ystm+NMdrc_IrvBGW*Jg@cLLZ~|RaLqdz z$mQleKRBlJkLT^=S1eOX*jKDmEx1<{Q>+_)BvY&+ufXInUjXngIklvOKgU?Gu277a zBo@s>){fz@ z|06~7C-<`TVh;Mp{+8_%Y0tNB#co|s`gfBnBc}N;tq+!nvc`;SdwCq2 zn_^P?KawmC50%Z2|HNz@_1%LkWvZ%)LAQ`5L2YfX=;(xaMwge~p=fv|LH9?}BO_=k zL^jObkUF8#Hagr26d(H{>qBe#9-)+Q+ie1@`y5=L+aN z)VnuLwoI3sh`4^&^QZZZWyRpzx@9BdH(HY&vm^W;i%RHp z)RniQ?bKH50&!(`U+M}`mgn;H*}iOIFhyhqZLN6R;?v160}X!h7{2M|r$N%Q?k*n~ z5tU$zm>wHSTebQP2eVF1Ik!4#&t6Z-Z+zQ?nQ5UW5v&MUoEfc<&mnP7kZajW8=>SF z4U&LbTBCwkHLDjb)bf?Gz_&UVXB_=v(rvbG^)XHV8Hx}5sxXqm)%ZI|US_p{i~=^! z9|F4qhX>#ShezUle)C44q6rvBZ(YP-&uf;uOnZ*fejTUE+UFZ|BR-1>-JvUJ ztczeEkn!Xs>)`JB!H`GT~K36xa2=}vldQ@EOdw^ei4MRCbtL4A-2`8{>qv;J(5 zRJ}d3z-9ZwEClr&yU+m1BlE(PoOeDkLBR=JQuqG1Y4-n-FZ{nx(OjuXfQ_vH2pcgK z19(m0)JW^?hTS_rm|=(WQbvQ)DljeGFCl=^QREON)T)T<6_~a4Cn;6IWBLV1#r=We zC_rkEnhje_LcT~Y1>#9j4E&@aht4VpMj0Lf{KMozAU*Bfw)`{()b|Om))=4wtbvu8 zg!{bM0N=eA`8kV*+}LXzqJt5Hx@a3NW+8hFYaw=|7PxthZ(fewFBX-*WC5Kh`9Tn7 zXQMB;;Dr|++&b6Ti%`ZCf#P#Y-{deKrTKP1SIZtiGF|2hGk6kIz7m7=N}mBDO3rm# zUVxrYZ?QJKnCIt!rBbTwZZxT0^H!p%MZ*@a{noS1DJ4YXmY-?#^UYGy(~grWC9?yw2QBK; z5igUTnjM-oC}_XI_+;mpj+%KZE8ec~7|0pl(PIP}6#Ab-2kEAtG_+vSuX)bpn10nG zRndO8|8#YL4v~;tboO%3HwsLEIm*4mNJRNjdzh{|CV#-#8hHxzj)QH@RkX`0JT}M1 zpjSVu=zZLON})UsyUM7jhl>b#qXynRWh|s>6~hMi1G@+x0aQ$k>9R08jbdGUpJ%Ko zT)>(n@}!B}OYeDnhi!pcOcTcw=T|SrtP72X8|fUvz;QK}NOh9lM&5EWs))Bkdc1&C zQlwyH4h`m8xkIlBI|iaRiy1c8#F6*_4ovR3#fk(R85#h=030dBKf5Q>1%nXuKN*Cu z@Gzv;HB%E&FUE-ff~nq`-Sos~d8#^I|C>QbR+7)I$Wr9^i$O>>k*#d;ly$pc5bEe8 zTf04PTnr&^6nc8321mz&tUvXr(vQy$Fl&77xiYsxkRyH)UEL~CUhlDD-adSb+WRE_ z?Ps##j~;2*DVUFDY(Iq@2S>gW^l{a04>o3ES@|lyL>JmUdV{0 zlEhleWw2OJlw?d%y2+@8xLks&8XJ`8qNduFMBF=nzx=etp!f4DkK~U(pYc{mQpluC z4ij%Ng;y*iAX1o>60NR!F-a1#X@-DD2Jtt_zr+hJd@K>Dz4r`tRGfF0J@qEZn#=G+ zQMsQcf^|YI-&t*P%?vLx7T==q=I4y$Nj`ab%4?a7zSP@msn1??anhagQrz7hu6NTd zzFsgVD)C28Mwz?9pX}`|59Y6@no`xmzL`2lNA*V(Wqm4gA2`w8pw+vaOi-;E>}&aW z7XLsxw>qvm7TP?Pb6`#i~hj^ z{lDBj|ARpwX9Qy_Xil)83Lrrod(Q4<;Jb}rwTY;LP|c>cp*WHa1j>Lk_s4x4ROq%+ zA$h{#AVsG$j!bIZm9!)Sfo|_ttTDipu=$`ohFKVAKnU$i>^LACVS@n-rl1>~#s zl*C^|sxkMmPj@mt#9;1&3nP@)IIxw>q>|_5CjdW&;tdHs(~dLO%IA1kQ%u#gBFTdPg)_0-=x5Cmb>?RK7Cg*O=4SA*lEK zt`jXB{^Z0~cx{Xd*~vWliaeSrsr;pDG1n&cq+mqT?bRLS5s2dF2430gMl@3kvves! zWK4%#ICGC1U)JQMNUV%+f=}A`uV`T}p(JmDZ3rMrJXrd@&_7Htk_&|LAKLAI1O}1+ zxB?LWucHCse;ooSEi1b?1W@qz(SUG6vGUe(O~b~&7}RjPcfI8nU4tKo@_YJ5J?%bC zex3@^8=E6cFA}>*TINQ@NR~FYY6ZW{32uKqjOQ%b8&&1}cJ?du?(v+(5vz_djNl{* z7n<{4#n*BpxyvsU@onl*rnVaiNmVO#k$uWxt}q(rpjd&R#2sGYya5Yg-wTAY#?0W> z1wsk+thsT4P+t0OFT+`QJxiUF&AQpqkv-2Khvf<4M)8D_S;ZaCFx8S91sttw)COI*>y-M#MLzTAa{F`d zNfm<_(-sewyMt-8#rEaDt*K`z2QNtV9QhcP-My9kQt3Er=A8>$nAQvV0<)GPdc z4$s$bOIy2 z#nc!BGi-$}n0?{UHiV0kge$aGJ_r&fPLT)=7i@;Fh#0+-&k>Ya2w5=}+i)B+X8b81 zW~z!{M#O4``Cn)^WrZ&Lc=am^WJt4{PJbbkf?txX{y#$~?Rfr@MnoL@f1q2g<*+%e zHaLX*Z*&XkT2+C=V{86GwTHn@=x{6GNQQsPL@#}bbyHuiz z_ED)s_p>WIkGs%|i3h#Z$;!7t0tMt3V*hgKp%r&$>A~QmHW#Tj`42J&L+3w!CBZT4 z!bg_J45IrZDyF5i%?2NMLEt|sWfhNV{;vRQ1(f>M8iCc41ejE#WkCIx=r`6PKc+q@|{(sHv41WLtHwu&_=$scu`(gM#Kp$P$cbb%z|F5m7|GJp)YX+Y&e?S|QP$qy;M7#i+RkbX;pyt@s0B;q z+Gp(Z^!1K8@a0YR{QdPBf4jSa?+ zAT8nJm`z8>lPDPhB$mgA>Uhbe|S`*O5t zzX~>#0t+(CsnvOBqymF-wW~UvT4T{z;I*u`pkZUdFw2%&(zLJth-7F>_ZU>TuUgdI zOAH9!Iz9Ocz9r;u4Gn`6r^c_iL$^dqmtn>~NznQ+lyfPavI zg;!?;4px9rc#W1|V)ntM+Jl1a2iJTQ?ge04hh@l@fp9(MAzf(URoRGjy@eNYD7JMM zUSmAhB3pi?HX~c8;RV}`Wii0TU$*gBmWptVCuCPI!iC=dkzLieB9m9;2$yqEI_275 z)Kz&DZTxB3)NXhQxQhS@tdIZzUM9mGUSj03!Vm-4A*Y-QAV5Nz#Ds^}lD2@b!JL2s z`T+-c;*xxfa@q2zzNcs7eUQ zCab^!&NdPsUK6S!LbcTrutK(qNMYQLwIB;_wL_3bt|3Y^#$hzJD6lTL1Bf8NyM|;i z#b#QGxaht2Mj#x&ge-7{R43XZ0Ko)*a3{iqM8U-WP%PdO0K^0%AOXdMw7?)oRN@i? z#{>_s0IMJ~P(=_NWqFGaC`0T3p&$za0UHaUiwg%ebNqs^Ip2W=bL9l7ivSS>4RHXS z7JbJI8)akUE+sh4u?7>cOz{O!L z>c9ob8w0=zyf?pTu+bNj!4THZ8h{baX7A?z+1+odK-c2y0ze7Xmmg>hKbo)V`CHTkG|<0CMF0r_yu||$P{2n?EP=L20RI{Ys0Mrtf~q)xy(l;* z)BzBKrJ#TjN=Lx~To8n)NB{;nXa};Ouog(*T>l(^yceEgbR_H^2yBRp4ydbp^x`2d zKv28p1wc|l%!L3%ki*VFAc@47ob40yNN`MGgPTG}CBw16O$Fd6gqs9M0!-y7J%%zJNWi2WBJjaefEGoD<#VNP?1QCB1* GgEatI(+xQQ literal 0 HcmV?d00001 diff --git a/public/img/features_graphic.png b/public/img/features_graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb4581100158f9958a936a325be6c5d6c43fecc GIT binary patch literal 39579 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 z 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

>|dcNP{8i=CKV_WnIMR1xRv5N4`0BsBO9hZ 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 literal 0 HcmV?d00001 diff --git a/public/img/filter_clear_16px.png b/public/img/filter_clear_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..684f273d13bc4aec2d743f2aba6767afd943d968 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Iwh_VCC){ui6xo&c?uz!xv2~x z8Knw_#tL4gc?w1bK!%Z_m9eFjv5|tVfrWv=y21s-(}-tXW(HJs?7lk zaTa()7BevL9R^{>*8o|0J>k`5!%9978H@B_~LHY7m_Lpplt< zM&lG#f!PcnxfSdlKX_0uU4yw{*4oA^G78rmCeLCzBI?k*PlJYgJZS$l`{A{<(L9eHJxbs) zVmRW?q_-nx0aNmy|NrMde0aD$VfOnwJDHy;GxEl;-DzysQC4oAG)d@28Y?U7mkm3b zuQDXOsACCIcgUIWY`T8D(VmKrO%FdmKmVfb%>l{Y3lSF0%3=-)oEMbtY-E_Shl_WK zbc9LsB}cYh3j3yT7@c72n9uN0E=IHP0V9L(YR_#8Yx#}gTe~DWM4f$4{05 literal 0 HcmV?d00001 diff --git a/public/img/green_check_16px.png b/public/img/green_check_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..e09bb4e796f67c9c093a4777dd8eb07a7211c267 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Iwh_VCC){ui6xo&c?uz!xv2~x z8Knw_#tL4gc?w1bK!%Z_m9eFjv5|tVfrWv=y21s-(}-t(G&<4W|#;R z;whDgIEGZ*N=}gY)G$%yD!YVC z!xD3W|LmJiIXLOKWU;JV&7Q=&A&sp~<54Wb#XT~onls80emKuz6gazk;hy^rZ(7$# z?iUv@JMEBb=6t;;>i}b$jKWQxP#KmZ=N#TJKaFNItv`^)zlpn!VI#woyX;5W0?wv7 zoE0yy6fx!DGdROOi8J7yw8B3At$+FTm}gx0vDPCeam8B;)8zhEW}eFn*GzRd%P!Go b&%p3`hgy=tM3D}lqZvG1{an^LB{Ts5M00Ol literal 0 HcmV?d00001 diff --git a/public/img/green_check_large_16px.png b/public/img/green_check_large_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4b996c49959abaec1d34daed07e7d04055132b GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Iwh_VCC){ui6xo&c?uz!xv2~x z8Knw_#tL4gc?w1bK!%Z_m9eFjv5|tVfrWv=y21s-(}-tv#>Dx9WM$L z;w4@r`*Sn}@N$Z^8TnjBK0=J7rJ(<~b6_!^aapqvHzCrjIrP-U``j zdOQlVzB^aGZ@j^`;wP`qtX7Y+HUak5O4-Li+5{DL%Du{&@JwOBGwBznA{K1ZX_xvY z|Hg%F!~bc{&eAMu45s-9()c}sjRm9?I4uY=?|LWVT5#F!Aw}H#`wC+4()-y@7xk z1CyH4M#p;^Oj3UuCorzye93UQW=A3)k2pu>GGHV)2%4z`Y6~R+LxI85)z4*}Q$iB} DC(DfA literal 0 HcmV?d00001 diff --git a/public/img/hw_000353.jpg b/public/img/hw_000353.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2b4fd88e6b749c97b8310277d58396cfc53760de GIT binary patch literal 8029 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 literal 0 HcmV?d00001 diff --git a/public/img/hw_s_221828.jpg b/public/img/hw_s_221828.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60cf5cac134f25c5fa54827b3e205d3b92a028bc GIT binary patch literal 349 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 literal 0 HcmV?d00001 diff --git a/public/img/info_icon_16px.png b/public/img/info_icon_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbea00d54a5d1ddda17eb2ed90ffeb445e710e8 GIT binary patch literal 665 zcmV;K0%rY*P)WdKxYbs#Y_AWC&^ATls9GaxcCIx{&sGcq78FgP$U-ukrf00007bV*G` z2i*n^1rjp51H^g&000SaNLh0L01m?d01m?e$8V@)00004XF*Lt006O%3;baP0005- zNklK5 z*xxp_t1ELNGk8N7`WcXDf%7f2S}XW`XYFW#3(v>W$B#XusnRr!jOLIsz&s9SH9@u7 zp7{CWlQ^&*puEuN7m#q~)XDdB`BIUy6re!0{2;1r2mZ$TH_^0aq=?mV8}b9ABTwnd zYy#%@bMPPK4}~}&7>x1Klr}iD)QuZv4$hsu$kk)Kb7)h+hx?jfx|SclCLND=1w=M` zU1lEYwOwrzDtkO8s_FpxK)#?EnfWL}E>}Px`ZCv>0V=zN)#@%t7?FT&Z!^~iIK{eg+*{oRsr??992+2Bj%MIEuf$IMcN|uAZE+0s zCld)+y`#2OC-PoKGx&J>18sf(!dx#ou-I1!VR$b0y@Pl1Kd3|zlnb-*kZ*pSFiuYv znH;FHon6@Mh0(UF8zkJvA(!g5*?w(_!t7hI-zb9E35}4}w00000NkvXXu0mjf^vx-Z literal 0 HcmV?d00001 diff --git a/public/img/openstack_welcome_graphics.png b/public/img/openstack_welcome_graphics.png new file mode 100644 index 0000000000000000000000000000000000000000..534bf96a79c205eb165c20f920aa06b1cbedd0f0 GIT binary patch literal 44783 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 literal 0 HcmV?d00001 diff --git a/public/img/server.png b/public/img/server.png new file mode 100644 index 0000000000000000000000000000000000000000..99e171b4a3a5c3d403572de05aaafa7aade6d16a GIT binary patch literal 1687 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 literal 0 HcmV?d00001 diff --git a/public/img/topology_description.png b/public/img/topology_description.png new file mode 100644 index 0000000000000000000000000000000000000000..b130e7d7a99f2e3b560f84c3a0110ed1796e252b GIT binary patch literal 43201 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

&4fzSy4>itD)s5>Ap>QvS{c*(=7 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 E05EHMH2?qr literal 0 HcmV?d00001 diff --git a/public/img/yellow_arrow_right_16px.png b/public/img/yellow_arrow_right_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..7713b3cb47410655ef8826cedf10b2170c21a6af GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Iwh_VCC){ui6xo&c?uz!xv2~x z8Knw_#tL4gc?w1bK!%Z_m9eFjv5|tVfrWv=y21s-(}-t6=d4>eYq%5 zh_k>WvY3H^?=T269?xHq0u*FPcl32+VA$Bt{U?zX$WQTfaSW-rm7E}P<-z~T|4ahM zmbY~_Nd9%W(|%sSiLHS_+0I#Fq2FKsp8kd%9Ty88vjoL9TvuHp(Qs8Di1z@)5~&73 zJ|NFjK=R`&ha-GpXOHY+Se_=3ptxYCz#AW#S?uf#3@@rQ_Uk*F`~%v@;OXk;vd$@? F2>{WoRg(Y! literal 0 HcmV?d00001 diff --git a/public/lib/d3.js b/public/lib/d3.js new file mode 100644 index 0000000..d35f274 --- /dev/null +++ b/public/lib/d3.js @@ -0,0 +1,8981 @@ +d3 = function() { + var d3 = { + version: "3.3.6" + }; + if (!Date.now) Date.now = function() { + return +new Date(); + }; + var d3_arraySlice = [].slice, d3_array = function(list) { + return d3_arraySlice.call(list); + }; + var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window; + try { + d3_array(d3_documentElement.childNodes)[0].nodeType; + } catch (e) { + d3_array = function(list) { + var i = list.length, array = new Array(i); + while (i--) array[i] = list[i]; + return array; + }; + } + try { + d3_document.createElement("div").style.setProperty("opacity", 0, ""); + } catch (error) { + var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty; + d3_element_prototype.setAttribute = function(name, value) { + d3_element_setAttribute.call(this, name, value + ""); + }; + d3_element_prototype.setAttributeNS = function(space, local, value) { + d3_element_setAttributeNS.call(this, space, local, value + ""); + }; + d3_style_prototype.setProperty = function(name, value, priority) { + d3_style_setProperty.call(this, name, value + "", priority); + }; + } + d3.ascending = function(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + }; + d3.descending = function(a, b) { + return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; + }; + d3.min = function(array, f) { + var i = -1, n = array.length, a, b; + if (arguments.length === 1) { + while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined; + while (++i < n) if ((b = array[i]) != null && a > b) a = b; + } else { + while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b; + } + return a; + }; + d3.max = function(array, f) { + var i = -1, n = array.length, a, b; + if (arguments.length === 1) { + while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined; + while (++i < n) if ((b = array[i]) != null && b > a) a = b; + } else { + while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b; + } + return a; + }; + d3.extent = function(array, f) { + var i = -1, n = array.length, a, b, c; + if (arguments.length === 1) { + while (++i < n && !((a = c = array[i]) != null && a <= a)) a = c = undefined; + while (++i < n) if ((b = array[i]) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } else { + while (++i < n && !((a = c = f.call(array, array[i], i)) != null && a <= a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } + return [ a, c ]; + }; + d3.sum = function(array, f) { + var s = 0, n = array.length, a, i = -1; + if (arguments.length === 1) { + while (++i < n) if (!isNaN(a = +array[i])) s += a; + } else { + while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a; + } + return s; + }; + function d3_number(x) { + return x != null && !isNaN(x); + } + d3.mean = function(array, f) { + var n = array.length, a, m = 0, i = -1, j = 0; + if (arguments.length === 1) { + while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j; + } else { + while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j; + } + return j ? m : undefined; + }; + d3.quantile = function(values, p) { + var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h; + return e ? v + e * (values[h] - v) : v; + }; + d3.median = function(array, f) { + if (arguments.length > 1) array = array.map(f); + array = array.filter(d3_number); + return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined; + }; + d3.bisector = function(f) { + return { + left: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1; + } + return lo; + } + }; + }; + var d3_bisector = d3.bisector(function(d) { + return d; + }); + d3.bisectLeft = d3_bisector.left; + d3.bisect = d3.bisectRight = d3_bisector.right; + d3.shuffle = function(array) { + var m = array.length, t, i; + while (m) { + i = Math.random() * m-- | 0; + t = array[m], array[m] = array[i], array[i] = t; + } + return array; + }; + d3.permute = function(array, indexes) { + var i = indexes.length, permutes = new Array(i); + while (i--) permutes[i] = array[indexes[i]]; + return permutes; + }; + d3.pairs = function(array) { + var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n); + while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ]; + return pairs; + }; + d3.zip = function() { + if (!(n = arguments.length)) return []; + for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) { + for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) { + zip[j] = arguments[j][i]; + } + } + return zips; + }; + function d3_zipLength(d) { + return d.length; + } + d3.transpose = function(matrix) { + return d3.zip.apply(d3, matrix); + }; + d3.keys = function(map) { + var keys = []; + for (var key in map) keys.push(key); + return keys; + }; + d3.values = function(map) { + var values = []; + for (var key in map) values.push(map[key]); + return values; + }; + d3.entries = function(map) { + var entries = []; + for (var key in map) entries.push({ + key: key, + value: map[key] + }); + return entries; + }; + d3.merge = function(arrays) { + return Array.prototype.concat.apply([], arrays); + }; + d3.range = function(start, stop, step) { + if (arguments.length < 3) { + step = 1; + if (arguments.length < 2) { + stop = start; + start = 0; + } + } + if ((stop - start) / step === Infinity) throw new Error("infinite range"); + var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j; + start *= k, stop *= k, step *= k; + if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k); + return range; + }; + function d3_range_integerScale(x) { + var k = 1; + while (x * k % 1) k *= 10; + return k; + } + function d3_class(ctor, properties) { + try { + for (var key in properties) { + Object.defineProperty(ctor.prototype, key, { + value: properties[key], + enumerable: false + }); + } + } catch (e) { + ctor.prototype = properties; + } + } + d3.map = function(object) { + var map = new d3_Map(); + if (object instanceof d3_Map) object.forEach(function(key, value) { + map.set(key, value); + }); else for (var key in object) map.set(key, object[key]); + return map; + }; + function d3_Map() {} + d3_class(d3_Map, { + has: function(key) { + return d3_map_prefix + key in this; + }, + get: function(key) { + return this[d3_map_prefix + key]; + }, + set: function(key, value) { + return this[d3_map_prefix + key] = value; + }, + remove: function(key) { + key = d3_map_prefix + key; + return key in this && delete this[key]; + }, + keys: function() { + var keys = []; + this.forEach(function(key) { + keys.push(key); + }); + return keys; + }, + values: function() { + var values = []; + this.forEach(function(key, value) { + values.push(value); + }); + return values; + }, + entries: function() { + var entries = []; + this.forEach(function(key, value) { + entries.push({ + key: key, + value: value + }); + }); + return entries; + }, + forEach: function(f) { + for (var key in this) { + if (key.charCodeAt(0) === d3_map_prefixCode) { + f.call(this, key.substring(1), this[key]); + } + } + } + }); + var d3_map_prefix = "\x00", d3_map_prefixCode = d3_map_prefix.charCodeAt(0); + d3.nest = function() { + var nest = {}, keys = [], sortKeys = [], sortValues, rollup; + function map(mapType, array, depth) { + if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array; + var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values; + while (++i < n) { + if (values = valuesByKey.get(keyValue = key(object = array[i]))) { + values.push(object); + } else { + valuesByKey.set(keyValue, [ object ]); + } + } + if (mapType) { + object = mapType(); + setter = function(keyValue, values) { + object.set(keyValue, map(mapType, values, depth)); + }; + } else { + object = {}; + setter = function(keyValue, values) { + object[keyValue] = map(mapType, values, depth); + }; + } + valuesByKey.forEach(setter); + return object; + } + function entries(map, depth) { + if (depth >= keys.length) return map; + var array = [], sortKey = sortKeys[depth++]; + map.forEach(function(key, keyMap) { + array.push({ + key: key, + values: entries(keyMap, depth) + }); + }); + return sortKey ? array.sort(function(a, b) { + return sortKey(a.key, b.key); + }) : array; + } + nest.map = function(array, mapType) { + return map(mapType, array, 0); + }; + nest.entries = function(array) { + return entries(map(d3.map, array, 0), 0); + }; + nest.key = function(d) { + keys.push(d); + return nest; + }; + nest.sortKeys = function(order) { + sortKeys[keys.length - 1] = order; + return nest; + }; + nest.sortValues = function(order) { + sortValues = order; + return nest; + }; + nest.rollup = function(f) { + rollup = f; + return nest; + }; + return nest; + }; + d3.set = function(array) { + var set = new d3_Set(); + if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]); + return set; + }; + function d3_Set() {} + d3_class(d3_Set, { + has: function(value) { + return d3_map_prefix + value in this; + }, + add: function(value) { + this[d3_map_prefix + value] = true; + return value; + }, + remove: function(value) { + value = d3_map_prefix + value; + return value in this && delete this[value]; + }, + values: function() { + var values = []; + this.forEach(function(value) { + values.push(value); + }); + return values; + }, + forEach: function(f) { + for (var value in this) { + if (value.charCodeAt(0) === d3_map_prefixCode) { + f.call(this, value.substring(1)); + } + } + } + }); + d3.behavior = {}; + d3.rebind = function(target, source) { + var i = 1, n = arguments.length, method; + while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]); + return target; + }; + function d3_rebind(target, source, method) { + return function() { + var value = method.apply(source, arguments); + return value === source ? target : value; + }; + } + function d3_vendorSymbol(object, name) { + if (name in object) return name; + name = name.charAt(0).toUpperCase() + name.substring(1); + for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) { + var prefixName = d3_vendorPrefixes[i] + name; + if (prefixName in object) return prefixName; + } + } + var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ]; + function d3_noop() {} + d3.dispatch = function() { + var dispatch = new d3_dispatch(), i = -1, n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + return dispatch; + }; + function d3_dispatch() {} + d3_dispatch.prototype.on = function(type, listener) { + var i = type.indexOf("."), name = ""; + if (i >= 0) { + name = type.substring(i + 1); + type = type.substring(0, i); + } + if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener); + if (arguments.length === 2) { + if (listener == null) for (type in this) { + if (this.hasOwnProperty(type)) this[type].on(name, null); + } + return this; + } + }; + function d3_dispatch_event(dispatch) { + var listeners = [], listenerByName = new d3_Map(); + function event() { + var z = listeners, i = -1, n = z.length, l; + while (++i < n) if (l = z[i].on) l.apply(this, arguments); + return dispatch; + } + event.on = function(name, listener) { + var l = listenerByName.get(name), i; + if (arguments.length < 2) return l && l.on; + if (l) { + l.on = null; + listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); + listenerByName.remove(name); + } + if (listener) listeners.push(listenerByName.set(name, { + on: listener + })); + return dispatch; + }; + return event; + } + d3.event = null; + function d3_eventPreventDefault() { + d3.event.preventDefault(); + } + function d3_eventSource() { + var e = d3.event, s; + while (s = e.sourceEvent) e = s; + return e; + } + function d3_eventDispatch(target) { + var dispatch = new d3_dispatch(), i = 0, n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + dispatch.of = function(thiz, argumentz) { + return function(e1) { + try { + var e0 = e1.sourceEvent = d3.event; + e1.target = target; + d3.event = e1; + dispatch[e1.type].apply(thiz, argumentz); + } finally { + d3.event = e0; + } + }; + }; + return dispatch; + } + d3.requote = function(s) { + return s.replace(d3_requote_re, "\\$&"); + }; + var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; + var d3_subclass = {}.__proto__ ? function(object, prototype) { + object.__proto__ = prototype; + } : function(object, prototype) { + for (var property in prototype) object[property] = prototype[property]; + }; + function d3_selection(groups) { + d3_subclass(groups, d3_selectionPrototype); + return groups; + } + var d3_select = function(s, n) { + return n.querySelector(s); + }, d3_selectAll = function(s, n) { + return n.querySelectorAll(s); + }, d3_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) { + return d3_selectMatcher.call(n, s); + }; + if (typeof Sizzle === "function") { + d3_select = function(s, n) { + return Sizzle(s, n)[0] || null; + }; + d3_selectAll = function(s, n) { + return Sizzle.uniqueSort(Sizzle(s, n)); + }; + d3_selectMatches = Sizzle.matchesSelector; + } + d3.selection = function() { + return d3_selectionRoot; + }; + var d3_selectionPrototype = d3.selection.prototype = []; + d3_selectionPrototype.select = function(selector) { + var subgroups = [], subgroup, subnode, group, node; + selector = d3_selection_selector(selector); + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroup.push(subnode = selector.call(node, node.__data__, i, j)); + if (subnode && "__data__" in node) subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_selector(selector) { + return typeof selector === "function" ? selector : function() { + return d3_select(selector, this); + }; + } + d3_selectionPrototype.selectAll = function(selector) { + var subgroups = [], subgroup, node; + selector = d3_selection_selectorAll(selector); + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j))); + subgroup.parentNode = node; + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_selectorAll(selector) { + return typeof selector === "function" ? selector : function() { + return d3_selectAll(selector, this); + }; + } + var d3_nsPrefix = { + svg: "http://www.w3.org/2000/svg", + xhtml: "http://www.w3.org/1999/xhtml", + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" + }; + d3.ns = { + prefix: d3_nsPrefix, + qualify: function(name) { + var i = name.indexOf(":"), prefix = name; + if (i >= 0) { + prefix = name.substring(0, i); + name = name.substring(i + 1); + } + return d3_nsPrefix.hasOwnProperty(prefix) ? { + space: d3_nsPrefix[prefix], + local: name + } : name; + } + }; + d3_selectionPrototype.attr = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") { + var node = this.node(); + name = d3.ns.qualify(name); + return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name); + } + for (value in name) this.each(d3_selection_attr(value, name[value])); + return this; + } + return this.each(d3_selection_attr(name, value)); + }; + function d3_selection_attr(name, value) { + name = d3.ns.qualify(name); + function attrNull() { + this.removeAttribute(name); + } + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + function attrConstant() { + this.setAttribute(name, value); + } + function attrConstantNS() { + this.setAttributeNS(name.space, name.local, value); + } + function attrFunction() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttribute(name); else this.setAttribute(name, x); + } + function attrFunctionNS() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x); + } + return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant; + } + function d3_collapse(s) { + return s.trim().replace(/\s+/g, " "); + } + d3_selectionPrototype.classed = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") { + var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1; + if (value = node.classList) { + while (++i < n) if (!value.contains(name[i])) return false; + } else { + value = node.getAttribute("class"); + while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false; + } + return true; + } + for (value in name) this.each(d3_selection_classed(value, name[value])); + return this; + } + return this.each(d3_selection_classed(name, value)); + }; + function d3_selection_classedRe(name) { + return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g"); + } + function d3_selection_classed(name, value) { + name = name.trim().split(/\s+/).map(d3_selection_classedName); + var n = name.length; + function classedConstant() { + var i = -1; + while (++i < n) name[i](this, value); + } + function classedFunction() { + var i = -1, x = value.apply(this, arguments); + while (++i < n) name[i](this, x); + } + return typeof value === "function" ? classedFunction : classedConstant; + } + function d3_selection_classedName(name) { + var re = d3_selection_classedRe(name); + return function(node, value) { + if (c = node.classList) return value ? c.add(name) : c.remove(name); + var c = node.getAttribute("class") || ""; + if (value) { + re.lastIndex = 0; + if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name)); + } else { + node.setAttribute("class", d3_collapse(c.replace(re, " "))); + } + }; + } + d3_selectionPrototype.style = function(name, value, priority) { + var n = arguments.length; + if (n < 3) { + if (typeof name !== "string") { + if (n < 2) value = ""; + for (priority in name) this.each(d3_selection_style(priority, name[priority], value)); + return this; + } + if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name); + priority = ""; + } + return this.each(d3_selection_style(name, value, priority)); + }; + function d3_selection_style(name, value, priority) { + function styleNull() { + this.style.removeProperty(name); + } + function styleConstant() { + this.style.setProperty(name, value, priority); + } + function styleFunction() { + var x = value.apply(this, arguments); + if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority); + } + return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant; + } + d3_selectionPrototype.property = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") return this.node()[name]; + for (value in name) this.each(d3_selection_property(value, name[value])); + return this; + } + return this.each(d3_selection_property(name, value)); + }; + function d3_selection_property(name, value) { + function propertyNull() { + delete this[name]; + } + function propertyConstant() { + this[name] = value; + } + function propertyFunction() { + var x = value.apply(this, arguments); + if (x == null) delete this[name]; else this[name] = x; + } + return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant; + } + d3_selectionPrototype.text = function(value) { + return arguments.length ? this.each(typeof value === "function" ? function() { + var v = value.apply(this, arguments); + this.textContent = v == null ? "" : v; + } : value == null ? function() { + this.textContent = ""; + } : function() { + this.textContent = value; + }) : this.node().textContent; + }; + d3_selectionPrototype.html = function(value) { + return arguments.length ? this.each(typeof value === "function" ? function() { + var v = value.apply(this, arguments); + this.innerHTML = v == null ? "" : v; + } : value == null ? function() { + this.innerHTML = ""; + } : function() { + this.innerHTML = value; + }) : this.node().innerHTML; + }; + d3_selectionPrototype.append = function(name) { + name = d3_selection_creator(name); + return this.select(function() { + return this.appendChild(name.apply(this, arguments)); + }); + }; + function d3_selection_creator(name) { + return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() { + return d3_document.createElementNS(name.space, name.local); + } : function() { + return d3_document.createElementNS(this.namespaceURI, name); + }; + } + d3_selectionPrototype.insert = function(name, before) { + name = d3_selection_creator(name); + before = d3_selection_selector(before); + return this.select(function() { + return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments)); + }); + }; + d3_selectionPrototype.remove = function() { + return this.each(function() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); + }); + }; + d3_selectionPrototype.data = function(value, key) { + var i = -1, n = this.length, group, node; + if (!arguments.length) { + value = new Array(n = (group = this[0]).length); + while (++i < n) { + if (node = group[i]) { + value[i] = node.__data__; + } + } + return value; + } + function bind(group, groupData) { + var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData; + if (key) { + var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue; + for (i = -1; ++i < n; ) { + keyValue = key.call(node = group[i], node.__data__, i); + if (nodeByKeyValue.has(keyValue)) { + exitNodes[i] = node; + } else { + nodeByKeyValue.set(keyValue, node); + } + keyValues.push(keyValue); + } + for (i = -1; ++i < m; ) { + keyValue = key.call(groupData, nodeData = groupData[i], i); + if (node = nodeByKeyValue.get(keyValue)) { + updateNodes[i] = node; + node.__data__ = nodeData; + } else if (!dataByKeyValue.has(keyValue)) { + enterNodes[i] = d3_selection_dataNode(nodeData); + } + dataByKeyValue.set(keyValue, nodeData); + nodeByKeyValue.remove(keyValue); + } + for (i = -1; ++i < n; ) { + if (nodeByKeyValue.has(keyValues[i])) { + exitNodes[i] = group[i]; + } + } + } else { + for (i = -1; ++i < n0; ) { + node = group[i]; + nodeData = groupData[i]; + if (node) { + node.__data__ = nodeData; + updateNodes[i] = node; + } else { + enterNodes[i] = d3_selection_dataNode(nodeData); + } + } + for (;i < m; ++i) { + enterNodes[i] = d3_selection_dataNode(groupData[i]); + } + for (;i < n; ++i) { + exitNodes[i] = group[i]; + } + } + enterNodes.update = updateNodes; + enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode; + enter.push(enterNodes); + update.push(updateNodes); + exit.push(exitNodes); + } + var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]); + if (typeof value === "function") { + while (++i < n) { + bind(group = this[i], value.call(group, group.parentNode.__data__, i)); + } + } else { + while (++i < n) { + bind(group = this[i], value); + } + } + update.enter = function() { + return enter; + }; + update.exit = function() { + return exit; + }; + return update; + }; + function d3_selection_dataNode(data) { + return { + __data__: data + }; + } + d3_selectionPrototype.datum = function(value) { + return arguments.length ? this.property("__data__", value) : this.property("__data__"); + }; + d3_selectionPrototype.filter = function(filter) { + var subgroups = [], subgroup, group, node; + if (typeof filter !== "function") filter = d3_selection_filter(filter); + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i)) { + subgroup.push(node); + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_filter(selector) { + return function() { + return d3_selectMatches(this, selector); + }; + } + d3_selectionPrototype.order = function() { + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) { + if (node = group[i]) { + if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + return this; + }; + d3_selectionPrototype.sort = function(comparator) { + comparator = d3_selection_sortComparator.apply(this, arguments); + for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator); + return this.order(); + }; + function d3_selection_sortComparator(comparator) { + if (!arguments.length) comparator = d3.ascending; + return function(a, b) { + return a && b ? comparator(a.__data__, b.__data__) : !a - !b; + }; + } + d3_selectionPrototype.each = function(callback) { + return d3_selection_each(this, function(node, i, j) { + callback.call(node, node.__data__, i, j); + }); + }; + function d3_selection_each(groups, callback) { + for (var j = 0, m = groups.length; j < m; j++) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) { + if (node = group[i]) callback(node, i, j); + } + } + return groups; + } + d3_selectionPrototype.call = function(callback) { + var args = d3_array(arguments); + callback.apply(args[0] = this, args); + return this; + }; + d3_selectionPrototype.empty = function() { + return !this.node(); + }; + d3_selectionPrototype.node = function() { + for (var j = 0, m = this.length; j < m; j++) { + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + var node = group[i]; + if (node) return node; + } + } + return null; + }; + d3_selectionPrototype.size = function() { + var n = 0; + this.each(function() { + ++n; + }); + return n; + }; + function d3_selection_enter(selection) { + d3_subclass(selection, d3_selection_enterPrototype); + return selection; + } + var d3_selection_enterPrototype = []; + d3.selection.enter = d3_selection_enter; + d3.selection.enter.prototype = d3_selection_enterPrototype; + d3_selection_enterPrototype.append = d3_selectionPrototype.append; + d3_selection_enterPrototype.empty = d3_selectionPrototype.empty; + d3_selection_enterPrototype.node = d3_selectionPrototype.node; + d3_selection_enterPrototype.call = d3_selectionPrototype.call; + d3_selection_enterPrototype.size = d3_selectionPrototype.size; + d3_selection_enterPrototype.select = function(selector) { + var subgroups = [], subgroup, subnode, upgroup, group, node; + for (var j = -1, m = this.length; ++j < m; ) { + upgroup = (group = this[j]).update; + subgroups.push(subgroup = []); + subgroup.parentNode = group.parentNode; + for (var i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j)); + subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + return d3_selection(subgroups); + }; + d3_selection_enterPrototype.insert = function(name, before) { + if (arguments.length < 2) before = d3_selection_enterInsertBefore(this); + return d3_selectionPrototype.insert.call(this, name, before); + }; + function d3_selection_enterInsertBefore(enter) { + var i0, j0; + return function(d, i, j) { + var group = enter[j].update, n = group.length, node; + if (j != j0) j0 = j, i0 = 0; + if (i >= i0) i0 = i + 1; + while (!(node = group[i0]) && ++i0 < n) ; + return node; + }; + } + d3_selectionPrototype.transition = function() { + var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = d3_transitionInherit || { + time: Date.now(), + ease: d3_ease_cubicInOut, + delay: 0, + duration: 250 + }; + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) d3_transitionNode(node, i, id, transition); + subgroup.push(node); + } + } + return d3_transition(subgroups, id); + }; + d3_selectionPrototype.interrupt = function() { + return this.each(d3_selection_interrupt); + }; + function d3_selection_interrupt() { + var lock = this.__transition__; + if (lock) ++lock.active; + } + d3.select = function(node) { + var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ]; + group.parentNode = d3_documentElement; + return d3_selection([ group ]); + }; + d3.selectAll = function(nodes) { + var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes); + group.parentNode = d3_documentElement; + return d3_selection([ group ]); + }; + var d3_selectionRoot = d3.select(d3_documentElement); + d3_selectionPrototype.on = function(type, listener, capture) { + var n = arguments.length; + if (n < 3) { + if (typeof type !== "string") { + if (n < 2) listener = false; + for (capture in type) this.each(d3_selection_on(capture, type[capture], listener)); + return this; + } + if (n < 2) return (n = this.node()["__on" + type]) && n._; + capture = false; + } + return this.each(d3_selection_on(type, listener, capture)); + }; + function d3_selection_on(type, listener, capture) { + var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener; + if (i > 0) type = type.substring(0, i); + var filter = d3_selection_onFilters.get(type); + if (filter) type = filter, wrap = d3_selection_onFilter; + function onRemove() { + var l = this[name]; + if (l) { + this.removeEventListener(type, l, l.$); + delete this[name]; + } + } + function onAdd() { + var l = wrap(listener, d3_array(arguments)); + onRemove.call(this); + this.addEventListener(type, this[name] = l, l.$ = capture); + l._ = listener; + } + function removeAll() { + var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match; + for (var name in this) { + if (match = name.match(re)) { + var l = this[name]; + this.removeEventListener(match[1], l, l.$); + delete this[name]; + } + } + } + return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll; + } + var d3_selection_onFilters = d3.map({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }); + d3_selection_onFilters.forEach(function(k) { + if ("on" + k in d3_document) d3_selection_onFilters.remove(k); + }); + function d3_selection_onListener(listener, argumentz) { + return function(e) { + var o = d3.event; + d3.event = e; + argumentz[0] = this.__data__; + try { + listener.apply(this, argumentz); + } finally { + d3.event = o; + } + }; + } + function d3_selection_onFilter(listener, argumentz) { + var l = d3_selection_onListener(listener, argumentz); + return function(e) { + var target = this, related = e.relatedTarget; + if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) { + l.call(target, e); + } + }; + } + var d3_event_dragSelect = d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0; + function d3_event_dragSuppress() { + var name = ".dragsuppress-" + ++d3_event_dragId, touchmove = "touchmove" + name, selectstart = "selectstart" + name, dragstart = "dragstart" + name, click = "click" + name, w = d3.select(d3_window).on(touchmove, d3_eventPreventDefault).on(selectstart, d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault), style = d3_documentElement.style, select = style[d3_event_dragSelect]; + style[d3_event_dragSelect] = "none"; + return function(suppressClick) { + w.on(name, null); + style[d3_event_dragSelect] = select; + if (suppressClick) { + function off() { + w.on(click, null); + } + w.on(click, function() { + d3_eventPreventDefault(); + off(); + }, true); + setTimeout(off, 0); + } + }; + } + d3.mouse = function(container) { + return d3_mousePoint(container, d3_eventSource()); + }; + var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0; + function d3_mousePoint(container, e) { + if (e.changedTouches) e = e.changedTouches[0]; + var svg = container.ownerSVGElement || container; + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) { + svg = d3.select("body").append("svg").style({ + position: "absolute", + top: 0, + left: 0, + margin: 0, + padding: 0, + border: "none" + }, "important"); + var ctm = svg[0][0].getScreenCTM(); + d3_mouse_bug44083 = !(ctm.f || ctm.e); + svg.remove(); + } + if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, + point.y = e.clientY; + point = point.matrixTransform(container.getScreenCTM().inverse()); + return [ point.x, point.y ]; + } + var rect = container.getBoundingClientRect(); + return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ]; + } + d3.touches = function(container, touches) { + if (arguments.length < 2) touches = d3_eventSource().touches; + return touches ? d3_array(touches).map(function(touch) { + var point = d3_mousePoint(container, touch); + point.identifier = touch.identifier; + return point; + }) : []; + }; + d3.behavior.drag = function() { + var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, "mousemove", "mouseup"), touchstart = dragstart(touchid, touchposition, "touchmove", "touchend"); + function drag() { + this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart); + } + function touchid() { + return d3.event.changedTouches[0].identifier; + } + function touchposition(parent, id) { + return d3.touches(parent).filter(function(p) { + return p.identifier === id; + })[0]; + } + function dragstart(id, position, move, end) { + return function() { + var target = this, parent = target.parentNode, event_ = event.of(target, arguments), eventTarget = d3.event.target, eventId = id(), drag = eventId == null ? "drag" : "drag-" + eventId, origin_ = position(parent, eventId), dragged = 0, offset, w = d3.select(d3_window).on(move + "." + drag, moved).on(end + "." + drag, ended), dragRestore = d3_event_dragSuppress(); + if (origin) { + offset = origin.apply(target, arguments); + offset = [ offset.x - origin_[0], offset.y - origin_[1] ]; + } else { + offset = [ 0, 0 ]; + } + event_({ + type: "dragstart" + }); + function moved() { + var p = position(parent, eventId), dx = p[0] - origin_[0], dy = p[1] - origin_[1]; + dragged |= dx | dy; + origin_ = p; + event_({ + type: "drag", + x: p[0] + offset[0], + y: p[1] + offset[1], + dx: dx, + dy: dy + }); + } + function ended() { + w.on(move + "." + drag, null).on(end + "." + drag, null); + dragRestore(dragged && d3.event.target === eventTarget); + event_({ + type: "dragend" + }); + } + }; + } + drag.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return drag; + }; + return d3.rebind(drag, event, "on"); + }; + var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π; + function d3_sgn(x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; + } + function d3_acos(x) { + return x > 1 ? 0 : x < -1 ? π : Math.acos(x); + } + function d3_asin(x) { + return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x); + } + function d3_sinh(x) { + return ((x = Math.exp(x)) - 1 / x) / 2; + } + function d3_cosh(x) { + return ((x = Math.exp(x)) + 1 / x) / 2; + } + function d3_tanh(x) { + return ((x = Math.exp(2 * x)) - 1) / (x + 1); + } + function d3_haversin(x) { + return (x = Math.sin(x / 2)) * x; + } + var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4; + d3.interpolateZoom = function(p0, p1) { + var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2]; + var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ; + function interpolate(t) { + var s = t * S; + if (dr) { + var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0)); + return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ]; + } + return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ]; + } + interpolate.duration = S * 1e3; + return interpolate; + }; + d3.behavior.zoom = function() { + var view = { + x: 0, + y: 0, + k: 1 + }, translate0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1; + function zoom(g) { + g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on(mousemove, mousewheelreset).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted); + } + zoom.event = function(g) { + g.each(function() { + var event_ = event.of(this, arguments), view1 = view; + if (d3_transitionInheritId) { + d3.select(this).transition().each("start.zoom", function() { + view = this.__chart__ || { + x: 0, + y: 0, + k: 1 + }; + zoomstarted(event_); + }).tween("zoom:zoom", function() { + var dx = size[0], dy = size[1], cx = dx / 2, cy = dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]); + return function(t) { + var l = i(t), k = dx / l[2]; + this.__chart__ = view = { + x: cx - l[0] * k, + y: cy - l[1] * k, + k: k + }; + zoomed(event_); + }; + }).each("end.zoom", function() { + zoomended(event_); + }); + } else { + this.__chart__ = view; + zoomstarted(event_); + zoomed(event_); + zoomended(event_); + } + }); + }; + zoom.translate = function(_) { + if (!arguments.length) return [ view.x, view.y ]; + view = { + x: +_[0], + y: +_[1], + k: view.k + }; + rescale(); + return zoom; + }; + zoom.scale = function(_) { + if (!arguments.length) return view.k; + view = { + x: view.x, + y: view.y, + k: +_ + }; + rescale(); + return zoom; + }; + zoom.scaleExtent = function(_) { + if (!arguments.length) return scaleExtent; + scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ]; + return zoom; + }; + zoom.center = function(_) { + if (!arguments.length) return center; + center = _ && [ +_[0], +_[1] ]; + return zoom; + }; + zoom.size = function(_) { + if (!arguments.length) return size; + size = _ && [ +_[0], +_[1] ]; + return zoom; + }; + zoom.x = function(z) { + if (!arguments.length) return x1; + x1 = z; + x0 = z.copy(); + view = { + x: 0, + y: 0, + k: 1 + }; + return zoom; + }; + zoom.y = function(z) { + if (!arguments.length) return y1; + y1 = z; + y0 = z.copy(); + view = { + x: 0, + y: 0, + k: 1 + }; + return zoom; + }; + function location(p) { + return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ]; + } + function point(l) { + return [ l[0] * view.k + view.x, l[1] * view.k + view.y ]; + } + function scaleTo(s) { + view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s)); + } + function translateTo(p, l) { + l = point(l); + view.x += p[0] - l[0]; + view.y += p[1] - l[1]; + } + function rescale() { + if (x1) x1.domain(x0.range().map(function(x) { + return (x - view.x) / view.k; + }).map(x0.invert)); + if (y1) y1.domain(y0.range().map(function(y) { + return (y - view.y) / view.k; + }).map(y0.invert)); + } + function zoomstarted(event) { + event({ + type: "zoomstart" + }); + } + function zoomed(event) { + rescale(); + event({ + type: "zoom", + scale: view.k, + translate: [ view.x, view.y ] + }); + } + function zoomended(event) { + event({ + type: "zoomend" + }); + } + function mousedowned() { + var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, dragged = 0, w = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress(); + d3_selection_interrupt.call(target); + zoomstarted(event_); + function moved() { + dragged = 1; + translateTo(d3.mouse(target), l); + zoomed(event_); + } + function ended() { + w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null); + dragRestore(dragged && d3.event.target === eventTarget); + zoomended(event_); + } + } + function touchstarted() { + var target = this, event_ = event.of(target, arguments), locations0 = {}, distance0 = 0, scale0, eventId = d3.event.changedTouches[0].identifier, touchmove = "touchmove.zoom-" + eventId, touchend = "touchend.zoom-" + eventId, w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended), t = d3.select(target).on(mousedown, null).on(touchstart, started), dragRestore = d3_event_dragSuppress(); + d3_selection_interrupt.call(target); + started(); + zoomstarted(event_); + function relocate() { + var touches = d3.touches(target); + scale0 = view.k; + touches.forEach(function(t) { + if (t.identifier in locations0) locations0[t.identifier] = location(t); + }); + return touches; + } + function started() { + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + locations0[changed[i].identifier] = null; + } + var touches = relocate(), now = Date.now(); + if (touches.length === 1) { + if (now - touchtime < 500) { + var p = touches[0], l = locations0[p.identifier]; + scaleTo(view.k * 2); + translateTo(p, l); + d3_eventPreventDefault(); + zoomed(event_); + } + touchtime = now; + } else if (touches.length > 1) { + var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1]; + distance0 = dx * dx + dy * dy; + } + } + function moved() { + var touches = d3.touches(target), p0, l0, p1, l1; + for (var i = 0, n = touches.length; i < n; ++i, l1 = null) { + p1 = touches[i]; + if (l1 = locations0[p1.identifier]) { + if (l0) break; + p0 = p1, l0 = l1; + } + } + if (l1) { + var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0); + p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ]; + l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ]; + scaleTo(scale1 * scale0); + } + touchtime = null; + translateTo(p0, l0); + zoomed(event_); + } + function ended() { + if (d3.event.touches.length) { + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + delete locations0[changed[i].identifier]; + } + for (var identifier in locations0) { + return void relocate(); + } + } + w.on(touchmove, null).on(touchend, null); + t.on(mousedown, mousedowned).on(touchstart, touchstarted); + dragRestore(); + zoomended(event_); + } + } + function mousewheeled() { + var event_ = event.of(this, arguments); + if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), + zoomstarted(event_); + mousewheelTimer = setTimeout(function() { + mousewheelTimer = null; + zoomended(event_); + }, 50); + d3_eventPreventDefault(); + var point = center || d3.mouse(this); + if (!translate0) translate0 = location(point); + scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k); + translateTo(point, translate0); + zoomed(event_); + } + function mousewheelreset() { + translate0 = null; + } + function dblclicked() { + var event_ = event.of(this, arguments), p = d3.mouse(this), l = location(p), k = Math.log(view.k) / Math.LN2; + zoomstarted(event_); + scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1)); + translateTo(p, l); + zoomed(event_); + zoomended(event_); + } + return d3.rebind(zoom, event, "on"); + }; + var d3_behavior_zoomInfinity = [ 0, Infinity ]; + var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); + }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return d3.event.wheelDelta; + }, "mousewheel") : (d3_behavior_zoomDelta = function() { + return -d3.event.detail; + }, "MozMousePixelScroll"); + function d3_Color() {} + d3_Color.prototype.toString = function() { + return this.rgb() + ""; + }; + d3.hsl = function(h, s, l) { + return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l); + }; + function d3_hsl(h, s, l) { + return new d3_Hsl(h, s, l); + } + function d3_Hsl(h, s, l) { + this.h = h; + this.s = s; + this.l = l; + } + var d3_hslPrototype = d3_Hsl.prototype = new d3_Color(); + d3_hslPrototype.brighter = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return d3_hsl(this.h, this.s, this.l / k); + }; + d3_hslPrototype.darker = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return d3_hsl(this.h, this.s, k * this.l); + }; + d3_hslPrototype.rgb = function() { + return d3_hsl_rgb(this.h, this.s, this.l); + }; + function d3_hsl_rgb(h, s, l) { + var m1, m2; + h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h; + s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s; + l = l < 0 ? 0 : l > 1 ? 1 : l; + m2 = l <= .5 ? l * (1 + s) : l + s - l * s; + m1 = 2 * l - m2; + function v(h) { + if (h > 360) h -= 360; else if (h < 0) h += 360; + if (h < 60) return m1 + (m2 - m1) * h / 60; + if (h < 180) return m2; + if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; + return m1; + } + function vv(h) { + return Math.round(v(h) * 255); + } + return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); + } + d3.hcl = function(h, c, l) { + return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l); + }; + function d3_hcl(h, c, l) { + return new d3_Hcl(h, c, l); + } + function d3_Hcl(h, c, l) { + this.h = h; + this.c = c; + this.l = l; + } + var d3_hclPrototype = d3_Hcl.prototype = new d3_Color(); + d3_hclPrototype.brighter = function(k) { + return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1))); + }; + d3_hclPrototype.darker = function(k) { + return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1))); + }; + d3_hclPrototype.rgb = function() { + return d3_hcl_lab(this.h, this.c, this.l).rgb(); + }; + function d3_hcl_lab(h, c, l) { + if (isNaN(h)) h = 0; + if (isNaN(c)) c = 0; + return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c); + } + d3.lab = function(l, a, b) { + return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b); + }; + function d3_lab(l, a, b) { + return new d3_Lab(l, a, b); + } + function d3_Lab(l, a, b) { + this.l = l; + this.a = a; + this.b = b; + } + var d3_lab_K = 18; + var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883; + var d3_labPrototype = d3_Lab.prototype = new d3_Color(); + d3_labPrototype.brighter = function(k) { + return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); + }; + d3_labPrototype.darker = function(k) { + return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); + }; + d3_labPrototype.rgb = function() { + return d3_lab_rgb(this.l, this.a, this.b); + }; + function d3_lab_rgb(l, a, b) { + var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200; + x = d3_lab_xyz(x) * d3_lab_X; + y = d3_lab_xyz(y) * d3_lab_Y; + z = d3_lab_xyz(z) * d3_lab_Z; + return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z)); + } + function d3_lab_hcl(l, a, b) { + return l > 0 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : d3_hcl(NaN, NaN, l); + } + function d3_lab_xyz(x) { + return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037; + } + function d3_xyz_lab(x) { + return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29; + } + function d3_xyz_rgb(r) { + return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055)); + } + d3.rgb = function(r, g, b) { + return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b); + }; + function d3_rgbNumber(value) { + return d3_rgb(value >> 16, value >> 8 & 255, value & 255); + } + function d3_rgbString(value) { + return d3_rgbNumber(value) + ""; + } + function d3_rgb(r, g, b) { + return new d3_Rgb(r, g, b); + } + function d3_Rgb(r, g, b) { + this.r = r; + this.g = g; + this.b = b; + } + var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color(); + d3_rgbPrototype.brighter = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + var r = this.r, g = this.g, b = this.b, i = 30; + if (!r && !g && !b) return d3_rgb(i, i, i); + if (r && r < i) r = i; + if (g && g < i) g = i; + if (b && b < i) b = i; + return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k))); + }; + d3_rgbPrototype.darker = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b)); + }; + d3_rgbPrototype.hsl = function() { + return d3_rgb_hsl(this.r, this.g, this.b); + }; + d3_rgbPrototype.toString = function() { + return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b); + }; + function d3_rgb_hex(v) { + return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16); + } + function d3_rgb_parse(format, rgb, hsl) { + var r = 0, g = 0, b = 0, m1, m2, name; + m1 = /([a-z]+)\((.*)\)/i.exec(format); + if (m1) { + m2 = m1[2].split(","); + switch (m1[1]) { + case "hsl": + { + return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100); + } + + case "rgb": + { + return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2])); + } + } + } + if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b); + if (format != null && format.charAt(0) === "#") { + if (format.length === 4) { + r = format.charAt(1); + r += r; + g = format.charAt(2); + g += g; + b = format.charAt(3); + b += b; + } else if (format.length === 7) { + r = format.substring(1, 3); + g = format.substring(3, 5); + b = format.substring(5, 7); + } + r = parseInt(r, 16); + g = parseInt(g, 16); + b = parseInt(b, 16); + } + return rgb(r, g, b); + } + function d3_rgb_hsl(r, g, b) { + var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2; + if (d) { + s = l < .5 ? d / (max + min) : d / (2 - max - min); + if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4; + h *= 60; + } else { + h = NaN; + s = l > 0 && l < 1 ? 0 : h; + } + return d3_hsl(h, s, l); + } + function d3_rgb_lab(r, g, b) { + r = d3_rgb_xyz(r); + g = d3_rgb_xyz(g); + b = d3_rgb_xyz(b); + var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z); + return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z)); + } + function d3_rgb_xyz(r) { + return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4); + } + function d3_rgb_parseNumber(c) { + var f = parseFloat(c); + return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; + } + var d3_rgb_names = d3.map({ + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 + }); + d3_rgb_names.forEach(function(key, value) { + d3_rgb_names.set(key, d3_rgbNumber(value)); + }); + function d3_functor(v) { + return typeof v === "function" ? v : function() { + return v; + }; + } + d3.functor = d3_functor; + function d3_identity(d) { + return d; + } + d3.xhr = d3_xhrType(d3_identity); + function d3_xhrType(response) { + return function(url, mimeType, callback) { + if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, + mimeType = null; + return d3_xhr(url, mimeType, response, callback); + }; + } + function d3_xhr(url, mimeType, response, callback) { + var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null; + if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest(); + "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() { + request.readyState > 3 && respond(); + }; + function respond() { + var status = request.status, result; + if (!status && request.responseText || status >= 200 && status < 300 || status === 304) { + try { + result = response.call(xhr, request); + } catch (e) { + dispatch.error.call(xhr, e); + return; + } + dispatch.load.call(xhr, result); + } else { + dispatch.error.call(xhr, request); + } + } + request.onprogress = function(event) { + var o = d3.event; + d3.event = event; + try { + dispatch.progress.call(xhr, request); + } finally { + d3.event = o; + } + }; + xhr.header = function(name, value) { + name = (name + "").toLowerCase(); + if (arguments.length < 2) return headers[name]; + if (value == null) delete headers[name]; else headers[name] = value + ""; + return xhr; + }; + xhr.mimeType = function(value) { + if (!arguments.length) return mimeType; + mimeType = value == null ? null : value + ""; + return xhr; + }; + xhr.responseType = function(value) { + if (!arguments.length) return responseType; + responseType = value; + return xhr; + }; + xhr.response = function(value) { + response = value; + return xhr; + }; + [ "get", "post" ].forEach(function(method) { + xhr[method] = function() { + return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments))); + }; + }); + xhr.send = function(method, data, callback) { + if (arguments.length === 2 && typeof data === "function") callback = data, data = null; + request.open(method, url, true); + if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*"; + if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]); + if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType); + if (responseType != null) request.responseType = responseType; + if (callback != null) xhr.on("error", callback).on("load", function(request) { + callback(null, request); + }); + dispatch.beforesend.call(xhr, request); + request.send(data == null ? null : data); + return xhr; + }; + xhr.abort = function() { + request.abort(); + return xhr; + }; + d3.rebind(xhr, dispatch, "on"); + return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback)); + } + function d3_xhr_fixCallback(callback) { + return callback.length === 1 ? function(error, request) { + callback(error == null ? request : null); + } : callback; + } + d3.dsv = function(delimiter, mimeType) { + var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0); + function dsv(url, row, callback) { + if (arguments.length < 3) callback = row, row = null; + var xhr = d3.xhr(url, mimeType, callback); + xhr.row = function(_) { + return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row; + }; + return xhr.row(row); + } + function response(request) { + return dsv.parse(request.responseText); + } + function typedResponse(f) { + return function(request) { + return dsv.parse(request.responseText, f); + }; + } + dsv.parse = function(text, f) { + var o; + return dsv.parseRows(text, function(row, i) { + if (o) return o(row, i - 1); + var a = new Function("d", "return {" + row.map(function(name, i) { + return JSON.stringify(name) + ": d[" + i + "]"; + }).join(",") + "}"); + o = f ? function(row, i) { + return f(a(row), i); + } : a; + }); + }; + dsv.parseRows = function(text, f) { + var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol; + function token() { + if (I >= N) return EOF; + if (eol) return eol = false, EOL; + var j = I; + if (text.charCodeAt(j) === 34) { + var i = j; + while (i++ < N) { + if (text.charCodeAt(i) === 34) { + if (text.charCodeAt(i + 1) !== 34) break; + ++i; + } + } + I = i + 2; + var c = text.charCodeAt(i + 1); + if (c === 13) { + eol = true; + if (text.charCodeAt(i + 2) === 10) ++I; + } else if (c === 10) { + eol = true; + } + return text.substring(j + 1, i).replace(/""/g, '"'); + } + while (I < N) { + var c = text.charCodeAt(I++), k = 1; + if (c === 10) eol = true; else if (c === 13) { + eol = true; + if (text.charCodeAt(I) === 10) ++I, ++k; + } else if (c !== delimiterCode) continue; + return text.substring(j, I - k); + } + return text.substring(j); + } + while ((t = token()) !== EOF) { + var a = []; + while (t !== EOL && t !== EOF) { + a.push(t); + t = token(); + } + if (f && !(a = f(a, n++))) continue; + rows.push(a); + } + return rows; + }; + dsv.format = function(rows) { + if (Array.isArray(rows[0])) return dsv.formatRows(rows); + var fieldSet = new d3_Set(), fields = []; + rows.forEach(function(row) { + for (var field in row) { + if (!fieldSet.has(field)) { + fields.push(fieldSet.add(field)); + } + } + }); + return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) { + return fields.map(function(field) { + return formatValue(row[field]); + }).join(delimiter); + })).join("\n"); + }; + dsv.formatRows = function(rows) { + return rows.map(formatRow).join("\n"); + }; + function formatRow(row) { + return row.map(formatValue).join(delimiter); + } + function formatValue(text) { + return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text; + } + return dsv; + }; + d3.csv = d3.dsv(",", "text/csv"); + d3.tsv = d3.dsv(" ", "text/tab-separated-values"); + var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { + setTimeout(callback, 17); + }; + d3.timer = function(callback, delay, then) { + var n = arguments.length; + if (n < 2) delay = 0; + if (n < 3) then = Date.now(); + var time = then + delay, timer = { + callback: callback, + time: time, + next: null + }; + if (d3_timer_queueTail) d3_timer_queueTail.next = timer; else d3_timer_queueHead = timer; + d3_timer_queueTail = timer; + if (!d3_timer_interval) { + d3_timer_timeout = clearTimeout(d3_timer_timeout); + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } + }; + function d3_timer_step() { + var now = d3_timer_mark(), delay = d3_timer_sweep() - now; + if (delay > 24) { + if (isFinite(delay)) { + clearTimeout(d3_timer_timeout); + d3_timer_timeout = setTimeout(d3_timer_step, delay); + } + d3_timer_interval = 0; + } else { + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } + } + d3.timer.flush = function() { + d3_timer_mark(); + d3_timer_sweep(); + }; + function d3_timer_replace(callback, delay, then) { + var n = arguments.length; + if (n < 2) delay = 0; + if (n < 3) then = Date.now(); + d3_timer_active.callback = callback; + d3_timer_active.time = then + delay; + } + function d3_timer_mark() { + var now = Date.now(); + d3_timer_active = d3_timer_queueHead; + while (d3_timer_active) { + if (now >= d3_timer_active.time) d3_timer_active.flush = d3_timer_active.callback(now - d3_timer_active.time); + d3_timer_active = d3_timer_active.next; + } + return now; + } + function d3_timer_sweep() { + var t0, t1 = d3_timer_queueHead, time = Infinity; + while (t1) { + if (t1.flush) { + t1 = t0 ? t0.next = t1.next : d3_timer_queueHead = t1.next; + } else { + if (t1.time < time) time = t1.time; + t1 = (t0 = t1).next; + } + } + d3_timer_queueTail = t0; + return time; + } + var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ], d3_format_currencySymbol = "$"; + var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix); + d3.formatPrefix = function(value, precision) { + var i = 0; + if (value) { + if (value < 0) value *= -1; + if (precision) value = d3.round(value, d3_format_precision(value, precision)); + i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10); + i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3)); + } + return d3_formatPrefixes[8 + i / 3]; + }; + function d3_formatPrefix(d, i) { + var k = Math.pow(10, Math.abs(8 - i) * 3); + return { + scale: i > 8 ? function(d) { + return d / k; + } : function(d) { + return d * k; + }, + symbol: d + }; + } + d3.round = function(x, n) { + return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x); + }; + d3.format = function(specifier) { + var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false; + if (precision) precision = +precision.substring(1); + if (zfill || fill === "0" && align === "=") { + zfill = fill = "0"; + align = "="; + if (comma) width -= Math.floor((width - 1) / 4); + } + switch (type) { + case "n": + comma = true; + type = "g"; + break; + + case "%": + scale = 100; + suffix = "%"; + type = "f"; + break; + + case "p": + scale = 100; + suffix = "%"; + type = "r"; + break; + + case "b": + case "o": + case "x": + case "X": + if (symbol === "#") symbol = "0" + type.toLowerCase(); + + case "c": + case "d": + integer = true; + precision = 0; + break; + + case "s": + scale = -1; + type = "r"; + break; + } + if (symbol === "#") symbol = ""; else if (symbol === "$") symbol = d3_format_currencySymbol; + if (type == "r" && !precision) type = "g"; + if (precision != null) { + if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision)); + } + type = d3_format_types.get(type) || d3_format_typeDefault; + var zcomma = zfill && comma; + return function(value) { + if (integer && value % 1) return ""; + var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign; + if (scale < 0) { + var prefix = d3.formatPrefix(value, precision); + value = prefix.scale(value); + suffix = prefix.symbol; + } else { + value *= scale; + } + value = type(value, precision); + var i = value.lastIndexOf("."), before = i < 0 ? value : value.substring(0, i), after = i < 0 ? "" : d3_format_decimalPoint + value.substring(i + 1); + if (!zfill && comma) before = d3_format_group(before); + var length = symbol.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : ""; + if (zcomma) before = d3_format_group(padding + before); + negative += symbol; + value = before + after; + return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix; + }; + }; + var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i; + var d3_format_types = d3.map({ + b: function(x) { + return x.toString(2); + }, + c: function(x) { + return String.fromCharCode(x); + }, + o: function(x) { + return x.toString(8); + }, + x: function(x) { + return x.toString(16); + }, + X: function(x) { + return x.toString(16).toUpperCase(); + }, + g: function(x, p) { + return x.toPrecision(p); + }, + e: function(x, p) { + return x.toExponential(p); + }, + f: function(x, p) { + return x.toFixed(p); + }, + r: function(x, p) { + return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p)))); + } + }); + function d3_format_precision(x, p) { + return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1); + } + function d3_format_typeDefault(x) { + return x + ""; + } + var d3_format_group = d3_identity; + if (d3_format_grouping) { + var d3_format_groupingLength = d3_format_grouping.length; + d3_format_group = function(value) { + var i = value.length, t = [], j = 0, g = d3_format_grouping[0]; + while (i > 0 && g > 0) { + t.push(value.substring(i -= g, i + g)); + g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength]; + } + return t.reverse().join(d3_format_thousandsSeparator); + }; + } + d3.geo = {}; + function d3_adder() {} + d3_adder.prototype = { + s: 0, + t: 0, + add: function(y) { + d3_adderSum(y, this.t, d3_adderTemp); + d3_adderSum(d3_adderTemp.s, this.s, this); + if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t; + }, + reset: function() { + this.s = this.t = 0; + }, + valueOf: function() { + return this.s; + } + }; + var d3_adderTemp = new d3_adder(); + function d3_adderSum(a, b, o) { + var x = o.s = a + b, bv = x - a, av = x - bv; + o.t = a - av + (b - bv); + } + d3.geo.stream = function(object, listener) { + if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) { + d3_geo_streamObjectType[object.type](object, listener); + } else { + d3_geo_streamGeometry(object, listener); + } + }; + function d3_geo_streamGeometry(geometry, listener) { + if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) { + d3_geo_streamGeometryType[geometry.type](geometry, listener); + } + } + var d3_geo_streamObjectType = { + Feature: function(feature, listener) { + d3_geo_streamGeometry(feature.geometry, listener); + }, + FeatureCollection: function(object, listener) { + var features = object.features, i = -1, n = features.length; + while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener); + } + }; + var d3_geo_streamGeometryType = { + Sphere: function(object, listener) { + listener.sphere(); + }, + Point: function(object, listener) { + object = object.coordinates; + listener.point(object[0], object[1], object[2]); + }, + MultiPoint: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]); + }, + LineString: function(object, listener) { + d3_geo_streamLine(object.coordinates, listener, 0); + }, + MultiLineString: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0); + }, + Polygon: function(object, listener) { + d3_geo_streamPolygon(object.coordinates, listener); + }, + MultiPolygon: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) d3_geo_streamPolygon(coordinates[i], listener); + }, + GeometryCollection: function(object, listener) { + var geometries = object.geometries, i = -1, n = geometries.length; + while (++i < n) d3_geo_streamGeometry(geometries[i], listener); + } + }; + function d3_geo_streamLine(coordinates, listener, closed) { + var i = -1, n = coordinates.length - closed, coordinate; + listener.lineStart(); + while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]); + listener.lineEnd(); + } + function d3_geo_streamPolygon(coordinates, listener) { + var i = -1, n = coordinates.length; + listener.polygonStart(); + while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1); + listener.polygonEnd(); + } + d3.geo.area = function(object) { + d3_geo_areaSum = 0; + d3.geo.stream(object, d3_geo_area); + return d3_geo_areaSum; + }; + var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder(); + var d3_geo_area = { + sphere: function() { + d3_geo_areaSum += 4 * π; + }, + point: d3_noop, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: function() { + d3_geo_areaRingSum.reset(); + d3_geo_area.lineStart = d3_geo_areaRingStart; + }, + polygonEnd: function() { + var area = 2 * d3_geo_areaRingSum; + d3_geo_areaSum += area < 0 ? 4 * π + area : area; + d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop; + } + }; + function d3_geo_areaRingStart() { + var λ00, φ00, λ0, cosφ0, sinφ0; + d3_geo_area.point = function(λ, φ) { + d3_geo_area.point = nextPoint; + λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), + sinφ0 = Math.sin(φ); + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + φ = φ * d3_radians / 2 + π / 4; + var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ); + d3_geo_areaRingSum.add(Math.atan2(v, u)); + λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ; + } + d3_geo_area.lineEnd = function() { + nextPoint(λ00, φ00); + }; + } + function d3_geo_cartesian(spherical) { + var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ); + return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ]; + } + function d3_geo_cartesianDot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + } + function d3_geo_cartesianCross(a, b) { + return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ]; + } + function d3_geo_cartesianAdd(a, b) { + a[0] += b[0]; + a[1] += b[1]; + a[2] += b[2]; + } + function d3_geo_cartesianScale(vector, k) { + return [ vector[0] * k, vector[1] * k, vector[2] * k ]; + } + function d3_geo_cartesianNormalize(d) { + var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); + d[0] /= l; + d[1] /= l; + d[2] /= l; + } + function d3_geo_spherical(cartesian) { + return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ]; + } + function d3_geo_sphericalEqual(a, b) { + return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε; + } + d3.geo.bounds = function() { + var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range; + var bound = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + bound.point = ringPoint; + bound.lineStart = ringStart; + bound.lineEnd = ringEnd; + dλSum = 0; + d3_geo_area.polygonStart(); + }, + polygonEnd: function() { + d3_geo_area.polygonEnd(); + bound.point = point; + bound.lineStart = lineStart; + bound.lineEnd = lineEnd; + if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90; + range[0] = λ0, range[1] = λ1; + } + }; + function point(λ, φ) { + ranges.push(range = [ λ0 = λ, λ1 = λ ]); + if (φ < φ0) φ0 = φ; + if (φ > φ1) φ1 = φ; + } + function linePoint(λ, φ) { + var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]); + if (p0) { + var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal); + d3_geo_cartesianNormalize(inflection); + inflection = d3_geo_spherical(inflection); + var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = Math.abs(dλ) > 180; + if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) { + var φi = inflection[1] * d3_degrees; + if (φi > φ1) φ1 = φi; + } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) { + var φi = -inflection[1] * d3_degrees; + if (φi < φ0) φ0 = φi; + } else { + if (φ < φ0) φ0 = φ; + if (φ > φ1) φ1 = φ; + } + if (antimeridian) { + if (λ < λ_) { + if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; + } else { + if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; + } + } else { + if (λ1 >= λ0) { + if (λ < λ0) λ0 = λ; + if (λ > λ1) λ1 = λ; + } else { + if (λ > λ_) { + if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; + } else { + if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; + } + } + } + } else { + point(λ, φ); + } + p0 = p, λ_ = λ; + } + function lineStart() { + bound.point = linePoint; + } + function lineEnd() { + range[0] = λ0, range[1] = λ1; + bound.point = point; + p0 = null; + } + function ringPoint(λ, φ) { + if (p0) { + var dλ = λ - λ_; + dλSum += Math.abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ; + } else λ__ = λ, φ__ = φ; + d3_geo_area.point(λ, φ); + linePoint(λ, φ); + } + function ringStart() { + d3_geo_area.lineStart(); + } + function ringEnd() { + ringPoint(λ__, φ__); + d3_geo_area.lineEnd(); + if (Math.abs(dλSum) > ε) λ0 = -(λ1 = 180); + range[0] = λ0, range[1] = λ1; + p0 = null; + } + function angle(λ0, λ1) { + return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; + } + function compareRanges(a, b) { + return a[0] - b[0]; + } + function withinRange(x, range) { + return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; + } + return function(feature) { + φ1 = λ1 = -(λ0 = φ0 = Infinity); + ranges = []; + d3.geo.stream(feature, bound); + var n = ranges.length; + if (n) { + ranges.sort(compareRanges); + for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) { + b = ranges[i]; + if (withinRange(b[0], a) || withinRange(b[1], a)) { + if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; + if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; + } else { + merged.push(a = b); + } + } + var best = -Infinity, dλ; + for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) { + b = merged[i]; + if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1]; + } + } + ranges = range = null; + return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ]; + }; + }(); + d3.geo.centroid = function(object) { + d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; + d3.geo.stream(object, d3_geo_centroid); + var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z; + if (m < ε2) { + x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1; + if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0; + m = x * x + y * y + z * z; + if (m < ε2) return [ NaN, NaN ]; + } + return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ]; + }; + var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2; + var d3_geo_centroid = { + sphere: d3_noop, + point: d3_geo_centroidPoint, + lineStart: d3_geo_centroidLineStart, + lineEnd: d3_geo_centroidLineEnd, + polygonStart: function() { + d3_geo_centroid.lineStart = d3_geo_centroidRingStart; + }, + polygonEnd: function() { + d3_geo_centroid.lineStart = d3_geo_centroidLineStart; + } + }; + function d3_geo_centroidPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ)); + } + function d3_geo_centroidPointXYZ(x, y, z) { + ++d3_geo_centroidW0; + d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0; + d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0; + d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0; + } + function d3_geo_centroidLineStart() { + var x0, y0, z0; + d3_geo_centroid.point = function(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + x0 = cosφ * Math.cos(λ); + y0 = cosφ * Math.sin(λ); + z0 = Math.sin(φ); + d3_geo_centroid.point = nextPoint; + d3_geo_centroidPointXYZ(x0, y0, z0); + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); + d3_geo_centroidW1 += w; + d3_geo_centroidX1 += w * (x0 + (x0 = x)); + d3_geo_centroidY1 += w * (y0 + (y0 = y)); + d3_geo_centroidZ1 += w * (z0 + (z0 = z)); + d3_geo_centroidPointXYZ(x0, y0, z0); + } + } + function d3_geo_centroidLineEnd() { + d3_geo_centroid.point = d3_geo_centroidPoint; + } + function d3_geo_centroidRingStart() { + var λ00, φ00, x0, y0, z0; + d3_geo_centroid.point = function(λ, φ) { + λ00 = λ, φ00 = φ; + d3_geo_centroid.point = nextPoint; + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + x0 = cosφ * Math.cos(λ); + y0 = cosφ * Math.sin(λ); + z0 = Math.sin(φ); + d3_geo_centroidPointXYZ(x0, y0, z0); + }; + d3_geo_centroid.lineEnd = function() { + nextPoint(λ00, φ00); + d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd; + d3_geo_centroid.point = d3_geo_centroidPoint; + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u); + d3_geo_centroidX2 += v * cx; + d3_geo_centroidY2 += v * cy; + d3_geo_centroidZ2 += v * cz; + d3_geo_centroidW1 += w; + d3_geo_centroidX1 += w * (x0 + (x0 = x)); + d3_geo_centroidY1 += w * (y0 + (y0 = y)); + d3_geo_centroidZ1 += w * (z0 + (z0 = z)); + d3_geo_centroidPointXYZ(x0, y0, z0); + } + } + function d3_true() { + return true; + } + function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) { + var subject = [], clip = []; + segments.forEach(function(segment) { + if ((n = segment.length - 1) <= 0) return; + var n, p0 = segment[0], p1 = segment[n]; + if (d3_geo_sphericalEqual(p0, p1)) { + listener.lineStart(); + for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]); + listener.lineEnd(); + return; + } + var a = { + point: p0, + points: segment, + other: null, + visited: false, + entry: true, + subject: true + }, b = { + point: p0, + points: [ p0 ], + other: a, + visited: false, + entry: false, + subject: false + }; + a.other = b; + subject.push(a); + clip.push(b); + a = { + point: p1, + points: [ p1 ], + other: null, + visited: false, + entry: false, + subject: true + }; + b = { + point: p1, + points: [ p1 ], + other: a, + visited: false, + entry: true, + subject: false + }; + a.other = b; + subject.push(a); + clip.push(b); + }); + clip.sort(compare); + d3_geo_clipPolygonLinkCircular(subject); + d3_geo_clipPolygonLinkCircular(clip); + if (!subject.length) return; + for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) { + clip[i].entry = entry = !entry; + } + var start = subject[0], current, points, point; + while (1) { + current = start; + while (current.visited) if ((current = current.next) === start) return; + points = current.points; + listener.lineStart(); + do { + current.visited = current.other.visited = true; + if (current.entry) { + if (current.subject) { + for (var i = 0; i < points.length; i++) listener.point((point = points[i])[0], point[1]); + } else { + interpolate(current.point, current.next.point, 1, listener); + } + current = current.next; + } else { + if (current.subject) { + points = current.prev.points; + for (var i = points.length; --i >= 0; ) listener.point((point = points[i])[0], point[1]); + } else { + interpolate(current.point, current.prev.point, -1, listener); + } + current = current.prev; + } + current = current.other; + points = current.points; + } while (!current.visited); + listener.lineEnd(); + } + } + function d3_geo_clipPolygonLinkCircular(array) { + if (!(n = array.length)) return; + var n, i = 0, a = array[0], b; + while (++i < n) { + a.next = b = array[i]; + b.prev = a; + a = b; + } + a.next = b = array[0]; + b.prev = a; + } + function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) { + return function(rotate, listener) { + var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]); + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + clip.point = pointRing; + clip.lineStart = ringStart; + clip.lineEnd = ringEnd; + segments = []; + polygon = []; + listener.polygonStart(); + }, + polygonEnd: function() { + clip.point = point; + clip.lineStart = lineStart; + clip.lineEnd = lineEnd; + segments = d3.merge(segments); + var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon); + if (segments.length) { + d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener); + } else if (clipStartInside) { + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + listener.polygonEnd(); + segments = polygon = null; + }, + sphere: function() { + listener.polygonStart(); + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + listener.polygonEnd(); + } + }; + function point(λ, φ) { + var point = rotate(λ, φ); + if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ); + } + function pointLine(λ, φ) { + var point = rotate(λ, φ); + line.point(point[0], point[1]); + } + function lineStart() { + clip.point = pointLine; + line.lineStart(); + } + function lineEnd() { + clip.point = point; + line.lineEnd(); + } + var segments; + var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygon, ring; + function pointRing(λ, φ) { + ring.push([ λ, φ ]); + var point = rotate(λ, φ); + ringListener.point(point[0], point[1]); + } + function ringStart() { + ringListener.lineStart(); + ring = []; + } + function ringEnd() { + pointRing(ring[0][0], ring[0][1]); + ringListener.lineEnd(); + var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length; + ring.pop(); + polygon.push(ring); + ring = null; + if (!n) return; + if (clean & 1) { + segment = ringSegments[0]; + var n = segment.length - 1, i = -1, point; + listener.lineStart(); + while (++i < n) listener.point((point = segment[i])[0], point[1]); + listener.lineEnd(); + return; + } + if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); + segments.push(ringSegments.filter(d3_geo_clipSegmentLength1)); + } + return clip; + }; + } + function d3_geo_clipSegmentLength1(segment) { + return segment.length > 1; + } + function d3_geo_clipBufferListener() { + var lines = [], line; + return { + lineStart: function() { + lines.push(line = []); + }, + point: function(λ, φ) { + line.push([ λ, φ ]); + }, + lineEnd: d3_noop, + buffer: function() { + var buffer = lines; + lines = []; + line = null; + return buffer; + }, + rejoin: function() { + if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); + } + }; + } + function d3_geo_clipSort(a, b) { + return ((a = a.point)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.point)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]); + } + function d3_geo_pointInPolygon(point, polygon) { + var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0; + d3_geo_areaRingSum.reset(); + for (var i = 0, n = polygon.length; i < n; ++i) { + var ring = polygon[i], m = ring.length; + if (!m) continue; + var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1; + while (true) { + if (j === m) j = 0; + point = ring[j]; + var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, antimeridian = Math.abs(dλ) > π, k = sinφ0 * sinφ; + d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k * Math.cos(dλ))); + polarAngle += antimeridian ? dλ + (dλ >= 0 ? 2 : -2) * π : dλ; + if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) { + var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point)); + d3_geo_cartesianNormalize(arc); + var intersection = d3_geo_cartesianCross(meridianNormal, arc); + d3_geo_cartesianNormalize(intersection); + var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); + if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) { + winding += antimeridian ^ dλ >= 0 ? 1 : -1; + } + } + if (!j++) break; + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; + } + } + return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1; + } + var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]); + function d3_geo_clipAntimeridianLine(listener) { + var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean; + return { + lineStart: function() { + listener.lineStart(); + clean = 1; + }, + point: function(λ1, φ1) { + var sλ1 = λ1 > 0 ? π : -π, dλ = Math.abs(λ1 - λ0); + if (Math.abs(dλ - π) < ε) { + listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ); + listener.point(sλ0, φ0); + listener.lineEnd(); + listener.lineStart(); + listener.point(sλ1, φ0); + listener.point(λ1, φ0); + clean = 0; + } else if (sλ0 !== sλ1 && dλ >= π) { + if (Math.abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε; + if (Math.abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε; + φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1); + listener.point(sλ0, φ0); + listener.lineEnd(); + listener.lineStart(); + listener.point(sλ1, φ0); + clean = 0; + } + listener.point(λ0 = λ1, φ0 = φ1); + sλ0 = sλ1; + }, + lineEnd: function() { + listener.lineEnd(); + λ0 = φ0 = NaN; + }, + clean: function() { + return 2 - clean; + } + }; + } + function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) { + var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1); + return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2; + } + function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { + var φ; + if (from == null) { + φ = direction * halfπ; + listener.point(-π, φ); + listener.point(0, φ); + listener.point(π, φ); + listener.point(π, 0); + listener.point(π, -φ); + listener.point(0, -φ); + listener.point(-π, -φ); + listener.point(-π, 0); + listener.point(-π, φ); + } else if (Math.abs(from[0] - to[0]) > ε) { + var s = (from[0] < to[0] ? 1 : -1) * π; + φ = direction * s / 2; + listener.point(-s, φ); + listener.point(0, φ); + listener.point(s, φ); + } else { + listener.point(to[0], to[1]); + } + } + function d3_geo_clipCircle(radius) { + var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = Math.abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); + return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]); + function visible(λ, φ) { + return Math.cos(λ) * Math.cos(φ) > cr; + } + function clipLine(listener) { + var point0, c0, v0, v00, clean; + return { + lineStart: function() { + v00 = v0 = false; + clean = 1; + }, + point: function(λ, φ) { + var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0; + if (!point0 && (v00 = v0 = v)) listener.lineStart(); + if (v !== v0) { + point2 = intersect(point0, point1); + if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) { + point1[0] += ε; + point1[1] += ε; + v = visible(point1[0], point1[1]); + } + } + if (v !== v0) { + clean = 0; + if (v) { + listener.lineStart(); + point2 = intersect(point1, point0); + listener.point(point2[0], point2[1]); + } else { + point2 = intersect(point0, point1); + listener.point(point2[0], point2[1]); + listener.lineEnd(); + } + point0 = point2; + } else if (notHemisphere && point0 && smallRadius ^ v) { + var t; + if (!(c & c0) && (t = intersect(point1, point0, true))) { + clean = 0; + if (smallRadius) { + listener.lineStart(); + listener.point(t[0][0], t[0][1]); + listener.point(t[1][0], t[1][1]); + listener.lineEnd(); + } else { + listener.point(t[1][0], t[1][1]); + listener.lineEnd(); + listener.lineStart(); + listener.point(t[0][0], t[0][1]); + } + } + } + if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) { + listener.point(point1[0], point1[1]); + } + point0 = point1, v0 = v, c0 = c; + }, + lineEnd: function() { + if (v0) listener.lineEnd(); + point0 = null; + }, + clean: function() { + return clean | (v00 && v0) << 1; + } + }; + } + function intersect(a, b, two) { + var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b); + var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2; + if (!determinant) return !two && a; + var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2); + d3_geo_cartesianAdd(A, B); + var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1); + if (t2 < 0) return; + var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu); + d3_geo_cartesianAdd(q, A); + q = d3_geo_spherical(q); + if (!two) return q; + var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z; + if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z; + var δλ = λ1 - λ0, polar = Math.abs(δλ - π) < ε, meridian = polar || δλ < ε; + if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z; + if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (Math.abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) { + var q1 = d3_geo_cartesianScale(u, (-w + t) / uu); + d3_geo_cartesianAdd(q1, A); + return [ q, d3_geo_spherical(q1) ]; + } + } + function code(λ, φ) { + var r = smallRadius ? radius : π - radius, code = 0; + if (λ < -r) code |= 1; else if (λ > r) code |= 2; + if (φ < -r) code |= 4; else if (φ > r) code |= 8; + return code; + } + } + var d3_geo_clipExtentMAX = 1e9; + d3.geo.clipExtent = function() { + var x0, y0, x1, y1, stream, clip, clipExtent = { + stream: function(output) { + if (stream) stream.valid = false; + stream = clip(output); + stream.valid = true; + return stream; + }, + extent: function(_) { + if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; + clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]); + if (stream) stream.valid = false, stream = null; + return clipExtent; + } + }; + return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]); + }; + function d3_geo_clipExtent(x0, y0, x1, y1) { + return function(listener) { + var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), segments, polygon, ring; + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + listener = bufferListener; + segments = []; + polygon = []; + clean = true; + }, + polygonEnd: function() { + listener = listener_; + segments = d3.merge(segments); + var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length; + if (inside || visible) { + listener.polygonStart(); + if (inside) { + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + if (visible) { + d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener); + } + listener.polygonEnd(); + } + segments = polygon = ring = null; + } + }; + function insidePolygon(p) { + var wn = 0, n = polygon.length, y = p[1]; + for (var i = 0; i < n; ++i) { + for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) { + b = v[j]; + if (a[1] <= y) { + if (b[1] > y && isLeft(a, b, p) > 0) ++wn; + } else { + if (b[1] <= y && isLeft(a, b, p) < 0) --wn; + } + a = b; + } + } + return wn !== 0; + } + function isLeft(a, b, c) { + return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]); + } + function interpolate(from, to, direction, listener) { + var a = 0, a1 = 0; + if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) { + do { + listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); + } while ((a = (a + direction + 4) % 4) !== a1); + } else { + listener.point(to[0], to[1]); + } + } + function pointVisible(x, y) { + return x0 <= x && x <= x1 && y0 <= y && y <= y1; + } + function point(x, y) { + if (pointVisible(x, y)) listener.point(x, y); + } + var x__, y__, v__, x_, y_, v_, first, clean; + function lineStart() { + clip.point = linePoint; + if (polygon) polygon.push(ring = []); + first = true; + v_ = false; + x_ = y_ = NaN; + } + function lineEnd() { + if (segments) { + linePoint(x__, y__); + if (v__ && v_) bufferListener.rejoin(); + segments.push(bufferListener.buffer()); + } + clip.point = point; + if (v_) listener.lineEnd(); + } + function linePoint(x, y) { + x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x)); + y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y)); + var v = pointVisible(x, y); + if (polygon) ring.push([ x, y ]); + if (first) { + x__ = x, y__ = y, v__ = v; + first = false; + if (v) { + listener.lineStart(); + listener.point(x, y); + } + } else { + if (v && v_) listener.point(x, y); else { + var a = [ x_, y_ ], b = [ x, y ]; + if (clipLine(a, b)) { + if (!v_) { + listener.lineStart(); + listener.point(a[0], a[1]); + } + listener.point(b[0], b[1]); + if (!v) listener.lineEnd(); + clean = false; + } else if (v) { + listener.lineStart(); + listener.point(x, y); + clean = false; + } + } + } + x_ = x, y_ = y, v_ = v; + } + return clip; + }; + function corner(p, direction) { + return Math.abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : Math.abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : Math.abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; + } + function compare(a, b) { + return comparePoints(a.point, b.point); + } + function comparePoints(a, b) { + var ca = corner(a, 1), cb = corner(b, 1); + return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0]; + } + function clipLine(a, b) { + var dx = b[0] - a[0], dy = b[1] - a[1], t = [ 0, 1 ]; + if (Math.abs(dx) < ε && Math.abs(dy) < ε) return x0 <= a[0] && a[0] <= x1 && y0 <= a[1] && a[1] <= y1; + if (d3_geo_clipExtentT(x0 - a[0], dx, t) && d3_geo_clipExtentT(a[0] - x1, -dx, t) && d3_geo_clipExtentT(y0 - a[1], dy, t) && d3_geo_clipExtentT(a[1] - y1, -dy, t)) { + if (t[1] < 1) { + b[0] = a[0] + t[1] * dx; + b[1] = a[1] + t[1] * dy; + } + if (t[0] > 0) { + a[0] += t[0] * dx; + a[1] += t[0] * dy; + } + return true; + } + return false; + } + } + function d3_geo_clipExtentT(num, denominator, t) { + if (Math.abs(denominator) < ε) return num <= 0; + var u = num / denominator; + if (denominator > 0) { + if (u > t[1]) return false; + if (u > t[0]) t[0] = u; + } else { + if (u < t[0]) return false; + if (u < t[1]) t[1] = u; + } + return true; + } + function d3_geo_compose(a, b) { + function compose(x, y) { + return x = a(x, y), b(x[0], x[1]); + } + if (a.invert && b.invert) compose.invert = function(x, y) { + return x = b.invert(x, y), x && a.invert(x[0], x[1]); + }; + return compose; + } + function d3_geo_conic(projectAt) { + var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1); + p.parallels = function(_) { + if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ]; + return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180); + }; + return p; + } + function d3_geo_conicEqualArea(φ0, φ1) { + var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n; + function forward(λ, φ) { + var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n; + return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = ρ0 - y; + return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ]; + }; + return forward; + } + (d3.geo.conicEqualArea = function() { + return d3_geo_conic(d3_geo_conicEqualArea); + }).raw = d3_geo_conicEqualArea; + d3.geo.albers = function() { + return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070); + }; + d3.geo.albersUsa = function() { + var lower48 = d3.geo.albers(); + var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]); + var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]); + var point, pointStream = { + point: function(x, y) { + point = [ x, y ]; + } + }, lower48Point, alaskaPoint, hawaiiPoint; + function albersUsa(coordinates) { + var x = coordinates[0], y = coordinates[1]; + point = null; + (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y); + return point; + } + albersUsa.invert = function(coordinates) { + var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k; + return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates); + }; + albersUsa.stream = function(stream) { + var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream); + return { + point: function(x, y) { + lower48Stream.point(x, y); + alaskaStream.point(x, y); + hawaiiStream.point(x, y); + }, + sphere: function() { + lower48Stream.sphere(); + alaskaStream.sphere(); + hawaiiStream.sphere(); + }, + lineStart: function() { + lower48Stream.lineStart(); + alaskaStream.lineStart(); + hawaiiStream.lineStart(); + }, + lineEnd: function() { + lower48Stream.lineEnd(); + alaskaStream.lineEnd(); + hawaiiStream.lineEnd(); + }, + polygonStart: function() { + lower48Stream.polygonStart(); + alaskaStream.polygonStart(); + hawaiiStream.polygonStart(); + }, + polygonEnd: function() { + lower48Stream.polygonEnd(); + alaskaStream.polygonEnd(); + hawaiiStream.polygonEnd(); + } + }; + }; + albersUsa.precision = function(_) { + if (!arguments.length) return lower48.precision(); + lower48.precision(_); + alaska.precision(_); + hawaii.precision(_); + return albersUsa; + }; + albersUsa.scale = function(_) { + if (!arguments.length) return lower48.scale(); + lower48.scale(_); + alaska.scale(_ * .35); + hawaii.scale(_); + return albersUsa.translate(lower48.translate()); + }; + albersUsa.translate = function(_) { + if (!arguments.length) return lower48.translate(); + var k = lower48.scale(), x = +_[0], y = +_[1]; + lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point; + alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; + hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; + return albersUsa; + }; + return albersUsa.scale(1070); + }; + var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = { + point: d3_noop, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: function() { + d3_geo_pathAreaPolygon = 0; + d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart; + }, + polygonEnd: function() { + d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop; + d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2); + } + }; + function d3_geo_pathAreaRingStart() { + var x00, y00, x0, y0; + d3_geo_pathArea.point = function(x, y) { + d3_geo_pathArea.point = nextPoint; + x00 = x0 = x, y00 = y0 = y; + }; + function nextPoint(x, y) { + d3_geo_pathAreaPolygon += y0 * x - x0 * y; + x0 = x, y0 = y; + } + d3_geo_pathArea.lineEnd = function() { + nextPoint(x00, y00); + }; + } + var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1; + var d3_geo_pathBounds = { + point: d3_geo_pathBoundsPoint, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: d3_noop, + polygonEnd: d3_noop + }; + function d3_geo_pathBoundsPoint(x, y) { + if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x; + if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x; + if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y; + if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y; + } + function d3_geo_pathBuffer() { + var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = []; + var stream = { + point: point, + lineStart: function() { + stream.point = pointLineStart; + }, + lineEnd: lineEnd, + polygonStart: function() { + stream.lineEnd = lineEndPolygon; + }, + polygonEnd: function() { + stream.lineEnd = lineEnd; + stream.point = point; + }, + pointRadius: function(_) { + pointCircle = d3_geo_pathBufferCircle(_); + return stream; + }, + result: function() { + if (buffer.length) { + var result = buffer.join(""); + buffer = []; + return result; + } + } + }; + function point(x, y) { + buffer.push("M", x, ",", y, pointCircle); + } + function pointLineStart(x, y) { + buffer.push("M", x, ",", y); + stream.point = pointLine; + } + function pointLine(x, y) { + buffer.push("L", x, ",", y); + } + function lineEnd() { + stream.point = point; + } + function lineEndPolygon() { + buffer.push("Z"); + } + return stream; + } + function d3_geo_pathBufferCircle(radius) { + return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z"; + } + var d3_geo_pathCentroid = { + point: d3_geo_pathCentroidPoint, + lineStart: d3_geo_pathCentroidLineStart, + lineEnd: d3_geo_pathCentroidLineEnd, + polygonStart: function() { + d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart; + }, + polygonEnd: function() { + d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; + d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart; + d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd; + } + }; + function d3_geo_pathCentroidPoint(x, y) { + d3_geo_centroidX0 += x; + d3_geo_centroidY0 += y; + ++d3_geo_centroidZ0; + } + function d3_geo_pathCentroidLineStart() { + var x0, y0; + d3_geo_pathCentroid.point = function(x, y) { + d3_geo_pathCentroid.point = nextPoint; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + }; + function nextPoint(x, y) { + var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); + d3_geo_centroidX1 += z * (x0 + x) / 2; + d3_geo_centroidY1 += z * (y0 + y) / 2; + d3_geo_centroidZ1 += z; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + } + } + function d3_geo_pathCentroidLineEnd() { + d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; + } + function d3_geo_pathCentroidRingStart() { + var x00, y00, x0, y0; + d3_geo_pathCentroid.point = function(x, y) { + d3_geo_pathCentroid.point = nextPoint; + d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y); + }; + function nextPoint(x, y) { + var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); + d3_geo_centroidX1 += z * (x0 + x) / 2; + d3_geo_centroidY1 += z * (y0 + y) / 2; + d3_geo_centroidZ1 += z; + z = y0 * x - x0 * y; + d3_geo_centroidX2 += z * (x0 + x); + d3_geo_centroidY2 += z * (y0 + y); + d3_geo_centroidZ2 += z * 3; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + } + d3_geo_pathCentroid.lineEnd = function() { + nextPoint(x00, y00); + }; + } + function d3_geo_pathContext(context) { + var pointRadius = 4.5; + var stream = { + point: point, + lineStart: function() { + stream.point = pointLineStart; + }, + lineEnd: lineEnd, + polygonStart: function() { + stream.lineEnd = lineEndPolygon; + }, + polygonEnd: function() { + stream.lineEnd = lineEnd; + stream.point = point; + }, + pointRadius: function(_) { + pointRadius = _; + return stream; + }, + result: d3_noop + }; + function point(x, y) { + context.moveTo(x, y); + context.arc(x, y, pointRadius, 0, τ); + } + function pointLineStart(x, y) { + context.moveTo(x, y); + stream.point = pointLine; + } + function pointLine(x, y) { + context.lineTo(x, y); + } + function lineEnd() { + stream.point = point; + } + function lineEndPolygon() { + context.closePath(); + } + return stream; + } + function d3_geo_resample(project) { + var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16; + function resample(stream) { + var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0; + var resample = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + stream.polygonStart(); + resample.lineStart = ringStart; + }, + polygonEnd: function() { + stream.polygonEnd(); + resample.lineStart = lineStart; + } + }; + function point(x, y) { + x = project(x, y); + stream.point(x[0], x[1]); + } + function lineStart() { + x0 = NaN; + resample.point = linePoint; + stream.lineStart(); + } + function linePoint(λ, φ) { + var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ); + resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); + stream.point(x0, y0); + } + function lineEnd() { + resample.point = point; + stream.lineEnd(); + } + function ringStart() { + lineStart(); + resample.point = ringPoint; + resample.lineEnd = ringEnd; + } + function ringPoint(λ, φ) { + linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; + resample.point = linePoint; + } + function ringEnd() { + resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream); + resample.lineEnd = lineEnd; + lineEnd(); + } + return resample; + } + function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) { + var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy; + if (d2 > 4 * δ2 && depth--) { + var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2; + if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { + resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream); + stream.point(x2, y2); + resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream); + } + } + } + resample.precision = function(_) { + if (!arguments.length) return Math.sqrt(δ2); + maxDepth = (δ2 = _ * _) > 0 && 16; + return resample; + }; + return resample; + } + d3.geo.transform = function(methods) { + return { + stream: function(stream) { + var transform = new d3_geo_transform(stream); + for (var k in methods) transform[k] = methods[k]; + return transform; + } + }; + }; + function d3_geo_transform(stream) { + this.stream = stream; + } + d3_geo_transform.prototype = { + point: function(x, y) { + this.stream.point(x, y); + }, + sphere: function() { + this.stream.sphere(); + }, + lineStart: function() { + this.stream.lineStart(); + }, + lineEnd: function() { + this.stream.lineEnd(); + }, + polygonStart: function() { + this.stream.polygonStart(); + }, + polygonEnd: function() { + this.stream.polygonEnd(); + } + }; + d3.geo.path = function() { + var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream; + function path(object) { + if (object) { + if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); + if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream); + d3.geo.stream(object, cacheStream); + } + return contextStream.result(); + } + path.area = function(object) { + d3_geo_pathAreaSum = 0; + d3.geo.stream(object, projectStream(d3_geo_pathArea)); + return d3_geo_pathAreaSum; + }; + path.centroid = function(object) { + d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; + d3.geo.stream(object, projectStream(d3_geo_pathCentroid)); + return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ]; + }; + path.bounds = function(object) { + d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity); + d3.geo.stream(object, projectStream(d3_geo_pathBounds)); + return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ]; + }; + path.projection = function(_) { + if (!arguments.length) return projection; + projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity; + return reset(); + }; + path.context = function(_) { + if (!arguments.length) return context; + contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_); + if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); + return reset(); + }; + path.pointRadius = function(_) { + if (!arguments.length) return pointRadius; + pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); + return path; + }; + function reset() { + cacheStream = null; + return path; + } + return path.projection(d3.geo.albersUsa()).context(null); + }; + function d3_geo_pathProjectStream(project) { + var resample = d3_geo_resample(function(x, y) { + return project([ x * d3_degrees, y * d3_degrees ]); + }); + return function(stream) { + var transform = new d3_geo_transform(stream = resample(stream)); + transform.point = function(x, y) { + stream.point(x * d3_radians, y * d3_radians); + }; + return transform; + }; + } + d3.geo.projection = d3_geo_projection; + d3.geo.projectionMutator = d3_geo_projectionMutator; + function d3_geo_projection(project) { + return d3_geo_projectionMutator(function() { + return project; + })(); + } + function d3_geo_projectionMutator(projectAt) { + var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) { + x = project(x, y); + return [ x[0] * k + δx, δy - x[1] * k ]; + }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream; + function projection(point) { + point = projectRotate(point[0] * d3_radians, point[1] * d3_radians); + return [ point[0] * k + δx, δy - point[1] * k ]; + } + function invert(point) { + point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k); + return point && [ point[0] * d3_degrees, point[1] * d3_degrees ]; + } + projection.stream = function(output) { + if (stream) stream.valid = false; + stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output)))); + stream.valid = true; + return stream; + }; + projection.clipAngle = function(_) { + if (!arguments.length) return clipAngle; + preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians); + return invalidate(); + }; + projection.clipExtent = function(_) { + if (!arguments.length) return clipExtent; + clipExtent = _; + postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity; + return invalidate(); + }; + projection.scale = function(_) { + if (!arguments.length) return k; + k = +_; + return reset(); + }; + projection.translate = function(_) { + if (!arguments.length) return [ x, y ]; + x = +_[0]; + y = +_[1]; + return reset(); + }; + projection.center = function(_) { + if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ]; + λ = _[0] % 360 * d3_radians; + φ = _[1] % 360 * d3_radians; + return reset(); + }; + projection.rotate = function(_) { + if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ]; + δλ = _[0] % 360 * d3_radians; + δφ = _[1] % 360 * d3_radians; + δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0; + return reset(); + }; + d3.rebind(projection, projectResample, "precision"); + function reset() { + projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project); + var center = project(λ, φ); + δx = x - center[0] * k; + δy = y + center[1] * k; + return invalidate(); + } + function invalidate() { + if (stream) stream.valid = false, stream = null; + return projection; + } + return function() { + project = projectAt.apply(this, arguments); + projection.invert = project.invert && invert; + return reset(); + }; + } + function d3_geo_projectionRadians(stream) { + var transform = new d3_geo_transform(stream); + transform.point = function(λ, φ) { + stream.point(λ * d3_radians, φ * d3_radians); + }; + return transform; + } + function d3_geo_equirectangular(λ, φ) { + return [ λ, φ ]; + } + (d3.geo.equirectangular = function() { + return d3_geo_projection(d3_geo_equirectangular); + }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular; + d3.geo.rotation = function(rotate) { + rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0); + function forward(coordinates) { + coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians); + return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; + } + forward.invert = function(coordinates) { + coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians); + return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; + }; + return forward; + }; + function d3_geo_identityRotation(λ, φ) { + return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ]; + } + d3_geo_identityRotation.invert = d3_geo_equirectangular; + function d3_geo_rotation(δλ, δφ, δγ) { + return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation; + } + function d3_geo_forwardRotationλ(δλ) { + return function(λ, φ) { + return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ]; + }; + } + function d3_geo_rotationλ(δλ) { + var rotation = d3_geo_forwardRotationλ(δλ); + rotation.invert = d3_geo_forwardRotationλ(-δλ); + return rotation; + } + function d3_geo_rotationφγ(δφ, δγ) { + var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ); + function rotation(λ, φ) { + var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ; + return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ]; + } + rotation.invert = function(λ, φ) { + var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ; + return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ]; + }; + return rotation; + } + d3.geo.circle = function() { + var origin = [ 0, 0 ], angle, precision = 6, interpolate; + function circle() { + var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = []; + interpolate(null, null, 1, { + point: function(x, y) { + ring.push(x = rotate(x, y)); + x[0] *= d3_degrees, x[1] *= d3_degrees; + } + }); + return { + type: "Polygon", + coordinates: [ ring ] + }; + } + circle.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return circle; + }; + circle.angle = function(x) { + if (!arguments.length) return angle; + interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians); + return circle; + }; + circle.precision = function(_) { + if (!arguments.length) return precision; + interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians); + return circle; + }; + return circle.angle(90); + }; + function d3_geo_circleInterpolate(radius, precision) { + var cr = Math.cos(radius), sr = Math.sin(radius); + return function(from, to, direction, listener) { + var step = direction * precision; + if (from != null) { + from = d3_geo_circleAngle(cr, from); + to = d3_geo_circleAngle(cr, to); + if (direction > 0 ? from < to : from > to) from += direction * τ; + } else { + from = radius + direction * τ; + to = radius - .5 * step; + } + for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) { + listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]); + } + }; + } + function d3_geo_circleAngle(cr, point) { + var a = d3_geo_cartesian(point); + a[0] -= cr; + d3_geo_cartesianNormalize(a); + var angle = d3_acos(-a[1]); + return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI); + } + d3.geo.distance = function(a, b) { + var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t; + return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ); + }; + d3.geo.graticule = function() { + var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5; + function graticule() { + return { + type: "MultiLineString", + coordinates: lines() + }; + } + function lines() { + return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) { + return Math.abs(x % DX) > ε; + }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) { + return Math.abs(y % DY) > ε; + }).map(y)); + } + graticule.lines = function() { + return lines().map(function(coordinates) { + return { + type: "LineString", + coordinates: coordinates + }; + }); + }; + graticule.outline = function() { + return { + type: "Polygon", + coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ] + }; + }; + graticule.extent = function(_) { + if (!arguments.length) return graticule.minorExtent(); + return graticule.majorExtent(_).minorExtent(_); + }; + graticule.majorExtent = function(_) { + if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ]; + X0 = +_[0][0], X1 = +_[1][0]; + Y0 = +_[0][1], Y1 = +_[1][1]; + if (X0 > X1) _ = X0, X0 = X1, X1 = _; + if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; + return graticule.precision(precision); + }; + graticule.minorExtent = function(_) { + if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; + x0 = +_[0][0], x1 = +_[1][0]; + y0 = +_[0][1], y1 = +_[1][1]; + if (x0 > x1) _ = x0, x0 = x1, x1 = _; + if (y0 > y1) _ = y0, y0 = y1, y1 = _; + return graticule.precision(precision); + }; + graticule.step = function(_) { + if (!arguments.length) return graticule.minorStep(); + return graticule.majorStep(_).minorStep(_); + }; + graticule.majorStep = function(_) { + if (!arguments.length) return [ DX, DY ]; + DX = +_[0], DY = +_[1]; + return graticule; + }; + graticule.minorStep = function(_) { + if (!arguments.length) return [ dx, dy ]; + dx = +_[0], dy = +_[1]; + return graticule; + }; + graticule.precision = function(_) { + if (!arguments.length) return precision; + precision = +_; + x = d3_geo_graticuleX(y0, y1, 90); + y = d3_geo_graticuleY(x0, x1, precision); + X = d3_geo_graticuleX(Y0, Y1, 90); + Y = d3_geo_graticuleY(X0, X1, precision); + return graticule; + }; + return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]); + }; + function d3_geo_graticuleX(y0, y1, dy) { + var y = d3.range(y0, y1 - ε, dy).concat(y1); + return function(x) { + return y.map(function(y) { + return [ x, y ]; + }); + }; + } + function d3_geo_graticuleY(x0, x1, dx) { + var x = d3.range(x0, x1 - ε, dx).concat(x1); + return function(y) { + return x.map(function(x) { + return [ x, y ]; + }); + }; + } + function d3_source(d) { + return d.source; + } + function d3_target(d) { + return d.target; + } + d3.geo.greatArc = function() { + var source = d3_source, source_, target = d3_target, target_; + function greatArc() { + return { + type: "LineString", + coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ] + }; + } + greatArc.distance = function() { + return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments)); + }; + greatArc.source = function(_) { + if (!arguments.length) return source; + source = _, source_ = typeof _ === "function" ? null : _; + return greatArc; + }; + greatArc.target = function(_) { + if (!arguments.length) return target; + target = _, target_ = typeof _ === "function" ? null : _; + return greatArc; + }; + greatArc.precision = function() { + return arguments.length ? greatArc : 0; + }; + return greatArc; + }; + d3.geo.interpolate = function(source, target) { + return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians); + }; + function d3_geo_interpolate(x0, y0, x1, y1) { + var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d); + var interpolate = d ? function(t) { + var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1; + return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ]; + } : function() { + return [ x0 * d3_degrees, y0 * d3_degrees ]; + }; + interpolate.distance = d; + return interpolate; + } + d3.geo.length = function(object) { + d3_geo_lengthSum = 0; + d3.geo.stream(object, d3_geo_length); + return d3_geo_lengthSum; + }; + var d3_geo_lengthSum; + var d3_geo_length = { + sphere: d3_noop, + point: d3_noop, + lineStart: d3_geo_lengthLineStart, + lineEnd: d3_noop, + polygonStart: d3_noop, + polygonEnd: d3_noop + }; + function d3_geo_lengthLineStart() { + var λ0, sinφ0, cosφ0; + d3_geo_length.point = function(λ, φ) { + λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ); + d3_geo_length.point = nextPoint; + }; + d3_geo_length.lineEnd = function() { + d3_geo_length.point = d3_geo_length.lineEnd = d3_noop; + }; + function nextPoint(λ, φ) { + var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = Math.abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t); + d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ); + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ; + } + } + function d3_geo_azimuthal(scale, angle) { + function azimuthal(λ, φ) { + var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ); + return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ]; + } + azimuthal.invert = function(x, y) { + var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c); + return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ]; + }; + return azimuthal; + } + var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) { + return Math.sqrt(2 / (1 + cosλcosφ)); + }, function(ρ) { + return 2 * Math.asin(ρ / 2); + }); + (d3.geo.azimuthalEqualArea = function() { + return d3_geo_projection(d3_geo_azimuthalEqualArea); + }).raw = d3_geo_azimuthalEqualArea; + var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) { + var c = Math.acos(cosλcosφ); + return c && c / Math.sin(c); + }, d3_identity); + (d3.geo.azimuthalEquidistant = function() { + return d3_geo_projection(d3_geo_azimuthalEquidistant); + }).raw = d3_geo_azimuthalEquidistant; + function d3_geo_conicConformal(φ0, φ1) { + var cosφ0 = Math.cos(φ0), t = function(φ) { + return Math.tan(π / 4 + φ / 2); + }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n; + if (!n) return d3_geo_mercator; + function forward(λ, φ) { + var ρ = Math.abs(Math.abs(φ) - halfπ) < ε ? 0 : F / Math.pow(t(φ), n); + return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y); + return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ]; + }; + return forward; + } + (d3.geo.conicConformal = function() { + return d3_geo_conic(d3_geo_conicConformal); + }).raw = d3_geo_conicConformal; + function d3_geo_conicEquidistant(φ0, φ1) { + var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0; + if (Math.abs(n) < ε) return d3_geo_equirectangular; + function forward(λ, φ) { + var ρ = G - φ; + return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = G - y; + return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ]; + }; + return forward; + } + (d3.geo.conicEquidistant = function() { + return d3_geo_conic(d3_geo_conicEquidistant); + }).raw = d3_geo_conicEquidistant; + var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) { + return 1 / cosλcosφ; + }, Math.atan); + (d3.geo.gnomonic = function() { + return d3_geo_projection(d3_geo_gnomonic); + }).raw = d3_geo_gnomonic; + function d3_geo_mercator(λ, φ) { + return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ]; + } + d3_geo_mercator.invert = function(x, y) { + return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ]; + }; + function d3_geo_mercatorProjection(project) { + var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto; + m.scale = function() { + var v = scale.apply(m, arguments); + return v === m ? clipAuto ? m.clipExtent(null) : m : v; + }; + m.translate = function() { + var v = translate.apply(m, arguments); + return v === m ? clipAuto ? m.clipExtent(null) : m : v; + }; + m.clipExtent = function(_) { + var v = clipExtent.apply(m, arguments); + if (v === m) { + if (clipAuto = _ == null) { + var k = π * scale(), t = translate(); + clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]); + } + } else if (clipAuto) { + v = null; + } + return v; + }; + return m.clipExtent(null); + } + (d3.geo.mercator = function() { + return d3_geo_mercatorProjection(d3_geo_mercator); + }).raw = d3_geo_mercator; + var d3_geo_orthographic = d3_geo_azimuthal(function() { + return 1; + }, Math.asin); + (d3.geo.orthographic = function() { + return d3_geo_projection(d3_geo_orthographic); + }).raw = d3_geo_orthographic; + var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) { + return 1 / (1 + cosλcosφ); + }, function(ρ) { + return 2 * Math.atan(ρ); + }); + (d3.geo.stereographic = function() { + return d3_geo_projection(d3_geo_stereographic); + }).raw = d3_geo_stereographic; + function d3_geo_transverseMercator(λ, φ) { + var B = Math.cos(φ) * Math.sin(λ); + return [ Math.log((1 + B) / (1 - B)) / 2, Math.atan2(Math.tan(φ), Math.cos(λ)) ]; + } + d3_geo_transverseMercator.invert = function(x, y) { + return [ Math.atan2(d3_sinh(x), Math.cos(y)), d3_asin(Math.sin(y) / d3_cosh(x)) ]; + }; + (d3.geo.transverseMercator = function() { + return d3_geo_mercatorProjection(d3_geo_transverseMercator); + }).raw = d3_geo_transverseMercator; + d3.geom = {}; + d3.svg = {}; + function d3_svg_line(projection) { + var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7; + function line(data) { + var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y); + function segment() { + segments.push("M", interpolate(projection(points), tension)); + } + while (++i < n) { + if (defined.call(this, d = data[i], i)) { + points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]); + } else if (points.length) { + segment(); + points = []; + } + } + if (points.length) segment(); + return segments.length ? segments.join("") : null; + } + line.x = function(_) { + if (!arguments.length) return x; + x = _; + return line; + }; + line.y = function(_) { + if (!arguments.length) return y; + y = _; + return line; + }; + line.defined = function(_) { + if (!arguments.length) return defined; + defined = _; + return line; + }; + line.interpolate = function(_) { + if (!arguments.length) return interpolateKey; + if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; + return line; + }; + line.tension = function(_) { + if (!arguments.length) return tension; + tension = _; + return line; + }; + return line; + } + d3.svg.line = function() { + return d3_svg_line(d3_identity); + }; + function d3_svg_lineX(d) { + return d[0]; + } + function d3_svg_lineY(d) { + return d[1]; + } + var d3_svg_lineInterpolators = d3.map({ + linear: d3_svg_lineLinear, + "linear-closed": d3_svg_lineLinearClosed, + step: d3_svg_lineStep, + "step-before": d3_svg_lineStepBefore, + "step-after": d3_svg_lineStepAfter, + basis: d3_svg_lineBasis, + "basis-open": d3_svg_lineBasisOpen, + "basis-closed": d3_svg_lineBasisClosed, + bundle: d3_svg_lineBundle, + cardinal: d3_svg_lineCardinal, + "cardinal-open": d3_svg_lineCardinalOpen, + "cardinal-closed": d3_svg_lineCardinalClosed, + monotone: d3_svg_lineMonotone + }); + d3_svg_lineInterpolators.forEach(function(key, value) { + value.key = key; + value.closed = /-closed$/.test(key); + }); + function d3_svg_lineLinear(points) { + return points.join("L"); + } + function d3_svg_lineLinearClosed(points) { + return d3_svg_lineLinear(points) + "Z"; + } + function d3_svg_lineStep(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]); + if (n > 1) path.push("H", p[0]); + return path.join(""); + } + function d3_svg_lineStepBefore(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]); + return path.join(""); + } + function d3_svg_lineStepAfter(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]); + return path.join(""); + } + function d3_svg_lineCardinalOpen(points, tension) { + return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension)); + } + function d3_svg_lineCardinalClosed(points, tension) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), + points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension)); + } + function d3_svg_lineCardinal(points, tension) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension)); + } + function d3_svg_lineHermite(points, tangents) { + if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) { + return d3_svg_lineLinear(points); + } + var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1; + if (quad) { + path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1]; + p0 = points[1]; + pi = 2; + } + if (tangents.length > 1) { + t = tangents[1]; + p = points[pi]; + pi++; + path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; + for (var i = 2; i < tangents.length; i++, pi++) { + p = points[pi]; + t = tangents[i]; + path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; + } + } + if (quad) { + var lp = points[pi]; + path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1]; + } + return path; + } + function d3_svg_lineCardinalTangents(points, tension) { + var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length; + while (++i < n) { + p0 = p1; + p1 = p2; + p2 = points[i]; + tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]); + } + return tangents; + } + function d3_svg_lineBasis(points) { + if (points.length < 3) return d3_svg_lineLinear(points); + var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0, "L", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; + points.push(points[n - 1]); + while (++i <= n) { + pi = points[i]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + points.pop(); + path.push("L", pi); + return path.join(""); + } + function d3_svg_lineBasisOpen(points) { + if (points.length < 4) return d3_svg_lineLinear(points); + var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ]; + while (++i < 3) { + pi = points[i]; + px.push(pi[0]); + py.push(pi[1]); + } + path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)); + --i; + while (++i < n) { + pi = points[i]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + return path.join(""); + } + function d3_svg_lineBasisClosed(points) { + var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = []; + while (++i < 4) { + pi = points[i % n]; + px.push(pi[0]); + py.push(pi[1]); + } + path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; + --i; + while (++i < m) { + pi = points[i % n]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + return path.join(""); + } + function d3_svg_lineBundle(points, tension) { + var n = points.length - 1; + if (n) { + var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t; + while (++i <= n) { + p = points[i]; + t = i / n; + p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx); + p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy); + } + } + return d3_svg_lineBasis(points); + } + function d3_svg_lineDot4(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; + } + var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ]; + function d3_svg_lineBasisBezier(path, x, y) { + path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y)); + } + function d3_svg_lineSlope(p0, p1) { + return (p1[1] - p0[1]) / (p1[0] - p0[0]); + } + function d3_svg_lineFiniteDifferences(points) { + var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1); + while (++i < j) { + m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2; + } + m[i] = d; + return m; + } + function d3_svg_lineMonotoneTangents(points) { + var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1; + while (++i < j) { + d = d3_svg_lineSlope(points[i], points[i + 1]); + if (Math.abs(d) < ε) { + m[i] = m[i + 1] = 0; + } else { + a = m[i] / d; + b = m[i + 1] / d; + s = a * a + b * b; + if (s > 9) { + s = d * 3 / Math.sqrt(s); + m[i] = s * a; + m[i + 1] = s * b; + } + } + } + i = -1; + while (++i <= j) { + s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i])); + tangents.push([ s || 0, m[i] * s || 0 ]); + } + return tangents; + } + function d3_svg_lineMonotone(points) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points)); + } + d3.geom.hull = function(vertices) { + var x = d3_svg_lineX, y = d3_svg_lineY; + if (arguments.length) return hull(vertices); + function hull(data) { + if (data.length < 3) return []; + var fx = d3_functor(x), fy = d3_functor(y), n = data.length, vertices, plen = n - 1, points = [], stack = [], d, i, j, h = 0, x1, y1, x2, y2, u, v, a, sp; + if (fx === d3_svg_lineX && y === d3_svg_lineY) vertices = data; else for (i = 0, + vertices = []; i < n; ++i) { + vertices.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]); + } + for (i = 1; i < n; ++i) { + if (vertices[i][1] < vertices[h][1] || vertices[i][1] == vertices[h][1] && vertices[i][0] < vertices[h][0]) h = i; + } + for (i = 0; i < n; ++i) { + if (i === h) continue; + y1 = vertices[i][1] - vertices[h][1]; + x1 = vertices[i][0] - vertices[h][0]; + points.push({ + angle: Math.atan2(y1, x1), + index: i + }); + } + points.sort(function(a, b) { + return a.angle - b.angle; + }); + a = points[0].angle; + v = points[0].index; + u = 0; + for (i = 1; i < plen; ++i) { + j = points[i].index; + if (a == points[i].angle) { + x1 = vertices[v][0] - vertices[h][0]; + y1 = vertices[v][1] - vertices[h][1]; + x2 = vertices[j][0] - vertices[h][0]; + y2 = vertices[j][1] - vertices[h][1]; + if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) { + points[i].index = -1; + continue; + } else { + points[u].index = -1; + } + } + a = points[i].angle; + u = i; + v = j; + } + stack.push(h); + for (i = 0, j = 0; i < 2; ++j) { + if (points[j].index > -1) { + stack.push(points[j].index); + i++; + } + } + sp = stack.length; + for (;j < plen; ++j) { + if (points[j].index < 0) continue; + while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) { + --sp; + } + stack[sp++] = points[j].index; + } + var poly = []; + for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]); + return poly; + } + hull.x = function(_) { + return arguments.length ? (x = _, hull) : x; + }; + hull.y = function(_) { + return arguments.length ? (y = _, hull) : y; + }; + return hull; + }; + function d3_geom_hullCCW(i1, i2, i3, v) { + var t, a, b, c, d, e, f; + t = v[i1]; + a = t[0]; + b = t[1]; + t = v[i2]; + c = t[0]; + d = t[1]; + t = v[i3]; + e = t[0]; + f = t[1]; + return (f - b) * (c - a) - (d - b) * (e - a) > 0; + } + d3.geom.polygon = function(coordinates) { + d3_subclass(coordinates, d3_geom_polygonPrototype); + return coordinates; + }; + var d3_geom_polygonPrototype = d3.geom.polygon.prototype = []; + d3_geom_polygonPrototype.area = function() { + var i = -1, n = this.length, a, b = this[n - 1], area = 0; + while (++i < n) { + a = b; + b = this[i]; + area += a[1] * b[0] - a[0] * b[1]; + } + return area * .5; + }; + d3_geom_polygonPrototype.centroid = function(k) { + var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c; + if (!arguments.length) k = -1 / (6 * this.area()); + while (++i < n) { + a = b; + b = this[i]; + c = a[0] * b[1] - b[0] * a[1]; + x += (a[0] + b[0]) * c; + y += (a[1] + b[1]) * c; + } + return [ x * k, y * k ]; + }; + d3_geom_polygonPrototype.clip = function(subject) { + var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d; + while (++i < n) { + input = subject.slice(); + subject.length = 0; + b = this[i]; + c = input[(m = input.length - closed) - 1]; + j = -1; + while (++j < m) { + d = input[j]; + if (d3_geom_polygonInside(d, a, b)) { + if (!d3_geom_polygonInside(c, a, b)) { + subject.push(d3_geom_polygonIntersect(c, d, a, b)); + } + subject.push(d); + } else if (d3_geom_polygonInside(c, a, b)) { + subject.push(d3_geom_polygonIntersect(c, d, a, b)); + } + c = d; + } + if (closed) subject.push(subject[0]); + a = b; + } + return subject; + }; + function d3_geom_polygonInside(p, a, b) { + return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]); + } + function d3_geom_polygonIntersect(c, d, a, b) { + var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21); + return [ x1 + ua * x21, y1 + ua * y21 ]; + } + function d3_geom_polygonClosed(coordinates) { + var a = coordinates[0], b = coordinates[coordinates.length - 1]; + return !(a[0] - b[0] || a[1] - b[1]); + } + d3.geom.delaunay = function(vertices) { + var edges = vertices.map(function() { + return []; + }), triangles = []; + d3_geom_voronoiTessellate(vertices, function(e) { + edges[e.region.l.index].push(vertices[e.region.r.index]); + }); + edges.forEach(function(edge, i) { + var v = vertices[i], cx = v[0], cy = v[1]; + edge.forEach(function(v) { + v.angle = Math.atan2(v[0] - cx, v[1] - cy); + }); + edge.sort(function(a, b) { + return a.angle - b.angle; + }); + for (var j = 0, m = edge.length - 1; j < m; j++) { + triangles.push([ v, edge[j], edge[j + 1] ]); + } + }); + return triangles; + }; + d3.geom.voronoi = function(points) { + var x = d3_svg_lineX, y = d3_svg_lineY, clipPolygon = null; + if (arguments.length) return voronoi(points); + function voronoi(data) { + var points, polygons = data.map(function() { + return []; + }), fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length, Z = 1e6; + if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = new Array(n), + i = 0; i < n; ++i) { + points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]; + } + d3_geom_voronoiTessellate(points, function(e) { + var s1, s2, x1, x2, y1, y2; + if (e.a === 1 && e.b >= 0) { + s1 = e.ep.r; + s2 = e.ep.l; + } else { + s1 = e.ep.l; + s2 = e.ep.r; + } + if (e.a === 1) { + y1 = s1 ? s1.y : -Z; + x1 = e.c - e.b * y1; + y2 = s2 ? s2.y : Z; + x2 = e.c - e.b * y2; + } else { + x1 = s1 ? s1.x : -Z; + y1 = e.c - e.a * x1; + x2 = s2 ? s2.x : Z; + y2 = e.c - e.a * x2; + } + var v1 = [ x1, y1 ], v2 = [ x2, y2 ]; + polygons[e.region.l.index].push(v1, v2); + polygons[e.region.r.index].push(v1, v2); + }); + polygons = polygons.map(function(polygon, i) { + var cx = points[i][0], cy = points[i][1], angle = polygon.map(function(v) { + return Math.atan2(v[0] - cx, v[1] - cy); + }), order = d3.range(polygon.length).sort(function(a, b) { + return angle[a] - angle[b]; + }); + return order.filter(function(d, i) { + return !i || angle[d] - angle[order[i - 1]] > ε; + }).map(function(d) { + return polygon[d]; + }); + }); + polygons.forEach(function(polygon, i) { + var n = polygon.length; + if (!n) return polygon.push([ -Z, -Z ], [ -Z, Z ], [ Z, Z ], [ Z, -Z ]); + if (n > 2) return; + var p0 = points[i], p1 = polygon[0], p2 = polygon[1], x0 = p0[0], y0 = p0[1], x1 = p1[0], y1 = p1[1], x2 = p2[0], y2 = p2[1], dx = Math.abs(x2 - x1), dy = y2 - y1; + if (Math.abs(dy) < ε) { + var y = y0 < y1 ? -Z : Z; + polygon.push([ -Z, y ], [ Z, y ]); + } else if (dx < ε) { + var x = x0 < x1 ? -Z : Z; + polygon.push([ x, -Z ], [ x, Z ]); + } else { + var y = (x2 - x1) * (y1 - y0) < (x1 - x0) * (y2 - y1) ? Z : -Z, z = Math.abs(dy) - dx; + if (Math.abs(z) < ε) { + polygon.push([ dy < 0 ? y : -y, y ]); + } else { + if (z > 0) y *= -1; + polygon.push([ -Z, y ], [ Z, y ]); + } + } + }); + if (clipPolygon) for (i = 0; i < n; ++i) clipPolygon.clip(polygons[i]); + for (i = 0; i < n; ++i) polygons[i].point = data[i]; + return polygons; + } + voronoi.x = function(_) { + return arguments.length ? (x = _, voronoi) : x; + }; + voronoi.y = function(_) { + return arguments.length ? (y = _, voronoi) : y; + }; + voronoi.clipExtent = function(_) { + if (!arguments.length) return clipPolygon && [ clipPolygon[0], clipPolygon[2] ]; + if (_ == null) clipPolygon = null; else { + var x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1]; + clipPolygon = d3.geom.polygon([ [ x1, y1 ], [ x1, y2 ], [ x2, y2 ], [ x2, y1 ] ]); + } + return voronoi; + }; + voronoi.size = function(_) { + if (!arguments.length) return clipPolygon && clipPolygon[2]; + return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]); + }; + voronoi.links = function(data) { + var points, graph = data.map(function() { + return []; + }), links = [], fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length; + if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = new Array(n), + i = 0; i < n; ++i) { + points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]; + } + d3_geom_voronoiTessellate(points, function(e) { + var l = e.region.l.index, r = e.region.r.index; + if (graph[l][r]) return; + graph[l][r] = graph[r][l] = true; + links.push({ + source: data[l], + target: data[r] + }); + }); + return links; + }; + voronoi.triangles = function(data) { + if (x === d3_svg_lineX && y === d3_svg_lineY) return d3.geom.delaunay(data); + var points = new Array(n), fx = d3_functor(x), fy = d3_functor(y), d, i = -1, n = data.length; + while (++i < n) { + (points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]).data = d; + } + return d3.geom.delaunay(points).map(function(triangle) { + return triangle.map(function(point) { + return point.data; + }); + }); + }; + return voronoi; + }; + var d3_geom_voronoiOpposite = { + l: "r", + r: "l" + }; + function d3_geom_voronoiTessellate(points, callback) { + var Sites = { + list: points.map(function(v, i) { + return { + index: i, + x: v[0], + y: v[1] + }; + }).sort(function(a, b) { + return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0; + }), + bottomSite: null + }; + var EdgeList = { + list: [], + leftEnd: null, + rightEnd: null, + init: function() { + EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l"); + EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l"); + EdgeList.leftEnd.r = EdgeList.rightEnd; + EdgeList.rightEnd.l = EdgeList.leftEnd; + EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd); + }, + createHalfEdge: function(edge, side) { + return { + edge: edge, + side: side, + vertex: null, + l: null, + r: null + }; + }, + insert: function(lb, he) { + he.l = lb; + he.r = lb.r; + lb.r.l = he; + lb.r = he; + }, + leftBound: function(p) { + var he = EdgeList.leftEnd; + do { + he = he.r; + } while (he != EdgeList.rightEnd && Geom.rightOf(he, p)); + he = he.l; + return he; + }, + del: function(he) { + he.l.r = he.r; + he.r.l = he.l; + he.edge = null; + }, + right: function(he) { + return he.r; + }, + left: function(he) { + return he.l; + }, + leftRegion: function(he) { + return he.edge == null ? Sites.bottomSite : he.edge.region[he.side]; + }, + rightRegion: function(he) { + return he.edge == null ? Sites.bottomSite : he.edge.region[d3_geom_voronoiOpposite[he.side]]; + } + }; + var Geom = { + bisect: function(s1, s2) { + var newEdge = { + region: { + l: s1, + r: s2 + }, + ep: { + l: null, + r: null + } + }; + var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy; + newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5; + if (adx > ady) { + newEdge.a = 1; + newEdge.b = dy / dx; + newEdge.c /= dx; + } else { + newEdge.b = 1; + newEdge.a = dx / dy; + newEdge.c /= dy; + } + return newEdge; + }, + intersect: function(el1, el2) { + var e1 = el1.edge, e2 = el2.edge; + if (!e1 || !e2 || e1.region.r == e2.region.r) { + return null; + } + var d = e1.a * e2.b - e1.b * e2.a; + if (Math.abs(d) < 1e-10) { + return null; + } + var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e; + if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) { + el = el1; + e = e1; + } else { + el = el2; + e = e2; + } + var rightOfSite = xint >= e.region.r.x; + if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") { + return null; + } + return { + x: xint, + y: yint + }; + }, + rightOf: function(he, p) { + var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x; + if (rightOfSite && he.side === "l") { + return 1; + } + if (!rightOfSite && he.side === "r") { + return 0; + } + if (e.a === 1) { + var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0; + if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) { + above = fast = dyp >= e.b * dxp; + } else { + above = p.x + p.y * e.b > e.c; + if (e.b < 0) { + above = !above; + } + if (!above) { + fast = 1; + } + } + if (!fast) { + var dxs = topsite.x - e.region.l.x; + above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b); + if (e.b < 0) { + above = !above; + } + } + } else { + var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y; + above = t1 * t1 > t2 * t2 + t3 * t3; + } + return he.side === "l" ? above : !above; + }, + endPoint: function(edge, side, site) { + edge.ep[side] = site; + if (!edge.ep[d3_geom_voronoiOpposite[side]]) return; + callback(edge); + }, + distance: function(s, t) { + var dx = s.x - t.x, dy = s.y - t.y; + return Math.sqrt(dx * dx + dy * dy); + } + }; + var EventQueue = { + list: [], + insert: function(he, site, offset) { + he.vertex = site; + he.ystar = site.y + offset; + for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) { + var next = list[i]; + if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) { + continue; + } else { + break; + } + } + list.splice(i, 0, he); + }, + del: function(he) { + for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {} + ls.splice(i, 1); + }, + empty: function() { + return EventQueue.list.length === 0; + }, + nextEvent: function(he) { + for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) { + if (ls[i] == he) return ls[i + 1]; + } + return null; + }, + min: function() { + var elem = EventQueue.list[0]; + return { + x: elem.vertex.x, + y: elem.ystar + }; + }, + extractMin: function() { + return EventQueue.list.shift(); + } + }; + EdgeList.init(); + Sites.bottomSite = Sites.list.shift(); + var newSite = Sites.list.shift(), newIntStar; + var lbnd, rbnd, llbnd, rrbnd, bisector; + var bot, top, temp, p, v; + var e, pm; + while (true) { + if (!EventQueue.empty()) { + newIntStar = EventQueue.min(); + } + if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) { + lbnd = EdgeList.leftBound(newSite); + rbnd = EdgeList.right(lbnd); + bot = EdgeList.rightRegion(lbnd); + e = Geom.bisect(bot, newSite); + bisector = EdgeList.createHalfEdge(e, "l"); + EdgeList.insert(lbnd, bisector); + p = Geom.intersect(lbnd, bisector); + if (p) { + EventQueue.del(lbnd); + EventQueue.insert(lbnd, p, Geom.distance(p, newSite)); + } + lbnd = bisector; + bisector = EdgeList.createHalfEdge(e, "r"); + EdgeList.insert(lbnd, bisector); + p = Geom.intersect(bisector, rbnd); + if (p) { + EventQueue.insert(bisector, p, Geom.distance(p, newSite)); + } + newSite = Sites.list.shift(); + } else if (!EventQueue.empty()) { + lbnd = EventQueue.extractMin(); + llbnd = EdgeList.left(lbnd); + rbnd = EdgeList.right(lbnd); + rrbnd = EdgeList.right(rbnd); + bot = EdgeList.leftRegion(lbnd); + top = EdgeList.rightRegion(rbnd); + v = lbnd.vertex; + Geom.endPoint(lbnd.edge, lbnd.side, v); + Geom.endPoint(rbnd.edge, rbnd.side, v); + EdgeList.del(lbnd); + EventQueue.del(rbnd); + EdgeList.del(rbnd); + pm = "l"; + if (bot.y > top.y) { + temp = bot; + bot = top; + top = temp; + pm = "r"; + } + e = Geom.bisect(bot, top); + bisector = EdgeList.createHalfEdge(e, pm); + EdgeList.insert(llbnd, bisector); + Geom.endPoint(e, d3_geom_voronoiOpposite[pm], v); + p = Geom.intersect(llbnd, bisector); + if (p) { + EventQueue.del(llbnd); + EventQueue.insert(llbnd, p, Geom.distance(p, bot)); + } + p = Geom.intersect(bisector, rrbnd); + if (p) { + EventQueue.insert(bisector, p, Geom.distance(p, bot)); + } + } else { + break; + } + } + for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) { + callback(lbnd.edge); + } + } + d3.geom.quadtree = function(points, x1, y1, x2, y2) { + var x = d3_svg_lineX, y = d3_svg_lineY, compat; + if (compat = arguments.length) { + x = d3_geom_quadtreeCompatX; + y = d3_geom_quadtreeCompatY; + if (compat === 3) { + y2 = y1; + x2 = x1; + y1 = x1 = 0; + } + return quadtree(points); + } + function quadtree(data) { + var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_; + if (x1 != null) { + x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2; + } else { + x2_ = y2_ = -(x1_ = y1_ = Infinity); + xs = [], ys = []; + n = data.length; + if (compat) for (i = 0; i < n; ++i) { + d = data[i]; + if (d.x < x1_) x1_ = d.x; + if (d.y < y1_) y1_ = d.y; + if (d.x > x2_) x2_ = d.x; + if (d.y > y2_) y2_ = d.y; + xs.push(d.x); + ys.push(d.y); + } else for (i = 0; i < n; ++i) { + var x_ = +fx(d = data[i], i), y_ = +fy(d, i); + if (x_ < x1_) x1_ = x_; + if (y_ < y1_) y1_ = y_; + if (x_ > x2_) x2_ = x_; + if (y_ > y2_) y2_ = y_; + xs.push(x_); + ys.push(y_); + } + } + var dx = x2_ - x1_, dy = y2_ - y1_; + if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy; + function insert(n, d, x, y, x1, y1, x2, y2) { + if (isNaN(x) || isNaN(y)) return; + if (n.leaf) { + var nx = n.x, ny = n.y; + if (nx != null) { + if (Math.abs(nx - x) + Math.abs(ny - y) < .01) { + insertChild(n, d, x, y, x1, y1, x2, y2); + } else { + var nPoint = n.point; + n.x = n.y = n.point = null; + insertChild(n, nPoint, nx, ny, x1, y1, x2, y2); + insertChild(n, d, x, y, x1, y1, x2, y2); + } + } else { + n.x = x, n.y = y, n.point = d; + } + } else { + insertChild(n, d, x, y, x1, y1, x2, y2); + } + } + function insertChild(n, d, x, y, x1, y1, x2, y2) { + var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = x >= sx, bottom = y >= sy, i = (bottom << 1) + right; + n.leaf = false; + n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode()); + if (right) x1 = sx; else x2 = sx; + if (bottom) y1 = sy; else y2 = sy; + insert(n, d, x, y, x1, y1, x2, y2); + } + var root = d3_geom_quadtreeNode(); + root.add = function(d) { + insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_); + }; + root.visit = function(f) { + d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_); + }; + i = -1; + if (x1 == null) { + while (++i < n) { + insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_); + } + --i; + } else data.forEach(root.add); + xs = ys = data = d = null; + return root; + } + quadtree.x = function(_) { + return arguments.length ? (x = _, quadtree) : x; + }; + quadtree.y = function(_) { + return arguments.length ? (y = _, quadtree) : y; + }; + quadtree.extent = function(_) { + if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ]; + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], + y2 = +_[1][1]; + return quadtree; + }; + quadtree.size = function(_) { + if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ]; + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1]; + return quadtree; + }; + return quadtree; + }; + function d3_geom_quadtreeCompatX(d) { + return d.x; + } + function d3_geom_quadtreeCompatY(d) { + return d.y; + } + function d3_geom_quadtreeNode() { + return { + leaf: true, + nodes: [], + point: null, + x: null, + y: null + }; + } + function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) { + if (!f(node, x1, y1, x2, y2)) { + var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes; + if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy); + if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy); + if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2); + if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2); + } + } + d3.interpolateRgb = d3_interpolateRgb; + function d3_interpolateRgb(a, b) { + a = d3.rgb(a); + b = d3.rgb(b); + var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab; + return function(t) { + return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t)); + }; + } + d3.interpolateObject = d3_interpolateObject; + function d3_interpolateObject(a, b) { + var i = {}, c = {}, k; + for (k in a) { + if (k in b) { + i[k] = d3_interpolate(a[k], b[k]); + } else { + c[k] = a[k]; + } + } + for (k in b) { + if (!(k in a)) { + c[k] = b[k]; + } + } + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; + } + d3.interpolateNumber = d3_interpolateNumber; + function d3_interpolateNumber(a, b) { + b -= a = +a; + return function(t) { + return a + b * t; + }; + } + d3.interpolateString = d3_interpolateString; + function d3_interpolateString(a, b) { + var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o; + a = a + "", b = b + ""; + d3_interpolate_number.lastIndex = 0; + for (i = 0; m = d3_interpolate_number.exec(b); ++i) { + if (m.index) s.push(b.substring(s0, s1 = m.index)); + q.push({ + i: s.length, + x: m[0] + }); + s.push(null); + s0 = d3_interpolate_number.lastIndex; + } + if (s0 < b.length) s.push(b.substring(s0)); + for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) { + o = q[i]; + if (o.x == m[0]) { + if (o.i) { + if (s[o.i + 1] == null) { + s[o.i - 1] += o.x; + s.splice(o.i, 1); + for (j = i + 1; j < n; ++j) q[j].i--; + } else { + s[o.i - 1] += o.x + s[o.i + 1]; + s.splice(o.i, 2); + for (j = i + 1; j < n; ++j) q[j].i -= 2; + } + } else { + if (s[o.i + 1] == null) { + s[o.i] = o.x; + } else { + s[o.i] = o.x + s[o.i + 1]; + s.splice(o.i + 1, 1); + for (j = i + 1; j < n; ++j) q[j].i--; + } + } + q.splice(i, 1); + n--; + i--; + } else { + o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x)); + } + } + while (i < n) { + o = q.pop(); + if (s[o.i + 1] == null) { + s[o.i] = o.x; + } else { + s[o.i] = o.x + s[o.i + 1]; + s.splice(o.i + 1, 1); + } + n--; + } + if (s.length === 1) { + return s[0] == null ? (o = q[0].x, function(t) { + return o(t) + ""; + }) : function() { + return b; + }; + } + return function(t) { + for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + } + var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; + d3.interpolate = d3_interpolate; + function d3_interpolate(a, b) { + var i = d3.interpolators.length, f; + while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ; + return f; + } + d3.interpolators = [ function(a, b) { + var t = typeof b; + return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_Color ? d3_interpolateRgb : t === "object" ? Array.isArray(b) ? d3_interpolateArray : d3_interpolateObject : d3_interpolateNumber)(a, b); + } ]; + d3.interpolateArray = d3_interpolateArray; + function d3_interpolateArray(a, b) { + var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i; + for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i])); + for (;i < na; ++i) c[i] = a[i]; + for (;i < nb; ++i) c[i] = b[i]; + return function(t) { + for (i = 0; i < n0; ++i) c[i] = x[i](t); + return c; + }; + } + var d3_ease_default = function() { + return d3_identity; + }; + var d3_ease = d3.map({ + linear: d3_ease_default, + poly: d3_ease_poly, + quad: function() { + return d3_ease_quad; + }, + cubic: function() { + return d3_ease_cubic; + }, + sin: function() { + return d3_ease_sin; + }, + exp: function() { + return d3_ease_exp; + }, + circle: function() { + return d3_ease_circle; + }, + elastic: d3_ease_elastic, + back: d3_ease_back, + bounce: function() { + return d3_ease_bounce; + } + }); + var d3_ease_mode = d3.map({ + "in": d3_identity, + out: d3_ease_reverse, + "in-out": d3_ease_reflect, + "out-in": function(f) { + return d3_ease_reflect(d3_ease_reverse(f)); + } + }); + d3.ease = function(name) { + var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in"; + t = d3_ease.get(t) || d3_ease_default; + m = d3_ease_mode.get(m) || d3_identity; + return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1)))); + }; + function d3_ease_clamp(f) { + return function(t) { + return t <= 0 ? 0 : t >= 1 ? 1 : f(t); + }; + } + function d3_ease_reverse(f) { + return function(t) { + return 1 - f(1 - t); + }; + } + function d3_ease_reflect(f) { + return function(t) { + return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t)); + }; + } + function d3_ease_quad(t) { + return t * t; + } + function d3_ease_cubic(t) { + return t * t * t; + } + function d3_ease_cubicInOut(t) { + if (t <= 0) return 0; + if (t >= 1) return 1; + var t2 = t * t, t3 = t2 * t; + return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75); + } + function d3_ease_poly(e) { + return function(t) { + return Math.pow(t, e); + }; + } + function d3_ease_sin(t) { + return 1 - Math.cos(t * halfπ); + } + function d3_ease_exp(t) { + return Math.pow(2, 10 * (t - 1)); + } + function d3_ease_circle(t) { + return 1 - Math.sqrt(1 - t * t); + } + function d3_ease_elastic(a, p) { + var s; + if (arguments.length < 2) p = .45; + if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4; + return function(t) { + return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p); + }; + } + function d3_ease_back(s) { + if (!s) s = 1.70158; + return function(t) { + return t * t * ((s + 1) * t - s); + }; + } + function d3_ease_bounce(t) { + return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; + } + d3.interpolateHcl = d3_interpolateHcl; + function d3_interpolateHcl(a, b) { + a = d3.hcl(a); + b = d3.hcl(b); + var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al; + if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac; + if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; + return function(t) { + return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + ""; + }; + } + d3.interpolateHsl = d3_interpolateHsl; + function d3_interpolateHsl(a, b) { + a = d3.hsl(a); + b = d3.hsl(b); + var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al; + if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as; + if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; + return function(t) { + return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + ""; + }; + } + d3.interpolateLab = d3_interpolateLab; + function d3_interpolateLab(a, b) { + a = d3.lab(a); + b = d3.lab(b); + var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab; + return function(t) { + return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + ""; + }; + } + d3.interpolateRound = d3_interpolateRound; + function d3_interpolateRound(a, b) { + b -= a; + return function(t) { + return Math.round(a + b * t); + }; + } + d3.transform = function(string) { + var g = d3_document.createElementNS(d3.ns.prefix.svg, "g"); + return (d3.transform = function(string) { + if (string != null) { + g.setAttribute("transform", string); + var t = g.transform.baseVal.consolidate(); + } + return new d3_transform(t ? t.matrix : d3_transformIdentity); + })(string); + }; + function d3_transform(m) { + var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; + if (r0[0] * r1[1] < r1[0] * r0[1]) { + r0[0] *= -1; + r0[1] *= -1; + kx *= -1; + kz *= -1; + } + this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees; + this.translate = [ m.e, m.f ]; + this.scale = [ kx, ky ]; + this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0; + } + d3_transform.prototype.toString = function() { + return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")"; + }; + function d3_transformDot(a, b) { + return a[0] * b[0] + a[1] * b[1]; + } + function d3_transformNormalize(a) { + var k = Math.sqrt(d3_transformDot(a, a)); + if (k) { + a[0] /= k; + a[1] /= k; + } + return k; + } + function d3_transformCombine(a, b, k) { + a[0] += k * b[0]; + a[1] += k * b[1]; + return a; + } + var d3_transformIdentity = { + a: 1, + b: 0, + c: 0, + d: 1, + e: 0, + f: 0 + }; + d3.interpolateTransform = d3_interpolateTransform; + function d3_interpolateTransform(a, b) { + var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale; + if (ta[0] != tb[0] || ta[1] != tb[1]) { + s.push("translate(", null, ",", null, ")"); + q.push({ + i: 1, + x: d3_interpolateNumber(ta[0], tb[0]) + }, { + i: 3, + x: d3_interpolateNumber(ta[1], tb[1]) + }); + } else if (tb[0] || tb[1]) { + s.push("translate(" + tb + ")"); + } else { + s.push(""); + } + if (ra != rb) { + if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; + q.push({ + i: s.push(s.pop() + "rotate(", null, ")") - 2, + x: d3_interpolateNumber(ra, rb) + }); + } else if (rb) { + s.push(s.pop() + "rotate(" + rb + ")"); + } + if (wa != wb) { + q.push({ + i: s.push(s.pop() + "skewX(", null, ")") - 2, + x: d3_interpolateNumber(wa, wb) + }); + } else if (wb) { + s.push(s.pop() + "skewX(" + wb + ")"); + } + if (ka[0] != kb[0] || ka[1] != kb[1]) { + n = s.push(s.pop() + "scale(", null, ",", null, ")"); + q.push({ + i: n - 4, + x: d3_interpolateNumber(ka[0], kb[0]) + }, { + i: n - 2, + x: d3_interpolateNumber(ka[1], kb[1]) + }); + } else if (kb[0] != 1 || kb[1] != 1) { + s.push(s.pop() + "scale(" + kb + ")"); + } + n = q.length; + return function(t) { + var i = -1, o; + while (++i < n) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + } + function d3_uninterpolateNumber(a, b) { + b = b - (a = +a) ? 1 / (b - a) : 0; + return function(x) { + return (x - a) * b; + }; + } + function d3_uninterpolateClamp(a, b) { + b = b - (a = +a) ? 1 / (b - a) : 0; + return function(x) { + return Math.max(0, Math.min(1, (x - a) * b)); + }; + } + d3.layout = {}; + d3.layout.bundle = function() { + return function(links) { + var paths = [], i = -1, n = links.length; + while (++i < n) paths.push(d3_layout_bundlePath(links[i])); + return paths; + }; + }; + function d3_layout_bundlePath(link) { + var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ]; + while (start !== lca) { + start = start.parent; + points.push(start); + } + var k = points.length; + while (end !== lca) { + points.splice(k, 0, end); + end = end.parent; + } + return points; + } + function d3_layout_bundleAncestors(node) { + var ancestors = [], parent = node.parent; + while (parent != null) { + ancestors.push(node); + node = parent; + parent = parent.parent; + } + ancestors.push(node); + return ancestors; + } + function d3_layout_bundleLeastCommonAncestor(a, b) { + if (a === b) return a; + var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null; + while (aNode === bNode) { + sharedNode = aNode; + aNode = aNodes.pop(); + bNode = bNodes.pop(); + } + return sharedNode; + } + d3.layout.chord = function() { + var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords; + function relayout() { + var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j; + chords = []; + groups = []; + k = 0, i = -1; + while (++i < n) { + x = 0, j = -1; + while (++j < n) { + x += matrix[i][j]; + } + groupSums.push(x); + subgroupIndex.push(d3.range(n)); + k += x; + } + if (sortGroups) { + groupIndex.sort(function(a, b) { + return sortGroups(groupSums[a], groupSums[b]); + }); + } + if (sortSubgroups) { + subgroupIndex.forEach(function(d, i) { + d.sort(function(a, b) { + return sortSubgroups(matrix[i][a], matrix[i][b]); + }); + }); + } + k = (τ - padding * n) / k; + x = 0, i = -1; + while (++i < n) { + x0 = x, j = -1; + while (++j < n) { + var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k; + subgroups[di + "-" + dj] = { + index: di, + subindex: dj, + startAngle: a0, + endAngle: a1, + value: v + }; + } + groups[di] = { + index: di, + startAngle: x0, + endAngle: x, + value: (x - x0) / k + }; + x += padding; + } + i = -1; + while (++i < n) { + j = i - 1; + while (++j < n) { + var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i]; + if (source.value || target.value) { + chords.push(source.value < target.value ? { + source: target, + target: source + } : { + source: source, + target: target + }); + } + } + } + if (sortChords) resort(); + } + function resort() { + chords.sort(function(a, b) { + return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2); + }); + } + chord.matrix = function(x) { + if (!arguments.length) return matrix; + n = (matrix = x) && matrix.length; + chords = groups = null; + return chord; + }; + chord.padding = function(x) { + if (!arguments.length) return padding; + padding = x; + chords = groups = null; + return chord; + }; + chord.sortGroups = function(x) { + if (!arguments.length) return sortGroups; + sortGroups = x; + chords = groups = null; + return chord; + }; + chord.sortSubgroups = function(x) { + if (!arguments.length) return sortSubgroups; + sortSubgroups = x; + chords = null; + return chord; + }; + chord.sortChords = function(x) { + if (!arguments.length) return sortChords; + sortChords = x; + if (chords) resort(); + return chord; + }; + chord.chords = function() { + if (!chords) relayout(); + return chords; + }; + chord.groups = function() { + if (!groups) relayout(); + return groups; + }; + return chord; + }; + d3.layout.force = function() { + var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, nodes = [], links = [], distances, strengths, charges; + function repulse(node) { + return function(quad, x1, _, x2) { + if (quad.point !== node) { + var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy); + if ((x2 - x1) * dn < theta) { + var k = quad.charge * dn * dn; + node.px -= dx * k; + node.py -= dy * k; + return true; + } + if (quad.point && isFinite(dn)) { + var k = quad.pointCharge * dn * dn; + node.px -= dx * k; + node.py -= dy * k; + } + } + return !quad.charge; + }; + } + force.tick = function() { + if ((alpha *= .99) < .005) { + event.end({ + type: "end", + alpha: alpha = 0 + }); + return true; + } + var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y; + for (i = 0; i < m; ++i) { + o = links[i]; + s = o.source; + t = o.target; + x = t.x - s.x; + y = t.y - s.y; + if (l = x * x + y * y) { + l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l; + x *= l; + y *= l; + t.x -= x * (k = s.weight / (t.weight + s.weight)); + t.y -= y * k; + s.x += x * (k = 1 - k); + s.y += y * k; + } + } + if (k = alpha * gravity) { + x = size[0] / 2; + y = size[1] / 2; + i = -1; + if (k) while (++i < n) { + o = nodes[i]; + o.x += (x - o.x) * k; + o.y += (y - o.y) * k; + } + } + if (charge) { + d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges); + i = -1; + while (++i < n) { + if (!(o = nodes[i]).fixed) { + q.visit(repulse(o)); + } + } + } + i = -1; + while (++i < n) { + o = nodes[i]; + if (o.fixed) { + o.x = o.px; + o.y = o.py; + } else { + o.x -= (o.px - (o.px = o.x)) * friction; + o.y -= (o.py - (o.py = o.y)) * friction; + } + } + event.tick({ + type: "tick", + alpha: alpha + }); + }; + force.nodes = function(x) { + if (!arguments.length) return nodes; + nodes = x; + return force; + }; + force.links = function(x) { + if (!arguments.length) return links; + links = x; + return force; + }; + force.size = function(x) { + if (!arguments.length) return size; + size = x; + return force; + }; + force.linkDistance = function(x) { + if (!arguments.length) return linkDistance; + linkDistance = typeof x === "function" ? x : +x; + return force; + }; + force.distance = force.linkDistance; + force.linkStrength = function(x) { + if (!arguments.length) return linkStrength; + linkStrength = typeof x === "function" ? x : +x; + return force; + }; + force.friction = function(x) { + if (!arguments.length) return friction; + friction = +x; + return force; + }; + force.charge = function(x) { + if (!arguments.length) return charge; + charge = typeof x === "function" ? x : +x; + return force; + }; + force.gravity = function(x) { + if (!arguments.length) return gravity; + gravity = +x; + return force; + }; + force.theta = function(x) { + if (!arguments.length) return theta; + theta = +x; + return force; + }; + force.alpha = function(x) { + if (!arguments.length) return alpha; + x = +x; + if (alpha) { + if (x > 0) alpha = x; else alpha = 0; + } else if (x > 0) { + event.start({ + type: "start", + alpha: alpha = x + }); + d3.timer(force.tick); + } + return force; + }; + force.start = function() { + var i, j, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o; + for (i = 0; i < n; ++i) { + (o = nodes[i]).index = i; + o.weight = 0; + } + for (i = 0; i < m; ++i) { + o = links[i]; + if (typeof o.source == "number") o.source = nodes[o.source]; + if (typeof o.target == "number") o.target = nodes[o.target]; + ++o.source.weight; + ++o.target.weight; + } + for (i = 0; i < n; ++i) { + o = nodes[i]; + if (isNaN(o.x)) o.x = position("x", w); + if (isNaN(o.y)) o.y = position("y", h); + if (isNaN(o.px)) o.px = o.x; + if (isNaN(o.py)) o.py = o.y; + } + distances = []; + if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance; + strengths = []; + if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength; + charges = []; + if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge; + function position(dimension, size) { + var neighbors = neighbor(i), j = -1, m = neighbors.length, x; + while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x; + return Math.random() * size; + } + function neighbor() { + if (!neighbors) { + neighbors = []; + for (j = 0; j < n; ++j) { + neighbors[j] = []; + } + for (j = 0; j < m; ++j) { + var o = links[j]; + neighbors[o.source.index].push(o.target); + neighbors[o.target.index].push(o.source); + } + } + return neighbors[i]; + } + return force.resume(); + }; + force.resume = function() { + return force.alpha(.1); + }; + force.stop = function() { + return force.alpha(0); + }; + force.drag = function() { + if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend); + if (!arguments.length) return drag; + this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag); + }; + function dragmove(d) { + d.px = d3.event.x, d.py = d3.event.y; + force.resume(); + } + return d3.rebind(force, event, "on"); + }; + function d3_layout_forceDragstart(d) { + d.fixed |= 2; + } + function d3_layout_forceDragend(d) { + d.fixed &= ~6; + } + function d3_layout_forceMouseover(d) { + d.fixed |= 4; + d.px = d.x, d.py = d.y; + } + function d3_layout_forceMouseout(d) { + d.fixed &= ~4; + } + function d3_layout_forceAccumulate(quad, alpha, charges) { + var cx = 0, cy = 0; + quad.charge = 0; + if (!quad.leaf) { + var nodes = quad.nodes, n = nodes.length, i = -1, c; + while (++i < n) { + c = nodes[i]; + if (c == null) continue; + d3_layout_forceAccumulate(c, alpha, charges); + quad.charge += c.charge; + cx += c.charge * c.cx; + cy += c.charge * c.cy; + } + } + if (quad.point) { + if (!quad.leaf) { + quad.point.x += Math.random() - .5; + quad.point.y += Math.random() - .5; + } + var k = alpha * charges[quad.point.index]; + quad.charge += quad.pointCharge = k; + cx += k * quad.point.x; + cy += k * quad.point.y; + } + quad.cx = cx / quad.charge; + quad.cy = cy / quad.charge; + } + var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1; + d3.layout.hierarchy = function() { + var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue; + function recurse(node, depth, nodes) { + var childs = children.call(hierarchy, node, depth); + node.depth = depth; + nodes.push(node); + if (childs && (n = childs.length)) { + var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d; + while (++i < n) { + d = recurse(childs[i], j, nodes); + d.parent = node; + c.push(d); + v += d.value; + } + if (sort) c.sort(sort); + if (value) node.value = v; + } else if (value) { + node.value = +value.call(hierarchy, node, depth) || 0; + } + return node; + } + function revalue(node, depth) { + var children = node.children, v = 0; + if (children && (n = children.length)) { + var i = -1, n, j = depth + 1; + while (++i < n) v += revalue(children[i], j); + } else if (value) { + v = +value.call(hierarchy, node, depth) || 0; + } + if (value) node.value = v; + return v; + } + function hierarchy(d) { + var nodes = []; + recurse(d, 0, nodes); + return nodes; + } + hierarchy.sort = function(x) { + if (!arguments.length) return sort; + sort = x; + return hierarchy; + }; + hierarchy.children = function(x) { + if (!arguments.length) return children; + children = x; + return hierarchy; + }; + hierarchy.value = function(x) { + if (!arguments.length) return value; + value = x; + return hierarchy; + }; + hierarchy.revalue = function(root) { + revalue(root, 0); + return root; + }; + return hierarchy; + }; + function d3_layout_hierarchyRebind(object, hierarchy) { + d3.rebind(object, hierarchy, "sort", "children", "value"); + object.nodes = object; + object.links = d3_layout_hierarchyLinks; + return object; + } + function d3_layout_hierarchyChildren(d) { + return d.children; + } + function d3_layout_hierarchyValue(d) { + return d.value; + } + function d3_layout_hierarchySort(a, b) { + return b.value - a.value; + } + function d3_layout_hierarchyLinks(nodes) { + return d3.merge(nodes.map(function(parent) { + return (parent.children || []).map(function(child) { + return { + source: parent, + target: child + }; + }); + })); + } + d3.layout.partition = function() { + var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ]; + function position(node, x, dx, dy) { + var children = node.children; + node.x = x; + node.y = node.depth * dy; + node.dx = dx; + node.dy = dy; + if (children && (n = children.length)) { + var i = -1, n, c, d; + dx = node.value ? dx / node.value : 0; + while (++i < n) { + position(c = children[i], x, d = c.value * dx, dy); + x += d; + } + } + } + function depth(node) { + var children = node.children, d = 0; + if (children && (n = children.length)) { + var i = -1, n; + while (++i < n) d = Math.max(d, depth(children[i])); + } + return 1 + d; + } + function partition(d, i) { + var nodes = hierarchy.call(this, d, i); + position(nodes[0], 0, size[0], size[1] / depth(nodes[0])); + return nodes; + } + partition.size = function(x) { + if (!arguments.length) return size; + size = x; + return partition; + }; + return d3_layout_hierarchyRebind(partition, hierarchy); + }; + d3.layout.pie = function() { + var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ; + function pie(data) { + var values = data.map(function(d, i) { + return +value.call(pie, d, i); + }); + var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle); + var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values); + var index = d3.range(data.length); + if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) { + return values[j] - values[i]; + } : function(i, j) { + return sort(data[i], data[j]); + }); + var arcs = []; + index.forEach(function(i) { + var d; + arcs[i] = { + data: data[i], + value: d = values[i], + startAngle: a, + endAngle: a += d * k + }; + }); + return arcs; + } + pie.value = function(x) { + if (!arguments.length) return value; + value = x; + return pie; + }; + pie.sort = function(x) { + if (!arguments.length) return sort; + sort = x; + return pie; + }; + pie.startAngle = function(x) { + if (!arguments.length) return startAngle; + startAngle = x; + return pie; + }; + pie.endAngle = function(x) { + if (!arguments.length) return endAngle; + endAngle = x; + return pie; + }; + return pie; + }; + var d3_layout_pieSortByValue = {}; + d3.layout.stack = function() { + var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY; + function stack(data, index) { + var series = data.map(function(d, i) { + return values.call(stack, d, i); + }); + var points = series.map(function(d) { + return d.map(function(v, i) { + return [ x.call(stack, v, i), y.call(stack, v, i) ]; + }); + }); + var orders = order.call(stack, points, index); + series = d3.permute(series, orders); + points = d3.permute(points, orders); + var offsets = offset.call(stack, points, index); + var n = series.length, m = series[0].length, i, j, o; + for (j = 0; j < m; ++j) { + out.call(stack, series[0][j], o = offsets[j], points[0][j][1]); + for (i = 1; i < n; ++i) { + out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]); + } + } + return data; + } + stack.values = function(x) { + if (!arguments.length) return values; + values = x; + return stack; + }; + stack.order = function(x) { + if (!arguments.length) return order; + order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault; + return stack; + }; + stack.offset = function(x) { + if (!arguments.length) return offset; + offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero; + return stack; + }; + stack.x = function(z) { + if (!arguments.length) return x; + x = z; + return stack; + }; + stack.y = function(z) { + if (!arguments.length) return y; + y = z; + return stack; + }; + stack.out = function(z) { + if (!arguments.length) return out; + out = z; + return stack; + }; + return stack; + }; + function d3_layout_stackX(d) { + return d.x; + } + function d3_layout_stackY(d) { + return d.y; + } + function d3_layout_stackOut(d, y0, y) { + d.y0 = y0; + d.y = y; + } + var d3_layout_stackOrders = d3.map({ + "inside-out": function(data) { + var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) { + return max[a] - max[b]; + }), top = 0, bottom = 0, tops = [], bottoms = []; + for (i = 0; i < n; ++i) { + j = index[i]; + if (top < bottom) { + top += sums[j]; + tops.push(j); + } else { + bottom += sums[j]; + bottoms.push(j); + } + } + return bottoms.reverse().concat(tops); + }, + reverse: function(data) { + return d3.range(data.length).reverse(); + }, + "default": d3_layout_stackOrderDefault + }); + var d3_layout_stackOffsets = d3.map({ + silhouette: function(data) { + var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = []; + for (j = 0; j < m; ++j) { + for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; + if (o > max) max = o; + sums.push(o); + } + for (j = 0; j < m; ++j) { + y0[j] = (max - sums[j]) / 2; + } + return y0; + }, + wiggle: function(data) { + var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = []; + y0[0] = o = o0 = 0; + for (j = 1; j < m; ++j) { + for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1]; + for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) { + for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) { + s3 += (data[k][j][1] - data[k][j - 1][1]) / dx; + } + s2 += s3 * data[i][j][1]; + } + y0[j] = o -= s1 ? s2 / s1 * dx : 0; + if (o < o0) o0 = o; + } + for (j = 0; j < m; ++j) y0[j] -= o0; + return y0; + }, + expand: function(data) { + var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = []; + for (j = 0; j < m; ++j) { + for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; + if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k; + } + for (j = 0; j < m; ++j) y0[j] = 0; + return y0; + }, + zero: d3_layout_stackOffsetZero + }); + function d3_layout_stackOrderDefault(data) { + return d3.range(data.length); + } + function d3_layout_stackOffsetZero(data) { + var j = -1, m = data[0].length, y0 = []; + while (++j < m) y0[j] = 0; + return y0; + } + function d3_layout_stackMaxIndex(array) { + var i = 1, j = 0, v = array[0][1], k, n = array.length; + for (;i < n; ++i) { + if ((k = array[i][1]) > v) { + j = i; + v = k; + } + } + return j; + } + function d3_layout_stackReduceSum(d) { + return d.reduce(d3_layout_stackSum, 0); + } + function d3_layout_stackSum(p, d) { + return p + d[1]; + } + d3.layout.histogram = function() { + var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges; + function histogram(data, i) { + var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x; + while (++i < m) { + bin = bins[i] = []; + bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]); + bin.y = 0; + } + if (m > 0) { + i = -1; + while (++i < n) { + x = values[i]; + if (x >= range[0] && x <= range[1]) { + bin = bins[d3.bisect(thresholds, x, 1, m) - 1]; + bin.y += k; + bin.push(data[i]); + } + } + } + return bins; + } + histogram.value = function(x) { + if (!arguments.length) return valuer; + valuer = x; + return histogram; + }; + histogram.range = function(x) { + if (!arguments.length) return ranger; + ranger = d3_functor(x); + return histogram; + }; + histogram.bins = function(x) { + if (!arguments.length) return binner; + binner = typeof x === "number" ? function(range) { + return d3_layout_histogramBinFixed(range, x); + } : d3_functor(x); + return histogram; + }; + histogram.frequency = function(x) { + if (!arguments.length) return frequency; + frequency = !!x; + return histogram; + }; + return histogram; + }; + function d3_layout_histogramBinSturges(range, values) { + return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1)); + } + function d3_layout_histogramBinFixed(range, n) { + var x = -1, b = +range[0], m = (range[1] - b) / n, f = []; + while (++x <= n) f[x] = m * x + b; + return f; + } + function d3_layout_histogramRange(values) { + return [ d3.min(values), d3.max(values) ]; + } + d3.layout.tree = function() { + var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; + function tree(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0]; + function firstWalk(node, previousSibling) { + var children = node.children, layout = node._tree; + if (children && (n = children.length)) { + var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1; + while (++i < n) { + child = children[i]; + firstWalk(child, previousChild); + ancestor = apportion(child, previousChild, ancestor); + previousChild = child; + } + d3_layout_treeShift(node); + var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim); + if (previousSibling) { + layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); + layout.mod = layout.prelim - midpoint; + } else { + layout.prelim = midpoint; + } + } else { + if (previousSibling) { + layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); + } + } + } + function secondWalk(node, x) { + node.x = node._tree.prelim + x; + var children = node.children; + if (children && (n = children.length)) { + var i = -1, n; + x += node._tree.mod; + while (++i < n) { + secondWalk(children[i], x); + } + } + } + function apportion(node, previousSibling, ancestor) { + if (previousSibling) { + var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift; + while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) { + vom = d3_layout_treeLeft(vom); + vop = d3_layout_treeRight(vop); + vop._tree.ancestor = node; + shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip); + if (shift > 0) { + d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift); + sip += shift; + sop += shift; + } + sim += vim._tree.mod; + sip += vip._tree.mod; + som += vom._tree.mod; + sop += vop._tree.mod; + } + if (vim && !d3_layout_treeRight(vop)) { + vop._tree.thread = vim; + vop._tree.mod += sim - sop; + } + if (vip && !d3_layout_treeLeft(vom)) { + vom._tree.thread = vip; + vom._tree.mod += sip - som; + ancestor = node; + } + } + return ancestor; + } + d3_layout_treeVisitAfter(root, function(node, previousSibling) { + node._tree = { + ancestor: node, + prelim: 0, + mod: 0, + change: 0, + shift: 0, + number: previousSibling ? previousSibling._tree.number + 1 : 0 + }; + }); + firstWalk(root); + secondWalk(root, -root._tree.prelim); + var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1; + d3_layout_treeVisitAfter(root, nodeSize ? function(node) { + node.x *= size[0]; + node.y = node.depth * size[1]; + delete node._tree; + } : function(node) { + node.x = (node.x - x0) / (x1 - x0) * size[0]; + node.y = node.depth / y1 * size[1]; + delete node._tree; + }); + return nodes; + } + tree.separation = function(x) { + if (!arguments.length) return separation; + separation = x; + return tree; + }; + tree.size = function(x) { + if (!arguments.length) return nodeSize ? null : size; + nodeSize = (size = x) == null; + return tree; + }; + tree.nodeSize = function(x) { + if (!arguments.length) return nodeSize ? size : null; + nodeSize = (size = x) != null; + return tree; + }; + return d3_layout_hierarchyRebind(tree, hierarchy); + }; + function d3_layout_treeSeparation(a, b) { + return a.parent == b.parent ? 1 : 2; + } + function d3_layout_treeLeft(node) { + var children = node.children; + return children && children.length ? children[0] : node._tree.thread; + } + function d3_layout_treeRight(node) { + var children = node.children, n; + return children && (n = children.length) ? children[n - 1] : node._tree.thread; + } + function d3_layout_treeSearch(node, compare) { + var children = node.children; + if (children && (n = children.length)) { + var child, n, i = -1; + while (++i < n) { + if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) { + node = child; + } + } + } + return node; + } + function d3_layout_treeRightmost(a, b) { + return a.x - b.x; + } + function d3_layout_treeLeftmost(a, b) { + return b.x - a.x; + } + function d3_layout_treeDeepest(a, b) { + return a.depth - b.depth; + } + function d3_layout_treeVisitAfter(node, callback) { + function visit(node, previousSibling) { + var children = node.children; + if (children && (n = children.length)) { + var child, previousChild = null, i = -1, n; + while (++i < n) { + child = children[i]; + visit(child, previousChild); + previousChild = child; + } + } + callback(node, previousSibling); + } + visit(node, null); + } + function d3_layout_treeShift(node) { + var shift = 0, change = 0, children = node.children, i = children.length, child; + while (--i >= 0) { + child = children[i]._tree; + child.prelim += shift; + child.mod += shift; + shift += child.shift + (change += child.change); + } + } + function d3_layout_treeMove(ancestor, node, shift) { + ancestor = ancestor._tree; + node = node._tree; + var change = shift / (node.number - ancestor.number); + ancestor.change += change; + node.change -= change; + node.shift += shift; + node.prelim += shift; + node.mod += shift; + } + function d3_layout_treeAncestor(vim, node, ancestor) { + return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor; + } + d3.layout.pack = function() { + var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius; + function pack(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() { + return radius; + }; + root.x = root.y = 0; + d3_layout_treeVisitAfter(root, function(d) { + d.r = +r(d.value); + }); + d3_layout_treeVisitAfter(root, d3_layout_packSiblings); + if (padding) { + var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2; + d3_layout_treeVisitAfter(root, function(d) { + d.r += dr; + }); + d3_layout_treeVisitAfter(root, d3_layout_packSiblings); + d3_layout_treeVisitAfter(root, function(d) { + d.r -= dr; + }); + } + d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h)); + return nodes; + } + pack.size = function(_) { + if (!arguments.length) return size; + size = _; + return pack; + }; + pack.radius = function(_) { + if (!arguments.length) return radius; + radius = _ == null || typeof _ === "function" ? _ : +_; + return pack; + }; + pack.padding = function(_) { + if (!arguments.length) return padding; + padding = +_; + return pack; + }; + return d3_layout_hierarchyRebind(pack, hierarchy); + }; + function d3_layout_packSort(a, b) { + return a.value - b.value; + } + function d3_layout_packInsert(a, b) { + var c = a._pack_next; + a._pack_next = b; + b._pack_prev = a; + b._pack_next = c; + c._pack_prev = b; + } + function d3_layout_packSplice(a, b) { + a._pack_next = b; + b._pack_prev = a; + } + function d3_layout_packIntersects(a, b) { + var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r; + return .999 * dr * dr > dx * dx + dy * dy; + } + function d3_layout_packSiblings(node) { + if (!(nodes = node.children) || !(n = nodes.length)) return; + var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n; + function bound(node) { + xMin = Math.min(node.x - node.r, xMin); + xMax = Math.max(node.x + node.r, xMax); + yMin = Math.min(node.y - node.r, yMin); + yMax = Math.max(node.y + node.r, yMax); + } + nodes.forEach(d3_layout_packLink); + a = nodes[0]; + a.x = -a.r; + a.y = 0; + bound(a); + if (n > 1) { + b = nodes[1]; + b.x = b.r; + b.y = 0; + bound(b); + if (n > 2) { + c = nodes[2]; + d3_layout_packPlace(a, b, c); + bound(c); + d3_layout_packInsert(a, c); + a._pack_prev = c; + d3_layout_packInsert(c, b); + b = a._pack_next; + for (i = 3; i < n; i++) { + d3_layout_packPlace(a, b, c = nodes[i]); + var isect = 0, s1 = 1, s2 = 1; + for (j = b._pack_next; j !== b; j = j._pack_next, s1++) { + if (d3_layout_packIntersects(j, c)) { + isect = 1; + break; + } + } + if (isect == 1) { + for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) { + if (d3_layout_packIntersects(k, c)) { + break; + } + } + } + if (isect) { + if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b); + i--; + } else { + d3_layout_packInsert(a, c); + b = c; + bound(c); + } + } + } + } + var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0; + for (i = 0; i < n; i++) { + c = nodes[i]; + c.x -= cx; + c.y -= cy; + cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y)); + } + node.r = cr; + nodes.forEach(d3_layout_packUnlink); + } + function d3_layout_packLink(node) { + node._pack_next = node._pack_prev = node; + } + function d3_layout_packUnlink(node) { + delete node._pack_next; + delete node._pack_prev; + } + function d3_layout_packTransform(node, x, y, k) { + var children = node.children; + node.x = x += k * node.x; + node.y = y += k * node.y; + node.r *= k; + if (children) { + var i = -1, n = children.length; + while (++i < n) d3_layout_packTransform(children[i], x, y, k); + } + } + function d3_layout_packPlace(a, b, c) { + var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y; + if (db && (dx || dy)) { + var da = b.r + c.r, dc = dx * dx + dy * dy; + da *= da; + db *= db; + var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc); + c.x = a.x + x * dx + y * dy; + c.y = a.y + x * dy - y * dx; + } else { + c.x = a.x + db; + c.y = a.y; + } + } + d3.layout.cluster = function() { + var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; + function cluster(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0; + d3_layout_treeVisitAfter(root, function(node) { + var children = node.children; + if (children && children.length) { + node.x = d3_layout_clusterX(children); + node.y = d3_layout_clusterY(children); + } else { + node.x = previousNode ? x += separation(node, previousNode) : 0; + node.y = 0; + previousNode = node; + } + }); + var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2; + d3_layout_treeVisitAfter(root, nodeSize ? function(node) { + node.x = (node.x - root.x) * size[0]; + node.y = (root.y - node.y) * size[1]; + } : function(node) { + node.x = (node.x - x0) / (x1 - x0) * size[0]; + node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1]; + }); + return nodes; + } + cluster.separation = function(x) { + if (!arguments.length) return separation; + separation = x; + return cluster; + }; + cluster.size = function(x) { + if (!arguments.length) return nodeSize ? null : size; + nodeSize = (size = x) == null; + return cluster; + }; + cluster.nodeSize = function(x) { + if (!arguments.length) return nodeSize ? size : null; + nodeSize = (size = x) != null; + return cluster; + }; + return d3_layout_hierarchyRebind(cluster, hierarchy); + }; + function d3_layout_clusterY(children) { + return 1 + d3.max(children, function(child) { + return child.y; + }); + } + function d3_layout_clusterX(children) { + return children.reduce(function(x, child) { + return x + child.x; + }, 0) / children.length; + } + function d3_layout_clusterLeft(node) { + var children = node.children; + return children && children.length ? d3_layout_clusterLeft(children[0]) : node; + } + function d3_layout_clusterRight(node) { + var children = node.children, n; + return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node; + } + d3.layout.treemap = function() { + var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5)); + function scale(children, k) { + var i = -1, n = children.length, child, area; + while (++i < n) { + area = (child = children[i]).value * (k < 0 ? 0 : k); + child.area = isNaN(area) || area <= 0 ? 0 : area; + } + } + function squarify(node) { + var children = node.children; + if (children && children.length) { + var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n; + scale(remaining, rect.dx * rect.dy / node.value); + row.area = 0; + while ((n = remaining.length) > 0) { + row.push(child = remaining[n - 1]); + row.area += child.area; + if (mode !== "squarify" || (score = worst(row, u)) <= best) { + remaining.pop(); + best = score; + } else { + row.area -= row.pop().area; + position(row, u, rect, false); + u = Math.min(rect.dx, rect.dy); + row.length = row.area = 0; + best = Infinity; + } + } + if (row.length) { + position(row, u, rect, true); + row.length = row.area = 0; + } + children.forEach(squarify); + } + } + function stickify(node) { + var children = node.children; + if (children && children.length) { + var rect = pad(node), remaining = children.slice(), child, row = []; + scale(remaining, rect.dx * rect.dy / node.value); + row.area = 0; + while (child = remaining.pop()) { + row.push(child); + row.area += child.area; + if (child.z != null) { + position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length); + row.length = row.area = 0; + } + } + children.forEach(stickify); + } + } + function worst(row, u) { + var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length; + while (++i < n) { + if (!(r = row[i].area)) continue; + if (r < rmin) rmin = r; + if (r > rmax) rmax = r; + } + s *= s; + u *= u; + return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity; + } + function position(row, u, rect, flush) { + var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o; + if (u == rect.dx) { + if (flush || v > rect.dy) v = rect.dy; + while (++i < n) { + o = row[i]; + o.x = x; + o.y = y; + o.dy = v; + x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0); + } + o.z = true; + o.dx += rect.x + rect.dx - x; + rect.y += v; + rect.dy -= v; + } else { + if (flush || v > rect.dx) v = rect.dx; + while (++i < n) { + o = row[i]; + o.x = x; + o.y = y; + o.dx = v; + y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0); + } + o.z = false; + o.dy += rect.y + rect.dy - y; + rect.x += v; + rect.dx -= v; + } + } + function treemap(d) { + var nodes = stickies || hierarchy(d), root = nodes[0]; + root.x = 0; + root.y = 0; + root.dx = size[0]; + root.dy = size[1]; + if (stickies) hierarchy.revalue(root); + scale([ root ], root.dx * root.dy / root.value); + (stickies ? stickify : squarify)(root); + if (sticky) stickies = nodes; + return nodes; + } + treemap.size = function(x) { + if (!arguments.length) return size; + size = x; + return treemap; + }; + treemap.padding = function(x) { + if (!arguments.length) return padding; + function padFunction(node) { + var p = x.call(treemap, node, node.depth); + return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p); + } + function padConstant(node) { + return d3_layout_treemapPad(node, x); + } + var type; + pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], + padConstant) : padConstant; + return treemap; + }; + treemap.round = function(x) { + if (!arguments.length) return round != Number; + round = x ? Math.round : Number; + return treemap; + }; + treemap.sticky = function(x) { + if (!arguments.length) return sticky; + sticky = x; + stickies = null; + return treemap; + }; + treemap.ratio = function(x) { + if (!arguments.length) return ratio; + ratio = x; + return treemap; + }; + treemap.mode = function(x) { + if (!arguments.length) return mode; + mode = x + ""; + return treemap; + }; + return d3_layout_hierarchyRebind(treemap, hierarchy); + }; + function d3_layout_treemapPadNull(node) { + return { + x: node.x, + y: node.y, + dx: node.dx, + dy: node.dy + }; + } + function d3_layout_treemapPad(node, padding) { + var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2]; + if (dx < 0) { + x += dx / 2; + dx = 0; + } + if (dy < 0) { + y += dy / 2; + dy = 0; + } + return { + x: x, + y: y, + dx: dx, + dy: dy + }; + } + d3.random = { + normal: function(µ, σ) { + var n = arguments.length; + if (n < 2) σ = 1; + if (n < 1) µ = 0; + return function() { + var x, y, r; + do { + x = Math.random() * 2 - 1; + y = Math.random() * 2 - 1; + r = x * x + y * y; + } while (!r || r > 1); + return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r); + }; + }, + logNormal: function() { + var random = d3.random.normal.apply(d3, arguments); + return function() { + return Math.exp(random()); + }; + }, + irwinHall: function(m) { + return function() { + for (var s = 0, j = 0; j < m; j++) s += Math.random(); + return s / m; + }; + } + }; + d3.scale = {}; + function d3_scaleExtent(domain) { + var start = domain[0], stop = domain[domain.length - 1]; + return start < stop ? [ start, stop ] : [ stop, start ]; + } + function d3_scaleRange(scale) { + return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range()); + } + function d3_scale_bilinear(domain, range, uninterpolate, interpolate) { + var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]); + return function(x) { + return i(u(x)); + }; + } + function d3_scale_nice(domain, nice) { + var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx; + if (x1 < x0) { + dx = i0, i0 = i1, i1 = dx; + dx = x0, x0 = x1, x1 = dx; + } + domain[i0] = nice.floor(x0); + domain[i1] = nice.ceil(x1); + return domain; + } + function d3_scale_niceStep(step) { + return step ? { + floor: function(x) { + return Math.floor(x / step) * step; + }, + ceil: function(x) { + return Math.ceil(x / step) * step; + } + } : d3_scale_niceIdentity; + } + var d3_scale_niceIdentity = { + floor: d3_identity, + ceil: d3_identity + }; + function d3_scale_polylinear(domain, range, uninterpolate, interpolate) { + var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1; + if (domain[k] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + while (++j <= k) { + u.push(uninterpolate(domain[j - 1], domain[j])); + i.push(interpolate(range[j - 1], range[j])); + } + return function(x) { + var j = d3.bisect(domain, x, 1, k) - 1; + return i[j](u[j](x)); + }; + } + d3.scale.linear = function() { + return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false); + }; + function d3_scale_linear(domain, range, interpolate, clamp) { + var output, input; + function rescale() { + var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber; + output = linear(domain, range, uninterpolate, interpolate); + input = linear(range, domain, uninterpolate, d3_interpolate); + return scale; + } + function scale(x) { + return output(x); + } + scale.invert = function(y) { + return input(y); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = x.map(Number); + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.rangeRound = function(x) { + return scale.range(x).interpolate(d3_interpolateRound); + }; + scale.clamp = function(x) { + if (!arguments.length) return clamp; + clamp = x; + return rescale(); + }; + scale.interpolate = function(x) { + if (!arguments.length) return interpolate; + interpolate = x; + return rescale(); + }; + scale.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + scale.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + scale.nice = function(m) { + d3_scale_linearNice(domain, m); + return rescale(); + }; + scale.copy = function() { + return d3_scale_linear(domain, range, interpolate, clamp); + }; + return rescale(); + } + function d3_scale_linearRebind(scale, linear) { + return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp"); + } + function d3_scale_linearNice(domain, m) { + return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2])); + } + function d3_scale_linearTickRange(domain, m) { + if (m == null) m = 10; + var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step; + if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2; + extent[0] = Math.ceil(extent[0] / step) * step; + extent[1] = Math.floor(extent[1] / step) * step + step * .5; + extent[2] = step; + return extent; + } + function d3_scale_linearTicks(domain, m) { + return d3.range.apply(d3, d3_scale_linearTickRange(domain, m)); + } + function d3_scale_linearTickFormat(domain, m, format) { + var precision = -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01); + return d3.format(format ? format.replace(d3_format_re, function(a, b, c, d, e, f, g, h, i, j) { + return [ b, c, d, e, f, g, h, i || "." + (precision - (j === "%") * 2), j ].join(""); + }) : ",." + precision + "f"); + } + d3.scale.log = function() { + return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]); + }; + function d3_scale_log(linear, base, positive, domain) { + function log(x) { + return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base); + } + function pow(x) { + return positive ? Math.pow(base, x) : -Math.pow(base, -x); + } + function scale(x) { + return linear(log(x)); + } + scale.invert = function(x) { + return pow(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + positive = x[0] >= 0; + linear.domain((domain = x.map(Number)).map(log)); + return scale; + }; + scale.base = function(_) { + if (!arguments.length) return base; + base = +_; + linear.domain(domain.map(log)); + return scale; + }; + scale.nice = function() { + var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative); + linear.domain(niced); + domain = niced.map(pow); + return scale; + }; + scale.ticks = function() { + var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base; + if (isFinite(j - i)) { + if (positive) { + for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k); + ticks.push(pow(i)); + } else { + ticks.push(pow(i)); + for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k); + } + for (i = 0; ticks[i] < u; i++) {} + for (j = ticks.length; ticks[j - 1] > v; j--) {} + ticks = ticks.slice(i, j); + } + return ticks; + }; + scale.tickFormat = function(n, format) { + if (!arguments.length) return d3_scale_logFormat; + if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format); + var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, + Math.floor), e; + return function(d) { + return d / pow(f(log(d) + e)) <= k ? format(d) : ""; + }; + }; + scale.copy = function() { + return d3_scale_log(linear.copy(), base, positive, domain); + }; + return d3_scale_linearRebind(scale, linear); + } + var d3_scale_logFormat = d3.format(".0e"), d3_scale_logNiceNegative = { + floor: function(x) { + return -Math.ceil(-x); + }, + ceil: function(x) { + return -Math.floor(-x); + } + }; + d3.scale.pow = function() { + return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]); + }; + function d3_scale_pow(linear, exponent, domain) { + var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent); + function scale(x) { + return linear(powp(x)); + } + scale.invert = function(x) { + return powb(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + linear.domain((domain = x.map(Number)).map(powp)); + return scale; + }; + scale.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + scale.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + scale.nice = function(m) { + return scale.domain(d3_scale_linearNice(domain, m)); + }; + scale.exponent = function(x) { + if (!arguments.length) return exponent; + powp = d3_scale_powPow(exponent = x); + powb = d3_scale_powPow(1 / exponent); + linear.domain(domain.map(powp)); + return scale; + }; + scale.copy = function() { + return d3_scale_pow(linear.copy(), exponent, domain); + }; + return d3_scale_linearRebind(scale, linear); + } + function d3_scale_powPow(e) { + return function(x) { + return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e); + }; + } + d3.scale.sqrt = function() { + return d3.scale.pow().exponent(.5); + }; + d3.scale.ordinal = function() { + return d3_scale_ordinal([], { + t: "range", + a: [ [] ] + }); + }; + function d3_scale_ordinal(domain, ranger) { + var index, range, rangeBand; + function scale(x) { + return range[((index.get(x) || ranger.t === "range" && index.set(x, domain.push(x))) - 1) % range.length]; + } + function steps(start, step) { + return d3.range(domain.length).map(function(i) { + return start + step * i; + }); + } + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = []; + index = new d3_Map(); + var i = -1, n = x.length, xi; + while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi)); + return scale[ranger.t].apply(scale, ranger.a); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + rangeBand = 0; + ranger = { + t: "range", + a: arguments + }; + return scale; + }; + scale.rangePoints = function(x, padding) { + if (arguments.length < 2) padding = 0; + var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding); + range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step); + rangeBand = 0; + ranger = { + t: "rangePoints", + a: arguments + }; + return scale; + }; + scale.rangeBands = function(x, padding, outerPadding) { + if (arguments.length < 2) padding = 0; + if (arguments.length < 3) outerPadding = padding; + var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding); + range = steps(start + step * outerPadding, step); + if (reverse) range.reverse(); + rangeBand = step * (1 - padding); + ranger = { + t: "rangeBands", + a: arguments + }; + return scale; + }; + scale.rangeRoundBands = function(x, padding, outerPadding) { + if (arguments.length < 2) padding = 0; + if (arguments.length < 3) outerPadding = padding; + var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step; + range = steps(start + Math.round(error / 2), step); + if (reverse) range.reverse(); + rangeBand = Math.round(step * (1 - padding)); + ranger = { + t: "rangeRoundBands", + a: arguments + }; + return scale; + }; + scale.rangeBand = function() { + return rangeBand; + }; + scale.rangeExtent = function() { + return d3_scaleExtent(ranger.a[0]); + }; + scale.copy = function() { + return d3_scale_ordinal(domain, ranger); + }; + return scale.domain(domain); + } + d3.scale.category10 = function() { + return d3.scale.ordinal().range(d3_category10); + }; + d3.scale.category20 = function() { + return d3.scale.ordinal().range(d3_category20); + }; + d3.scale.category20b = function() { + return d3.scale.ordinal().range(d3_category20b); + }; + d3.scale.category20c = function() { + return d3.scale.ordinal().range(d3_category20c); + }; + var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString); + var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString); + var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString); + var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString); + d3.scale.quantile = function() { + return d3_scale_quantile([], []); + }; + function d3_scale_quantile(domain, range) { + var thresholds; + function rescale() { + var k = 0, q = range.length; + thresholds = []; + while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q); + return scale; + } + function scale(x) { + if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)]; + } + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = x.filter(function(d) { + return !isNaN(d); + }).sort(d3.ascending); + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.quantiles = function() { + return thresholds; + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ]; + }; + scale.copy = function() { + return d3_scale_quantile(domain, range); + }; + return rescale(); + } + d3.scale.quantize = function() { + return d3_scale_quantize(0, 1, [ 0, 1 ]); + }; + function d3_scale_quantize(x0, x1, range) { + var kx, i; + function scale(x) { + return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; + } + function rescale() { + kx = range.length / (x1 - x0); + i = range.length - 1; + return scale; + } + scale.domain = function(x) { + if (!arguments.length) return [ x0, x1 ]; + x0 = +x[0]; + x1 = +x[x.length - 1]; + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + y = y < 0 ? NaN : y / kx + x0; + return [ y, y + 1 / kx ]; + }; + scale.copy = function() { + return d3_scale_quantize(x0, x1, range); + }; + return rescale(); + } + d3.scale.threshold = function() { + return d3_scale_threshold([ .5 ], [ 0, 1 ]); + }; + function d3_scale_threshold(domain, range) { + function scale(x) { + if (x <= x) return range[d3.bisect(domain, x)]; + } + scale.domain = function(_) { + if (!arguments.length) return domain; + domain = _; + return scale; + }; + scale.range = function(_) { + if (!arguments.length) return range; + range = _; + return scale; + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + return [ domain[y - 1], domain[y] ]; + }; + scale.copy = function() { + return d3_scale_threshold(domain, range); + }; + return scale; + } + d3.scale.identity = function() { + return d3_scale_identity([ 0, 1 ]); + }; + function d3_scale_identity(domain) { + function identity(x) { + return +x; + } + identity.invert = identity; + identity.domain = identity.range = function(x) { + if (!arguments.length) return domain; + domain = x.map(identity); + return identity; + }; + identity.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + identity.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + identity.copy = function() { + return d3_scale_identity(domain); + }; + return identity; + } + d3.svg.arc = function() { + var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; + function arc() { + var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, + a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1); + return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z"; + } + arc.innerRadius = function(v) { + if (!arguments.length) return innerRadius; + innerRadius = d3_functor(v); + return arc; + }; + arc.outerRadius = function(v) { + if (!arguments.length) return outerRadius; + outerRadius = d3_functor(v); + return arc; + }; + arc.startAngle = function(v) { + if (!arguments.length) return startAngle; + startAngle = d3_functor(v); + return arc; + }; + arc.endAngle = function(v) { + if (!arguments.length) return endAngle; + endAngle = d3_functor(v); + return arc; + }; + arc.centroid = function() { + var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset; + return [ Math.cos(a) * r, Math.sin(a) * r ]; + }; + return arc; + }; + var d3_svg_arcOffset = -halfπ, d3_svg_arcMax = τ - ε; + function d3_svg_arcInnerRadius(d) { + return d.innerRadius; + } + function d3_svg_arcOuterRadius(d) { + return d.outerRadius; + } + function d3_svg_arcStartAngle(d) { + return d.startAngle; + } + function d3_svg_arcEndAngle(d) { + return d.endAngle; + } + d3.svg.line.radial = function() { + var line = d3_svg_line(d3_svg_lineRadial); + line.radius = line.x, delete line.x; + line.angle = line.y, delete line.y; + return line; + }; + function d3_svg_lineRadial(points) { + var point, i = -1, n = points.length, r, a; + while (++i < n) { + point = points[i]; + r = point[0]; + a = point[1] + d3_svg_arcOffset; + point[0] = r * Math.cos(a); + point[1] = r * Math.sin(a); + } + return points; + } + function d3_svg_area(projection) { + var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7; + function area(data) { + var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() { + return x; + } : d3_functor(x1), fy1 = y0 === y1 ? function() { + return y; + } : d3_functor(y1), x, y; + function segment() { + segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z"); + } + while (++i < n) { + if (defined.call(this, d = data[i], i)) { + points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]); + points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]); + } else if (points0.length) { + segment(); + points0 = []; + points1 = []; + } + } + if (points0.length) segment(); + return segments.length ? segments.join("") : null; + } + area.x = function(_) { + if (!arguments.length) return x1; + x0 = x1 = _; + return area; + }; + area.x0 = function(_) { + if (!arguments.length) return x0; + x0 = _; + return area; + }; + area.x1 = function(_) { + if (!arguments.length) return x1; + x1 = _; + return area; + }; + area.y = function(_) { + if (!arguments.length) return y1; + y0 = y1 = _; + return area; + }; + area.y0 = function(_) { + if (!arguments.length) return y0; + y0 = _; + return area; + }; + area.y1 = function(_) { + if (!arguments.length) return y1; + y1 = _; + return area; + }; + area.defined = function(_) { + if (!arguments.length) return defined; + defined = _; + return area; + }; + area.interpolate = function(_) { + if (!arguments.length) return interpolateKey; + if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; + interpolateReverse = interpolate.reverse || interpolate; + L = interpolate.closed ? "M" : "L"; + return area; + }; + area.tension = function(_) { + if (!arguments.length) return tension; + tension = _; + return area; + }; + return area; + } + d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter; + d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore; + d3.svg.area = function() { + return d3_svg_area(d3_identity); + }; + d3.svg.area.radial = function() { + var area = d3_svg_area(d3_svg_lineRadial); + area.radius = area.x, delete area.x; + area.innerRadius = area.x0, delete area.x0; + area.outerRadius = area.x1, delete area.x1; + area.angle = area.y, delete area.y; + area.startAngle = area.y0, delete area.y0; + area.endAngle = area.y1, delete area.y1; + return area; + }; + d3.svg.chord = function() { + var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; + function chord(d, i) { + var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i); + return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z"; + } + function subgroup(self, f, d, i) { + var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset; + return { + r: r, + a0: a0, + a1: a1, + p0: [ r * Math.cos(a0), r * Math.sin(a0) ], + p1: [ r * Math.cos(a1), r * Math.sin(a1) ] + }; + } + function equals(a, b) { + return a.a0 == b.a0 && a.a1 == b.a1; + } + function arc(r, p, a) { + return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p; + } + function curve(r0, p0, r1, p1) { + return "Q 0,0 " + p1; + } + chord.radius = function(v) { + if (!arguments.length) return radius; + radius = d3_functor(v); + return chord; + }; + chord.source = function(v) { + if (!arguments.length) return source; + source = d3_functor(v); + return chord; + }; + chord.target = function(v) { + if (!arguments.length) return target; + target = d3_functor(v); + return chord; + }; + chord.startAngle = function(v) { + if (!arguments.length) return startAngle; + startAngle = d3_functor(v); + return chord; + }; + chord.endAngle = function(v) { + if (!arguments.length) return endAngle; + endAngle = d3_functor(v); + return chord; + }; + return chord; + }; + function d3_svg_chordRadius(d) { + return d.radius; + } + d3.svg.diagonal = function() { + var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection; + function diagonal(d, i) { + var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, { + x: p0.x, + y: m + }, { + x: p3.x, + y: m + }, p3 ]; + p = p.map(projection); + return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3]; + } + diagonal.source = function(x) { + if (!arguments.length) return source; + source = d3_functor(x); + return diagonal; + }; + diagonal.target = function(x) { + if (!arguments.length) return target; + target = d3_functor(x); + return diagonal; + }; + diagonal.projection = function(x) { + if (!arguments.length) return projection; + projection = x; + return diagonal; + }; + return diagonal; + }; + function d3_svg_diagonalProjection(d) { + return [ d.x, d.y ]; + } + d3.svg.diagonal.radial = function() { + var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection; + diagonal.projection = function(x) { + return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection; + }; + return diagonal; + }; + function d3_svg_diagonalRadialProjection(projection) { + return function() { + var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset; + return [ r * Math.cos(a), r * Math.sin(a) ]; + }; + } + d3.svg.symbol = function() { + var type = d3_svg_symbolType, size = d3_svg_symbolSize; + function symbol(d, i) { + return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i)); + } + symbol.type = function(x) { + if (!arguments.length) return type; + type = d3_functor(x); + return symbol; + }; + symbol.size = function(x) { + if (!arguments.length) return size; + size = d3_functor(x); + return symbol; + }; + return symbol; + }; + function d3_svg_symbolSize() { + return 64; + } + function d3_svg_symbolType() { + return "circle"; + } + function d3_svg_symbolCircle(size) { + var r = Math.sqrt(size / π); + return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z"; + } + var d3_svg_symbols = d3.map({ + circle: d3_svg_symbolCircle, + cross: function(size) { + var r = Math.sqrt(size / 5) / 2; + return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z"; + }, + diamond: function(size) { + var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30; + return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z"; + }, + square: function(size) { + var r = Math.sqrt(size) / 2; + return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z"; + }, + "triangle-down": function(size) { + var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; + return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z"; + }, + "triangle-up": function(size) { + var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; + return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z"; + } + }); + d3.svg.symbolTypes = d3_svg_symbols.keys(); + var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians); + function d3_transition(groups, id) { + d3_subclass(groups, d3_transitionPrototype); + groups.id = id; + return groups; + } + var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit; + d3_transitionPrototype.call = d3_selectionPrototype.call; + d3_transitionPrototype.empty = d3_selectionPrototype.empty; + d3_transitionPrototype.node = d3_selectionPrototype.node; + d3_transitionPrototype.size = d3_selectionPrototype.size; + d3.transition = function(selection) { + return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition(); + }; + d3.transition.prototype = d3_transitionPrototype; + d3_transitionPrototype.select = function(selector) { + var id = this.id, subgroups = [], subgroup, subnode, node; + selector = d3_selection_selector(selector); + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + d3_transitionNode(subnode, i, id, node.__transition__[id]); + subgroup.push(subnode); + } else { + subgroup.push(null); + } + } + } + return d3_transition(subgroups, id); + }; + d3_transitionPrototype.selectAll = function(selector) { + var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition; + selector = d3_selection_selectorAll(selector); + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + transition = node.__transition__[id]; + subnodes = selector.call(node, node.__data__, i, j); + subgroups.push(subgroup = []); + for (var k = -1, o = subnodes.length; ++k < o; ) { + if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition); + subgroup.push(subnode); + } + } + } + } + return d3_transition(subgroups, id); + }; + d3_transitionPrototype.filter = function(filter) { + var subgroups = [], subgroup, group, node; + if (typeof filter !== "function") filter = d3_selection_filter(filter); + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i)) { + subgroup.push(node); + } + } + } + return d3_transition(subgroups, this.id); + }; + d3_transitionPrototype.tween = function(name, tween) { + var id = this.id; + if (arguments.length < 2) return this.node().__transition__[id].tween.get(name); + return d3_selection_each(this, tween == null ? function(node) { + node.__transition__[id].tween.remove(name); + } : function(node) { + node.__transition__[id].tween.set(name, tween); + }); + }; + function d3_transition_tween(groups, name, value, tween) { + var id = groups.id; + return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) { + node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j))); + } : (value = tween(value), function(node) { + node.__transition__[id].tween.set(name, value); + })); + } + d3_transitionPrototype.attr = function(nameNS, value) { + if (arguments.length < 2) { + for (value in nameNS) this.attr(value, nameNS[value]); + return this; + } + var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS); + function attrNull() { + this.removeAttribute(name); + } + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + function attrTween(b) { + return b == null ? attrNull : (b += "", function() { + var a = this.getAttribute(name), i; + return a !== b && (i = interpolate(a, b), function(t) { + this.setAttribute(name, i(t)); + }); + }); + } + function attrTweenNS(b) { + return b == null ? attrNullNS : (b += "", function() { + var a = this.getAttributeNS(name.space, name.local), i; + return a !== b && (i = interpolate(a, b), function(t) { + this.setAttributeNS(name.space, name.local, i(t)); + }); + }); + } + return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween); + }; + d3_transitionPrototype.attrTween = function(nameNS, tween) { + var name = d3.ns.qualify(nameNS); + function attrTween(d, i) { + var f = tween.call(this, d, i, this.getAttribute(name)); + return f && function(t) { + this.setAttribute(name, f(t)); + }; + } + function attrTweenNS(d, i) { + var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local)); + return f && function(t) { + this.setAttributeNS(name.space, name.local, f(t)); + }; + } + return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween); + }; + d3_transitionPrototype.style = function(name, value, priority) { + var n = arguments.length; + if (n < 3) { + if (typeof name !== "string") { + if (n < 2) value = ""; + for (priority in name) this.style(priority, name[priority], value); + return this; + } + priority = ""; + } + function styleNull() { + this.style.removeProperty(name); + } + function styleString(b) { + return b == null ? styleNull : (b += "", function() { + var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i; + return a !== b && (i = d3_interpolate(a, b), function(t) { + this.style.setProperty(name, i(t), priority); + }); + }); + } + return d3_transition_tween(this, "style." + name, value, styleString); + }; + d3_transitionPrototype.styleTween = function(name, tween, priority) { + if (arguments.length < 3) priority = ""; + function styleTween(d, i) { + var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name)); + return f && function(t) { + this.style.setProperty(name, f(t), priority); + }; + } + return this.tween("style." + name, styleTween); + }; + d3_transitionPrototype.text = function(value) { + return d3_transition_tween(this, "text", value, d3_transition_text); + }; + function d3_transition_text(b) { + if (b == null) b = ""; + return function() { + this.textContent = b; + }; + } + d3_transitionPrototype.remove = function() { + return this.each("end.transition", function() { + var p; + if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this); + }); + }; + d3_transitionPrototype.ease = function(value) { + var id = this.id; + if (arguments.length < 1) return this.node().__transition__[id].ease; + if (typeof value !== "function") value = d3.ease.apply(d3, arguments); + return d3_selection_each(this, function(node) { + node.__transition__[id].ease = value; + }); + }; + d3_transitionPrototype.delay = function(value) { + var id = this.id; + return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { + node.__transition__[id].delay = +value.call(node, node.__data__, i, j); + } : (value = +value, function(node) { + node.__transition__[id].delay = value; + })); + }; + d3_transitionPrototype.duration = function(value) { + var id = this.id; + return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { + node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j)); + } : (value = Math.max(1, value), function(node) { + node.__transition__[id].duration = value; + })); + }; + d3_transitionPrototype.each = function(type, listener) { + var id = this.id; + if (arguments.length < 2) { + var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId; + d3_transitionInheritId = id; + d3_selection_each(this, function(node, i, j) { + d3_transitionInherit = node.__transition__[id]; + type.call(node, node.__data__, i, j); + }); + d3_transitionInherit = inherit; + d3_transitionInheritId = inheritId; + } else { + d3_selection_each(this, function(node) { + var transition = node.__transition__[id]; + (transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener); + }); + } + return this; + }; + d3_transitionPrototype.transition = function() { + var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition; + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + if (node = group[i]) { + transition = Object.create(node.__transition__[id0]); + transition.delay += transition.duration; + d3_transitionNode(node, i, id1, transition); + } + subgroup.push(node); + } + } + return d3_transition(subgroups, id1); + }; + function d3_transitionNode(node, i, id, inherit) { + var lock = node.__transition__ || (node.__transition__ = { + active: 0, + count: 0 + }), transition = lock[id]; + if (!transition) { + var time = inherit.time; + transition = lock[id] = { + tween: new d3_Map(), + time: time, + ease: inherit.ease, + delay: inherit.delay, + duration: inherit.duration + }; + ++lock.count; + d3.timer(function(elapsed) { + var d = node.__data__, ease = transition.ease, delay = transition.delay, duration = transition.duration, tweened = []; + if (delay <= elapsed) return start(elapsed - delay); + d3_timer_replace(start, delay, time); + function start(elapsed) { + if (lock.active > id) return stop(); + lock.active = id; + transition.event && transition.event.start.call(node, d, i); + transition.tween.forEach(function(key, value) { + if (value = value.call(node, d, i)) { + tweened.push(value); + } + }); + if (tick(elapsed || 1)) return 1; + d3_timer_replace(tick, delay, time); + } + function tick(elapsed) { + if (lock.active !== id) return stop(); + var t = elapsed / duration, e = ease(t), n = tweened.length; + while (n > 0) { + tweened[--n].call(node, e); + } + if (t >= 1) { + transition.event && transition.event.end.call(node, d, i); + return stop(); + } + } + function stop() { + if (--lock.count) delete lock[id]; else delete node.__transition__; + return 1; + } + }, 0, time); + } + } + d3.svg.axis = function() { + var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_; + function axis(g) { + g.each(function() { + var g = d3.select(this); + var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy(); + var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform; + var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), + d3.transition(path)); + tickEnter.append("line"); + tickEnter.append("text"); + var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"); + switch (orient) { + case "bottom": + { + tickTransform = d3_svg_axisX; + lineEnter.attr("y2", innerTickSize); + textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding); + lineUpdate.attr("x2", 0).attr("y2", innerTickSize); + textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding); + text.attr("dy", ".71em").style("text-anchor", "middle"); + pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize); + break; + } + + case "top": + { + tickTransform = d3_svg_axisX; + lineEnter.attr("y2", -innerTickSize); + textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding)); + lineUpdate.attr("x2", 0).attr("y2", -innerTickSize); + textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding)); + text.attr("dy", "0em").style("text-anchor", "middle"); + pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize); + break; + } + + case "left": + { + tickTransform = d3_svg_axisY; + lineEnter.attr("x2", -innerTickSize); + textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)); + lineUpdate.attr("x2", -innerTickSize).attr("y2", 0); + textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0); + text.attr("dy", ".32em").style("text-anchor", "end"); + pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize); + break; + } + + case "right": + { + tickTransform = d3_svg_axisY; + lineEnter.attr("x2", innerTickSize); + textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding); + lineUpdate.attr("x2", innerTickSize).attr("y2", 0); + textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0); + text.attr("dy", ".32em").style("text-anchor", "start"); + pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize); + break; + } + } + if (scale1.rangeBand) { + var dx = scale1.rangeBand() / 2, x = function(d) { + return scale1(d) + dx; + }; + tickEnter.call(tickTransform, x); + tickUpdate.call(tickTransform, x); + } else { + tickEnter.call(tickTransform, scale0); + tickUpdate.call(tickTransform, scale1); + tickExit.call(tickTransform, scale1); + } + }); + } + axis.scale = function(x) { + if (!arguments.length) return scale; + scale = x; + return axis; + }; + axis.orient = function(x) { + if (!arguments.length) return orient; + orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient; + return axis; + }; + axis.ticks = function() { + if (!arguments.length) return tickArguments_; + tickArguments_ = arguments; + return axis; + }; + axis.tickValues = function(x) { + if (!arguments.length) return tickValues; + tickValues = x; + return axis; + }; + axis.tickFormat = function(x) { + if (!arguments.length) return tickFormat_; + tickFormat_ = x; + return axis; + }; + axis.tickSize = function(x) { + var n = arguments.length; + if (!n) return innerTickSize; + innerTickSize = +x; + outerTickSize = +arguments[n - 1]; + return axis; + }; + axis.innerTickSize = function(x) { + if (!arguments.length) return innerTickSize; + innerTickSize = +x; + return axis; + }; + axis.outerTickSize = function(x) { + if (!arguments.length) return outerTickSize; + outerTickSize = +x; + return axis; + }; + axis.tickPadding = function(x) { + if (!arguments.length) return tickPadding; + tickPadding = +x; + return axis; + }; + axis.tickSubdivide = function() { + return arguments.length && axis; + }; + return axis; + }; + var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = { + top: 1, + right: 1, + bottom: 1, + left: 1 + }; + function d3_svg_axisX(selection, x) { + selection.attr("transform", function(d) { + return "translate(" + x(d) + ",0)"; + }); + } + function d3_svg_axisY(selection, y) { + selection.attr("transform", function(d) { + return "translate(0," + y(d) + ")"; + }); + } + d3.svg.brush = function() { + var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0]; + function brush(g) { + g.each(function() { + var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart); + var background = g.selectAll(".background").data([ 0 ]); + background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"); + g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move"); + var resize = g.selectAll(".resize").data(resizes, d3_identity); + resize.exit().remove(); + resize.enter().append("g").attr("class", function(d) { + return "resize " + d; + }).style("cursor", function(d) { + return d3_svg_brushCursor[d]; + }).append("rect").attr("x", function(d) { + return /[ew]$/.test(d) ? -3 : null; + }).attr("y", function(d) { + return /^[ns]/.test(d) ? -3 : null; + }).attr("width", 6).attr("height", 6).style("visibility", "hidden"); + resize.style("display", brush.empty() ? "none" : null); + var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range; + if (x) { + range = d3_scaleRange(x); + backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]); + redrawX(gUpdate); + } + if (y) { + range = d3_scaleRange(y); + backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]); + redrawY(gUpdate); + } + redraw(gUpdate); + }); + } + brush.event = function(g) { + g.each(function() { + var event_ = event.of(this, arguments), extent1 = { + x: xExtent, + y: yExtent, + i: xExtentDomain, + j: yExtentDomain + }, extent0 = this.__chart__ || extent1; + this.__chart__ = extent1; + if (d3_transitionInheritId) { + d3.select(this).transition().each("start.brush", function() { + xExtentDomain = extent0.i; + yExtentDomain = extent0.j; + xExtent = extent0.x; + yExtent = extent0.y; + event_({ + type: "brushstart" + }); + }).tween("brush:brush", function() { + var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y); + xExtentDomain = yExtentDomain = null; + return function(t) { + xExtent = extent1.x = xi(t); + yExtent = extent1.y = yi(t); + event_({ + type: "brush", + mode: "resize" + }); + }; + }).each("end.brush", function() { + xExtentDomain = extent1.i; + yExtentDomain = extent1.j; + event_({ + type: "brush", + mode: "resize" + }); + event_({ + type: "brushend" + }); + }); + } else { + event_({ + type: "brushstart" + }); + event_({ + type: "brush", + mode: "resize" + }); + event_({ + type: "brushend" + }); + } + }); + }; + function redraw(g) { + g.selectAll(".resize").attr("transform", function(d) { + return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")"; + }); + } + function redrawX(g) { + g.select(".extent").attr("x", xExtent[0]); + g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]); + } + function redrawY(g) { + g.select(".extent").attr("y", yExtent[0]); + g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]); + } + function brushstart() { + var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = d3.mouse(target), offset; + var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup); + if (d3.event.changedTouches) { + w.on("touchmove.brush", brushmove).on("touchend.brush", brushend); + } else { + w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend); + } + g.interrupt().selectAll("*").interrupt(); + if (dragging) { + origin[0] = xExtent[0] - origin[0]; + origin[1] = yExtent[0] - origin[1]; + } else if (resizing) { + var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing); + offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ]; + origin[0] = xExtent[ex]; + origin[1] = yExtent[ey]; + } else if (d3.event.altKey) center = origin.slice(); + g.style("pointer-events", "none").selectAll(".resize").style("display", null); + d3.select("body").style("cursor", eventTarget.style("cursor")); + event_({ + type: "brushstart" + }); + brushmove(); + function keydown() { + if (d3.event.keyCode == 32) { + if (!dragging) { + center = null; + origin[0] -= xExtent[1]; + origin[1] -= yExtent[1]; + dragging = 2; + } + d3_eventPreventDefault(); + } + } + function keyup() { + if (d3.event.keyCode == 32 && dragging == 2) { + origin[0] += xExtent[1]; + origin[1] += yExtent[1]; + dragging = 0; + d3_eventPreventDefault(); + } + } + function brushmove() { + var point = d3.mouse(target), moved = false; + if (offset) { + point[0] += offset[0]; + point[1] += offset[1]; + } + if (!dragging) { + if (d3.event.altKey) { + if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ]; + origin[0] = xExtent[+(point[0] < center[0])]; + origin[1] = yExtent[+(point[1] < center[1])]; + } else center = null; + } + if (resizingX && move1(point, x, 0)) { + redrawX(g); + moved = true; + } + if (resizingY && move1(point, y, 1)) { + redrawY(g); + moved = true; + } + if (moved) { + redraw(g); + event_({ + type: "brush", + mode: dragging ? "move" : "resize" + }); + } + } + function move1(point, scale, i) { + var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max; + if (dragging) { + r0 -= position; + r1 -= size + position; + } + min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i]; + if (dragging) { + max = (min += position) + size; + } else { + if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min)); + if (position < min) { + max = min; + min = position; + } else { + max = position; + } + } + if (extent[0] != min || extent[1] != max) { + if (i) yExtentDomain = null; else xExtentDomain = null; + extent[0] = min; + extent[1] = max; + return true; + } + } + function brushend() { + brushmove(); + g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null); + d3.select("body").style("cursor", null); + w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null); + dragRestore(); + event_({ + type: "brushend" + }); + } + } + brush.x = function(z) { + if (!arguments.length) return x; + x = z; + resizes = d3_svg_brushResizes[!x << 1 | !y]; + return brush; + }; + brush.y = function(z) { + if (!arguments.length) return y; + y = z; + resizes = d3_svg_brushResizes[!x << 1 | !y]; + return brush; + }; + brush.clamp = function(z) { + if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null; + if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z; + return brush; + }; + brush.extent = function(z) { + var x0, x1, y0, y1, t; + if (!arguments.length) { + if (x) { + if (xExtentDomain) { + x0 = xExtentDomain[0], x1 = xExtentDomain[1]; + } else { + x0 = xExtent[0], x1 = xExtent[1]; + if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1); + if (x1 < x0) t = x0, x0 = x1, x1 = t; + } + } + if (y) { + if (yExtentDomain) { + y0 = yExtentDomain[0], y1 = yExtentDomain[1]; + } else { + y0 = yExtent[0], y1 = yExtent[1]; + if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1); + if (y1 < y0) t = y0, y0 = y1, y1 = t; + } + } + return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ]; + } + if (x) { + x0 = z[0], x1 = z[1]; + if (y) x0 = x0[0], x1 = x1[0]; + xExtentDomain = [ x0, x1 ]; + if (x.invert) x0 = x(x0), x1 = x(x1); + if (x1 < x0) t = x0, x0 = x1, x1 = t; + if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ]; + } + if (y) { + y0 = z[0], y1 = z[1]; + if (x) y0 = y0[1], y1 = y1[1]; + yExtentDomain = [ y0, y1 ]; + if (y.invert) y0 = y(y0), y1 = y(y1); + if (y1 < y0) t = y0, y0 = y1, y1 = t; + if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ]; + } + return brush; + }; + brush.clear = function() { + if (!brush.empty()) { + xExtent = [ 0, 0 ], yExtent = [ 0, 0 ]; + xExtentDomain = yExtentDomain = null; + } + return brush; + }; + brush.empty = function() { + return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1]; + }; + return d3.rebind(brush, event, "on"); + }; + var d3_svg_brushCursor = { + n: "ns-resize", + e: "ew-resize", + s: "ns-resize", + w: "ew-resize", + nw: "nwse-resize", + ne: "nesw-resize", + se: "nwse-resize", + sw: "nesw-resize" + }; + var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ]; + var d3_time = d3.time = {}, d3_date = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; + function d3_date_utc() { + this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]); + } + d3_date_utc.prototype = { + getDate: function() { + return this._.getUTCDate(); + }, + getDay: function() { + return this._.getUTCDay(); + }, + getFullYear: function() { + return this._.getUTCFullYear(); + }, + getHours: function() { + return this._.getUTCHours(); + }, + getMilliseconds: function() { + return this._.getUTCMilliseconds(); + }, + getMinutes: function() { + return this._.getUTCMinutes(); + }, + getMonth: function() { + return this._.getUTCMonth(); + }, + getSeconds: function() { + return this._.getUTCSeconds(); + }, + getTime: function() { + return this._.getTime(); + }, + getTimezoneOffset: function() { + return 0; + }, + valueOf: function() { + return this._.valueOf(); + }, + setDate: function() { + d3_time_prototype.setUTCDate.apply(this._, arguments); + }, + setDay: function() { + d3_time_prototype.setUTCDay.apply(this._, arguments); + }, + setFullYear: function() { + d3_time_prototype.setUTCFullYear.apply(this._, arguments); + }, + setHours: function() { + d3_time_prototype.setUTCHours.apply(this._, arguments); + }, + setMilliseconds: function() { + d3_time_prototype.setUTCMilliseconds.apply(this._, arguments); + }, + setMinutes: function() { + d3_time_prototype.setUTCMinutes.apply(this._, arguments); + }, + setMonth: function() { + d3_time_prototype.setUTCMonth.apply(this._, arguments); + }, + setSeconds: function() { + d3_time_prototype.setUTCSeconds.apply(this._, arguments); + }, + setTime: function() { + d3_time_prototype.setTime.apply(this._, arguments); + } + }; + var d3_time_prototype = Date.prototype; + var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S"; + var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; + function d3_time_interval(local, step, number) { + function round(date) { + var d0 = local(date), d1 = offset(d0, 1); + return date - d0 < d1 - date ? d0 : d1; + } + function ceil(date) { + step(date = local(new d3_date(date - 1)), 1); + return date; + } + function offset(date, k) { + step(date = new d3_date(+date), k); + return date; + } + function range(t0, t1, dt) { + var time = ceil(t0), times = []; + if (dt > 1) { + while (time < t1) { + if (!(number(time) % dt)) times.push(new Date(+time)); + step(time, 1); + } + } else { + while (time < t1) times.push(new Date(+time)), step(time, 1); + } + return times; + } + function range_utc(t0, t1, dt) { + try { + d3_date = d3_date_utc; + var utc = new d3_date_utc(); + utc._ = t0; + return range(utc, t1, dt); + } finally { + d3_date = Date; + } + } + local.floor = local; + local.round = round; + local.ceil = ceil; + local.offset = offset; + local.range = range; + var utc = local.utc = d3_time_interval_utc(local); + utc.floor = utc; + utc.round = d3_time_interval_utc(round); + utc.ceil = d3_time_interval_utc(ceil); + utc.offset = d3_time_interval_utc(offset); + utc.range = range_utc; + return local; + } + function d3_time_interval_utc(method) { + return function(date, k) { + try { + d3_date = d3_date_utc; + var utc = new d3_date_utc(); + utc._ = date; + return method(utc, k)._; + } finally { + d3_date = Date; + } + }; + } + d3_time.year = d3_time_interval(function(date) { + date = d3_time.day(date); + date.setMonth(0, 1); + return date; + }, function(date, offset) { + date.setFullYear(date.getFullYear() + offset); + }, function(date) { + return date.getFullYear(); + }); + d3_time.years = d3_time.year.range; + d3_time.years.utc = d3_time.year.utc.range; + d3_time.day = d3_time_interval(function(date) { + var day = new d3_date(2e3, 0); + day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + return day; + }, function(date, offset) { + date.setDate(date.getDate() + offset); + }, function(date) { + return date.getDate() - 1; + }); + d3_time.days = d3_time.day.range; + d3_time.days.utc = d3_time.day.utc.range; + d3_time.dayOfYear = function(date) { + var year = d3_time.year(date); + return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5); + }; + d3_time_daySymbols.forEach(function(day, i) { + day = day.toLowerCase(); + i = 7 - i; + var interval = d3_time[day] = d3_time_interval(function(date) { + (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7); + return date; + }, function(date, offset) { + date.setDate(date.getDate() + Math.floor(offset) * 7); + }, function(date) { + var day = d3_time.year(date).getDay(); + return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i); + }); + d3_time[day + "s"] = interval.range; + d3_time[day + "s"].utc = interval.utc.range; + d3_time[day + "OfYear"] = function(date) { + var day = d3_time.year(date).getDay(); + return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7); + }; + }); + d3_time.week = d3_time.sunday; + d3_time.weeks = d3_time.sunday.range; + d3_time.weeks.utc = d3_time.sunday.utc.range; + d3_time.weekOfYear = d3_time.sundayOfYear; + d3_time.format = d3_time_format; + function d3_time_format(template) { + var n = template.length; + function format(date) { + var string = [], i = -1, j = 0, c, p, f; + while (++i < n) { + if (template.charCodeAt(i) === 37) { + string.push(template.substring(j, i)); + if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i); + if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p); + string.push(c); + j = i + 1; + } + } + string.push(template.substring(j, i)); + return string.join(""); + } + format.parse = function(string) { + var d = { + y: 1900, + m: 0, + d: 1, + H: 0, + M: 0, + S: 0, + L: 0, + Z: null + }, i = d3_time_parse(d, template, string, 0); + if (i != string.length) return null; + if ("p" in d) d.H = d.H % 12 + d.p * 12; + var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)(); + if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) { + date.setFullYear(d.y, 0, 1); + date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7); + } else date.setFullYear(d.y, d.m, d.d); + date.setHours(d.H + Math.floor(d.Z / 100), d.M + d.Z % 100, d.S, d.L); + return localZ ? date._ : date; + }; + format.toString = function() { + return template; + }; + return format; + } + function d3_time_parse(date, template, string, j) { + var c, p, t, i = 0, n = template.length, m = string.length; + while (i < n) { + if (j >= m) return -1; + c = template.charCodeAt(i++); + if (c === 37) { + t = template.charAt(i++); + p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t]; + if (!p || (j = p(date, string, j)) < 0) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + return j; + } + function d3_time_formatRe(names) { + return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i"); + } + function d3_time_formatLookup(names) { + var map = new d3_Map(), i = -1, n = names.length; + while (++i < n) map.set(names[i].toLowerCase(), i); + return map; + } + function d3_time_formatPad(value, fill, width) { + var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); + } + var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayLookup = d3_time_formatLookup(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_dayAbbrevLookup = d3_time_formatLookup(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations), d3_time_percentRe = /^%/; + var d3_time_formatPads = { + "-": "", + _: " ", + "0": "0" + }; + var d3_time_formats = { + a: function(d) { + return d3_time_dayAbbreviations[d.getDay()]; + }, + A: function(d) { + return d3_time_days[d.getDay()]; + }, + b: function(d) { + return d3_time_monthAbbreviations[d.getMonth()]; + }, + B: function(d) { + return d3_time_months[d.getMonth()]; + }, + c: d3_time_format(d3_time_formatDateTime), + d: function(d, p) { + return d3_time_formatPad(d.getDate(), p, 2); + }, + e: function(d, p) { + return d3_time_formatPad(d.getDate(), p, 2); + }, + H: function(d, p) { + return d3_time_formatPad(d.getHours(), p, 2); + }, + I: function(d, p) { + return d3_time_formatPad(d.getHours() % 12 || 12, p, 2); + }, + j: function(d, p) { + return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3); + }, + L: function(d, p) { + return d3_time_formatPad(d.getMilliseconds(), p, 3); + }, + m: function(d, p) { + return d3_time_formatPad(d.getMonth() + 1, p, 2); + }, + M: function(d, p) { + return d3_time_formatPad(d.getMinutes(), p, 2); + }, + p: function(d) { + return d.getHours() >= 12 ? "PM" : "AM"; + }, + S: function(d, p) { + return d3_time_formatPad(d.getSeconds(), p, 2); + }, + U: function(d, p) { + return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2); + }, + w: function(d) { + return d.getDay(); + }, + W: function(d, p) { + return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2); + }, + x: d3_time_format(d3_time_formatDate), + X: d3_time_format(d3_time_formatTime), + y: function(d, p) { + return d3_time_formatPad(d.getFullYear() % 100, p, 2); + }, + Y: function(d, p) { + return d3_time_formatPad(d.getFullYear() % 1e4, p, 4); + }, + Z: d3_time_zone, + "%": function() { + return "%"; + } + }; + var d3_time_parsers = { + a: d3_time_parseWeekdayAbbrev, + A: d3_time_parseWeekday, + b: d3_time_parseMonthAbbrev, + B: d3_time_parseMonth, + c: d3_time_parseLocaleFull, + d: d3_time_parseDay, + e: d3_time_parseDay, + H: d3_time_parseHour24, + I: d3_time_parseHour24, + j: d3_time_parseDayOfYear, + L: d3_time_parseMilliseconds, + m: d3_time_parseMonthNumber, + M: d3_time_parseMinutes, + p: d3_time_parseAmPm, + S: d3_time_parseSeconds, + U: d3_time_parseWeekNumberSunday, + w: d3_time_parseWeekdayNumber, + W: d3_time_parseWeekNumberMonday, + x: d3_time_parseLocaleDate, + X: d3_time_parseLocaleTime, + y: d3_time_parseYear, + Y: d3_time_parseFullYear, + Z: d3_time_parseZone, + "%": d3_time_parseLiteralPercent + }; + function d3_time_parseWeekdayAbbrev(date, string, i) { + d3_time_dayAbbrevRe.lastIndex = 0; + var n = d3_time_dayAbbrevRe.exec(string.substring(i)); + return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseWeekday(date, string, i) { + d3_time_dayRe.lastIndex = 0; + var n = d3_time_dayRe.exec(string.substring(i)); + return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseWeekdayNumber(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 1)); + return n ? (date.w = +n[0], i + n[0].length) : -1; + } + function d3_time_parseWeekNumberSunday(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i)); + return n ? (date.U = +n[0], i + n[0].length) : -1; + } + function d3_time_parseWeekNumberMonday(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i)); + return n ? (date.W = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMonthAbbrev(date, string, i) { + d3_time_monthAbbrevRe.lastIndex = 0; + var n = d3_time_monthAbbrevRe.exec(string.substring(i)); + return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseMonth(date, string, i) { + d3_time_monthRe.lastIndex = 0; + var n = d3_time_monthRe.exec(string.substring(i)); + return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseLocaleFull(date, string, i) { + return d3_time_parse(date, d3_time_formats.c.toString(), string, i); + } + function d3_time_parseLocaleDate(date, string, i) { + return d3_time_parse(date, d3_time_formats.x.toString(), string, i); + } + function d3_time_parseLocaleTime(date, string, i) { + return d3_time_parse(date, d3_time_formats.X.toString(), string, i); + } + function d3_time_parseFullYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 4)); + return n ? (date.y = +n[0], i + n[0].length) : -1; + } + function d3_time_parseYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1; + } + function d3_time_parseZone(date, string, i) { + return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = +string, + i + 5) : -1; + } + function d3_time_expandYear(d) { + return d + (d > 68 ? 1900 : 2e3); + } + function d3_time_parseMonthNumber(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.m = n[0] - 1, i + n[0].length) : -1; + } + function d3_time_parseDay(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.d = +n[0], i + n[0].length) : -1; + } + function d3_time_parseDayOfYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 3)); + return n ? (date.j = +n[0], i + n[0].length) : -1; + } + function d3_time_parseHour24(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.H = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMinutes(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.M = +n[0], i + n[0].length) : -1; + } + function d3_time_parseSeconds(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.S = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMilliseconds(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 3)); + return n ? (date.L = +n[0], i + n[0].length) : -1; + } + var d3_time_numberRe = /^\s*\d+/; + function d3_time_parseAmPm(date, string, i) { + var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase()); + return n == null ? -1 : (date.p = n, i); + } + var d3_time_amPmLookup = d3.map({ + am: 0, + pm: 1 + }); + function d3_time_zone(d) { + var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60; + return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2); + } + function d3_time_parseLiteralPercent(date, string, i) { + d3_time_percentRe.lastIndex = 0; + var n = d3_time_percentRe.exec(string.substring(i, i + 1)); + return n ? i + n[0].length : -1; + } + d3_time_format.utc = d3_time_formatUtc; + function d3_time_formatUtc(template) { + var local = d3_time_format(template); + function format(date) { + try { + d3_date = d3_date_utc; + var utc = new d3_date(); + utc._ = date; + return local(utc); + } finally { + d3_date = Date; + } + } + format.parse = function(string) { + try { + d3_date = d3_date_utc; + var date = local.parse(string); + return date && date._; + } finally { + d3_date = Date; + } + }; + format.toString = local.toString; + return format; + } + var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ"); + d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso; + function d3_time_formatIsoNative(date) { + return date.toISOString(); + } + d3_time_formatIsoNative.parse = function(string) { + var date = new Date(string); + return isNaN(date) ? null : date; + }; + d3_time_formatIsoNative.toString = d3_time_formatIso.toString; + d3_time.second = d3_time_interval(function(date) { + return new d3_date(Math.floor(date / 1e3) * 1e3); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 1e3); + }, function(date) { + return date.getSeconds(); + }); + d3_time.seconds = d3_time.second.range; + d3_time.seconds.utc = d3_time.second.utc.range; + d3_time.minute = d3_time_interval(function(date) { + return new d3_date(Math.floor(date / 6e4) * 6e4); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 6e4); + }, function(date) { + return date.getMinutes(); + }); + d3_time.minutes = d3_time.minute.range; + d3_time.minutes.utc = d3_time.minute.utc.range; + d3_time.hour = d3_time_interval(function(date) { + var timezone = date.getTimezoneOffset() / 60; + return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 36e5); + }, function(date) { + return date.getHours(); + }); + d3_time.hours = d3_time.hour.range; + d3_time.hours.utc = d3_time.hour.utc.range; + d3_time.month = d3_time_interval(function(date) { + date = d3_time.day(date); + date.setDate(1); + return date; + }, function(date, offset) { + date.setMonth(date.getMonth() + offset); + }, function(date) { + return date.getMonth(); + }); + d3_time.months = d3_time.month.range; + d3_time.months.utc = d3_time.month.utc.range; + function d3_time_scale(linear, methods, format) { + function scale(x) { + return linear(x); + } + scale.invert = function(x) { + return d3_time_scaleDate(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return linear.domain().map(d3_time_scaleDate); + linear.domain(x); + return scale; + }; + function tickMethod(extent, count) { + var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target); + return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) { + return d / 31536e6; + }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i]; + } + scale.nice = function(interval, skip) { + var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval); + if (method) interval = method[0], skip = method[1]; + function skipped(date) { + return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length; + } + return scale.domain(d3_scale_nice(domain, skip > 1 ? { + floor: function(date) { + while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1); + return date; + }, + ceil: function(date) { + while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1); + return date; + } + } : interval)); + }; + scale.ticks = function(interval, skip) { + var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ { + range: interval + }, skip ]; + if (method) interval = method[0], skip = method[1]; + return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip); + }; + scale.tickFormat = function() { + return format; + }; + scale.copy = function() { + return d3_time_scale(linear.copy(), methods, format); + }; + return d3_scale_linearRebind(scale, linear); + } + function d3_time_scaleDate(t) { + return new Date(t); + } + function d3_time_scaleFormat(formats) { + return function(date) { + var i = formats.length - 1, f = formats[i]; + while (!f[1](date)) f = formats[--i]; + return f[0](date); + }; + } + var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ]; + var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ]; + var d3_time_scaleLocalFormats = [ [ d3_time_format("%Y"), d3_true ], [ d3_time_format("%B"), function(d) { + return d.getMonth(); + } ], [ d3_time_format("%b %d"), function(d) { + return d.getDate() != 1; + } ], [ d3_time_format("%a %d"), function(d) { + return d.getDay() && d.getDate() != 1; + } ], [ d3_time_format("%I %p"), function(d) { + return d.getHours(); + } ], [ d3_time_format("%I:%M"), function(d) { + return d.getMinutes(); + } ], [ d3_time_format(":%S"), function(d) { + return d.getSeconds(); + } ], [ d3_time_format(".%L"), function(d) { + return d.getMilliseconds(); + } ] ]; + var d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats); + d3_time_scaleLocalMethods.year = d3_time.year; + d3_time.scale = function() { + return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat); + }; + var d3_time_scaleMilliseconds = { + range: function(start, stop, step) { + return d3.range(+start, +stop, step).map(d3_time_scaleDate); + } + }; + var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) { + return [ m[0].utc, m[1] ]; + }); + var d3_time_scaleUTCFormats = [ [ d3_time_formatUtc("%Y"), d3_true ], [ d3_time_formatUtc("%B"), function(d) { + return d.getUTCMonth(); + } ], [ d3_time_formatUtc("%b %d"), function(d) { + return d.getUTCDate() != 1; + } ], [ d3_time_formatUtc("%a %d"), function(d) { + return d.getUTCDay() && d.getUTCDate() != 1; + } ], [ d3_time_formatUtc("%I %p"), function(d) { + return d.getUTCHours(); + } ], [ d3_time_formatUtc("%I:%M"), function(d) { + return d.getUTCMinutes(); + } ], [ d3_time_formatUtc(":%S"), function(d) { + return d.getUTCSeconds(); + } ], [ d3_time_formatUtc(".%L"), function(d) { + return d.getUTCMilliseconds(); + } ] ]; + var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats); + d3_time_scaleUTCMethods.year = d3_time.year.utc; + d3_time.scale.utc = function() { + return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat); + }; + d3.text = d3_xhrType(function(request) { + return request.responseText; + }); + d3.json = function(url, callback) { + return d3_xhr(url, "application/json", d3_json, callback); + }; + function d3_json(request) { + return JSON.parse(request.responseText); + } + d3.html = function(url, callback) { + return d3_xhr(url, "text/html", d3_html, callback); + }; + function d3_html(request) { + var range = d3_document.createRange(); + range.selectNode(d3_document.body); + return range.createContextualFragment(request.responseText); + } + d3.xml = d3_xhrType(function(request) { + return request.responseXML; + }); + return d3; +}(); \ No newline at end of file diff --git a/public/lib/d3.min.js b/public/lib/d3.min.js new file mode 100644 index 0000000..331756a --- /dev/null +++ b/public/lib/d3.min.js @@ -0,0 +1,5 @@ +d3=function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function u(){}function i(){}function o(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function a(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=Do.length;r>e;++e){var u=Do[e]+t;if(u in n)return u}}function c(){}function l(){}function s(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function T(n){return Lo(n,Io),n}function q(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.substring(0,a));var s=Zo.get(n);return s&&(n=s,l=j),a?t?u:r:t?c:i}function D(n,t){return function(e){var r=mo.event;mo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{mo.event=r}}}function j(n,t){var e=D(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function L(){var n=".dragsuppress-"+ ++Xo,t="touchmove"+n,e="selectstart"+n,r="dragstart"+n,u="click"+n,i=mo.select(_o).on(t,f).on(e,f).on(r,f),o=bo.style,a=o[Vo];return o[Vo]="none",function(t){function e(){i.on(u,null)}i.on(n,null),o[Vo]=a,t&&(i.on(u,function(){f(),e()},!0),setTimeout(e,0))}}function H(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>$o&&(_o.scrollX||_o.scrollY)){e=mo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();$o=!(u.f||u.e),e.remove()}return $o?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function F(n){return n>0?1:0>n?-1:0}function P(n){return n>1?0:-1>n?Bo:Math.acos(n)}function O(n){return n>1?Bo/2:-1>n?-Bo/2:Math.asin(n)}function R(n){return(Math.exp(n)-Math.exp(-n))/2}function Y(n){return(Math.exp(n)+Math.exp(-n))/2}function I(n){return R(n)/Y(n)}function U(n){return(n=Math.sin(n/2))*n}function Z(){}function V(n,t,e){return new X(n,t,e)}function X(n,t,e){this.h=n,this.s=t,this.l=e}function $(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,ot(u(n+120),u(n),u(n-120))}function B(n,t,e){return new W(n,t,e)}function W(n,t,e){this.h=n,this.c=t,this.l=e}function J(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),G(e,Math.cos(n*=Go)*t,Math.sin(n)*t)}function G(n,t,e){return new K(n,t,e)}function K(n,t,e){this.l=n,this.a=t,this.b=e}function Q(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=tt(u)*ca,r=tt(r)*la,i=tt(i)*sa,ot(rt(3.2404542*u-1.5371385*r-.4985314*i),rt(-.969266*u+1.8760108*r+.041556*i),rt(.0556434*u-.2040259*r+1.0572252*i))}function nt(n,t,e){return n>0?B(Math.atan2(e,t)*Ko,Math.sqrt(t*t+e*e),n):B(0/0,0/0,n)}function tt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function et(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function rt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function ut(n){return ot(n>>16,255&n>>8,255&n)}function it(n){return ut(n)+""}function ot(n,t,e){return new at(n,t,e)}function at(n,t,e){this.r=n,this.g=t,this.b=e}function ct(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function lt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(gt(u[0]),gt(u[1]),gt(u[2]))}return(i=ga.get(n))?t(i.r,i.g,i.b):(null!=n&&"#"===n.charAt(0)&&(4===n.length?(o=n.charAt(1),o+=o,a=n.charAt(2),a+=a,c=n.charAt(3),c+=c):7===n.length&&(o=n.substring(1,3),a=n.substring(3,5),c=n.substring(5,7)),o=parseInt(o,16),a=parseInt(a,16),c=parseInt(c,16)),t(o,a,c))}function st(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),V(r,u,c)}function ft(n,t,e){n=ht(n),t=ht(t),e=ht(e);var r=et((.4124564*n+.3575761*t+.1804375*e)/ca),u=et((.2126729*n+.7151522*t+.072175*e)/la),i=et((.0193339*n+.119192*t+.9503041*e)/sa);return G(116*u-16,500*(r-u),200*(u-i))}function ht(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function gt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function pt(n){return"function"==typeof n?n:function(){return n}}function dt(n){return n}function vt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),mt(t,e,n,r)}}function mt(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=mo.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!_o.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=mo.event;mo.event=n;try{o.progress.call(i,c)}finally{mo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Mo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},mo.rebind(i,o,"on"),null==r?i:i.get(yt(r))}function yt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Mt(){var n=bt(),t=_t()-n;t>24?(isFinite(t)&&(clearTimeout(ma),ma=setTimeout(Mt,t)),va=0):(va=1,Ma(Mt))}function xt(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now()),ya.callback=n,ya.time=e+t}function bt(){var n=Date.now();for(ya=pa;ya;)n>=ya.time&&(ya.flush=ya.callback(n-ya.time)),ya=ya.next;return n}function _t(){for(var n,t=pa,e=1/0;t;)t.flush?t=n?n.next=t.next:pa=t.next:(t.time8?function(n){return n/e}:function(n){return n*e},symbol:n}}function St(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Et(n){return n+""}function kt(){}function At(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function Nt(n,t){n&&za.hasOwnProperty(n.type)&&za[n.type](n,t)}function Tt(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++ua;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c={point:e,points:n,other:null,visited:!1,entry:!0,subject:!0},l={point:e,points:[e],other:c,visited:!1,entry:!1,subject:!1};c.other=l,i.push(c),o.push(l),c={point:r,points:[r],other:null,visited:!1,entry:!1,subject:!0},l={point:r,points:[r],other:c,visited:!1,entry:!0,subject:!1},c.other=l,i.push(c),o.push(l)}}),o.sort(t),$t(i),$t(o),i.length){if(e)for(var a=1,c=!e(o[0].point),l=o.length;l>a;++a)o[a].entry=c=!c;for(var s,f,h,g=i[0];;){for(s=g;s.visited;)if((s=s.next)===g)return;f=s.points,u.lineStart();do{if(s.visited=s.other.visited=!0,s.entry){if(s.subject)for(var a=0;a=0;)u.point((h=f[a])[0],h[1])}else r(s.point,s.prev.point,-1,u);s=s.prev}s=s.other,f=s.points}while(!s.visited);u.lineEnd()}}}function $t(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r1&&2&t&&e.push(e.pop().concat(e.shift())),h.push(e.filter(Wt))}}var h,g,p,d=t(u),v={point:i,lineStart:a,lineEnd:c,polygonStart:function(){v.point=l,v.lineStart=s,v.lineEnd=f,h=[],g=[],u.polygonStart()},polygonEnd:function(){v.point=i,v.lineStart=a,v.lineEnd=c,h=mo.merge(h),h.length?Xt(h,Gt,null,e,u):r(g)&&(u.lineStart(),e(null,null,1,u),u.lineEnd()),u.polygonEnd(),h=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},m=Jt(),y=t(m);return v}}function Wt(n){return n.length>1}function Jt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:c,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Gt(n,t){return((n=n.point)[0]<0?n[1]-Bo/2-Wo:Bo/2-n[1])-((t=t.point)[0]<0?t[1]-Bo/2-Wo:Bo/2-t[1])}function Kt(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=!1,a=!1,c=0;Da.reset();for(var l=0,s=t.length;s>l;++l){var f=t[l],h=f.length;if(h){for(var g=f[0],p=g[0],d=g[1]/2+Bo/4,v=Math.sin(d),m=Math.cos(d),y=1;;){y===h&&(y=0),n=f[y];var M=n[0],x=n[1]/2+Bo/4,b=Math.sin(x),_=Math.cos(x),w=M-p,S=Math.abs(w)>Bo,E=v*b;if(Da.add(Math.atan2(E*Math.sin(w),m*_+E*Math.cos(w))),Math.abs(x)=0?2:-2)*Bo:w,S^p>=e^M>=e){var k=jt(Ct(g),Ct(n));Ft(k);var A=jt(u,k);Ft(A);var N=(S^w>=0?-1:1)*O(A[2]);r>N&&(c+=S^w>=0?1:-1)}if(!y++)break;p=M,v=b,m=_,g=n}Math.abs(i)>Wo&&(o=!0)}}return(!a&&!o&&0>Da||-Wo>i)^1&c}function Qt(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Bo:-Bo,c=Math.abs(i-e);Math.abs(c-Bo)0?Bo/2:-Bo/2),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Bo&&(Math.abs(e-u)Wo?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function te(n,t,e,r){var u;if(null==n)u=e*Bo/2,r.point(-Bo,u),r.point(0,u),r.point(Bo,u),r.point(Bo,0),r.point(Bo,-u),r.point(0,-u),r.point(-Bo,-u),r.point(-Bo,0),r.point(-Bo,u);else if(Math.abs(n[0]-t[0])>Wo){var i=(n[0]o}function e(n){var e,i,o,c,s;return{lineStart:function(){c=o=!1,s=1},point:function(f,h){var g,p=[f,h],d=t(f,h),v=a?d?0:u(f,h):d?u(f+(0>f?Bo:-Bo),h):0;if(!e&&(c=o=d)&&n.lineStart(),d!==o&&(g=r(e,p),(Ot(e,g)||Ot(p,g))&&(p[0]+=Wo,p[1]+=Wo,d=t(p[0],p[1]))),d!==o)s=0,d?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(l&&e&&a^d){var m;v&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!d||e&&Ot(e,p)||n.point(p[0],p[1]),e=p,o=d,i=v},lineEnd:function(){o&&n.lineEnd(),e=null},clean:function(){return s|(c&&o)<<1}}}function r(n,t,e){var r=Ct(n),u=Ct(t),i=[1,0,0],a=jt(r,u),c=Dt(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=o*c/s,h=-o*l/s,g=jt(i,a),p=Ht(i,f),d=Ht(a,h);Lt(p,d);var v=g,m=Dt(p,v),y=Dt(v,v),M=m*m-y*(Dt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Ht(v,(-m-x)/y);if(Lt(b,p),b=Pt(b),!e)return b;var _,w=n[0],S=t[0],E=n[1],k=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=Math.abs(A-Bo)A;if(!N&&E>k&&(_=E,E=k,k=_),T?N?E+k>0^b[1]<(Math.abs(b[0]-w)Bo^(w<=b[0]&&b[0]<=S)){var q=Ht(v,(-m+x)/y);return Lt(q,p),[b,Pt(q)]}}}function u(t,e){var r=a?n:Bo-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}function i(n){return Kt(c,n)}var o=Math.cos(n),a=o>0,c=[n,0],l=Math.abs(o)>Wo,s=Te(n,6*Go);return Bt(t,e,s,i)}function ue(n,t,e,r){function u(r,u){return Math.abs(r[0]-n)0?0:3:Math.abs(r[0]-e)0?2:1:Math.abs(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.point,t.point)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}function a(u,i){var o=i[0]-u[0],a=i[1]-u[1],c=[0,1];return Math.abs(o)0&&(u[0]+=c[0]*o,u[1]+=c[0]*a),!0):!1}return function(c){function l(i){var o=u(i,-1),a=s([0===o||3===o?n:e,o>1?r:t]);return a}function s(n){for(var t=0,e=M.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=M[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&f(l,i,n)>0&&++t:i[1]<=r&&f(l,i,n)<0&&--t,l=i;return 0!==t}function f(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(e[0]-n[0])*(t[1]-n[1])}function h(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function g(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function p(n,t){g(n,t)&&c.point(n,t)}function d(){q.point=m,M&&M.push(x=[]),A=!0,k=!1,S=E=0/0}function v(){y&&(m(b,_),w&&k&&T.rejoin(),y.push(T.buffer())),q.point=p,k&&c.lineEnd()}function m(n,t){n=Math.max(-Wa,Math.min(Wa,n)),t=Math.max(-Wa,Math.min(Wa,t));var e=g(n,t);if(M&&x.push([n,t]),A)b=n,_=t,w=e,A=!1,e&&(c.lineStart(),c.point(n,t));else if(e&&k)c.point(n,t);else{var r=[S,E],u=[n,t];a(r,u)?(k||(c.lineStart(),c.point(r[0],r[1])),c.point(u[0],u[1]),e||c.lineEnd()):e&&(c.lineStart(),c.point(n,t))}S=n,E=t,k=e}var y,M,x,b,_,w,S,E,k,A,N=c,T=Jt(),q={point:p,lineStart:d,lineEnd:v,polygonStart:function(){c=T,y=[],M=[]},polygonEnd:function(){c=N,(y=mo.merge(y)).length?(c.polygonStart(),Xt(y,i,l,h,c),c.polygonEnd()):s([n,t])&&(c.polygonStart(),c.lineStart(),h(null,null,1,c),c.lineEnd(),c.polygonEnd()),y=M=x=null}};return q}}function ie(n,t,e){if(Math.abs(t)=n;var r=n/t;if(t>0){if(r>e[1])return!1;r>e[0]&&(e[0]=r)}else{if(rn&&(Ka=n),n>nc&&(nc=n),Qa>t&&(Qa=t),t>tc&&(tc=t)}function fe(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=he(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=he(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function he(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function ge(n,t){Fa+=n,Pa+=t,++Oa}function pe(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Ra+=o*(t+n)/2,Ya+=o*(e+r)/2,Ia+=o,ge(t=n,e=r)}var t,e;uc.point=function(r,u){uc.point=n,ge(t=r,e=u)}}function de(){uc.point=ge}function ve(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Ra+=o*(r+n)/2,Ya+=o*(u+t)/2,Ia+=o,o=u*n-r*t,Ua+=o*(r+n),Za+=o*(u+t),Va+=3*o,ge(r=n,u=t)}var t,e,r,u;uc.point=function(i,o){uc.point=n,ge(t=r=i,e=u=o)},uc.lineEnd=function(){n(t,e)}}function me(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,2*Bo)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:c};return a}function ye(n){function t(t){function r(e,r){e=n(e,r),t.point(e[0],e[1])}function u(){M=0/0,S.point=o,t.lineStart()}function o(r,u){var o=Ct([r,u]),a=n(r,u);e(M,x,y,b,_,w,M=a[0],x=a[1],y=r,b=o[0],_=o[1],w=o[2],i,t),t.point(M,x)}function a(){S.point=r,t.lineEnd()}function c(){u(),S.point=l,S.lineEnd=s}function l(n,t){o(f=n,h=t),g=M,p=x,d=b,v=_,m=w,S.point=o}function s(){e(M,x,y,b,_,w,g,p,f,d,v,m,i,t),S.lineEnd=a,a()}var f,h,g,p,d,v,m,y,M,x,b,_,w,S={point:r,lineStart:u,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=u}};return S}function e(t,i,o,a,c,l,s,f,h,g,p,d,v,m){var y=s-t,M=f-i,x=y*y+M*M;if(x>4*r&&v--){var b=a+g,_=c+p,w=l+d,S=Math.sqrt(b*b+_*_+w*w),E=Math.asin(w/=S),k=Math.abs(Math.abs(w)-1)r||Math.abs((y*q+M*z)/x-.5)>.3||u>a*g+c*p+l*d)&&(e(t,i,o,a,c,l,N,T,k,b/=S,_/=S,w,v,m),m.point(N,T),e(N,T,k,b,_,w,s,f,h,g,p,d,v,m))}}var r=.5,u=Math.cos(30*Go),i=16;return t.precision=function(n){return arguments.length?(i=(r=n*n)>0&&16,t):Math.sqrt(r)},t}function Me(n){this.stream=n}function xe(n){var t=ye(function(t,e){return n([t*Ko,e*Ko])});return function(n){var e=new Me(n=t(n));return e.point=function(t,e){n.point(t*Go,e*Go)},e}}function be(n){return _e(function(){return n})()}function _e(n){function t(n){return n=a(n[0]*Go,n[1]*Go),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ko,n[1]*Ko]}function r(){a=oe(o=Ee(m,y,M),i);var n=i(d,v);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=ye(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,d=0,v=0,m=0,y=0,M=0,x=$a,b=dt,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=we(o,x(f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,$a):re((_=+n)*Go),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?ue(n[0][0],n[0][1],n[1][0],n[1][1]):dt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(d=n[0]%360*Go,v=n[1]%360*Go,r()):[d*Ko,v*Ko]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Go,y=n[1]%360*Go,M=n.length>2?n[2]%360*Go:0,r()):[m*Ko,y*Ko,M*Ko]},mo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function we(n,t){var e=new Me(t);return e.point=function(e,r){r=n(e*Go,r*Go),e=r[0],t.point(e>Bo?e-2*Bo:-Bo>e?e+2*Bo:e,r[1])},e}function Se(n,t){return[n,t]}function Ee(n,t,e){return n?t||e?oe(Ae(n),Ne(t,e)):Ae(n):t||e?Ne(t,e):Se}function ke(n){return function(t,e){return t+=n,[t>Bo?t-2*Bo:-Bo>t?t+2*Bo:t,e]}}function Ae(n){var t=ke(n);return t.invert=ke(-n),t}function Ne(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),O(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),O(s*r-a*u)]},e}function Te(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=qe(e,u),i=qe(e,i),(o>0?i>u:u>i)&&(u+=2*o*Bo)):(u=n+2*o*Bo,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=Pt([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function qe(n,t){var e=Ct(t);e[0]-=n,Ft(e);var r=P(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Wo)%(2*Math.PI)}function ze(n,t,e){var r=mo.range(n,t-Wo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function Ce(n,t,e){var r=mo.range(n,t-Wo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function De(n){return n.source}function je(n){return n.target}function Le(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(U(r-t)+u*o*U(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ko,Math.atan2(o,Math.sqrt(r*r+u*u))*Ko]}:function(){return[n*Ko,t*Ko]};return p.distance=h,p}function He(){function n(n,u){var i=Math.sin(u*=Go),o=Math.cos(u),a=Math.abs((n*=Go)-t),c=Math.cos(a);ic+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;oc.point=function(u,i){t=u*Go,e=Math.sin(i*=Go),r=Math.cos(i),oc.point=n},oc.lineEnd=function(){oc.point=oc.lineEnd=c}}function Fe(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function Pe(n,t){function e(n,t){var e=Math.abs(Math.abs(t)-Bo/2)1&&u.push("H",r[0]),u.join("")}function We(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function fr(n){return n.length<3?Xe(n):n[0]+nr(n,sr(n))}function hr(n,t,e,r){var u,i,o,a,c,l,s;return u=r[n],i=u[0],o=u[1],u=r[t],a=u[0],c=u[1],u=r[e],l=u[0],s=u[1],(s-o)*(a-i)-(c-o)*(l-i)>0}function gr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function pr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function dr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function vr(n,t){var e={list:n.map(function(n,t){return{index:t,x:n[0],y:n[1]}}).sort(function(n,t){return n.yt.y?1:n.xt.x?1:0}),bottomSite:null},r={list:[],leftEnd:null,rightEnd:null,init:function(){r.leftEnd=r.createHalfEdge(null,"l"),r.rightEnd=r.createHalfEdge(null,"l"),r.leftEnd.r=r.rightEnd,r.rightEnd.l=r.leftEnd,r.list.unshift(r.leftEnd,r.rightEnd)},createHalfEdge:function(n,t){return{edge:n,side:t,vertex:null,l:null,r:null}},insert:function(n,t){t.l=n,t.r=n.r,n.r.l=t,n.r=t},leftBound:function(n){var t=r.leftEnd;do t=t.r;while(t!=r.rightEnd&&u.rightOf(t,n));return t=t.l},del:function(n){n.l.r=n.r,n.r.l=n.l,n.edge=null},right:function(n){return n.r},left:function(n){return n.l},leftRegion:function(n){return null==n.edge?e.bottomSite:n.edge.region[n.side]},rightRegion:function(n){return null==n.edge?e.bottomSite:n.edge.region[mc[n.side]]}},u={bisect:function(n,t){var e={region:{l:n,r:t},ep:{l:null,r:null}},r=t.x-n.x,u=t.y-n.y,i=r>0?r:-r,o=u>0?u:-u;return e.c=n.x*r+n.y*u+.5*(r*r+u*u),i>o?(e.a=1,e.b=u/r,e.c/=r):(e.b=1,e.a=r/u,e.c/=u),e},intersect:function(n,t){var e=n.edge,r=t.edge;if(!e||!r||e.region.r==r.region.r)return null;var u=e.a*r.b-e.b*r.a;if(Math.abs(u)<1e-10)return null;var i,o,a=(e.c*r.b-r.c*e.b)/u,c=(r.c*e.a-e.c*r.a)/u,l=e.region.r,s=r.region.r;l.y=o.region.r.x;return f&&"l"===i.side||!f&&"r"===i.side?null:{x:a,y:c}},rightOf:function(n,t){var e=n.edge,r=e.region.r,u=t.x>r.x;if(u&&"l"===n.side)return 1;if(!u&&"r"===n.side)return 0;if(1===e.a){var i=t.y-r.y,o=t.x-r.x,a=0,c=0;if(!u&&e.b<0||u&&e.b>=0?c=a=i>=e.b*o:(c=t.x+t.y*e.b>e.c,e.b<0&&(c=!c),c||(a=1)),!a){var l=r.x-e.region.l.x;c=e.b*(o*o-i*i)h*h+g*g}return"l"===n.side?c:!c},endPoint:function(n,e,r){n.ep[e]=r,n.ep[mc[e]]&&t(n)},distance:function(n,t){var e=n.x-t.x,r=n.y-t.y;return Math.sqrt(e*e+r*r)}},i={list:[],insert:function(n,t,e){n.vertex=t,n.ystar=t.y+e;for(var r=0,u=i.list,o=u.length;o>r;r++){var a=u[r];if(!(n.ystar>a.ystar||n.ystar==a.ystar&&t.x>a.vertex.x))break}u.splice(r,0,n)},del:function(n){for(var t=0,e=i.list,r=e.length;r>t&&e[t]!=n;++t);e.splice(t,1)},empty:function(){return 0===i.list.length},nextEvent:function(n){for(var t=0,e=i.list,r=e.length;r>t;++t)if(e[t]==n)return e[t+1];return null},min:function(){var n=i.list[0];return{x:n.vertex.x,y:n.ystar}},extractMin:function(){return i.list.shift()}};r.init(),e.bottomSite=e.list.shift();for(var o,a,c,l,s,f,h,g,p,d,v,m,y,M=e.list.shift();;)if(i.empty()||(o=i.min()),M&&(i.empty()||M.yg.y&&(p=h,h=g,g=p,y="r"),m=u.bisect(h,g),f=r.createHalfEdge(m,y),r.insert(l,f),u.endPoint(m,mc[y],v),d=u.intersect(l,f),d&&(i.del(l),i.insert(l,d,u.distance(d,h))),d=u.intersect(f,s),d&&i.insert(f,d,u.distance(d,h))}for(a=r.right(r.leftEnd);a!=r.rightEnd;a=r.right(a))t(a.edge)}function mr(n){return n.x}function yr(n){return n.y}function Mr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function xr(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&xr(n,c[0],e,r,o,a),c[1]&&xr(n,c[1],o,r,u,a),c[2]&&xr(n,c[2],e,a,o,i),c[3]&&xr(n,c[3],o,a,u,i)}}function br(n,t){n=mo.rgb(n),t=mo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+ct(Math.round(e+i*n))+ct(Math.round(r+o*n))+ct(Math.round(u+a*n))}}function _r(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Er(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function wr(n,t){return t-=n=+n,function(e){return n+t*e}}function Sr(n,t){var e,r,u,i,o,a=0,c=0,l=[],s=[];for(n+="",t+="",yc.lastIndex=0,r=0;e=yc.exec(t);++r)e.index&&l.push(t.substring(a,c=e.index)),s.push({i:l.length,x:e[0]}),l.push(null),a=yc.lastIndex;for(ar;++r)if(o=s[r],o.x==e[0]){if(o.i)if(null==l[o.i+1])for(l[o.i-1]+=o.x,l.splice(o.i,1),u=r+1;i>u;++u)s[u].i--;else for(l[o.i-1]+=o.x+l[o.i+1],l.splice(o.i,2),u=r+1;i>u;++u)s[u].i-=2;else if(null==l[o.i+1])l[o.i]=o.x;else for(l[o.i]=o.x+l[o.i+1],l.splice(o.i+1,1),u=r+1;i>u;++u)s[u].i--;s.splice(r,1),i--,r--}else o.x=wr(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=s.pop(),null==l[o.i+1]?l[o.i]=o.x:(l[o.i]=o.x+l[o.i+1],l.splice(o.i+1,1)),i--;return 1===l.length?null==l[0]?(o=s[0].x,function(n){return o(n)+""}):function(){return t}:function(n){for(r=0;i>r;++r)l[(o=s[r]).i]=o.x(n);return l.join("")}}function Er(n,t){for(var e,r=mo.interpolators.length;--r>=0&&!(e=mo.interpolators[r](n,t)););return e}function kr(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Er(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Ar(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function Nr(n){return function(t){return 1-n(1-t)}}function Tr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function qr(n){return n*n}function zr(n){return n*n*n}function Cr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Dr(n){return function(t){return Math.pow(t,n)}}function jr(n){return 1-Math.cos(n*Bo/2)}function Lr(n){return Math.pow(2,10*(n-1))}function Hr(n){return 1-Math.sqrt(1-n*n)}function Fr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/(2*Bo)*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,10*-r)*Math.sin(2*(r-e)*Bo/t)}}function Pr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Or(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=mo.hcl(n),t=mo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return J(e+i*n,r+o*n,u+a*n)+""}}function Yr(n,t){n=mo.hsl(n),t=mo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return $(e+i*n,r+o*n,u+a*n)+""}}function Ir(n,t){n=mo.lab(n),t=mo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return Q(e+i*n,r+o*n,u+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Zr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Xr(t),u=Vr(t,e),i=Xr($r(e,t,-u))||0;t[0]*e[1]180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:wr(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:wr(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:wr(g[0],p[0])},{i:e-2,x:wr(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++ie;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function vu(n){return n.reduce(mu,0)}function mu(n,t){return n+t[1]}function yu(n,t){return Mu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function Mu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function xu(n){return[mo.min(n),mo.max(n)]}function bu(n,t){return n.parent==t.parent?1:2}function _u(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function wu(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function Su(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i0&&(n=r);return n}function Eu(n,t){return n.x-t.x}function ku(n,t){return t.x-n.x}function Au(n,t){return n.depth-t.depth}function Nu(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function qu(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function zu(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function Cu(n,t){return n.value-t.value}function Du(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function ju(n,t){n._pack_next=t,t._pack_prev=n}function Lu(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Hu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(Fu),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Ru(r,u,i),t(i),Du(r,i),r._pack_prev=i,Du(i,u),u=r._pack_next,o=3;l>o;o++){Ru(r,u,i=e[o]);var p=0,d=1,v=1;for(a=u._pack_next;a!==u;a=a._pack_next,d++)if(Lu(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Lu(c,i);c=c._pack_prev,v++);p?(v>d||d==v&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Pu)}}function Fu(n){n._pack_next=n._pack_prev=n}function Pu(n){delete n._pack_next,delete n._pack_prev}function Ou(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++iu&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function $u(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Bu(n){return n.rangeExtent?n.rangeExtent():$u(n.range())}function Wu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Ju(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Gu(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Nc}function Ku(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Ku:Wu,c=r?Jr:Wr;return o=u(n,t,c,e),a=u(t,n,c,Er),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Ur)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return ri(n,t)},i.tickFormat=function(t,e){return ui(n,t,e)},i.nice=function(t){return ti(n,t),u()},i.copy=function(){return Qu(n,t,e,r)},u()}function ni(n,t){return mo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function ti(n,t){return Ju(n,Gu(ei(n,t)[2]))}function ei(n,t){null==t&&(t=10);var e=$u(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function ri(n,t){return mo.range.apply(mo,ei(n,t))}function ui(n,t,e){var r=-Math.floor(Math.log(ei(n,t)[2])/Math.LN10+.01);return mo.format(e?e.replace(Ea,function(n,t,e,u,i,o,a,c,l,s){return[t,e,u,i,o,a,c,l||"."+(r-2*("%"===s)),s].join("")}):",."+r+"f")}function ii(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Ju(r.map(u),e?Math:qc);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=$u(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++0;h--)o.push(i(l)*h);for(l=0;o[l]c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return Tc;arguments.length<2?t=Tc:"function"!=typeof t&&(t=mo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return ii(n.copy(),t,e,r)},ni(o,n)}function oi(n,t,e){function r(t){return n(u(t))}var u=ai(t),i=ai(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return ri(e,n)},r.tickFormat=function(n,t){return ui(e,n,t)},r.nice=function(n){return r.domain(ti(e,n))},r.exponent=function(o){return arguments.length?(u=ai(t=o),i=ai(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return oi(n.copy(),t,e)},ni(r,n)}function ai(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ci(n,t){function e(t){return o[((i.get(t)||i.set(t,n.push(t)))-1)%o.length]}function r(t,e){return mo.range(n.length).map(function(n){return t+e*n})}var i,o,a;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new u;for(var o,a=-1,c=r.length;++ae?[0/0,0/0]:[e>0?u[e-1]:n[0],et?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return si(n,t,e)},u()}function fi(n,t){function e(e){return e>=e?t[mo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return fi(n,t)},e}function hi(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return ri(n,t)},t.tickFormat=function(t,e){return ui(n,t,e)},t.copy=function(){return hi(n)},t}function gi(n){return n.innerRadius}function pi(n){return n.outerRadius}function di(n){return n.startAngle}function vi(n){return n.endAngle}function mi(n){for(var t,e,r,u=-1,i=n.length;++ue?l():(i.active=e,o.event&&o.event.start.call(n,s,t),o.tween.forEach(function(e,r){(r=r.call(n,s,t))&&p.push(r)}),c(r)?1:(xt(c,0,a),void 0))}function c(r){if(i.active!==e)return l();for(var u=(r-h)/g,a=f(u),c=p.length;c>0;)p[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,s,t),l()):void 0}function l(){return--i.count?delete i[e]:delete n.__transition__,1}var s=n.__data__,f=o.ease,h=o.delay,g=o.duration,p=[];return r>=h?u(r):(xt(u,h,a),void 0)},0,a)}}function Ti(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function qi(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function zi(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ci(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new Wc(e-1)),1),e}function i(n,e){return t(n=new Wc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{Wc=zi;var r=new zi;return r._=n,o(r,t,e)}finally{Wc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Di(n);return c.floor=c,c.round=Di(r),c.ceil=Di(u),c.offset=Di(i),c.range=a,n}function Di(n){return function(t,e){try{Wc=zi;var r=new zi;return r._=t,n(r,e)._}finally{Wc=Date}}}function ji(n){function t(t){for(var r,u,i,o=[],a=-1,c=0;++aa;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=vl[o in pl?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function Hi(n){return new RegExp("^(?:"+n.map(mo.requote).join("|")+")","i")}function Fi(n){for(var t=new u,e=-1,r=n.length;++en?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Oi(n,t,e){al.lastIndex=0;var r=al.exec(t.substring(e));return r?(n.w=cl.get(r[0].toLowerCase()),e+r[0].length):-1}function Ri(n,t,e){il.lastIndex=0;var r=il.exec(t.substring(e));return r?(n.w=ol.get(r[0].toLowerCase()),e+r[0].length):-1}function Yi(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Ii(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e));return r?(n.U=+r[0],e+r[0].length):-1}function Ui(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function Zi(n,t,e){fl.lastIndex=0;var r=fl.exec(t.substring(e));return r?(n.m=hl.get(r[0].toLowerCase()),e+r[0].length):-1}function Vi(n,t,e){ll.lastIndex=0;var r=ll.exec(t.substring(e));return r?(n.m=sl.get(r[0].toLowerCase()),e+r[0].length):-1}function Xi(n,t,e){return Li(n,dl.c.toString(),t,e)}function $i(n,t,e){return Li(n,dl.x.toString(),t,e)}function Bi(n,t,e){return Li(n,dl.X.toString(),t,e)}function Wi(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Ji(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.y=Ki(+r[0]),e+r[0].length):-1}function Gi(n,t,e){return/^[+-]\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+t,e+5):-1}function Ki(n){return n+(n>68?1900:2e3)}function Qi(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function no(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function to(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function eo(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ro(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function uo(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function io(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oo(n,t,e){var r=yl.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}function ao(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(Math.abs(t)/60),u=Math.abs(t)%60;return e+Pi(r,"0",2)+Pi(u,"0",2)}function co(n,t,e){gl.lastIndex=0;var r=gl.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function lo(n){function t(n){try{Wc=zi;var t=new Wc;return t._=n,e(t)}finally{Wc=Date}}var e=ji(n);return t.parse=function(n){try{Wc=zi;var t=e.parse(n);return t&&t._}finally{Wc=Date}},t.toString=e.toString,t}function so(n){return n.toISOString()}function fo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=mo.bisect(xl,u);return i==xl.length?[t.year,ei(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/xl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ho(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ho(+t+1);return t}}:n))},r.ticks=function(n,t){var e=$u(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ho(+e[1]+1),t)},r.tickFormat=function(){return e},r.copy=function(){return fo(n.copy(),t,e)},ni(r,n)}function ho(n){return new Date(n)}function go(n){return function(t){for(var e=n.length-1,r=n[e];!r[1](t);)r=n[--e];return r[0](t)}}function po(n){return JSON.parse(n.responseText)}function vo(n){var t=xo.createRange();return t.selectNode(xo.body),t.createContextualFragment(n.responseText)}var mo={version:"3.3.3"};Date.now||(Date.now=function(){return+new Date});var yo=[].slice,Mo=function(n){return yo.call(n)},xo=document,bo=xo.documentElement,_o=window;try{Mo(bo.childNodes)[0].nodeType}catch(wo){Mo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{xo.createElement("div").style.setProperty("opacity",0,"")}catch(So){var Eo=_o.Element.prototype,ko=Eo.setAttribute,Ao=Eo.setAttributeNS,No=_o.CSSStyleDeclaration.prototype,To=No.setProperty;Eo.setAttribute=function(n,t){ko.call(this,n,t+"")},Eo.setAttributeNS=function(n,t,e){Ao.call(this,n,t,e+"")},No.setProperty=function(n,t,e){To.call(this,n,t+"",e)}}mo.ascending=function(n,t){return t>n?-1:n>t?1:n>=t?0:0/0},mo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},mo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ur&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ur&&(e=r)}return e},mo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ue&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ue&&(e=r)}return e},mo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=e);)e=u=void 0;for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=e);)e=void 0;for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},mo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i1&&(t=t.map(e)),t=t.filter(n),t.length?mo.quantile(t.sort(mo.ascending),.5):void 0},mo.bisector=function(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n.call(t,t[i],i)r;){var i=r+u>>>1;er?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},mo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=mo.min(arguments,t),r=new Array(e);++nr)for(;(u=n+r*++a)>t;)i.push(u/o);else for(;(u=n+r*++a)=o.length)return r?r.call(i,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,d=o[c++],v=new u;++g=o.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,i={},o=[],a=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(mo.map,e,0),0)},i.key=function(n){return o.push(n),i},i.sortKeys=function(n){return a[o.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},mo.set=function(n){var t=new i;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},r(i,{has:function(n){return zo+n in this},add:function(n){return this[zo+n]=!0,n},remove:function(n){return n=zo+n,n in this&&delete this[n]},values:function(){var n=[];return this.forEach(function(t){n.push(t)}),n},forEach:function(n){for(var t in this)t.charCodeAt(0)===Co&&n.call(this,t.substring(1))}}),mo.behavior={},mo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},mo.event=null,mo.requote=function(n){return n.replace(jo,"\\$&")};var jo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Lo={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},Ho=function(n,t){return t.querySelector(n)},Fo=function(n,t){return t.querySelectorAll(n)},Po=bo[a(bo,"matchesSelector")],Oo=function(n,t){return Po.call(n,t)};"function"==typeof Sizzle&&(Ho=function(n,t){return Sizzle(n,t)[0]||null},Fo=function(n,t){return Sizzle.uniqueSort(Sizzle(n,t))},Oo=Sizzle.matchesSelector),mo.selection=function(){return Uo};var Ro=mo.selection.prototype=[];Ro.select=function(n){var t,e,r,u,i=[];n=d(n);for(var o=-1,a=this.length;++o=0&&(e=n.substring(0,t),n=n.substring(t+1)),Yo.hasOwnProperty(e)?{space:Yo[e],local:n}:n}},Ro.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=mo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(m(t,n[t]));return this}return this.each(m(n,t))},Ro.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=n.trim().split(/^|\s+/g)).length,u=-1;if(t=e.classList){for(;++ur){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(_(e,n[e],t));return this}if(2>r)return _o.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(_(n,t,e))},Ro.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(w(t,n[t]));return this}return this.each(w(n,t))},Ro.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Ro.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Ro.append=function(n){return n=S(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Ro.insert=function(n,t){return n=S(n),t=d(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments))})},Ro.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},Ro.data=function(n,t){function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),d=new Array(a);if(t){var v,m=new u,y=new u,M=[];for(r=-1;++rr;++r)p[r]=E(e[r]);for(;a>r;++r)d[r]=n[r]}p.update=g,p.parentNode=g.parentNode=d.parentNode=n.parentNode,c.push(p),l.push(g),s.push(d)}var r,i,o=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++oi;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a)&&t.push(r)}return p(u)},Ro.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Ro.sort=function(n){n=A.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Ro.size=function(){var n=0;return this.each(function(){++n}),n};var Io=[];mo.selection.enter=T,mo.selection.enter.prototype=Io,Io.append=Ro.append,Io.empty=Ro.empty,Io.node=Ro.node,Io.call=Ro.call,Io.size=Ro.size,Io.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(C(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(C(n,t,e))};var Zo=mo.map({mouseenter:"mouseover",mouseleave:"mouseout"});Zo.forEach(function(n){"on"+n in xo&&Zo.remove(n)});var Vo=a(bo.style,"userSelect"),Xo=0;mo.mouse=function(n){return H(n,h())};var $o=/WebKit/.test(_o.navigator.userAgent)?-1:0;mo.touches=function(n,t){return arguments.length<2&&(t=h().touches),t?Mo(t).map(function(t){var e=H(n,t);return e.identifier=t.identifier,e}):[]},mo.behavior.drag=function(){function n(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function t(){return mo.event.changedTouches[0].identifier}function e(n,t){return mo.touches(n).filter(function(n){return n.identifier===t})[0]}function r(n,t,e,r){return function(){function o(){if(!s)return a();var n=t(s,g),e=n[0]-d[0],r=n[1]-d[1];v|=e|r,d=n,f({type:"drag",x:n[0]+c[0],y:n[1]+c[1],dx:e,dy:r})}function a(){m.on(e+"."+p,null).on(r+"."+p,null),y(v&&mo.event.target===h),f({type:"dragend"})}var c,l=this,s=l.parentNode,f=u.of(l,arguments),h=mo.event.target,g=n(),p=null==g?"drag":"drag-"+g,d=t(s,g),v=0,m=mo.select(_o).on(e+"."+p,o).on(r+"."+p,a),y=L();i?(c=i.apply(l,arguments),c=[c.x-d[0],c.y-d[1]]):c=[0,0],f({type:"dragstart"})}}var u=g(n,"drag","dragstart","dragend"),i=null,o=r(c,mo.mouse,"mousemove","mouseup"),a=r(t,e,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},mo.rebind(n,u,"on")};var Bo=Math.PI,Wo=1e-6,Jo=Wo*Wo,Go=Bo/180,Ko=180/Bo,Qo=Math.SQRT2,na=2,ta=4;mo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=Y(d),o=i/(na*h)*(e*I(Qo*t+d)-R(d));return[r+o*l,u+o*s,i*e/Y(Qo*t+d)]}return[r+n*l,u+n*s,i*Math.exp(Qo*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+ta*f)/(2*i*na*h),p=(c*c-i*i-ta*f)/(2*c*na*h),d=Math.log(Math.sqrt(g*g+1)-g),v=Math.log(Math.sqrt(p*p+1)-p),m=v-d,y=(m||Math.log(c/i))/Qo;return e.duration=1e3*y,e},mo.behavior.zoom=function(){function n(n){n.on(A,l).on(ua+".zoom",h).on(N,p).on("dblclick.zoom",d).on(q,s)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(k[0],Math.min(k[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){b&&b.domain(x.range().map(function(n){return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-S.y)/S.k}).map(_.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function l(){function n(){s=1,u(mo.mouse(r),h),a(i)}function e(){f.on(N,_o===r?p:null).on(T,null),g(s&&mo.event.target===l),c(i)}var r=this,i=C.of(r,arguments),l=mo.event.target,s=0,f=mo.select(_o).on(N,n).on(T,e),h=t(mo.mouse(r)),g=L();z.call(r),o(i)}function s(){function n(){var n=mo.touches(p);return g=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=mo.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-M){var l=o[0],s=v[l.identifier];r(2*S.k),u(l,s),f(),a(d)}M=c}else if(o.length>1){var l=o[0],h=o[1],g=l[0]-h[0],p=l[1]-h[1];m=g*g+p*p}}function i(){for(var n,t,e,i,o=mo.touches(p),c=0,l=o.length;l>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}M=null,u(n,t),a(d)}function h(){if(mo.event.touches.length){for(var t=mo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}_.on(x,null).on(b,null),w.on(A,l).on(q,s),E(),c(d)}var g,p=this,d=C.of(p,arguments),v={},m=0,y=mo.event.changedTouches[0].identifier,x="touchmove.zoom-"+y,b="touchend.zoom-"+y,_=mo.select(_o).on(x,i).on(b,h),w=mo.select(p).on(A,null).on(q,e),E=L();z.call(p),e(),o(d)}function h(){var n=C.of(this,arguments);y?clearTimeout(y):(z.call(this),o(n)),y=setTimeout(function(){y=null,c(n)},50),f();var e=m||mo.mouse(this);v||(v=t(e)),r(Math.pow(2,.002*ea())*S.k),u(e,v),a(n)}function p(){v=null}function d(){var n=C.of(this,arguments),e=mo.mouse(this),i=t(e),l=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,mo.event.shiftKey?Math.ceil(l)-1:Math.floor(l)+1)),u(e,i),a(n),c(n)}var v,m,y,M,x,b,_,w,S={x:0,y:0,k:1},E=[960,500],k=ra,A="mousedown.zoom",N="mousemove.zoom",T="mouseup.zoom",q="touchstart.zoom",C=g(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=C.of(this,arguments),t=S;Pc?mo.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=e/2,i=r/2,o=mo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(k=null==t?ra:[+t[0],+t[1]],n):k},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.x=function(t){return arguments.length?(b=t,x=t.copy(),S={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),S={x:0,y:0,k:1},n):w},mo.rebind(n,C,"on")};var ea,ra=[0,1/0],ua="onwheel"in xo?(ea=function(){return-mo.event.deltaY*(mo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in xo?(ea=function(){return mo.event.wheelDelta},"mousewheel"):(ea=function(){return-mo.event.detail},"MozMousePixelScroll");Z.prototype.toString=function(){return this.rgb()+""},mo.hsl=function(n,t,e){return 1===arguments.length?n instanceof X?V(n.h,n.s,n.l):lt(""+n,st,V):V(+n,+t,+e)};var ia=X.prototype=new Z;ia.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),V(this.h,this.s,this.l/n)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),V(this.h,this.s,n*this.l)},ia.rgb=function(){return $(this.h,this.s,this.l)},mo.hcl=function(n,t,e){return 1===arguments.length?n instanceof W?B(n.h,n.c,n.l):n instanceof K?nt(n.l,n.a,n.b):nt((n=ft((n=mo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):B(+n,+t,+e)};var oa=W.prototype=new Z;oa.brighter=function(n){return B(this.h,this.c,Math.min(100,this.l+aa*(arguments.length?n:1)))},oa.darker=function(n){return B(this.h,this.c,Math.max(0,this.l-aa*(arguments.length?n:1)))},oa.rgb=function(){return J(this.h,this.c,this.l).rgb()},mo.lab=function(n,t,e){return 1===arguments.length?n instanceof K?G(n.l,n.a,n.b):n instanceof W?J(n.l,n.c,n.h):ft((n=mo.rgb(n)).r,n.g,n.b):G(+n,+t,+e)};var aa=18,ca=.95047,la=1,sa=1.08883,fa=K.prototype=new Z;fa.brighter=function(n){return G(Math.min(100,this.l+aa*(arguments.length?n:1)),this.a,this.b)},fa.darker=function(n){return G(Math.max(0,this.l-aa*(arguments.length?n:1)),this.a,this.b)},fa.rgb=function(){return Q(this.l,this.a,this.b)},mo.rgb=function(n,t,e){return 1===arguments.length?n instanceof at?ot(n.r,n.g,n.b):lt(""+n,ot,$):ot(~~n,~~t,~~e)};var ha=at.prototype=new Z;ha.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),ot(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):ot(u,u,u)},ha.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),ot(~~(n*this.r),~~(n*this.g),~~(n*this.b))},ha.hsl=function(){return st(this.r,this.g,this.b)},ha.toString=function(){return"#"+ct(this.r)+ct(this.g)+ct(this.b)};var ga=mo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ga.forEach(function(n,t){ga.set(n,ut(t))}),mo.functor=pt,mo.xhr=vt(dt),mo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=mo.xhr(n,t,i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o.row(e)}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function o(t){return t.map(a).join(n)}function a(n){return c.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var c=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==l)continue;return n.substring(t,s-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],c=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new i,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(o).join("\n")},e},mo.csv=mo.dsv(",","text/csv"),mo.tsv=mo.dsv(" ","text/tab-separated-values");var pa,da,va,ma,ya,Ma=_o[a(_o,"requestAnimationFrame")]||function(n){setTimeout(n,17)};mo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={callback:n,time:u,next:null};da?da.next=i:pa=i,da=i,va||(ma=clearTimeout(ma),va=1,Ma(Mt))},mo.timer.flush=function(){bt(),_t()};var xa=".",ba=",",_a=[3,3],wa="$",Sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(wt);mo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=mo.round(n,St(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),Sa[8+e/3]},mo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)},mo.format=function(n){var t=Ea.exec(n),e=t[1]||" ",r=t[2]||">",u=t[3]||"",i=t[4]||"",o=t[5],a=+t[6],c=t[7],l=t[8],s=t[9],f=1,h="",g=!1;switch(l&&(l=+l.substring(1)),(o||"0"===e&&"="===r)&&(o=e="0",r="=",c&&(a-=Math.floor((a-1)/4))),s){case"n":c=!0,s="g";break;case"%":f=100,h="%",s="f";break;case"p":f=100,h="%",s="r";break;case"b":case"o":case"x":case"X":"#"===i&&(i="0"+s.toLowerCase());case"c":case"d":g=!0,l=0;break;case"s":f=-1,s="r"}"#"===i?i="":"$"===i&&(i=wa),"r"!=s||l||(s="g"),null!=l&&("g"==s?l=Math.max(1,Math.min(21,l)):("e"==s||"f"==s)&&(l=Math.max(0,Math.min(20,l)))),s=ka.get(s)||Et;var p=o&&c;return function(n){if(g&&n%1)return"";var t=0>n||0===n&&0>1/n?(n=-n,"-"):u;if(0>f){var d=mo.formatPrefix(n,l);n=d.scale(n),h=d.symbol}else n*=f;n=s(n,l);var v=n.lastIndexOf("."),m=0>v?n:n.substring(0,v),y=0>v?"":xa+n.substring(v+1);!o&&c&&(m=Aa(m));var M=i.length+m.length+y.length+(p?0:t.length),x=a>M?new Array(M=a-M+1).join(e):"";return p&&(m=Aa(x+m)),t+=i,n=m+y,("<"===r?t+n+x:">"===r?x+t+n:"^"===r?x.substring(0,M>>=1)+t+n+x.substring(M):t+(p?n:x+n))+h}};var Ea=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,ka=mo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=mo.round(n,St(n,t))).toFixed(Math.max(0,Math.min(20,St(n*(1+1e-15),t))))}}),Aa=dt;if(_a){var Na=_a.length;Aa=function(n){for(var t=n.length,e=[],r=0,u=_a[0];t>0&&u>0;)e.push(n.substring(t-=u,t+u)),u=_a[r=(r+1)%Na];return e.reverse().join(ba)}}mo.geo={},kt.prototype={s:0,t:0,add:function(n){At(n,this.t,Ta),At(Ta.s,this.s,this),this.s?this.t+=Ta.t:this.s=Ta.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Ta=new kt;mo.geo.stream=function(n,t){n&&qa.hasOwnProperty(n.type)?qa[n.type](n,t):Nt(n,t)};var qa={Feature:function(n,t){Nt(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*Bo+n:n,ja.lineStart=ja.lineEnd=ja.point=c}};mo.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=Ct([t*Go,e*Go]);if(m){var u=jt(m,r),i=[u[1],-u[0],0],o=jt(i,u);Ft(o),o=Pt(o);var c=t-p,l=c>0?1:-1,d=o[0]*Ko*l,v=Math.abs(c)>180;if(v^(d>l*p&&l*t>d)){var y=o[1]*Ko;y>g&&(g=y)}else if(d=(d+360)%360-180,v^(d>l*p&&l*t>d)){var y=-o[1]*Ko;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);v?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Math.abs(r)>180?r+(r>0?360:-360):r}else d=n,v=e;ja.point(n,e),t(n,e)}function i(){ja.lineStart()}function o(){u(d,v),ja.lineEnd(),Math.abs(y)>Wo&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nDa?(s=-(h=180),f=-(g=90)):y>Wo?g=90:-Wo>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],mo.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),mo.geo.centroid=function(n){La=Ha=Fa=Pa=Oa=Ra=Ya=Ia=Ua=Za=Va=0,mo.geo.stream(n,Xa);var t=Ua,e=Za,r=Va,u=t*t+e*e+r*r;return Jo>u&&(t=Ra,e=Ya,r=Ia,Wo>Ha&&(t=Fa,e=Pa,r=Oa),u=t*t+e*e+r*r,Jo>u)?[0/0,0/0]:[Math.atan2(e,t)*Ko,O(r/Math.sqrt(u))*Ko]};var La,Ha,Fa,Pa,Oa,Ra,Ya,Ia,Ua,Za,Va,Xa={sphere:c,point:Rt,lineStart:It,lineEnd:Ut,polygonStart:function(){Xa.lineStart=Zt},polygonEnd:function(){Xa.lineStart=It}},$a=Bt(Vt,Qt,te,ee),Ba=[-Bo,0],Wa=1e9;mo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=ue(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(mo.geo.conicEqualArea=function(){return ae(ce)}).raw=ce,mo.geo.albers=function(){return mo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},mo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=mo.geo.albers(),o=mo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=mo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Wo,f+.12*l+Wo],[s-.214*l-Wo,f+.234*l-Wo]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Wo,f+.166*l+Wo],[s-.115*l-Wo,f+.234*l-Wo]]).stream(c).point,n},n.scale(1070)};var Ja,Ga,Ka,Qa,nc,tc,ec={point:c,lineStart:c,lineEnd:c,polygonStart:function(){Ga=0,ec.lineStart=le},polygonEnd:function(){ec.lineStart=ec.lineEnd=ec.point=c,Ja+=Math.abs(Ga/2)}},rc={point:se,lineStart:c,lineEnd:c,polygonStart:c,polygonEnd:c},uc={point:ge,lineStart:pe,lineEnd:de,polygonStart:function(){uc.lineStart=ve},polygonEnd:function(){uc.point=ge,uc.lineStart=pe,uc.lineEnd=de}};mo.geo.transform=function(n){return{stream:function(t){var e=new Me(t);for(var r in n)e[r]=n[r];return e}}},Me.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},mo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),mo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Ja=0,mo.geo.stream(n,u(ec)),Ja},n.centroid=function(n){return Fa=Pa=Oa=Ra=Ya=Ia=Ua=Za=Va=0,mo.geo.stream(n,u(uc)),Va?[Ua/Va,Za/Va]:Ia?[Ra/Ia,Ya/Ia]:Oa?[Fa/Oa,Pa/Oa]:[0/0,0/0]},n.bounds=function(n){return nc=tc=-(Ka=Qa=1/0),mo.geo.stream(n,u(rc)),[[Ka,Qa],[nc,tc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||xe(n):dt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new fe:new me(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(mo.geo.albersUsa()).context(null)},mo.geo.projection=be,mo.geo.projectionMutator=_e,(mo.geo.equirectangular=function(){return be(Se)}).raw=Se.invert=Se,mo.geo.rotation=function(n){function t(t){return t=n(t[0]*Go,t[1]*Go),t[0]*=Ko,t[1]*=Ko,t}return n=Ee(n[0]%360*Go,n[1]*Go,n.length>2?n[2]*Go:0),t.invert=function(t){return t=n.invert(t[0]*Go,t[1]*Go),t[0]*=Ko,t[1]*=Ko,t},t},mo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=Ee(-n[0]*Go,-n[1]*Go,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ko,n[1]*=Ko}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=Te((t=+r)*Go,u*Go),n):t},n.precision=function(r){return arguments.length?(e=Te(t*Go,(u=+r)*Go),n):u},n.angle(90)},mo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Go,u=n[1]*Go,i=t[1]*Go,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},mo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return mo.range(Math.ceil(i/v)*v,u,v).map(h).concat(mo.range(Math.ceil(l/m)*m,c,m).map(g)).concat(mo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Math.abs(n%v)>Wo +}).map(s)).concat(mo.range(Math.ceil(a/d)*d,o,d).filter(function(n){return Math.abs(n%m)>Wo}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,d=p,v=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],m=+t[1],n):[v,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],d=+t[1],n):[p,d]},n.precision=function(t){return arguments.length?(y=+t,s=ze(a,o,90),f=Ce(r,e,y),h=ze(l,c,90),g=Ce(i,u,y),n):y},n.majorExtent([[-180,-90+Wo],[180,90-Wo]]).minorExtent([[-180,-80-Wo],[180,80+Wo]])},mo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=De,u=je;return n.distance=function(){return mo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},mo.geo.interpolate=function(n,t){return Le(n[0]*Go,n[1]*Go,t[0]*Go,t[1]*Go)},mo.geo.length=function(n){return ic=0,mo.geo.stream(n,oc),ic};var ic,oc={sphere:c,point:c,lineStart:He,lineEnd:c,polygonStart:c,polygonEnd:c},ac=Fe(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(mo.geo.azimuthalEqualArea=function(){return be(ac)}).raw=ac;var cc=Fe(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},dt);(mo.geo.azimuthalEquidistant=function(){return be(cc)}).raw=cc,(mo.geo.conicConformal=function(){return ae(Pe)}).raw=Pe,(mo.geo.conicEquidistant=function(){return ae(Oe)}).raw=Oe;var lc=Fe(function(n){return 1/n},Math.atan);(mo.geo.gnomonic=function(){return be(lc)}).raw=lc,Re.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Bo/2]},(mo.geo.mercator=function(){return Ye(Re)}).raw=Re;var sc=Fe(function(){return 1},Math.asin);(mo.geo.orthographic=function(){return be(sc)}).raw=sc;var fc=Fe(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(mo.geo.stereographic=function(){return be(fc)}).raw=fc,Ie.invert=function(n,t){return[Math.atan2(R(n),Math.cos(t)),O(Math.sin(t)/Y(n))]},(mo.geo.transverseMercator=function(){return Ye(Ie)}).raw=Ie,mo.geom={},mo.svg={},mo.svg.line=function(){return Ue(dt)};var hc=mo.map({linear:Xe,"linear-closed":$e,step:Be,"step-before":We,"step-after":Je,basis:er,"basis-open":rr,"basis-closed":ur,bundle:ir,cardinal:Qe,"cardinal-open":Ge,"cardinal-closed":Ke,monotone:fr});hc.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var gc=[0,2/3,1/3,0],pc=[0,1/3,2/3,0],dc=[0,1/6,2/3,1/6];mo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u,i,o,a,c,l,s,f,h,g,p,d=pt(e),v=pt(r),m=n.length,y=m-1,M=[],x=[],b=0;if(d===Ze&&r===Ve)t=n;else for(i=0,t=[];m>i;++i)t.push([+d.call(this,u=n[i],i),+v.call(this,u,i)]);for(i=1;m>i;++i)(t[i][1]i;++i)i!==b&&(c=t[i][1]-t[b][1],a=t[i][0]-t[b][0],M.push({angle:Math.atan2(c,a),index:i}));for(M.sort(function(n,t){return n.angle-t.angle}),g=M[0].angle,h=M[0].index,f=0,i=1;y>i;++i){if(o=M[i].index,g==M[i].angle){if(a=t[h][0]-t[b][0],c=t[h][1]-t[b][1],l=t[o][0]-t[b][0],s=t[o][1]-t[b][1],a*a+c*c>=l*l+s*s){M[i].index=-1;continue}M[f].index=-1}g=M[i].angle,f=i,h=o}for(x.push(b),i=0,o=0;2>i;++o)M[o].index>-1&&(x.push(M[o].index),i++);for(p=x.length;y>o;++o)if(!(M[o].index<0)){for(;!hr(x[p-2],x[p-1],M[o].index,t);)--p;x[p++]=M[o].index}var _=[];for(i=p-1;i>=0;--i)_.push(n[x[i]]);return _}var e=Ze,r=Ve;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},mo.geom.polygon=function(n){return Lo(n,vc),n};var vc=mo.geom.polygon.prototype=[];vc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++ta;a++)e.push([u,t[a],t[a+1]])}),e},mo.geom.voronoi=function(n){function t(n){var t,i,o,a=n.map(function(){return[]}),c=pt(e),l=pt(r),s=n.length,f=1e6;if(c===Ze&&l===Ve)t=n;else for(t=new Array(s),o=0;s>o;++o)t[o]=[+c.call(this,i=n[o],o),+l.call(this,i,o)];if(vr(t,function(n){var t,e,r,u,i,o;1===n.a&&n.b>=0?(t=n.ep.r,e=n.ep.l):(t=n.ep.l,e=n.ep.r),1===n.a?(i=t?t.y:-f,r=n.c-n.b*i,o=e?e.y:f,u=n.c-n.b*o):(r=t?t.x:-f,i=n.c-n.a*r,u=e?e.x:f,o=n.c-n.a*u);var c=[r,i],l=[u,o];a[n.region.l.index].push(c,l),a[n.region.r.index].push(c,l)}),a=a.map(function(n,e){var r=t[e][0],u=t[e][1],i=n.map(function(n){return Math.atan2(n[0]-r,n[1]-u)}),o=mo.range(n.length).sort(function(n,t){return i[n]-i[t]});return o.filter(function(n,t){return!t||i[n]-i[o[t-1]]>Wo}).map(function(t){return n[t]})}),a.forEach(function(n,e){var r=n.length;if(!r)return n.push([-f,-f],[-f,f],[f,f],[f,-f]);if(!(r>2)){var u=t[e],i=n[0],o=n[1],a=u[0],c=u[1],l=i[0],s=i[1],h=o[0],g=o[1],p=Math.abs(h-l),d=g-s;if(Math.abs(d)c?-f:f;n.push([-f,v],[f,v])}else if(Wo>p){var m=l>a?-f:f;n.push([m,-f],[m,f])}else{var v=(l-a)*(g-s)>(h-l)*(s-c)?f:-f,y=Math.abs(d)-p;Math.abs(y)d?v:-v,v]):(y>0&&(v*=-1),n.push([-f,v],[f,v]))}}}),u)for(o=0;s>o;++o)u.clip(a[o]);for(o=0;s>o;++o)a[o].point=n[o];return a}var e=Ze,r=Ve,u=null;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.clipExtent=function(n){if(!arguments.length)return u&&[u[0],u[2]];if(null==n)u=null;else{var e=+n[0][0],r=+n[0][1],i=+n[1][0],o=+n[1][1];u=mo.geom.polygon([[e,r],[e,o],[i,o],[i,r]])}return t},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):u&&u[2]},t.links=function(n){var t,u,i,o=n.map(function(){return[]}),a=[],c=pt(e),l=pt(r),s=n.length;if(c===Ze&&l===Ve)t=n;else for(t=new Array(s),i=0;s>i;++i)t[i]=[+c.call(this,u=n[i],i),+l.call(this,u,i)];return vr(t,function(t){var e=t.region.l.index,r=t.region.r.index;o[e][r]||(o[e][r]=o[r][e]=!0,a.push({source:n[e],target:n[r]}))}),a},t.triangles=function(n){if(e===Ze&&r===Ve)return mo.geom.delaunay(n);for(var t,u=new Array(c),i=pt(e),o=pt(r),a=-1,c=n.length;++a=l,h=r>=s,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=Mr()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,d,v,m,y,M=pt(a),x=pt(c);if(null!=t)d=t,v=e,m=r,y=u;else if(m=y=-(d=v=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);d>b&&(d=b),v>_&&(v=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-d,S=y-v;w>S?y=v+w:m=d+S;var E=Mr();if(E.add=function(n){i(E,n,+M(n,++g),+x(n,g),d,v,m,y)},E.visit=function(n){xr(n,E,d,v,m,y)},g=-1,null==t){for(;++g=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return e=xc.get(e)||Mc,r=bc.get(r)||dt,Ar(r(e.apply(null,Array.prototype.slice.call(arguments,1))))},mo.interpolateHcl=Rr,mo.interpolateHsl=Yr,mo.interpolateLab=Ir,mo.interpolateRound=Ur,mo.transform=function(n){var t=xo.createElementNS(mo.ns.prefix.svg,"g");return(mo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Zr(e?e.matrix:_c)})(n)},Zr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var _c={a:1,b:0,c:0,d:1,e:0,f:0};mo.interpolateTransform=Br,mo.layout={},mo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e(u-e)*a){var c=t.charge*a*a;return n.px-=i*c,n.py-=o*c,!0}if(t.point&&isFinite(a)){var c=t.pointCharge*a*a;n.px-=i*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=mo.event.x,n.py=mo.event.y,a.resume()}var e,r,u,i,o,a={},c=mo.dispatch("start","tick","end"),l=[1,1],s=.9,f=wc,h=Sc,g=-30,p=.1,d=.8,v=[],m=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,d,y,M,x,b=v.length,_=m.length;for(e=0;_>e;++e)a=m[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(d=M*M+x*x)&&(d=r*i[e]*((d=Math.sqrt(d))-u[e])/d,M*=d,x*=d,h.x-=M*(y=f.weight/(h.weight+f.weight)),h.y-=x*y,f.x+=M*(y=1-y),f.y+=x*y);if((y=r*p)&&(M=l[0]/2,x=l[1]/2,e=-1,y))for(;++e0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),mo.timer(a.tick)),a):r},a.start=function(){function n(n,r){for(var u,i=t(e),o=-1,a=i.length;++or;++r)c[r]=[];for(r=0;d>r;++r){var n=m[r];c[n.source.index].push(n.target),c[n.target.index].push(n.source)}}return c[e]}var e,r,c,s,p=v.length,d=m.length,y=l[0],M=l[1];for(e=0;p>e;++e)(s=v[e]).index=e,s.weight=0;for(e=0;d>e;++e)s=m[e],"number"==typeof s.source&&(s.source=v[s.source]),"number"==typeof s.target&&(s.target=v[s.target]),++s.source.weight,++s.target.weight;for(e=0;p>e;++e)s=v[e],isNaN(s.x)&&(s.x=n("x",y)),isNaN(s.y)&&(s.y=n("y",M)),isNaN(s.px)&&(s.px=s.x),isNaN(s.py)&&(s.py=s.y);if(u=[],"function"==typeof f)for(e=0;d>e;++e)u[e]=+f.call(this,m[e],e);else for(e=0;d>e;++e)u[e]=f;if(i=[],"function"==typeof h)for(e=0;d>e;++e)i[e]=+h.call(this,m[e],e);else for(e=0;d>e;++e)i[e]=h;if(o=[],"function"==typeof g)for(e=0;p>e;++e)o[e]=+g.call(this,v[e],e);else for(e=0;p>e;++e)o[e]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=mo.behavior.drag().origin(dt).on("dragstart.force",nu).on("drag.force",t).on("dragend.force",tu)),arguments.length?(this.on("mouseover.force",eu).on("mouseout.force",ru).call(e),void 0):e},mo.rebind(a,c,"on")};var wc=20,Sc=1;mo.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(l=c.length)){for(var l,s,f=-1,h=t.children=[],g=0,p=o+1;++fg;++g)for(u.call(n,l[0][g],p=d[g],s[0][g][1]),h=1;v>h;++h)u.call(n,l[h][g],p+=s[h-1][g][1],s[h][g][1]);return a}var t=dt,e=gu,r=pu,u=hu,i=su,o=fu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:kc.get(t)||gu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:Ac.get(t)||pu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var kc=mo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(vu),o=mo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return mo.range(n.length).reverse()},"default":gu}),Ac=mo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:pu});mo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&a<=s[1]&&(o=c[mo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=xu,u=yu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=pt(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return Mu(n,t)}:pt(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},mo.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,l,s=r[0],f=s,h=-1;++h0&&(qu(zu(a,n,r),n,u),l+=u,s+=u),f+=a._tree.mod,l+=i._tree.mod,h+=c._tree.mod,s+=o._tree.mod;a&&!wu(o)&&(o._tree.thread=a,o._tree.mod+=f-s),i&&!_u(c)&&(c._tree.thread=i,c._tree.mod+=l-h,r=n)}return r}var l=t.call(this,n,i),s=l[0];Nu(s,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(s),a(s,-s._tree.prelim);var f=Su(s,ku),h=Su(s,Eu),g=Su(s,Au),p=f.x-e(f,h)/2,d=h.x+e(h,f)/2,v=g.depth||1;return Nu(s,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(d-p)*r[0],n.y=n.depth/v*r[1],delete n._tree}),l}var t=mo.layout.hierarchy().sort(null).value(null),e=bu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},iu(n,t)},mo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Nu(a,function(n){n.r=+s(n.value)}),Nu(a,Hu),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Nu(a,function(n){n.r+=f}),Nu(a,Hu),Nu(a,function(n){n.r-=f})}return Ou(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=mo.layout.hierarchy().sort(Cu),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},iu(n,e)},mo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Nu(c,function(n){var t=n.children;t&&t.length?(n.x=Iu(t),n.y=Yu(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Uu(c),f=Zu(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Nu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=mo.layout.hierarchy().sort(null).value(null),e=bu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},iu(n,t)},mo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,d="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,d))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,d,l,!1),d=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,d,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=mo.random.normal.apply(mo,arguments);return function(){return Math.exp(n())}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t/n}}},mo.scale={};var Nc={floor:dt,ceil:dt};mo.scale.linear=function(){return Qu([0,1],[0,1],Er,!1)},mo.scale.log=function(){return ii(mo.scale.linear().domain([0,1]),10,!0,[1,10])};var Tc=mo.format(".0e"),qc={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};mo.scale.pow=function(){return oi(mo.scale.linear(),1,[0,1])},mo.scale.sqrt=function(){return mo.scale.pow().exponent(.5)},mo.scale.ordinal=function(){return ci([],{t:"range",a:[[]]})},mo.scale.category10=function(){return mo.scale.ordinal().range(zc)},mo.scale.category20=function(){return mo.scale.ordinal().range(Cc)},mo.scale.category20b=function(){return mo.scale.ordinal().range(Dc)},mo.scale.category20c=function(){return mo.scale.ordinal().range(jc)};var zc=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(it),Cc=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(it),Dc=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(it),jc=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(it);mo.scale.quantile=function(){return li([],[])},mo.scale.quantize=function(){return si(0,1,[0,1])},mo.scale.threshold=function(){return fi([.5],[0,1])},mo.scale.identity=function(){return hi([0,1])},mo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+Lc,a=u.apply(this,arguments)+Lc,c=(o>a&&(c=o,o=a,a=c),a-o),l=Bo>c?"0":"1",s=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=Hc?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+l+",0 "+n*s+","+n*f+"Z":"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=gi,e=pi,r=di,u=vi;return n.innerRadius=function(e){return arguments.length?(t=pt(e),n):t},n.outerRadius=function(t){return arguments.length?(e=pt(t),n):e},n.startAngle=function(t){return arguments.length?(r=pt(t),n):r},n.endAngle=function(t){return arguments.length?(u=pt(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+Lc;return[Math.cos(i)*n,Math.sin(i)*n]},n};var Lc=-Bo/2,Hc=2*Bo-1e-6;mo.svg.line.radial=function(){var n=Ue(mi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},We.reverse=Je,Je.reverse=We,mo.svg.area=function(){return yi(dt)},mo.svg.area.radial=function(){var n=yi(mi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},mo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+Lc,s=l.call(n,u,r)+Lc;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Bo)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=De,o=je,a=Mi,c=di,l=vi;return n.radius=function(t){return arguments.length?(a=pt(t),n):a},n.source=function(t){return arguments.length?(i=pt(t),n):i},n.target=function(t){return arguments.length?(o=pt(t),n):o},n.startAngle=function(t){return arguments.length?(c=pt(t),n):c},n.endAngle=function(t){return arguments.length?(l=pt(t),n):l},n},mo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=De,e=je,r=xi;return n.source=function(e){return arguments.length?(t=pt(e),n):t},n.target=function(t){return arguments.length?(e=pt(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},mo.svg.diagonal.radial=function(){var n=mo.svg.diagonal(),t=xi,e=n.projection;return n.projection=function(n){return arguments.length?e(bi(t=n)):t},n},mo.svg.symbol=function(){function n(n,r){return(Fc.get(t.call(this,n,r))||Si)(e.call(this,n,r))}var t=wi,e=_i;return n.type=function(e){return arguments.length?(t=pt(e),n):t},n.size=function(t){return arguments.length?(e=pt(t),n):e},n};var Fc=mo.map({circle:Si,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Yc)),e=t*Yc;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Rc),e=t*Rc/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Rc),e=t*Rc/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});mo.svg.symbolTypes=Fc.keys();var Pc,Oc,Rc=Math.sqrt(3),Yc=Math.tan(30*Go),Ic=[],Uc=0;Ic.call=Ro.call,Ic.empty=Ro.empty,Ic.node=Ro.node,Ic.size=Ro.size,mo.transition=function(n){return arguments.length?Pc?n.transition():n:Uo.transition()},mo.transition.prototype=Ic,Ic.select=function(n){var t,e,r,u=this.id,i=[];n=d(n);for(var o=-1,a=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a)&&t.push(r)}return Ei(u,this.id)},Ic.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):N(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Ic.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n)) +})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Br:Er,a=mo.ns.qualify(n);return ki(this,"attr."+n,t,a.local?i:u)},Ic.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=mo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Ic.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=_o.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=Er(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return ki(this,"style."+n,t,u)},Ic.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,_o.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Ic.text=function(n){return ki(this,"text",n,Ai)},Ic.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Ic.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=mo.ease.apply(mo,arguments)),N(this,function(e){e.__transition__[t].ease=n}))},Ic.delay=function(n){var t=this.id;return N(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Ic.duration=function(n){var t=this.id;return N(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Ic.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Oc,u=Pc;Pc=e,N(this,function(t,r,u){Oc=t.__transition__[e],n.call(t,t.__data__,r,u)}),Oc=r,Pc=u}else N(this,function(r){var u=r.__transition__[e];(u.event||(u.event=mo.dispatch("start","end"))).on(n,t)});return this},Ic.transition=function(){for(var n,t,e,r,u=this.id,i=++Uc,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],l=0,s=t.length;s>l;l++)(e=t[l])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,Ni(e,l,i,r)),n.push(e)}return Ei(o,i)},mo.svg.axis=function(){function n(n){n.each(function(){var n,l=mo.select(this),s=null==c?e.ticks?e.ticks.apply(e,a):e.domain():c,f=null==t?e.tickFormat?e.tickFormat.apply(e,a):dt:t,h=l.selectAll(".tick").data(s,dt),g=h.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),p=mo.transition(h.exit()).style("opacity",1e-6).remove(),d=mo.transition(h).style("opacity",1),v=Bu(e),m=l.selectAll(".domain").data([0]),y=(m.enter().append("path").attr("class","domain"),mo.transition(m)),M=e.copy(),x=this.__chart__||M;this.__chart__=M,g.append("line"),g.append("text");var b=g.select("line"),_=d.select("line"),w=h.select("text").text(f),S=g.select("text"),E=d.select("text");switch(r){case"bottom":n=Ti,b.attr("y2",u),S.attr("y",Math.max(u,0)+o),_.attr("x2",0).attr("y2",u),E.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),y.attr("d","M"+v[0]+","+i+"V0H"+v[1]+"V"+i);break;case"top":n=Ti,b.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),_.attr("x2",0).attr("y2",-u),E.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),y.attr("d","M"+v[0]+","+-i+"V0H"+v[1]+"V"+-i);break;case"left":n=qi,b.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),_.attr("x2",-u).attr("y2",0),E.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),y.attr("d","M"+-i+","+v[0]+"H0V"+v[1]+"H"+-i);break;case"right":n=qi,b.attr("x2",u),S.attr("x",Math.max(u,0)+o),_.attr("x2",u).attr("y2",0),E.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),y.attr("d","M"+i+","+v[0]+"H0V"+v[1]+"H"+i)}if(e.rangeBand){var k=M.rangeBand()/2,A=function(n){return M(n)+k};g.call(n,A),d.call(n,A)}else g.call(n,x),d.call(n,M),p.call(n,M)})}var t,e=mo.scale.linear(),r=Zc,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vc?t+"":Zc,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Zc="bottom",Vc={top:1,right:1,bottom:1,left:1};mo.svg.brush=function(){function n(i){i.each(function(){var i=mo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(v,dt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xc[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=mo.transition(i),h=mo.transition(o);c&&(s=Bu(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=Bu(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==mo.event.keyCode&&(N||(M=null,q[0]-=s[1],q[1]-=h[1],N=2),f())}function g(){32==mo.event.keyCode&&2==N&&(q[0]+=s[1],q[1]+=h[1],N=0,f())}function v(){var n=mo.mouse(b),u=!1;x&&(n[0]+=x[0],n[1]+=x[1]),N||(mo.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),q[0]=s[+(n[0]f?(u=r,r=f):u=f),g[0]!=r||g[1]!=u?(e?o=null:i=null,g[0]=r,g[1]=u,!0):void 0}function y(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),mo.select("body").style("cursor",null),z.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),T(),w({type:"brushend"})}var M,x,b=this,_=mo.select(mo.event.target),w=a.of(b,arguments),S=mo.select(b),E=_.datum(),k=!/^(n|s)$/.test(E)&&c,A=!/^(e|w)$/.test(E)&&l,N=_.classed("extent"),T=L(),q=mo.mouse(b),z=mo.select(_o).on("keydown.brush",u).on("keyup.brush",g);if(mo.event.changedTouches?z.on("touchmove.brush",v).on("touchend.brush",y):z.on("mousemove.brush",v).on("mouseup.brush",y),S.interrupt().selectAll("*").interrupt(),N)q[0]=s[0]-q[0],q[1]=h[0]-q[1];else if(E){var C=+/w$/.test(E),D=+/^n/.test(E);x=[s[1-C]-q[0],h[1-D]-q[1]],q[0]=s[C],q[1]=h[D]}else mo.event.altKey&&(M=q.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),mo.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=g(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],h=[0,0],p=!0,d=!0,v=$c[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:h,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Pc?mo.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=kr(s,t.x),r=kr(h,t.y);return i=o=null,function(u){s=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$c[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,v=$c[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(p=!!t[0],d=!!t[1]):c?p=!!t:l&&(d=!!t),n):c&&l?[p,d]:c?p:l?d:null},n.extent=function(t){var e,r,u,a,f;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(f=e,e=r,r=f),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(f=u,u=a,a=f),(u!=h[0]||a!=h[1])&&(h=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(f=e,e=r,r=f))),l&&(o?(u=o[0],a=o[1]):(u=h[0],a=h[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(f=u,u=a,a=f))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&h[0]==h[1]},mo.rebind(n,a,"on")};var Xc={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$c=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bc=mo.time={},Wc=Date,Jc=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];zi.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Gc.setUTCDate.apply(this._,arguments)},setDay:function(){Gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){Gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){Gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){Gc.setTime.apply(this._,arguments)}};var Gc=Date.prototype,Kc="%a %b %e %X %Y",Qc="%m/%d/%Y",nl="%H:%M:%S",tl=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],el=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],rl=["January","February","March","April","May","June","July","August","September","October","November","December"],ul=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];Bc.year=Ci(function(n){return n=Bc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),Bc.years=Bc.year.range,Bc.years.utc=Bc.year.utc.range,Bc.day=Ci(function(n){var t=new Wc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),Bc.days=Bc.day.range,Bc.days.utc=Bc.day.utc.range,Bc.dayOfYear=function(n){var t=Bc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},Jc.forEach(function(n,t){n=n.toLowerCase(),t=7-t;var e=Bc[n]=Ci(function(n){return(n=Bc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=Bc.year(n).getDay();return Math.floor((Bc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});Bc[n+"s"]=e.range,Bc[n+"s"].utc=e.utc.range,Bc[n+"OfYear"]=function(n){var e=Bc.year(n).getDay();return Math.floor((Bc.dayOfYear(n)+(e+t)%7)/7)}}),Bc.week=Bc.sunday,Bc.weeks=Bc.sunday.range,Bc.weeks.utc=Bc.sunday.utc.range,Bc.weekOfYear=Bc.sundayOfYear,Bc.format=ji;var il=Hi(tl),ol=Fi(tl),al=Hi(el),cl=Fi(el),ll=Hi(rl),sl=Fi(rl),fl=Hi(ul),hl=Fi(ul),gl=/^%/,pl={"-":"",_:" ",0:"0"},dl={a:function(n){return el[n.getDay()]},A:function(n){return tl[n.getDay()]},b:function(n){return ul[n.getMonth()]},B:function(n){return rl[n.getMonth()]},c:ji(Kc),d:function(n,t){return Pi(n.getDate(),t,2)},e:function(n,t){return Pi(n.getDate(),t,2)},H:function(n,t){return Pi(n.getHours(),t,2)},I:function(n,t){return Pi(n.getHours()%12||12,t,2)},j:function(n,t){return Pi(1+Bc.dayOfYear(n),t,3)},L:function(n,t){return Pi(n.getMilliseconds(),t,3)},m:function(n,t){return Pi(n.getMonth()+1,t,2)},M:function(n,t){return Pi(n.getMinutes(),t,2)},p:function(n){return n.getHours()>=12?"PM":"AM"},S:function(n,t){return Pi(n.getSeconds(),t,2)},U:function(n,t){return Pi(Bc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Pi(Bc.mondayOfYear(n),t,2)},x:ji(Qc),X:ji(nl),y:function(n,t){return Pi(n.getFullYear()%100,t,2)},Y:function(n,t){return Pi(n.getFullYear()%1e4,t,4)},Z:ao,"%":function(){return"%"}},vl={a:Oi,A:Ri,b:Zi,B:Vi,c:Xi,d:no,e:no,H:eo,I:eo,j:to,L:io,m:Qi,M:ro,p:oo,S:uo,U:Ii,w:Yi,W:Ui,x:$i,X:Bi,y:Ji,Y:Wi,Z:Gi,"%":co},ml=/^\s*\d+/,yl=mo.map({am:0,pm:1});ji.utc=lo;var Ml=lo("%Y-%m-%dT%H:%M:%S.%LZ");ji.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?so:Ml,so.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},so.toString=Ml.toString,Bc.second=Ci(function(n){return new Wc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),Bc.seconds=Bc.second.range,Bc.seconds.utc=Bc.second.utc.range,Bc.minute=Ci(function(n){return new Wc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),Bc.minutes=Bc.minute.range,Bc.minutes.utc=Bc.minute.utc.range,Bc.hour=Ci(function(n){var t=n.getTimezoneOffset()/60;return new Wc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),Bc.hours=Bc.hour.range,Bc.hours.utc=Bc.hour.utc.range,Bc.month=Ci(function(n){return n=Bc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),Bc.months=Bc.month.range,Bc.months.utc=Bc.month.utc.range;var xl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],bl=[[Bc.second,1],[Bc.second,5],[Bc.second,15],[Bc.second,30],[Bc.minute,1],[Bc.minute,5],[Bc.minute,15],[Bc.minute,30],[Bc.hour,1],[Bc.hour,3],[Bc.hour,6],[Bc.hour,12],[Bc.day,1],[Bc.day,2],[Bc.week,1],[Bc.month,1],[Bc.month,3],[Bc.year,1]],_l=[[ji("%Y"),Vt],[ji("%B"),function(n){return n.getMonth()}],[ji("%b %d"),function(n){return 1!=n.getDate()}],[ji("%a %d"),function(n){return n.getDay()&&1!=n.getDate()}],[ji("%I %p"),function(n){return n.getHours()}],[ji("%I:%M"),function(n){return n.getMinutes()}],[ji(":%S"),function(n){return n.getSeconds()}],[ji(".%L"),function(n){return n.getMilliseconds()}]],wl=go(_l);bl.year=Bc.year,Bc.scale=function(){return fo(mo.scale.linear(),bl,wl)};var Sl={range:function(n,t,e){return mo.range(+n,+t,e).map(ho)}},El=bl.map(function(n){return[n[0].utc,n[1]]}),kl=[[lo("%Y"),Vt],[lo("%B"),function(n){return n.getUTCMonth()}],[lo("%b %d"),function(n){return 1!=n.getUTCDate()}],[lo("%a %d"),function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],[lo("%I %p"),function(n){return n.getUTCHours()}],[lo("%I:%M"),function(n){return n.getUTCMinutes()}],[lo(":%S"),function(n){return n.getUTCSeconds()}],[lo(".%L"),function(n){return n.getUTCMilliseconds()}]],Al=go(kl);return El.year=Bc.year.utc,Bc.scale.utc=function(){return fo(mo.scale.linear(),El,Al)},mo.text=vt(function(n){return n.responseText}),mo.json=function(n,t){return mt(n,"application/json",po,t)},mo.html=function(n,t){return mt(n,"text/html",vo,t)},mo.xml=vt(function(n){return n.responseXML}),mo}(); \ No newline at end of file diff --git a/public/lib/images/animated-overlay.gif b/public/lib/images/animated-overlay.gif new file mode 100644 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/public/lib/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/lib/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..9c012f697be43bc162e9681a96a64fa00a22f0a4 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F1SA+{?>A)!QcOwS?k)_>#w|r1Kptm-M`SUO z_5fqIli7AahM1>|V~EA+ zRdP`(kYX@0Ff`URFw-?O3NbXcGBC6&w=ytzZj>yAq9HdwB{QuOw}xr?x0eAm OFnGH9xvX?)F zK#IZ0z|dINz)aWBD8$g%%D~Xd#6;J?+{(Z}E1aPmMMG|WN@iLmZVk~~J5B>NFnGH9 KxvXnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12TF&T^vI^j=w#x$i?I+((tf;UXnmgbH|3oY>pC!)f}(GR!16S-u+#{ ze6YEqRkW=8vGl=5qArKM<9}TC-}iEvB{zdaTcX5$wyRTK&AL!M@H$NpatrE9}Xs#Wnff^V*UHx3vIVCg!0Q{VEKL7v# literal 0 HcmV?d00001 diff --git a/public/lib/images/ui-bg_glass_65_ffffff_1x400.png b/public/lib/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..f8de70a455b3a51b83c2b9ce94898a06d140026e GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADW)WEcNYf6yIsOdfIQ9ukH}&m z?E%JaC$sH<3_(v9#}JM4$r%X}t&0mp9yKsb%{ak$*<@oTP*SzTHKHUXu_VRXUCGx5b?-VBQkUm|IuXOmYJrBRJgj{Vx zMbNnqUkncy+qa2-mWYc>swkcIuvGK#>(0d)B7)5f`@$Ei28nH~0h*~=;u=wsl30>z zm0Xkxq!^4042^XS%ybQnLJW4nc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12VciT^vI^j=w#>k(V)1qW$CZ|6)SVV-&*#dav<$DMuV&n0Dbpw@a9nO2Eg!?gU{%YYgfJYD@<);T3K0RW&RbASK< literal 0 HcmV?d00001 diff --git a/public/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/public/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..92cbef39709f940f4269aefe5cc7be1b1acbefe7 GIT binary patch literal 280 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 QJ~;stWz}Trq%1=J3#jBGg8%>k literal 0 HcmV?d00001 diff --git a/public/lib/images/ui-icons_2e83ff_256x240.png b/public/lib/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..84b601bf0f726bf95801da487deaf2344a32e4b8 GIT binary patch literal 4549 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 F{{S81aohj^ literal 0 HcmV?d00001 diff --git a/public/lib/images/ui-icons_454545_256x240.png b/public/lib/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b6db1acdd433be80a472b045018f25c7f2cf7e08 GIT binary patch literal 6992 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 literal 0 HcmV?d00001 diff --git a/public/lib/images/ui-icons_cd0a0a_256x240.png b/public/lib/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5b6b0930f672fa08e9b9bdbe5e55370fd1dc30 GIT binary patch literal 4549 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 DTfr$v literal 0 HcmV?d00001 diff --git a/public/lib/jquery-1.10.1.min.js b/public/lib/jquery-1.10.1.min.js new file mode 100644 index 0000000..e407e76 --- /dev/null +++ b/public/lib/jquery-1.10.1.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.1 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.1.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.1",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.parentWindow;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.frameElement&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ct(function(e){return e.innerHTML="",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="

",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null) +}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("