From 6a5895b237347fbb097aeafc07c5a4d0bc00d6a9 Mon Sep 17 00:00:00 2001 From: sergesemashko Date: Tue, 5 May 2015 18:53:20 -0400 Subject: [PATCH 1/4] POC for patternlab viewer: initial commit --- .gitignore | 1 + README.md | 19 + _patternlab-files/README | 1 + _patternlab-files/data/annotations.js | 109 + _patternlab-files/fonts/icons.dev.svg | 103 + _patternlab-files/fonts/icons.eot | Bin 0 -> 4372 bytes _patternlab-files/fonts/icons.svg | 103 + _patternlab-files/fonts/icons.ttf | Bin 0 -> 4216 bytes _patternlab-files/fonts/icons.woff | Bin 0 -> 6176 bytes _patternlab-files/images/ajax-loader.gif | Bin 0 -> 673 bytes _patternlab-files/images/favicon_16x16.jpg | Bin 0 -> 311 bytes _patternlab-files/images/favicon_32x32.jpg | Bin 0 -> 320 bytes _patternlab-files/images/fpo_16x9.png | Bin 0 -> 15324 bytes _patternlab-files/images/fpo_4x3.png | Bin 0 -> 15854 bytes _patternlab-files/images/fpo_avatar.png | Bin 0 -> 3217 bytes _patternlab-files/images/fpo_square.png | Bin 0 -> 8694 bytes _patternlab-files/images/logo.png | Bin 0 -> 1931 bytes .../sample/landscape-16x9-mountains.jpg | Bin 0 -> 78249 bytes .../images/sample/thumb-square-fire.jpg | Bin 0 -> 72783 bytes .../images/sample/thumb-square-gear.jpg | Bin 0 -> 146848 bytes .../images/sample/thumb-square-ivy.jpg | Bin 0 -> 76319 bytes .../images/sample/thumb-square-river.jpg | Bin 0 -> 50522 bytes .../images/sample/thumb-square-yosemite.jpg | Bin 0 -> 84720 bytes .../images/sample/tout-4x3-climber.jpg | Bin 0 -> 114565 bytes .../images/sample/tout-4x3-climbers.jpg | Bin 0 -> 85295 bytes .../images/sample/tout-4x3-stream.jpg | Bin 0 -> 98049 bytes _patternlab-files/index.twig | 96 + _patternlab-files/js/fitvids.js | 77 + _patternlab-files/js/init.js | 26 + _patternlab-files/js/jquery-2.0.0b2.js | 8690 +++++++++++++++++ _patternlab-files/js/modernizr.js | 4 + _patternlab-files/partials/ishControls.twig | 65 + _patternlab-files/partials/patternNav.twig | 60 + _patternlab-files/partials/viewAllPaths.twig | 3 + .../pattern-header-footer/README | 1 + .../pattern-header-footer/footer.html | 33 + .../pattern-header-footer/header.html | 35 + _patternlab-files/styleguide.twig | 67 + _patternlab-files/styleguide/css/static.css | 0 _patternlab-files/styleguide/css/static.scss | 404 + .../styleguide/css/styleguide-specific.css | 80 + .../styleguide/css/styleguide-specific.scss | 141 + .../styleguide/css/styleguide.css | 703 ++ .../styleguide/css/styleguide.scss | 953 ++ .../styleguide/css/vendor/prism.css | 112 + .../styleguide/css/vendor/typeahead.css | 66 + .../styleguide/fonts/icomoon.eot | Bin 0 -> 3872 bytes .../styleguide/fonts/icomoon.svg | 22 + .../styleguide/fonts/icomoon.ttf | Bin 0 -> 3708 bytes .../styleguide/fonts/icomoon.woff | Bin 0 -> 3144 bytes _patternlab-files/styleguide/html/README | 1 + .../styleguide/html/styleguide.html | 4245 ++++++++ .../styleguide/images/spinner.gif | Bin 0 -> 23470 bytes .../styleguide/js/annotations-pattern.js | 308 + .../styleguide/js/annotations-viewer.js | 289 + .../styleguide/js/code-pattern.js | 118 + .../styleguide/js/code-viewer.js | 441 + _patternlab-files/styleguide/js/data-saver.js | 169 + .../styleguide/js/pattern-finder.js | 122 + .../styleguide/js/postmessage.js | 111 + _patternlab-files/styleguide/js/styleguide.js | 587 ++ .../styleguide/js/url-handler.js | 182 + .../js/vendor/classlist-polyfill.js | 176 + .../styleguide/js/vendor/jquery.js | 4 + .../styleguide/js/vendor/jwerty.js | 523 + .../styleguide/js/vendor/prism.js | 7 + .../js/vendor/typeahead.bundle.min.js | 7 + _patternlab-files/viewall.twig | 67 + index.js | 85 + package.json | 10 + public/data/annotations.js | 109 + public/fonts/icons.dev.svg | 103 + public/fonts/icons.eot | Bin 0 -> 4372 bytes public/fonts/icons.svg | 103 + public/fonts/icons.ttf | Bin 0 -> 4216 bytes public/fonts/icons.woff | Bin 0 -> 6176 bytes public/images/ajax-loader.gif | Bin 0 -> 673 bytes public/images/favicon_16x16.jpg | Bin 0 -> 311 bytes public/images/favicon_32x32.jpg | Bin 0 -> 320 bytes public/images/fpo_16x9.png | Bin 0 -> 15324 bytes public/images/fpo_4x3.png | Bin 0 -> 15854 bytes public/images/fpo_avatar.png | Bin 0 -> 3217 bytes public/images/fpo_square.png | Bin 0 -> 8694 bytes public/images/logo.png | Bin 0 -> 1931 bytes .../sample/landscape-16x9-mountains.jpg | Bin 0 -> 78249 bytes public/images/sample/thumb-square-fire.jpg | Bin 0 -> 72783 bytes public/images/sample/thumb-square-gear.jpg | Bin 0 -> 146848 bytes public/images/sample/thumb-square-ivy.jpg | Bin 0 -> 76319 bytes public/images/sample/thumb-square-river.jpg | Bin 0 -> 50522 bytes .../images/sample/thumb-square-yosemite.jpg | Bin 0 -> 84720 bytes public/images/sample/tout-4x3-climber.jpg | Bin 0 -> 114565 bytes public/images/sample/tout-4x3-climbers.jpg | Bin 0 -> 85295 bytes public/images/sample/tout-4x3-stream.jpg | Bin 0 -> 98049 bytes public/index.html | 220 + public/js/fitvids.js | 77 + public/js/init.js | 26 + public/js/jquery-2.0.0b2.js | 8690 +++++++++++++++++ public/js/modernizr.js | 4 + public/styleguide/css/static.css | 0 public/styleguide/css/static.scss | 404 + public/styleguide/css/styleguide-specific.css | 80 + .../styleguide/css/styleguide-specific.scss | 141 + public/styleguide/css/styleguide.css | 703 ++ public/styleguide/css/styleguide.scss | 953 ++ public/styleguide/css/vendor/prism.css | 112 + public/styleguide/css/vendor/typeahead.css | 66 + public/styleguide/fonts/icomoon.eot | Bin 0 -> 3872 bytes public/styleguide/fonts/icomoon.svg | 22 + public/styleguide/fonts/icomoon.ttf | Bin 0 -> 3708 bytes public/styleguide/fonts/icomoon.woff | Bin 0 -> 3144 bytes public/styleguide/html/README | 1 + public/styleguide/html/styleguide.html | 4245 ++++++++ public/styleguide/images/spinner.gif | Bin 0 -> 23470 bytes public/styleguide/js/annotations-pattern.js | 308 + public/styleguide/js/annotations-viewer.js | 289 + public/styleguide/js/code-pattern.js | 118 + public/styleguide/js/code-viewer.js | 441 + public/styleguide/js/data-saver.js | 169 + public/styleguide/js/pattern-finder.js | 122 + public/styleguide/js/postmessage.js | 111 + public/styleguide/js/styleguide.js | 587 ++ public/styleguide/js/url-handler.js | 182 + .../js/vendor/classlist-polyfill.js | 176 + public/styleguide/js/vendor/jquery.js | 4 + public/styleguide/js/vendor/jwerty.js | 523 + public/styleguide/js/vendor/prism.js | 7 + .../js/vendor/typeahead.bundle.min.js | 7 + 127 files changed, 38529 insertions(+) create mode 100644 .gitignore create mode 100644 _patternlab-files/README create mode 100644 _patternlab-files/data/annotations.js create mode 100644 _patternlab-files/fonts/icons.dev.svg create mode 100644 _patternlab-files/fonts/icons.eot create mode 100644 _patternlab-files/fonts/icons.svg create mode 100644 _patternlab-files/fonts/icons.ttf create mode 100644 _patternlab-files/fonts/icons.woff create mode 100644 _patternlab-files/images/ajax-loader.gif create mode 100644 _patternlab-files/images/favicon_16x16.jpg create mode 100644 _patternlab-files/images/favicon_32x32.jpg create mode 100644 _patternlab-files/images/fpo_16x9.png create mode 100644 _patternlab-files/images/fpo_4x3.png create mode 100644 _patternlab-files/images/fpo_avatar.png create mode 100644 _patternlab-files/images/fpo_square.png create mode 100644 _patternlab-files/images/logo.png create mode 100644 _patternlab-files/images/sample/landscape-16x9-mountains.jpg create mode 100644 _patternlab-files/images/sample/thumb-square-fire.jpg create mode 100644 _patternlab-files/images/sample/thumb-square-gear.jpg create mode 100644 _patternlab-files/images/sample/thumb-square-ivy.jpg create mode 100644 _patternlab-files/images/sample/thumb-square-river.jpg create mode 100644 _patternlab-files/images/sample/thumb-square-yosemite.jpg create mode 100644 _patternlab-files/images/sample/tout-4x3-climber.jpg create mode 100644 _patternlab-files/images/sample/tout-4x3-climbers.jpg create mode 100644 _patternlab-files/images/sample/tout-4x3-stream.jpg create mode 100644 _patternlab-files/index.twig create mode 100644 _patternlab-files/js/fitvids.js create mode 100644 _patternlab-files/js/init.js create mode 100644 _patternlab-files/js/jquery-2.0.0b2.js create mode 100644 _patternlab-files/js/modernizr.js create mode 100644 _patternlab-files/partials/ishControls.twig create mode 100644 _patternlab-files/partials/patternNav.twig create mode 100644 _patternlab-files/partials/viewAllPaths.twig create mode 100644 _patternlab-files/pattern-header-footer/README create mode 100644 _patternlab-files/pattern-header-footer/footer.html create mode 100644 _patternlab-files/pattern-header-footer/header.html create mode 100644 _patternlab-files/styleguide.twig create mode 100644 _patternlab-files/styleguide/css/static.css create mode 100644 _patternlab-files/styleguide/css/static.scss create mode 100644 _patternlab-files/styleguide/css/styleguide-specific.css create mode 100644 _patternlab-files/styleguide/css/styleguide-specific.scss create mode 100644 _patternlab-files/styleguide/css/styleguide.css create mode 100644 _patternlab-files/styleguide/css/styleguide.scss create mode 100644 _patternlab-files/styleguide/css/vendor/prism.css create mode 100644 _patternlab-files/styleguide/css/vendor/typeahead.css create mode 100644 _patternlab-files/styleguide/fonts/icomoon.eot create mode 100644 _patternlab-files/styleguide/fonts/icomoon.svg create mode 100644 _patternlab-files/styleguide/fonts/icomoon.ttf create mode 100644 _patternlab-files/styleguide/fonts/icomoon.woff create mode 100644 _patternlab-files/styleguide/html/README create mode 100644 _patternlab-files/styleguide/html/styleguide.html create mode 100644 _patternlab-files/styleguide/images/spinner.gif create mode 100644 _patternlab-files/styleguide/js/annotations-pattern.js create mode 100644 _patternlab-files/styleguide/js/annotations-viewer.js create mode 100644 _patternlab-files/styleguide/js/code-pattern.js create mode 100644 _patternlab-files/styleguide/js/code-viewer.js create mode 100644 _patternlab-files/styleguide/js/data-saver.js create mode 100644 _patternlab-files/styleguide/js/pattern-finder.js create mode 100644 _patternlab-files/styleguide/js/postmessage.js create mode 100644 _patternlab-files/styleguide/js/styleguide.js create mode 100644 _patternlab-files/styleguide/js/url-handler.js create mode 100644 _patternlab-files/styleguide/js/vendor/classlist-polyfill.js create mode 100644 _patternlab-files/styleguide/js/vendor/jquery.js create mode 100644 _patternlab-files/styleguide/js/vendor/jwerty.js create mode 100644 _patternlab-files/styleguide/js/vendor/prism.js create mode 100644 _patternlab-files/styleguide/js/vendor/typeahead.bundle.min.js create mode 100644 _patternlab-files/viewall.twig create mode 100644 index.js create mode 100644 package.json create mode 100644 public/data/annotations.js create mode 100644 public/fonts/icons.dev.svg create mode 100644 public/fonts/icons.eot create mode 100644 public/fonts/icons.svg create mode 100644 public/fonts/icons.ttf create mode 100644 public/fonts/icons.woff create mode 100644 public/images/ajax-loader.gif create mode 100644 public/images/favicon_16x16.jpg create mode 100644 public/images/favicon_32x32.jpg create mode 100644 public/images/fpo_16x9.png create mode 100644 public/images/fpo_4x3.png create mode 100644 public/images/fpo_avatar.png create mode 100644 public/images/fpo_square.png create mode 100644 public/images/logo.png create mode 100644 public/images/sample/landscape-16x9-mountains.jpg create mode 100644 public/images/sample/thumb-square-fire.jpg create mode 100644 public/images/sample/thumb-square-gear.jpg create mode 100644 public/images/sample/thumb-square-ivy.jpg create mode 100644 public/images/sample/thumb-square-river.jpg create mode 100644 public/images/sample/thumb-square-yosemite.jpg create mode 100644 public/images/sample/tout-4x3-climber.jpg create mode 100644 public/images/sample/tout-4x3-climbers.jpg create mode 100644 public/images/sample/tout-4x3-stream.jpg create mode 100644 public/index.html create mode 100644 public/js/fitvids.js create mode 100644 public/js/init.js create mode 100644 public/js/jquery-2.0.0b2.js create mode 100644 public/js/modernizr.js create mode 100644 public/styleguide/css/static.css create mode 100644 public/styleguide/css/static.scss create mode 100644 public/styleguide/css/styleguide-specific.css create mode 100644 public/styleguide/css/styleguide-specific.scss create mode 100644 public/styleguide/css/styleguide.css create mode 100644 public/styleguide/css/styleguide.scss create mode 100644 public/styleguide/css/vendor/prism.css create mode 100644 public/styleguide/css/vendor/typeahead.css create mode 100644 public/styleguide/fonts/icomoon.eot create mode 100644 public/styleguide/fonts/icomoon.svg create mode 100644 public/styleguide/fonts/icomoon.ttf create mode 100644 public/styleguide/fonts/icomoon.woff create mode 100644 public/styleguide/html/README create mode 100644 public/styleguide/html/styleguide.html create mode 100644 public/styleguide/images/spinner.gif create mode 100644 public/styleguide/js/annotations-pattern.js create mode 100644 public/styleguide/js/annotations-viewer.js create mode 100644 public/styleguide/js/code-pattern.js create mode 100644 public/styleguide/js/code-viewer.js create mode 100644 public/styleguide/js/data-saver.js create mode 100644 public/styleguide/js/pattern-finder.js create mode 100644 public/styleguide/js/postmessage.js create mode 100644 public/styleguide/js/styleguide.js create mode 100644 public/styleguide/js/url-handler.js create mode 100644 public/styleguide/js/vendor/classlist-polyfill.js create mode 100644 public/styleguide/js/vendor/jquery.js create mode 100644 public/styleguide/js/vendor/jwerty.js create mode 100644 public/styleguide/js/vendor/prism.js create mode 100644 public/styleguide/js/vendor/typeahead.bundle.min.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/README.md b/README.md index cf4d262..4f1649c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,21 @@ # patternlab-wrapper Generate general patternlab wrapper with iframe + +# USAGE +```js + var patternlabWrapper = require('patternlab-wrapper'); + + patternlabWrapper({ + dest: './app/public', + patternPaths: {"atoms":{"colors":"00-atoms-01-global-00-colors","redirect":"00-atoms-01-global-01-redirect",...}} + patternNavHTML: '' + }); +``` \ No newline at end of file diff --git a/_patternlab-files/README b/_patternlab-files/README new file mode 100644 index 0000000..14208f4 --- /dev/null +++ b/_patternlab-files/README @@ -0,0 +1 @@ +There should be no reason to touch these files in day-to-day use. \ No newline at end of file diff --git a/_patternlab-files/data/annotations.js b/_patternlab-files/data/annotations.js new file mode 100644 index 0000000..fc82095 --- /dev/null +++ b/_patternlab-files/data/annotations.js @@ -0,0 +1,109 @@ +var comments = { +"comments" : [ + { + "el": "header[role=banner]", + "title" : "Masthead", + "comment": "The main header of the site doesn't take up too much screen real estate in order to keep the focus on the core content. It's using a linear CSS gradient instead of a background image to give greater design flexibility and reduce HTTP requests." + }, + { + "el": ".logo", + "title" : "Logo", + "comment": "The logo image is an SVG file, which ensures that the logo displays crisply even on high resolution displays. A PNG fallback is provided for browsers that don't support SVG images.

Further reading: Optimizing Web Experiences for High Resolution Screens

" + }, + { + "el": "#nav", + "title" : "Navigation", + "comment": "

Navigation for adaptive web experiences can be tricky. Top navigations are typical on desktop sites, but mobile screen sizes don't give us the luxury of space. We're dealing with this situation by creating a simple menu anchor that toggles the main navigation on small screens. This is just one method. Bagcheck and Contents Magazine add an anchor in the header that jumps users to the navigation which is placed in the footer. This solution works well because it doesn't require any Javascript in order to work. Other methods exist too. For example, ESPN's mobile navigation overlays the main content of the page.

The nav is only hidden when a certain level of javascript is supported in order to ensure that users with little/poor javascript support can still access the navigation. Once the screen size is large enough to accommodate the nav, we show the main navigation links and hide the menu anchor.

See also: Responsive Navigation Patterns

" + }, + { + "el": "input[type=search]", + "title" : "Search", + "comment": "

Search is an incredibly important priority, especially for mobile. It is a great idea to give users the ability to jump directly to what they are looking for without forcing them to wade through your site's navigation. Check out the Burton and Yelp mobile sites for great examples of experiences that prioritize search.

We're also using the HTML5 search input type, which is great for mobile devices that can bring up the appropriate virtual keyboard for many smartphones. And like the main header navigation, we're hiding the search form on small screens to save space. Clicking the search anchor toggles the form.

" + }, + { + "el": "#product-img nav", + "title" : "Image Navigation", + "comment": "

Instead of providing bullets, pagination or text-based image navigation, it's good e-commerce practice to show a preview of the various product views. By default the images simply link through to their larger counterparts, and if adequate javascript support exists, the images get loaded into the main image container.

" + }, + { + "el": "#img-container", + "title" : "Product Image", + "comment": "

The product image is the focal point of the page for good reason. It's typically what the user is there to see. The default markup simply includes the main product image, but that gets replaced with an image gallery if adequate javascript support exists.

We're also using Modernizr to detect if the browser supports touch events and if it does, we load in an excellent lightweight script called Swipe.js to create a touch-friendly image carousel. This allows users to swipe between product photos in a touch-friendly way. Because gestures are invisible, they might get overlooked, but clicking on the image navigation thumbnails animates the slideshow and hints to the user gestural interaction is available.

" + }, + { + "el": ".product-main header", + "title" : "Product Overview", + "comment": "The product overview appears in the markup before the image container in order to provide the user with the product name, how much it costs and how popular it is. Providing this information as soon as possible can help the user determine whether or not this is the product they're looking for without having to wait for the rest of the page to load." + }, + { + "el": ".star", + "title" : "Rating Stars", + "comment": "

We're using HTML special characters to display the product rating stars. We're using HTML characters instead of images to reduce the amount of images we're requesting and also maintaining crispness on high resolution screens. Not every device supports HTML special characters (Blackberry <=5.0 for example), but support is strong enough and the benefits are many.

See also: Optimizing Web Experiences for High Resolution Screens

" + }, + { + "el": ".review-count", + "title" : "Review Count", + "comment": "This is a simple anchor link that points to the review section of the page. This may seem like a small detail, but consider a mobile use case. Users can be in stores looking at the physical product, and 79% of smartphone consumers use their phones to help with shopping. They might be interested in buying in-store but turn to their phones to verify its popularity and quality. Making it easy for uses to read product reviews on small screens can help drive more sales, both online and offline.

While not incorporated yet, it would be easy to load the reviews for small screens on demand, thereby saving a step.

" + }, + { + "el": ".qty-field", + "title" : "Quantity Field", + "comment": "We're using the HTML5 number input type, which brings up the appropriate virtual keyboard for many mobile browsers. To increase usability, the input labels are using the \"for\" attribute, which focuses the cursor in the form field when clicked. However, iOS doesn't honor \"for\" default functionality, so we're adding \"cursor: pointer\" to the labels to get Mobile Safari to behave properly." + }, + { + "el": ".size-field", + "title" : "Size Dropdown", + "comment": "We're using a basic select menu to choose the size, which is commonplace for any e-commerce site. Select menus can be especially difficult to style and can vary greatly in behavior between platforms. Keep this in mind when creating " + }, + { + "el": ".submit-form", + "title" : "Add to Cart button", + "comment": "The add to cart button is the primary user action on the page. That's why it's large and in charge and very prominently placed on the page. The button is using box-shadows and rounded corners to create an attractive button that will hopefully get plenty of clicks." + }, + { + "el": ".share-btn", + "title" : "Share button", + "comment": "It seems like everything has a share button on it these days. And for good reason. Sharing content and products on social networks can be a great way to increase exposure. However, tacking on tons of social widgets adds a lot of overhead, which can be extremely detrimental to the site's performance. Including a simple share link that loads the heavy widgets only when requested is one way to keep pages fast and social. Check out Target's mobile site for an example of a site that isolates share functionality in a separate page fragment." + }, + { + "el": ".find-nearby", + "title" : "Geolocation", + "comment": "One of the most important aspects of the mobile context is location. We carry our mobile devices with us everywhere. Using geolocation we can tap into the user's location to deliver an enhanced experience. In this case we're giving them a chance to check out what stores nearby might sell this product. The geolocation API is well supported in mobile browsers as well as desktop browsers. We're using Modernizr to detect for geolocation support and if its support, we ask the user for their latitude and longitude. If the browser does not support geolocation, the default experience could take the user to a simple web form asking for a ZIP code. Check out Tiffany's mobile site store locator for an example of geolocation in action." + }, + { + "el": "#p-desc", + "title" : "Product Description", + "comment": "A product description is an essential part of any e-commerce experience. Descriptions offer tangible details that inform and persuade, and the tone can help support the physical product. Provide relevant information clearly and concisely. Check out the Android design guide for some tips on how to keep copy short and extremely effective." + }, + { + "el": "#related-products", + "title" : "Related Products", + "comment": "

Related products are obviously an important aspect of e-commerce sites as they drive awareness of other similar products and can lead to more purchases. However, including a lot of auxiliary content can bog down the site performance, which is especially crucial on mobile. On slow connections, the presence of this extra content might slow down the user experience enough that the user gives up.

We're handling the issue by conditionally loading the auxiliary content.

By default, the related item link simply clicks through to an HTML fragment containing the related products. The content is still accessible, even on devices with poor or no javascript support. When the user clicks on the related products on small screens, the content gets dynamically loaded inline and the link becomes a toggler for the content. Once the experience reaches a certain width breakpoint, we then load in the content. However, screen size != fast connection, so we should keep our eyes on the emerging navigator.connection to better gauge real connection speed.

See also: An Ajax-Include Pattern for Modular Content

All these wonderful t-shirts are retired/rejected Busted Tees, graciously donated to this demo by Will Schneider.

" + }, + { + "el": "#reviews", + "title" : "Reviews", + "comment": "Reviews are incredibly influential on a user's decision to purchase a product or pass on it. Also, because we carry our mobile phones with us everywhere, we use them to inform our in-store purchased. 70% of smartphone owners use them while in brick and mortar stores, and often times they're looking for reviews to give them the green light to buy.

Only the primary product content gets loaded by default, and the reviews exist as their own separate HTML fragment. The reviews remain accessible and don't get loaded until we conditionally load them when the screen is large enough or small screen users click the reviews link. This keeps things nimble while still providing access to the valuable reviews.

See also: An Ajax-Include Pattern for Modular Content

" + }, + { + "el": "#p-reviews .btn", + "title" : "More Reviews Button", + "comment": "

All reviews aren't loaded by default in order to keep the site performance in top shape. Ultimately, this button could be replaced with a lazy-loading solution to remove the need for the button.

" + }, + { + "el": ".footer .nav", + "title" : "Footer Nav", + "comment": "

Repetition of elements isn't a bad thing, especially with potentially long scrolling pages on mobile. Providing access to the main site navigation is a good way for the user to jump off to another section and avoids leaving them with a dead end. Also, some mobile sites like Bagcheck and Contents Magazine keep the primary navigation at the footer and simply link to it with an anchor in the header. That way the nav stays accessible but the focus stays on on the core page content.

" + }, + { + "el": ".tel", + "title" : "Customer Service Number", + "comment": "

We sometimes forget that mobile phones can make phone calls. Whether a user is having trouble with the site or simply has some questions about the product he's about to buy, it's a smart decision to provide a clickable phone number to facilitate that call. What happens when desktops and other non-phone devices click on the tel link? Well, some devices (like iPads and other tablets) ask the user if they'd like to add the number to their contact list, other desktops open 3rd party VoIP programs like Skype, and others simply give an error message.

" + }, + { + "el": ".top", + "title" : "Back to Top Link", + "comment": "

Back to top links are simple yet underrated. They provide users with an easy way back up to the top of the page with minimum effort. This is especially helpful on mobile devices, which tend to have long scrolling pages.

We're using an HTML character for the back to top arrow in order to reduce image elements and keep things looking crisp on high res displays.

" + } +] +}; \ No newline at end of file diff --git a/_patternlab-files/fonts/icons.dev.svg b/_patternlab-files/fonts/icons.dev.svg new file mode 100644 index 0000000..ca8e49e --- /dev/null +++ b/_patternlab-files/fonts/icons.dev.svg @@ -0,0 +1,103 @@ + + + + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_patternlab-files/fonts/icons.eot b/_patternlab-files/fonts/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..81a314b08656fbc88f07e28a48ebc64f4a3f2881 GIT binary patch literal 4372 zcmcIoYit|G5#G5Y??{So-jRAx;*lrbQPGRyTe2xLsVzU`)JmMnZelxBY+06JON<|Y z?LSok6^McS5RldZniODz6fIo0ND&lB0yt6s6bPEM?i2kHpacr!UxBn~ilQjUetV>4 z*>Q{f>502LJG-|#JM+!Vt&{*`SNx0-6BvI4W*032oDJgC!8xm8471t~`fHpTJl@)9 zbGFwmw#-hlRkp$|g6(BbvPHJUF0*rNfn5M6%;v$lfYD`Zmc}O77)xX1{x`wk8+)*q z$mV8do_c&Kt6qZ`$H0y5-Mwdq%`gf5o#<MjjSXW#BA6|QV9^;I+tyZfcFlwOd=$Hpf z;n!$2*qFdtttMx4Ep2~#EKU!kfpmEI!esF(yo-mh>ISnj2OXr-=$bnyN9=kf)C^~VzK*kEjIcv`GHZ~Df2!sAJ=*X8QU>r?wZ?gK|= zF6~dn=xZLEnheVE@`&3lPEGVgOEC{oa>^kJ+R!MC7mh6FWr^DbNb7i^kBzcjkSPvf z0!la=&lK{3oFOHoeo~}_QKl^9$`s0!D`Yd_ev-|6F47)}6fuLKa!jV{UiMxsfXE7@2mv zr-N$9Q-Qod+m^f!kyacNOfSjCv`{prDKbD_3P-}zWSCYsLby9HNwkK}OpMW;;*`$do2q4W;<9scg!le%4SN^(i0FK4E!4(ALtGWxx@ zn>WcGp!BX_MS znXpIm=~409dZwyXt6KB6UA1>RWmhpdJVZo)7VJ*h=TPlxB)%gkjSp~uUH_Y3G)vDE2cdsufNQ0fQUi+OoA~Xxhk`g2MXl|U~zT9p_)QR`&PG{ZK8*-kd zEVq60!?Vs%FTD(&s}9Pw3}h^0!UO9i@%A`z1;lt*;6VX9gfmp!TCn*cUy!nV!J&t) z*T(rKatR9p$s8H*(EK#zb8yOh?#AzK+&HT!##bk!gEW$*&1<)=iAJB`^^Ek$^1xGR z>w|&VTB|`dWMl|w*8?1GIUrI+?Chtktdmx)R7Q609f`OPIcGFtM{_$SkNTC7qtNDE zUz3qN`tbR~&jS6JDjX@BL*P|2Kr<+zT1ur#sTWSZc=DN7j@8~^?E z&%Jo+*elQc__@{hYG>ZP{)B}Wp6OvrA47)XDnh8VA}4~RL4gR>o0~kWQ3ZALpD=qV zWie2}>}+it=6DofgyZB5ypfvf=Ph~!>pQBNfYhfKzJ|~jrGQ& z1;e+;42FAchu4T*PRm|Lm-@I@mV#Px@Xh^he=wU`tFrAetcQ(1EPL3qVU?$dd@jke z2;zuQ7P3flP(SQnRHR|zsfC-82es`Hx%r2;q^Y?nN&v8%o>0a%e`Vg5amt$Pw5t0< zaKjf!O--c&zBMa_RM!0do%8cM{r*~Kx>JU`Y?Il;x{-tT!Oyvi^MEF2&1p(PRzzHc zHZ#I8dUuRN)#6KX1k)ZiATVJ0_yKuSK5)GGDUZe>k0;!pEF}BGNqzX>nS;Z+kxZ9Q zte+^SljYg*-;<;$mR6%;T^3S&FHn7aQ?d)HPDsQ}G+C(wsa-~GkX8NWL zV|o@#-2LHf0vpGfe~mL6{7Win6b%TiCk!28!@H5{0c|A8Vuq*t;+V}W@VFyI!UcMf zO7U`Jx9pe-#!CTpAmUXtpD(Q{>3}~L@P<7$XC&x-RI`VMJ#o7_bf-KxAqYKTO7tgB z9Z4wNVIoB(RaIj{f<34ve`}0T*l!F8Y6oLmaUleYXz;!VzN*M9M(ijiGAEj1gzhw} zN;Ila9d&b`d)-Zg>+bbC+8yPC55SEo&4x9uLCtjxujBV@SJ%&!+qd~QJifR)-xJ6y z0g4N($*9rf;^1+!8+-;H!iTiGLkq|x{ZO0wrwGJ(T|MTtF=;f2EE4WQRaFu>?aq0581>C7; ztc&y|tG$35&muIMu`bmbn*x3BLf-CY*d)HEvM3o~V*(VLSzWm_vwC4^QOk^_wJFWo z5p8C2G&`C}PhiTuRai%!|8kL^U%YT}d38mb7z6M={}#vQ|9*NbI|%FuJIW5TgX{qQ zWw0BONrF8bY(KPf3|gOqww=~3%u9lNd1ZMfoyLaN4FX9AlozENh3`nvZ8vJf + + + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_patternlab-files/fonts/icons.ttf b/_patternlab-files/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e6bff0814789fd9c456398e60a6bfd25b5669c07 GIT binary patch literal 4216 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 literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/favicon_16x16.jpg b/_patternlab-files/images/favicon_16x16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05e744965e4c5b6e5bfc151c0c9ac8bca5d401cb GIT binary patch literal 311 zcma)$%?g4*6ot>^IGT<+g9@TT`<@|)pceKRWkIxP71X{5bJ0WevuYo`!fk3%kefcZ zaQH494xQ+RY_eM|fvW1m#TU9mkGJ#n9t_;*0YDFgqk1!2pl*y|bj1OJb8d5C+oCJX z`K}PIFFnuqJgMXxCBsNXp^W1siQ}>;in8~CIgS&^AX6&KQ=R6Y$G?FZXcr2~Vj3OI eEY0YMshRx)YZ=utx@G7BX)#l5X$)VDbbbO1IVAo7 literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/favicon_32x32.jpg b/_patternlab-files/images/favicon_32x32.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0970980b7db94f921f3036ba2bfb94cfeefa5672 GIT binary patch literal 320 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 literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/fpo_avatar.png b/_patternlab-files/images/fpo_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..e666a40ed360b77640dd650d77bbff70518594e2 GIT binary patch literal 3217 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 literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/fpo_square.png b/_patternlab-files/images/fpo_square.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8a1e4e6300201c394e9f87ffdb7d5cdef5952b GIT binary patch literal 8694 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 z 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 literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/sample/landscape-16x9-mountains.jpg b/_patternlab-files/images/sample/landscape-16x9-mountains.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c0d92b29f77787ab7ffa1319e0c7fec99e505fb GIT binary patch literal 78249 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
DL9OyoT08p!08Nn`fF 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 ED{nS z2JWKZRWltzDnLPhB?EK-ksShV=m91@)#4G6Al%rj$|6WL@>H{ik_|(2jbZ`5g(EN3 zR5?V!9^njHnjn`bkYhwshDk=nycUBdN{~zHxyGYXv?S1ZCR1%^!~fR&u31a4Rs#T5 z5FzX2uiOODeMVo2b?q9N2V}t{bR85%TZ^V<&Z{`>g_nrBfMWZJQ7n(D&PKJWEY+;C zZuE);F0ywwR9JtgQLh%;sLD4A>ZT=-N*Gs)Y!sigc2|rE4(gPg3u>RF2PsOGDnSJJ zqGP*gk4u4c;VqJ9s(A;uvuUt#-PT66)fwxbwVZ^z6+7J7LxgVBsg;r+V?;OsAomHp zLG@Kt!CIwI4rroM9WJjKh>3ffA$lrNG5fy+0LU{PO**Lr$k7?(%&NgqXLEfNfB~v* z^yq<-Ma^_UHBw8Zd#Oww;^~4N(qrP72G&%#XaO|QX&MFzMl=9lRYoo0(H!j!(&~Ve zA4Amuz*D8x@y2I30(~c5%2q9P{C6H)q7HbUVl~_bs=1TEB|JFY;zJYDR7;h6Oa3h8F32C4bTIsnGBo~WBJV)bK=dD z6vkLg$E#|(d6OB8vdBNU#7LWUSDf<9#y;HAoTTN?Mm7GnPBM&beydy@S>^=7z!FO4 zF_a06gG*3WrJWhF^{#=*$bBMPo9!A0Q9n#XOTSf^F#@2Iqgfk{;VTo;t5GE7sgQ&{ zKTx&f$j|~e7YB0Z%3}Z`1$8AT(E5&!5iyzmTEH1)jyDeMO6i7Nylk=%lL%aQc3hlk zh{(!SVmA1dry^mpNd3|&mTdmmZuFg zr!w_%?UMM{F{f?BE=SBg%_J<2YI7A5pganP*V zfd#@Ri%rCo&PJeMHCeu>rQY{L#x(>Ql>Hz(tani`Q83Zcbd1db3A-X-Nc2+fsohCr zSUMoqi4+16MRZL~9ar{1#7VD2NYNuQD4?_TbTGQ@QVmjevJYf1(oTGoGC zjY7?r#CB@!Hhdy{N(7Ow~}xoXCtH!|051 zA~fqzrzFI@1(Zg6OAjKFr;cYwan5F6umNYhOCbc>$}!In8?usr;uXyBr488SD9iM+ z)_G&c9AdPKNQrb^GsTA_OjtWOTp071(A0NZC3c1e?duz10jDKz%xo({l&jjOk zA#al-M8{sL!%q}sYqq~t8uQvoYlH0sAP~&gU75I|VC2Vci;Tp^gfUYNlWAwzLAUlv z&={69?xLHzU6pMC*t$$jbwCkjR4P0YuIkt!&`D=j2E7zDR=|y|MN+aLJL;Z{szOZQ zQR=QR^pe#s$Y+QD*Zh!ud#VHmbviz&v0qU9g>Rv1cqx8}X1XMafKO72zhak)Xr)y2 zDBAW^0SFV3-7{2+)c~R@-PPj^UHq1B6>xWSN?9i5l7wDPrcb!PRK%Dtx@7H!xnwD; zD0i)tJ!+Yg`B@BbphrYIn^8(Ch8j*$+5~T^lTfAWRCYrFfqL0oMI4kw0L1HbA5ri` zrS}zKz+jN+5$2syC?`b2Gn=Jish;JLDofolN~(zhggR=bLz1o_+@%p!p^H!+>M>|? zD*g!(A{^hMLn9Xf$m*HMYG-*OVu+C7eo^?9ymMp#LMHZDh%`5yXcCOJmj=BROETyZ zJa-Xel0vfRvkrYlOl7>+%%I4-Xrf}N-@y`-27dsQ7}KK8WRj^PsvNA?U)hrhhL8zm z&pfj-ne|ewqUHpEjnz&T&dr8Ry~2CqO#?E>5cN*LluS01!y0ap)TBr&D9%QPfj!4f zQ7)~cDC5HVnN!IUpSnllu%RsWRT>KGbUb_abw*K;snURUM&bhvbXf0*0K{lj#O`X> zQm$O=P%-?#H$^f8K(O?b2pJXvx+~i_ovcq(Gb4z`?V^|Jx0n%=7j0H^g&sEOqqe&s zlvN}HR9q?0=@OC{P(4%BDFoY1Q*Z^Wfu_n`4oO5XQzR*7PK<^O8Y0#y6VWy;(^Ln0 z6gp$N3nCVXC6RQWL=+7ZcM3tHbw-F`Zpj)k3SBU0iG`VNVsuM(p-Zw5!Gcg^Pm*2; z4lYo^?kQCak{DV>RZ6K8Tp1`AQV{52Pf~=Qoyr~Rh6A#0=C)EzY=;P8V2ddwjS_H# zBsV@tbsdw^h`2YZM3e?}i=b|jNs8G;F?yojC~!PbDu^3Wpq&6#T-iwmB^Ci06}DXS z5RM>dDpZ3J4aEAM%N(13E~;6ToYI%#l!-KCjE;zOZv{|?)dRX_MA?wQ?t*Bf$m)kL zR9qc;)ec!Fx>fq2gMAVm5l*Ox8q>NMHYR~-js%xPatJe1s;KgPx7rqO(sOvjwipH| zdzk=k>ys{66X}Q*t0>9H&B!cH*!0mjM;t%oda2J+$vU;!GB?H~1Jz|7CS39|is*qk zWJXCeIy);l;TUa?`0kv~<; zJFQH&ti5YUkV`dJUM!L0P8nknEw_y778nEr%;}=fE?x5_mKaolE>~|G9B@SC%NHPeM{usx{UtYrKw&B5O)5GL~oy zYvQwzDAu#&uAEbpL(y^o^eaJ=X?-lLskXB4>YRkw>MobPwgv&}%K?y(!|IgF zT~<6hJw85Dk{cF0xDY{Q%?#%lV788VPKK}5En~v#wp{cDicB8sW(H;i2Q>v|U}9OS zqozm}s8mm@a*zo$@l1DBDW|!EGL+APAn-?ITHi!F(U4J~02(fx(e{7>(Lab>gchP; z$PcO|*DwFj{FEBiHwLyyc%gyrSJS^B$?J48)k#jG#Q;SSVu$lh&qNgxkuOA}RZi5^ z5g;{FVo(t1nGM-oKLsg?B2zJQTPS67CFr45fhJ9dnkt|!$Sx6N_R^>&l?MoP!KwnJ zHPryX0FX~|B{cN@>Niy~OE!p@RRTiwQd0!FsfCNtX%Tf1D&j@@BR4A%068l;<#{wy z$uJ;gPJv+n^7TgOX{{6(e~*NlrDPphogoFrurEgOudJXy^z1)ER!SAeQ6d z*&^YvnXn8K1jw^G$;lnon9C~7jnASiHCZ6bcBKM{#tz}NNObz4!=%n#6<{YpRE3ay z5d*pC5J?nET8bn|YN3VW22%8!*=S=YAgrSCv0!>=w~l!Tm_5Zw6-3)Tl0g79UsW5V z3&m-ToB(Jp>E-ssn-Op>jOXcCjE}9W9aiHxG?a+DvgSODn+75pBBhj>5$hC2Zn?QR zl1o2>-DC?<*1LqNSe2GfNuoC=VKJy#m8@jpl$fz}YE)e}K_Td-h^j-nTafi+Fre&{ zAQWyWVBHL*#nn0`f}*ONseb9AVD}-^mQIX@4bkAFSqQi{Bf1{7N$P-x4ab^pr7(sR z=_KhnM8cf~OS%W+WH6^sa)5_J3VL@!mqX}kh7{>usW=F58i-)twLmNq@kI(L-6tq+ z$s3@p5`7XiLyIEd+*u9+ln(?jZ>nJZRMNc?1iL6xPjV(%_j_t7f4sZ7Y9vJ zG`6Vjm32ilkyL1)Zq!<0#XO~=AFqPWr?6KH=MW+S_d}k_$+jbG1+OKGwd&~HNeFz4=%Ozo+Np9#0dI?L zFl8^eSqx#(gB*D9IkH9N`A0>TOt~{;CTG$L&ROR$Vo4yE0aF7IA^!lmMlp+;nV8Qf zq&ACRPZ!lm%>4q12;+bvgxzz>a*?fG$g*40qfD7jX*s#NXVD0lpHZih#1^&H?}&H4 zh}EA3DqTaHDm7+Awutzm#JdDWJBuY&YlXZqvpqFMw-IrM&sXKLdn23^_R2qqS>?zi z(T#$b@BI<3+`6Oc8-c3Q6JiERix*tNdqYK8$?il6 zD;(~pIf!I%C=cMa%N%l!`280wssSNhJcLE1^hL9Yf^h6;bWVr5axjw=#6Yfyg;D0D zDlH@Z6%fLRCq$jR(t5X4wN+$)|Iz%EIku^@YRsjW-8Sl1)4w3x6c!#SI%1{JC#@MY zlNag{0HS^ViFly^C{wtt&=L5cVGY)WCr!hmD&a{<(*+RqLpVdZK|lZyM^tE=Itc(O z+w@I+xrBnC~BAfiY^zrmAY|le3Yw&1W!UhYEAK@C*LE<6M6-y$gX3!Yi$GD$9U3dcJwZXyA5_LZo|j#Ys#`d1&j zAUc&$oQ|X(s!C z@%U)_K_pcnFhy>hw$32Gipko9kc5gLy%g>solzN|H00V)qJVWs8==Y3Cu9AQOcIzb zkT2OMYJMmvRr(|kWN3#dVB97OmoA5G5iqhsTY;gnlrg#(TZW<>C@czhED*w-(E4>q zB7(nyCJx0kiLq;>{g5|$BX)=vbO43}(GOG*TIqPG9nsk*2~pKBr%B78(HbFxeNgHi zteq@|6#Y_t0+UK7PO2C;K_N;V=!=B{=y0XkCl2UgMa@w}wJ}zQL9A;j#43uq)V1i zNi|iYnIyZE$~gnl%*>=3*U3dmrBPZFR#kjsXwM8jRfU!n|}g=8exPEy<}PU@a5H@%e%yS*&11Qf)Z?fbPT zc)CG|X3-&$>7wTnE}OEf_&Nv|7ttoyRhY}R!9R9SxxA3^um95gj5&5lOGPC2P3Rhh zeKYc~y;Fapi`D9YbSRiwA5|U&H_;3p>Zah;Nho?Dg*&PSlu>j#CKl~fiPa}?giI;J zI7!i~BFLr{cqneE_#-wh<&$tPqKXRYpqDOC!$Trcxl#%@bwdg%izF2ULe`3aCWvMZ znEE0aA+1%G={+o}Ph^c6M#!=(HqiGb>ExILXs>k!PwF<%DPl{y9zP^Yq%7eCxnPhw zbWx+N(Wi<7nntT%Y{nqSw`EMG6wy(ZpHvBJqLM?SJxG}vrx1{2!6;Uaz-p{^)nyS{ zm7ucIHBKx7qRm^VcB)UfxkfOd7pgbblxXYGniSsKU6=a9R+KL!6+0g6{bt%0W3=37$dQnMCIHDK;^-a_s$aFBhQA-6siUF#Ng)%Ib z<_wY;8aYagm?Ey50$)VPKoXq=4bvS`y>(24NjI`o2@)QuI4UUJM8lh)2fZ01Ed`JU zPfsKWhjg4jWW$*>QE|hwK0ITEf?>CkcSUd!S7o8yTJ}*bG;I_$Cv?dz*r-hXwK^kM zNextO-dWfLoe(u7qegC^k*+UcLiv{Skh-jH04Zdn>2`-{#H6=+Jr*q(uFGOk_ zSjmsoOoI{$wu!}ru9T}XQD;yn&aM%ph!%}jWS3n-5r-OCq*zU%5!X~L#y;5XF&m{$ z$Z}vAM5JY@J}8XLY2Kkz00%w`M+V76KZ>Zz6{S%v3<&6;Fs;ss%A&d{1R**!l%pX) z$5Ng)E=j0R35lk(AfQrAh#1PL00=H?qIRO4QDCOFNAyc`AQF2bo#+#{icCU1NCz); z%$-a13dL(>Qip2wRN?;svXUJlHAH{^)BJz{O0BEi>8xVscj3CjZ(vCaz&>-CXp*)ff;d=VgB6LjQsV{;mMzNE4relG;TWc z^{^aV+UOL1al5FSTY{HFCnw*XI^vu0AZy>36Tu-*=?7B1?K3UcrXHBJ!3#7|x@r6; zZd1DM_Y)Q^D5gJwxW$H zk1Gg_GIFlYM}%6^4r5@E6{;ISGvG1W=1y{LEO`>ycm1L;DOa#eZxd;lyrO)VFmzT$ z)k(zudm4u=t%?w&Sk$!x~AmPJvU&>-E8az*hgB$$cX~)oq=v3A&lx8fmMOve1 zdE%<1o4%VV|D;=QCy4&Q%aQJqugx)@7Xo#fcvq(jKVAIF`0CsK6{BW%Cf1iUY!aeZY(f-|6~elqHZy znZ{t9Es%|)D|rJMHl69L6SfWg2UG+RXth9rufA1T2#hR{;;<(S#6wGMF@j2{zWJAJOj*Tr}oM9#iRwwAyBhqXsxIf{47(4Y$I z(YL?7`X56=WI!+?`iSt`7Y`fk~;F8?%+rDRvedN{XMoShZXvC zjo>{p9W4UV-&o`@-9=RfFT{gIYPQxN8X3x5r}T(97tFTu8qqW};>tR>P1^}qZFyk!470;ISj_J~8@se+PIW+5s@aKa z;qeAks!yDa2ko%UL{MEZ%ZnI%0xb;B6<{%t_IoWYx?*{cCa^crRo4@AO9yIq=$2YG z!S;?&Owsc!bjU~vg}bL0SLf#+(v^It=?zaLJi~LWox_SZ*s9=s+K$bRv-g_UbyClg4t>K<4(sQBRL}UNWfQzbl zDv}FJ*~98F%QNFpu(kl-cl4WDNi+kS%Diemn30-(!=C2qwl?@p^G{k54fTqNNdAKU zoH7r!xY-=(>TEW?u8iaSW3l}fYtinD<$CmzU}oM0O4`6xVMkw_AVAK}z>?!+P7j$HK_Z-YKE!jzjYb*- z$TDUG428}to8%kpF-1sdfpv(jQEIQ?gmQjTnIl`Ra)dY=yo9x?n882<{Zo->cbPHy z@i(F)pw9~kx!<)jo{oA5y_>7I=a?gJsmk+nh9<-Z&)*1L`X5Br0-F2Eg%^Stbi@oHGbd8 zBcW=8#_8CAaa7U!MU2RrTR+2>j(nMS6-^c3K(bQdpfaA7PoV7!*3u6sPZ#ndCyTbG z?ECV87m#0*%)CAwo&3#}qlx%4D?Uch6@?>mD$_x`ci-jtkpR+v1=p>EC+p}DgemxZ(ErXtf*CD>= zUj=^fgYxtM?_=L?(JU1RHx1DSXcQ6s*W-T>sd=J+kcOr`FqA#LDt-3Bc z-JbzN>(aF$w>7VajT!K2V#^ERlRd?F`A-C&Yi}~=E8}^lhq;c>yQB`--ySM>k^^r9 z<&aP_Oc#Hg>GRU`PZ8zaTs)RnehYKvsEB=b(F<2(1JQS>rURSAAefz_2G`fEOTXPG z1oy6yjvI$0UarTg{)F=cH7GmLI9lA^cc)>U7gqL4=?FvQ{a4t~{N_$05UYxLoK~hV zy7vJ9ouo-S%lv^~qDWgwo%Cm*z$tq<${Pc3C>W^8 z&$LtoFxF)xVI4Tsc?O5DM{n6Dqt*W{j#;FD{3hIV!|;VW`0fEZfxke@+@8b6wUoD! ztbZYUh)+d(2%j_Y9setaX=8cl7l3{tLJTxWS%L*Ha4fllHI?f3s_m>D#-)0H5BNyG z9nwGsx0W}h4zgLYxIGM;xp%~uGi>o0TyZIUrRSbOBXZaW&CbI9&lV_@vHO1aZ2ux} zzcN$>oc_2YWuZCeWU!>;Fnxv=sy3GX%n7)3eONjFraa>dsUKtmK>yjk)q#WyL9GQ^5I|T$v3$^E;%a9 zb#A!tIYz>)0zhN)?DN*y3lc6Q2+pCleKha5py5QgYPO5wL|KgPh7mcJtV7@d)K~9M zIaT^CEM!$!(%hgvcFr!ng{t>H+6^dSbG;;TR6N(#Yuro251)dH(CVTN0lbp7e0qg`%%o94oQ=hH zj}QlFUDHD1w>ImAbW_5BP`yIyim5}R*5^K2+?Mu$b-45WHT!n%KK$))r>kqY$Y@TQ z7iia@cVo?TnLs-OvFcXnFKg!Rr&be@-^@4K1F=ANV`cdBoo;J=wD)UE^;i`lH}&6= z)G*V&7C{n;ReOnhoCq}K^YUL4W81Taoa7`|qo>HusU83hnw8;I1b7fDm-j)2^x4+j z$PQ_L@IF)u*aKrEp&C*l_o4&$hc*y$qdPpJ3U^}w@4Cr@Me%oKHc-D3iaZ2Ikl2LF nWpVK`kW2m>chr5!xb%5DsFHsDXQ05U4;4aW9YKvK0g{B|;KXGV7 z2~Ld+wg^!@bP##ql;x@DxaiQNK;)_DsF*~{Q`V~gQf|qQ|C6k*iu_lRq)2O3n}2FW zdb^O2_}GL{q>0{s-CzSlL!_yxo}sacsj1;Uq>+K4k-h={Z>no(Y-wU@X=H}{ub|4W zEg|H%C7EFNUv=@XtX2Q3QzHqFRbliW`{$I!H|0w9<^8YRx9sSP${7Y?O z5;^q0+xvf2oJctx7phMVO^i)W2oB{JSNlge&Jv#x8kiKDK#7fw`u8Z3!eWzR6T@QT zka!PMq?SuyaCpo=37CILxVTt4#3UvK#sr5t5Uf@CI`qQBLo990jd276V_O4L8=Rq` z?S2arBMS=yTO)I0yxo2?v;F^;CBz0NM~B8F{aZHVzh&+IN7;XjAv%sm#z73~c1x{vfpMw*>sx%-bI7WybvKK|l!q z2ZBKV84|u;Ne~!ih=B0LRiy%r1mgdl5A2O_f zYVD~RB*VeFYosY`9@-4oM4uL1r*1k`tH7-^dau*trI*U~mES_^5B{M%QxaJ>FOrTB zgUF5fdpZSv0^IV`zu_dnpEdDrl#9TVxM#zS=-*z7fl@;kz3o&Q{s>+*1T!crt zEw*dAH(~|=Q)>BF3P1Km_E&gBR9q_l%}(Z(bWJQ z*gQ`32mlw&p+kU8%T!=k_pq^6fJQ!$7WOdG9l-U&xH6+~Uo5?rVH(?tbUN0V>hqAY z6zBE1w82ICZxzJd(8&pVg9S>0vQK8+R0H|C#kkal6a6Rc&R=gB7GT>)YweC`k~zId zhOD(uYFN7z+l0LOaKh=<&-~+-WfzePDoa+ZgEXZ~;NM3N;uj<;)@r-R=0N(}I*hc; zMT&R*fa)1qQ&KKg+2)=FsOQb6kYQP%e>jG25YRx+_38KGjl$nRF`w9RPMS}Sv9L?m zl=r#j(?k`Z_Zxw4oFKV0ABB?qQiE9O+vr%5rDKuraueOAWCbu@|Jp%Vqlt1)qTpaK zn+*5bn!(s?vrfXa_jk`4dvKX*M#ts|6IHd{m-HBERkiJR?z6fc1W|u4CEKGOiR1G| zlybmn{a2avOw-`k2eJD@EO!Ax7O+F8mZlJADIh2H2;zv4`S z;pr>LG6hLOKL#oCX~Zcgf}p3o!y?*n%#U|z&4&nnE6JbN!=F2$y@2rj9p4hE!G3JF zbC9apLpJPJPI94;B}+^gX?Xf$?PC{~OH@mrh_|_d@Es+eTv-JM!*h2Dwdl-lcD@i4 z)@kZS+Pel5WIk?lCYZ=#rNS+d02`T|0uW%%H-h#E8tLX+3;S@j3mHdFk+NyB-3LXz z*9w+=GjN6#K$`y>t6k61{`sCWO5+k@H??RvtqNftz#TIHC|o$;PVnX!1BqWv@n6gqjKwa*fAuB&^zIJtIP_R|2g}FKALZOU_CR<$TDpnE&xEmq{ zFRU(xYuLOR0puiJ@kJw0dgT7XKfS~1V1cpMT0l{37c(rpGL3L`Fd)G#%foHLTu8GQ zvq3PcReWq5iEiaMmwxYr z@W)Go1rden&Kg6YU5!&VW=RcXda`01r~0g?siD&&Ss`ISjCMt#@Z0a6qH%}U4WP73lsm zCv_WZEon(Vci4GvWUe{%8iCHsQz|5KUPCfwor_V*78(@}QwU`F27#8SZW*~r zsjAis$*rJVGVpmVopsx5;S2FZh+Hn9R1x&TKvtZ-ObXZWmve0Mu% z7$`0T0iP1evY8FZgt;V-fOWo4wy^<+6~?ox2CLt-*czGoj81DiJ4X*K7r>B}?JWeN zjmU_qPku<#PxJujl9KJpwz?X;^9RNh?G<5*zyKshP$i>0cXw#rhOrx#=A1*57`tnIgAXAHQaI8H~ zTOou5`>kqW@=!QU>P;PwD$%yWY{lw=EHg=<&JFB{2Q&I8LY^}=Lk5hC2?J_4?-C4TXUDlBsc7RIeKm?WOgXgysmIHNgOnfFhLy_$t$9{;0Q`+Ony3=A zY>()L5d&b^Rb~`KpKSw;iD#pO5Nj6+)OrQ4yJTRP<{E#BM1IEupSxOy<%1qBjwd?; zW}+L;FL#{7ty+ciDj;;D+{PUyuqeiZ2JZ*%WfG%{TicLF%%$n=9pFu3P+ID%+ayS& zNi)qjPp!QcN@$(Nq;n-rU;P?}L}G6XTrwS>+s>|)qRW2Qq6UIDVN`|Uc5xOBAOs4S zmV%$m41mdzz|>wdgeGHcWyNcuSV`M{-D9_yyhp!Yl8L2XMnRt|U8E z&Dw4CHx{gG=8JxAh$z7mIb+9a3(>1;p4$6Mc<5&2){Vx8Qw2(bXK%(7NW&dm`IsOr zJA$MozSB;~7VBo`0QCZS1z546Nfr@%(B(lpk;4tyh7fD7X)W``K89;8!QHBo-AWDc z=4*)3o@;86Y(*up?k0jM-0%$1)fS+hEk+Uo_44SWiosf!g>k{*!*$t(%RO?$DF5Qd zp4y<_LCYZ6bTk92-)~h{3xBLlre!})wuehRxsTuG&$F<`d>XO&eD^4g4r~bltTqS- zg;qej!t%jJl`_5p@Ub^ZV%cU5B*-me4X(6QG;3yV1S|%Hnkdu~j1Lx^gSNH!BAwMA zGJsmh+aLkXCk_GzwQQ7vpgjQvI02?2?#r8oVPtIM1#5EYH`GN(hK;HakdQ6WHMc;6 zSX@b7qd{Lv*J%MAVv}Sbipgvc*hjIJr1zl)Ob|mktWb!;ewGa=;6ErnC3hDvfe-^P zf!DMu;Hb-#25z(JrG9F|b0p_ArPUJi!GxUmo>KGLsq<&$r41PmZk+z0UW8*>u0-X~ zIO`-J16jiS0NlF4;^Xt~7bcwY3lL!M)j>~epyK^EcRk~voM@OJVU#B7YZC%A9evtE zw}sLTm57IC=rWgxpWF!baaJK{cjI2UgX0djGMlV>Rqe8k=sLbky4-tRGc1OD>l1&vSY0PlvdKIZrY<7IgDtc%NF>#c{=u(pW=8p<2!swOX<}yJ~x$`+21ZrdO(Wr|^+CjJ3qtS#bd4Qz0+hmO#BV~7PoWupjBRxDdZG4U z(&MvIAo&?O@&3`Hk^qCq4F(C^Uec5_FCaPRs0lgeot{rSC%@FY-$(0Atu@{e8Djh< zglZMZhF}$4q(BPMn?z9?HEOqGu)K4)|7Sv>0OGG@cNB07ww>b1HNPN~%yKKmVAJh} z6)K3e_C%}t&t#Tw{icT+Ej>aN2idD-x2sN6SV`i~IChYG3L{-B zos7d*xRkJw>awu&sZF4$_Nt{FcI6QxpXU*&?0Jl?{D(^DVM)QClieN*2tG}btqQV> z#Ei0fh|bBD>HshZ>6aU2R=YDkfpe-6+H7GoBVPv;xiiemsv4~r0tQ8dd3=>!eprw^ z_BO68&01t2*L}wM{QANRijK`~5hq|6d?Oi|u38CMMX@Jv->58@T>4p@VAs!IloUauyxl;fX z%X!F7&;o3-lqHb{BOrAf>}xY&b!6c)PDp(mrXun+0`fLh#i>D!8f%&5&sGE#FZ?*H z8b&P&%hi$}Ug6J;(IK$x2p75#v0+@{69X^%hXkC)0gkp~Wvm-nhLzSAv=u-X!Hy<2 zPBt)&3v5BMZ08219baFqL80$;v7P&q2bn?p;O2#p zpHx>12t_R)+WEHNt8|H>wy{0D^iAQgr?yCG+yKCrk!H)ig?Dm4EJ=JU<#?VQ2RkG| z!Pfg1=&1?zhhrV=Q7I6#8xZ3S;krc0AK;Lc{3xcBSJ2dz|xS1Yr(;ZXYWCgqEJ7$wm4vS#H2i!ca9GOgdG_wTY4d3pBdIheIV5 z*Xi>&iK!L$1SOs8tI<>Oavy40YMaC~=MSC2o7HTCcaBa_;?tL zGrB}my<@;Xf$nX{s1UAD@ySTHbLIZa+0;PbWZRldyiy60`JjL;Y!A==2~0$Z$zkeM zKeVPfK?_r1$g04L;d&jGL;+ zCh||!d~)Zg3>x9BDu`vFh;vf5_nUezN%YU!O7Su22s~FMT1%IJlR~{20RlLmC}D8W zJ6vkLx!P5IjytjkZ8D+pNGkpnsXD-M@()}{bb2{65cTPgM`@M~wmg^+zE&-zq*x0K zj;p$4bu}NRR&o(0UoxTrJ60eXsn|$EQaqOFSYSIjfa-*Aj%maRycM(dY((7!PGFQ^ zA5A+@8vTVuY>cN`CM8LWkbPkjQ;akj>V8ZXgFCf2THfA#g2Mo^bK-O8QAfkyTmOeOyW#gqOXz)={;9DjZ ze}<(5%B{p!C9~6TIE5%j1W0(4MiN*;3W$R#{oK%Ka;eZdse$Vv@;4wtlFL+lFT-(H z4Fknl`Z6pa@Fl8k*%C$Oa%t)x_vfyR%cZlLah}re?{;0q6WyzgwSIx~4^@d}`Um`^ zzVBduP;#8Dh>VuLUm|$iUH9Q~b!Tm!cER5;os&m2UXj+!_gpd_M|p!1fZa0pfxhcn zju+#!(%qFQ2`Z9y4ioAD)XUeM6r0o*B;H$04)f`4&6jR$3yAOvQCc{pK6^{2&XiCB zzV|`~+ep-|BG$X3THmaO^Bh6wh(?Y1gyl$<@7Kr#>7cB!O{aWf zM*iGN($CC*9j#G5hnF4P=HJ1>z8MY#2sGgtabg!bkk%eF!zX~1B(!R@3?Dl|_pumA z8QM1qMwO8A&Ck^~D1ex)2Nemf#UTR4x`M;vhBNwvz_74}n^n1y5`2bIfK?!nFQ2<|V)c7R1w8345_C6>Og#YFU z5|)sMou?-&tQ{>x@m3DfxBYSe7P_*KvwV0exDJ$MSO`ig)8BUB1K1LDpBxNKW)vCp zg&3!H&9$8b6|eZ=L?6}Of3@+Q)2#_x3-OerF$F4;=^p-+b`^xl(v=tzI@946cD{Ia zvh6cXJExbw?2JXuRBKdK1L+NFnSyx=Med?;7M+R+CbrDD zY5JY#Yaunn)KY=>FwY!N#_hIE99;#OB4X2ap%cT3+<31NNDXS3rhs!KsW$r zFiwm+{wB3i1GH%Khbe?oTP{}|C(RoZNX8Sj!M|(AP$Us10iZd_GF^DIoy{pnu2T!Zv3dTd{&j-=E#k7A7{V zCN=|wjLCArdCS*}lu9Pc6SO$QD@7-hoyk5^4l)g%+U3V3vfI0dhk1is-RLi#Y87Hl z?g>?*YI@z01LJ6WF|1A^W6LFxs zt@WhrE7l84(((@ib+iYYB@gzL9RRx|niXag}%40a{M%{!V=rRArVN7$J#VAR|?Tpvs?tOf~ z_QeSORZIrN#@qApQX-4Prz`GL#~ajW$|$xCKw3_La|hk1+IGeVc

9bGii+O&+vz@tiumbaR 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°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%0AAPC!@ti36iIDtbSP=-cP<_4qZxk)6 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 F|JhtSvljpW literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/sample/thumb-square-river.jpg b/_patternlab-files/images/sample/thumb-square-river.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f190186895546e50637764384c67ee2a1c7fdf31 GIT binary patch literal 50522 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

NLbh+tp)uwONS!8Ek5l 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 CyX1lZ literal 0 HcmV?d00001 diff --git a/_patternlab-files/images/sample/tout-4x3-climber.jpg b/_patternlab-files/images/sample/tout-4x3-climber.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1348cd7e743d0965b15a5771a116b0d48fdf3ef8 GIT binary patch literal 114565 zcmeFacUTllw>R2D&PbFD5)~w8kenswjKVOaVP=3K37cd<1pz?;2?{6~0m(^3B`P^* z0a0>NlH}WiVY}b+o^#&kyU+K>eXfOFy=v8}>Q$>kSC7A{IvF{cVdq!#cXa{)U0r|| z00062A3_OWgA@e(10W0l?kNob4iLs)v>W974;d^_Mi>BnfDOF7AR?zUHAu(Zb_H<2 zJD3ZQ3tj^N(P1b6@SOR1S8_x-z}O62P~IrC3(A8{#aM#vyskae6^UV707Qg@MP-Df zWJDy`ghgaT#AL)p!E6BRbjaWOrDOek23BY~_D>ozjS&PL9t8V`EZ*;Bfw2Ew76|X} zWx;~{%0mR}SKe%!-?IZW!8@irr}vYQlU0D^v=moVbOFf88bEd$0vtmzawp@!O@M@e zfPj#IgpiPgf|!Vyf`*)ggq((sii(DcijIQh)cv@95B#eSAtfdzB_lmUMs|jpjEsyL z5j^VH zj1pxIP8y>(4x(aS*Lzj)x#EmBX1+kt;f!+XpJ~ z?5v}jsf0J|<1ZEddkuL0R^em}Ai+L;CIz4XP|@|wjE9oN&9G{99!|ddvJfPVY*tzGgZcU4mlJG4$``~ z*J@);_FLMKh1Yv*7sg(ze4_k@e6u#$;GDhQSGMP}T1Pv-+UimIrSy%>YJx(-K~QH! z!@}cr=Y4VB6|N`Qov$GR4;XV6-yQ28d6EnGRxULuk&(dFpCtsxri83EQTB8-;tMqD zTEj!#u3hghuCKGK+iTcLo9>xXdy}k54BmNI_cUfB7gCCQf02zmUoej^+vIdv1 z^mJI&GMclR4s07x4ZX#F^(R2u;ahT*{Z>813E)=6U z2d_?m%+HbWhS@jN_t3pd_}81q2ggpF)T_DN;qDi+5q1knaZee zZpcY2Rr)Z^2I1!D3K7qe@n5BQG&;8_!z@k1=s6ROy?5KC{}T(abpixVuABgoDhpMj zBoiHn?ziz*VP{1c=&yPfY<<(bzlmbg29e3i&*WHn7zmXStdEZ?r+bmgjt0Ne`t zIIGB2;obg)*wip!cPUBLe8X4dJVGjb-_DEoML2{eE8l|NMCADc zQ{<$|(LnX`tDGS0Bj36$GrsaqmeH(=i6(NL{JRMJ&3c86^57F-zOTsqZVcSo2`Xp9 zNazt5J!{-XI%V3R-(M+l0xT)a&2c(X%ZWg-LwCvfAM7Nv@HvN% zH8K95#Cvv-?zhGAOs8>&M>ki!~gG>R%c_t$kAtM_ZllkEu55D5wLpbCk}@rJj; ziqJe(D4Uqz!aCFZkpA=C#FnwwWIH0(D<}mORF9RM=(#7AI|om`G3p%5?&kL|93!U! z+FIyrwR2Lt5yc3jIN5Az@pqh1zr@L!ra?HJQwtnXFIOmpOUP zopTe$aaq~k?SHsaF&IAann9Zfm3YJ>0OiX*OI%WnTVXXUGAyY))LJWvLat9(x8_w9O#5i;z@~Q#p0i)4@EEmkeNlDsvDyf&bP_-JZLxNsckG+&*tqp!1)76l z{~~E+Y3n7O*oO1-5W?k^u5jd2G9HI6qRF=(E7mu{FSn_Vf7>nkGj0vJG=$7I97c07t ztwU0wX?tK>yk#jTs=$-;>5PKw7G%k2CJ@jtXpKN@U!H&Jx-=rdHlMXaIc`kEvVBJ12YdN5TTwf!Ko zD%*!vh;(E}a_AXqUy|jueox2|uKM%1ajT`&rQ&^EnesTYTxhe6Y}cT>-H(!Qc*&~1>g`!C+XPSn(y#_gVHwNTIq|U=JZ!@<%Hhd#a>vm zID#&9Iq6$6Ut!*^C^xh%b`@F{c&0wQH+URhQMQ%4mkyci4>4{;=@;iiZ3J7-(9JE) zToqni^&Lj_?+ILf*njuD>#czGBN!{CH{7n7J&t)jGN}?b#7~f8#>MbTSfrFPHPe1Tw3*S-E?L z_CL(kEeLlN(--bDo&c%3*n@fL@0uxMl&%r(#kA9%0A_qAKo>IN{qi&6d149vtR2X! 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�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%0D#&pMl(aEDIhT2-Z8;voDwNUarK)Q89SY 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

+QE&u6U6VQnAjbs zCk?0n08lvSpb3%Fa3pJW%Ji_}abdnym;~=k%#Y$KN4$SfZSnXE7GY^;# zDy&Fk0Jz+WY|ZH)dDR3OueS3iOlcV#X%Dtpgh7g@;wm#`_S}4_CX#ntnQqHF6}88w zbYt|ZJ1$YhR6V`sQ82WugO^X5hL%pS>SWA!HG@eeq}z(9_>B;?VAOzjsg7$LiKGpZ ztWQt?9kuv&>9^fd!OeIEf?#)rI)#QtL&&2A3c+_aG#JhiS)$CKIsD0JF&62lBdlTB;q* zvQg(Sy0lVl>af47;FUfgi{nmZgDGzoKtU$aX9STgg}i<(C}xP*@`Yo;yhHglPg>jk zhUzbsp)x~}8>Gz0Q~~I?<74quahU|YSrjGIg#cfh!iAp~BNX-IP{>@3|0T^fwk|x?{QZM0|DfYRpe3 z7x{@(eidXnVNsCi99XE~YSXObj=_03&y%Ar$5tD>{{R{nB2grab=#l-)ogAE_@+-F`LW{{Ujw?JJX^LTJq8KhtDL(XzP*YV`OD z@A|74ex4ZjKgBAY)H~xMMC^vpi41q%HEUcF*P%MQP@D!aDp^4Bu{hFO+8cd~xM$2Tkm8k3<_mH2W zZiucOVLp;AN#&WOndM9DZWr*cB>pN`hx%(E7f%fOTA9?D@h zKpUMm2TgcgV?pr`ZDoc-ld?+-j#s{^e>(ITGvHk&e!Mc@Yw_deD?9mG#eI-D{{U17 zn_5?Bw{Q!zk~9ox49?{gv9bnO{Q4qg``xch-8fVk%Isbk}btX-_e_W)J>0Fj50NiGNgdpv7LbzB+z zvV$SDv^J{2>M4TBcb{nl0Gtgtkt;J!Fii6%L>T3J5+kwG)Al3PxsTjo+1l zQ(~-ayM4xs`!nt=oCf~@Pmy|vPwAc@FOmGU^hLrQ%|xtGU}0p zwB^Us2)OJB{)w?a$wyQ*W8;sBBuvYW$Ckv?94PW8XyV^wxMvONAb2;nzKs{yabV3P z(j(@qg4{g~P6E(7YOegl@u_}kmG(8Eiu;GRm_#{ow^I`!?P1`Iz60{o zxT6ei7nE@J9~%00SJ^UT_VvJd&C71;@lZ#a`BHekz{razjG2&Qucuw5t^L&1Qo=;L zHokoY(n=5ck=viyYITYBW>7&sS~A~+SN{Nth+x_= zu(XXJtCPAMY7(`U`d+0JX8N_u`czb8l~Ti}x%eV4ojC27 zO&ay`hWT7wROk}2yM%8_r)-tOjF2f;JEec>5#{Aql`|j_s8A|R6FKTeLcoWbLUnWU zrAN8v!`g70A)EC*F~Q>J<{rw$%hPjp3TH$v?zxz~wi7h}0I4_wp#uC*^LvxytR{YJ z`E$II${I;OuOQ*41z*ZO8ZuLr-Lj;XX%6NVmR>4@{*n)65}0@qqQtRoCqaHE+H0fF z&DBolH?OR?S_pt74Mn}C)#C_0AfF&_PN&1ihnd1CBmxU+Dw75#;#HId^?SVQOqgI< z(3EgGRf>`gOP_F}ipIfuM{?TdZ>ZO|BxrW}ypI}E$AXa^^(M#8rnz}g*lyefLTLfA zTH0$vw6`GNL8Uc2lF;3I)sUpHsbj&bk>$c!9aIKemiFG1Zv0JHg|DX{3V8wXaLOc7 zR!t7&@-@_%!#cc%LB!kDOJiq|6=MXl@V5;()#(h5=5|twIQU%CLK-Y@BJT#v#X;jl zBdyh(YU7*ms)kx5dy3jIU@xV=3W1syTlIKqFX2xbh`v>ua=4RVw%`@N-KO2Q1G@JJ z_Xhf0KrZ$F^z*I@3950RxZ4iCx6`2l#HV2LVD#pl5Pb)DXyRkkzPn~Hd&t?P_ z>7crRH74W6vqXT~eWw2awuDWGJ)mU1TxT3JJVj+CbYQ4%Yv`@tyJ|vmri9Jaa-uQ_ zH?Z|v+g~!n&wNAFg8RmnKATgo^+7bD=EyKcpb`*nvk~yEXJwO0wAM!RN%d}JlFC-( zAP1FhG(q82tdPl)nC|8|T#*AlfS+vxAKbr98?2Ko!u9~Iq$+jXd^{;`XMT!zGR2Ly zO?76tx0v~9r1l)4r*zAk6$U(Ui6t#`7?F`ISi?>W61NR>2|h_jy<_$d!ZaC?jId5v z$~fkYl_Zd^-C~gXKqmXGSDB|K%&RJ^YWL&qs7oCA0h}G+kPL0g00V%pZebfn$P@mV z2gG;_)Y-|kYsfcn#a!r!L1k08cmRBFS**NtibEVMTI8!Gwf(iHkvhvFx!SfHg0`W& z4XFlPQpG4O`mt`;!HxVhqL<7veLU1iq{SntaEw5;?m2&&-kPhV*CT1ag=k^xPVTcm z(ISDYBXHkV{AF}UzH8d&hI1tWn!yjJV%F4Ok+bMK!)_Y#>Q zmOEpjvqyP7t!nq*-)LcdvEGvp24RQ&2UC!Cw0px<~~E&OQO<4uz1Lg z*gU-QUww(vz*ut7^GO?k$^kFz&{~IZp@By%K;vs4b*f67HiONryr`#?IYhe^f(fzG z{uN+=kQD(s=mvz|i^A>Md9n!cU@d=(!oG+0&)AU0>6hIYv!$709(B=L650}dwe}uY za*Snn1u(86E-4^G@&CpR&wicHFEql!6MMl+vB*TU*^mn(#IBzqmVGz1J1u zc4pK_T!DM}>sT4PCU}xT6b{NSX*96|&sxgfd=#!wj$#FgyL>;5SrmkzQb=RKlcg?p zDqJxa9IU=XSA?9m;s=fE7ves{S42DGF1iid27sCrGN~idJVzTE9AvVPS%J8v?k8u<20@WJX^rlqqcpUE=WmoZjm>t=EwO*jch*M`$8-@ zl1bwYkizUpxLGH3 zHWFW^10UQdc)LbCC`*mx4rXmn;X}*WF{j+jyG5=orj$s}N%t-hmwLb&QY=|?Huu$I z?gyBKSdeV8ChKH;HsjSk&Vghi9MSVFQ=7TQoO;ubrcNU zkGO`7W{50q`!}K72e$qd^l1BJELAt{KMQdFQ$Y8b;=zR>SjmO&)wkuTbxhK>Xu$n8 zHU?V*e2HRT(oyMV@z$6*5=POyhRI_o9xU7=Uv*bF?WRE3(X?TOmd9|v#7S#ab23Mc z{Rx#yYtuYWw*GaE{L^OC_3C>vNHJi%g{74>$H$Mu+C^f!jM>?FU2M%HwUR688u?Q^ ziR6*knNIE?jSuah%uyX#S;_HZtyMg#v#7m2os=v9t4gRNgONP^Z|8dN)8$Bav$oOl zjZfoDmOBfO6nGm^G4)8~8hP-yyjHXDVzd-5Zpo7Dk&ry(H~!k^`fflR)2d%fYH#e) zpA2~$SscHS2Ew`1RIvmB<~Y$m04T=oQGy#G+ClP;RW!$^jk94(4jh8od+O0+a&F$! zz*mA5H{GH0;YI*cmD=&2o)?ik33a&rqJ=$;+z}Q^A04D0?X3zd&ZlC?>NPt>mY`Zi zJjt`!YEpt&fjb{`Vl5hx=ePkzr(*63M)=SHsbIkV6n|9l2rhidqdR|Y?|t4w4{m`; z7bKDe{hFFEDHq2ZV5BAUx znJbU#H?%OlF^lDvY=$=^>v4V`g;L#RYm!FN517+hW~&>Kyj^@i(xQ8Mo0#Sb4}($w zUgh6ApK$^5CSoEVq<{oK2)CqCRNN0O^zq_P@l$@~hS<@EW(6L=5&r7w?eNu+{A?;L9pH6NvUJ^-tCPjl02q+4LYG--r-i{{l(n-jyhrY z2Um$?>X!n9XXp`Ykah_d|aGjBQrCH)HGo2 z0D0UBxpD{5!5V3I)x4DJf5MJjleDNT(Z)vew6^`;t5_RX4{Or)v(c8K06TsTEJ51T{3`gfqbh(hDPj7e z#`h!kR@L$Sz*zaX;Hq zS9J$X!nLhAGk1{0oITX33^Y(RKZQy0%!7FkYmiur4Jx=USzMt;4Rv5ZzwNF60NR-S zzrQX<4tOSehfY!jylmFn`|6jTWeNIYQyC5vy}ops76H?oFu+&G$Ru zf2;wU1}m(QK^!7AHsUU~HetxstL`6eeZ7Fnx$BZ-BTFj;Bgi$j((&25c_aNgd5LZ@ zwYf)yi6W-n3AuXmCF>Eq8mYVIZ0}K|uy-u4x3Zy)V@R4a(NS%?cv*DutapCxo$(G- zjh&6%@i8M0^>Ik0nHYiTzU3nH&OX(b+tA36WVVEj?2;>gBD2!0uGO8MN+)if10wC* z$jGd3eRkb{3c|n9RkO8hvgM|YAND0fMp$LtOOv>RwMMoV<8Ko~&el*15WfiX_8V5J zFZ^@g?5+$fUx+7#4=>nXa6s+16=b)oq~M!-HxRY8f3F5l(HVV{Nwrl;H}s2*KP~JU ztY~N3ZH=cBwAQLWvU~c+)cQSuaOYN#`@lO_@HG|tTkcYacW=lMuBG{Sd#`%a>nF1^ z1sI#1Na6@0rOm4zAb#p;m4THUtPFA@jS9LDN9`0lV>N&PdrI?u8eWG%NkW^T2b%sP z&%(HmwV#MA05oasIf4(WXxU-}3xzsfq?jZY4RY4d0e(KwNqLSyQ5l;>78(ya(|y18 zoW0IvY=FxKgaO69)KA;rZNG5HP3qk+MfA0OgSGZ}v0zn13Ic$q%GGtKn-<{qEDqZO zM+8cMe{Yo@A`vd)InMxmDUZ|cH&rL)U-_!|dtT??FEOnMGg9`Ss%_Ge$IHljDkrd_ zDd;BOY4fd`;0tKBuQzW&>eSE%3QozDKj}*@v(NuD}s10-C)r8FZOSj`o$R0w+)8SuP`-)f! zm22y5tTh#uTnwzaHzKnI;P$W|iK75zFn-NUnOAH91^q(v&l1av+TCQVaNj;rnW-JB$$nxxhX{ zTE{kIrED8wpCkU->`gN;C<`0vfBDcOO#RF@yjR<$L^#V^FE^Ei>aN?^<(-yHmg?Ny zQ-Bq!#=(mmT&k$>Q9z8^{kNGg-Z>QOYimQ~b{^ppmy2s{_+)LSw}C?_48-ZBw9=R7 zV!=2!F04hlMfCh_OmKYPCQO)}qH7~Bs41$UGD{#M^$_TH9dGAO^M2Qvre`c`_FUqypoD(i8%A>;On5bsSH!v@t}HuP=uWZ9pQ$$r!hZqOs%N_dEvyKtWR> z(VtWBuZO(USSo-YQcn*b!i5nzHm86;sC5SbM7+CjgKHENR8H2^aUs4y^VbXBN-JK zvgk&){>shew1Di!ffNod%ezl)15F<;%x7ZCSV)1+*Hdr8)DKN>qPOj>u6NtVA)0vh zp>`yo79Q{^ME!>@B_uBEcnVNCLK`aaP!G1eBQg*WAAJ`1ts4N*^EQAVI(gW;Qsql| zl!%j3ZN&Lgfi?x(KHbXAUZG8q-rYyOr}Ear5A4idn0XkryiS7u0EIfh!fB&Rr%xF) zL>@!prqYx|Skl1UgKb^BMgIWXL*;iY)ImBC5f+K#h-y!rRSNek#WOZRWhTX02qKAW zuC+B^ZheE3_Zx|w!gl3v*L}dVDEJjUTG!h!Fd^;m!G(zjPZ|^njTx{3Q~_^$Tb{o< zVdeK;+cU|BJI3JcV-sA9c-zyqo}c`M_e)|v9I^*tqRc%@dQMp3BmdR-mh)|->MBUA z#DTyI+O?g#?A+X$cVorYj4=xGu-e|>w81{w#l^~t4=)i5?!3sXKm*Tz{Iqor%VPxU z&uE#hd=~UXeWNU>bx~#)y}@tAc-PdU?47<`M*4ghBukNHxOF3kF|6-!>|NSMj~Ory z6_}KeNTpbLdDV3nV-(o30C}~&k14%YB5lm57@Ke^O>PI;9qE;KJStmD5`Wlh)BTs< zRaiif&mxUcB(st1xD>jCn3D@^1(wH&w;Ow^Aq~SPkAbZV_Dt+X{{Xv%#euj>F&@Ke zT<{iRt;?;zVP>@_QOWFCT##2(`A@Q);pHTF`wET1_CQUSaooF4j^E8mjytZAn~%%J zyZVa9m4O^v!nwUXyBaG(8RX~gkcZmf>1%8F&{EALRwS*hbOVnc8mLGCEQjBv#r^eE zk_I4KU)@npCtPTOS(eR}B(fPpT1`K)so%TSPX0PnM!-()J{GR2QNSI>w@ctn$?F^I zsqhqj9xFVG0^e~LQ=y^pp${U5Ho4NimG(E=FWn~@Eg$`~Cs$#_j|#MfBY(6$&h1jh za#|ylw&htyir&iJU|^FrgUu(W)xjhl#7B#>k$rO-s z4i|2XcCI1;-~jRcweO>XGE5MWe^>_k`;UbhhyniqWf>Xs79Q#VN-)E6n0a`c3sr-) z;~o*PW2qw6r+QbeDM;W~4{MDz+4zw}eHxt@8x9tuHwxwN?4m?2leFT?tdOZcF#!Jn zbqW6f@jk@Q)i_ag4y5hl?cq*~TT9nB4}Ab4%=>2!XiRGgTWJ9{f(Skpk3aa{1CsI- zD3=9dL2bXydirp0AzitmK+5*-w_?CRk&OodZE2vyy_VLsH7on-CNbfmpkOJE0RRdm zV^kW|mQnAj*pGbxaJPl@@Ty#pIM-xwr^8Kg~wCCkqsWVX~l<*I-`X|q*vc1&_E z%V0lux{d|kL|x?kN5YDO5^HXh7V;hxzy*6QEBwVrj(~ppX@lCacLR2PzIFgr(c{eg zMVHIMn868E1*{ZswE_u?WNHF{pbri;av&|e^$V(xI*dymm*RA6-nUZ(lz2vBv_{@MVxa<1B+V6H~I z_Z%%{9!JiEGX|6!@$jQqXbR8=hPy!Y-(PJL6kxUd1q}k0ZQNJkrV%GDx&g=AKo%(Y z&!>Q?+m@kqz3r!h*Cc(ZKmp`NX63$=485(Ko|)PY6HL*8_x}KOUKM!!Gy$2Hvnn2? ziDRH+;rLZY1V*=X+y@;lYfT^$8x26JWsOMM1&Px1z{uod_R==V3N83OwFa#1@j|y$ zRR|AR^UFQANIQQ?+6Qt$n2E2A<+0vXexATR zV$NHE2aRL1`y%1wyY!vZoh-mF_EpKAf*7I9hDKl+gK+?#{j^fSl+z(%N)381b93)B z#~ehY^nqV9Ia#Ts^|Xz$32%c0|kTeCS3>~L4c?0 znHGhvNa0qb=+@evH}T^{fsV@m0K@oG$<+G(f({`g5B;wlPCxuj_Vf`H$cY&ii*O?i}8Z+hW6Z%E%(txb!W3_qJfcgNq&x1YseJZByr`6GC=w z$B)}_QyK`uqLN<1+nDhtoZqH4AOVh=aiJiR&CMt6tD`gIa64DZp^uKBZdx$Zr~>|z4hFnLquM-bzp1hF_f&-2zu7>} z?l;&{**P_rrMxewuf6hJ_;JGx}EeI^*_kBP|C4`m306A@ZTTn#Sr%f$JSOZ&fc zm$tgak#Q^BC5D9iD6Y}jezqmd?tz_-sSEG`&=4=q%1-HMuuzCc9HtiC{34+Y7}$0f z1}vx`h7#Ly9#l&CGr#pa8MnXEuR0ug+-I>W)(TkBfL! zGRU~gwLf)p3LK2*8kLA1J_Jw$EPcg*Tfdp60Fa;+0;@7bgn!npAw|cIt~lEK zXaEHYH7&ULS0s6TA9(3Js5b8#?Tj1^7z+CuH0(pl`HleXR1#&DvvF~$cI*Kk# zcTz5dvzsmaEkjQ80uyNkxk2#vnm`L0v6-Ce7L6Gou#9?-8jnNi@fDiD$Vnx*^3Zrv zby?;%z4nc#`=|l#DgrM>Hnvgkp|LI!=+<$(Oh`zQmUw@K_386NkpC?FcGk0~aA zC5@>!_td12>@DY|R)=a6emp8OxC*1g%iBN~MkuW-4|wXsubfKHJP!Np}YWh^<@^5UYEZ0`5-&O&$?WgM~0N(LmVv z%2-&aG?Thy8$}Q{EzH%p&czJ_04=8qz;~D#9J6U_SorDTK#FI_PU?piRw|bLLOg)1 zet+Bj!yhXj8WigNL9{G97XJVr;ahIm9Gzm4AyU>Pk?{G7v%X{uTzO@TS*6<)HsS$1 z%}J>pS@V3DBgDzdhGs6&a>UX4S-e618X76w8_95>4a3aQecjb_43VG+4E^3hzmq3E@A5(dXYZq1wR3&yIw&@t2Qlo;8%~5BQT2(-H23C4V zQWh|XlWVxtxbm^9GTu2Dbmg)z{Y2Hax08G52oa`VsZdZky_vPKy^XZvYP+aWC6-k& zhSgXOVYlKQVv~WS6B!J>G#ofE7By}j9NEs@7y^HLpv6z`$sEZQxc%%QUwm^<+*QT;srhtV_M7` z_SBKFuI~jmHF`%O^)}H!7Myq#l8P4fQ)8ed z_S~Ka%B|@E>X282chh#Bd?)}HX%+UH4=V5@#N7VsH|c>q(vmy{g+;K>fdqLCC<29V z06!X^E%i3@y?Eg$;8{74NT%Yv~`phMTv*>O@ZH$AtiU zR%Yv&30@ZiU+ts=f!yH)Yo%J5f>Cumd^~AFc6ZRe^KKqg*B=|FZbN<)09ve!E>G{N z1t-*PQ2kIW7fO(gj;Bfh@f&<=hf&6-bQ(6cu7bQgC<2Ze58YL`U^HE5(2K+h@4Qek zLk3gKc9X)OSbRqG;p15am*9L;67vIqt2$dvP#!z!6U(i>gD@>CviN83yoDy zpnnMPGytU$dyY&wy}}?P$GOLawPH@2*#7{_PcgED_f+(*gpC050;oN&E_n(n6+`N8 zF-|eNTyUbH(N};Re;+zQk_eaPus%Y(*pDuI3BS;x zm4iCyJgBC^Sfc4bmL9>aHCG;B4=y!eWj42u3INMX*|H|NTcGj14to}21F=kl+gl;R z_1|EkLJUv(4|SD*Fo@H~n_6R!_Vo4(Aqu|w(h?U^ZTQrBi=nu;{=BG>i=gb$L+Up) za$>-o6jhx?`K!VAdPqKWfagj-D)EUt1#~y#t+>=ov8l0bc-z@P6}BX9Zhs5ZMg~5i zlrTO9ton$FAUL@2@u@V*yhxxx^WjA@DCv$twQf8-X;yb{h5(He3WxHGYfaxS-W3&@ zC*@!?;d@gCCxkE};QOlc0}xyfb?Ecc3@#LT*n@B1QehF}p#9VcP|3A58qm%!%TA<% z8EgX!9~;#z+riaX5kLz9YOCNXEgL+xwt||D+(xWGzl{+VHavO~3wh82E{ih&K_1gq zKW<6+Tmxbo_EYOew$@TT)zHxm02lEz0F^st;6n`wzmU?P_=OMYg337QS{;hZsngj} zW{C%%x|kW)iKJU9l6b;DXBAbr;Z{HS~GJQmI!$3F1NHOO7rvVnT0Xd`+kW^T&IJ zY;3-qs8LkfJ>DnA)B-tDRmHFH`Fm^h2YdTt7rR0eE)UZO^xOfVKHfF*54wKU{{Z;b zWu(f5@nr<8O2@3e#!@t2ZDr|&CX~pY1!n_q6QCYG`e7C*h>hebo-Rik7q-~3k%urJ z;T{ysxmD^p4o9pJZN6Gwx&Fq^iuvHGSyL1w;p`ag7Zn`OU zl2}z!yStcVHedmak$txI{Is(kb%DZ`4jB4LxFgKd8FD(Uv~3DkfH%-_*Gks}v6ORQ zW#BM%PT!XR>O~?UJysfNW1%!D%I<3mN1G(asK{F!uq$9V?y8ZXWlL@@bc~Hx%V8h$ zQ7_x%hBm~>eY?i!+U2YU}!QhmJRU0xUwG zm-E`E1dodEk3K3%(u4+kU3YkMX~X8A9OcU+$fI{poFFG^a5wyKP6a3b(AuU%t-(n4 z+zPo({cJyNBRPtq?$!fav9%7}_YpKQmOeW*rp)Bkqd+aYo83i6kpi6-u}Sv^Apq`? zN13%72X@Dj-8`*F5Yz;lB+HEa0G~RzWiRC)g=M47eKwHS)L4yZh3-->sR$l+HvP0p zmd?yE#gw#ZodQa`T?>SOFRCGKPk^(<%!9ogd?39fZijdv;i zw5WGeZezF}I@CsbIpt$x`&R0(BR0KEZnP&iad34Gr}CebxD+6YXESr;TQZ2POql40$t4u!HR%)~~O9x7~a0 z4{TgtxMMk45nJh}$8hZF@<`00)a&anDgxe6ux+}&Q}jfyJ0C?kDz@Cp zw>BG@NB7iUKN2+GB*>}rZn*u`^2~U1yNG#vykvf&rY)Q*kzz{|yVU%&(q)YyjtJlp z^p4evNta}g#4S(QKdqZ__XlQXC^KRt9j9q0U%*w5+`DkFY?arBwet)v=9!ss_UPg1 z$&g>Dupn6DkxjO@qpCPRSlifRB5Z#fL8r$FpbAIZ=&Vw>}UH8Q6 zV;=CtZafMQ;`&r1LbLCiBOW|eP^!-v43Zsg&Rm7R=2||``psMY-P>F^!Y3nP+qp%6 zKeqG^Pu!w5L76DVX-QaPV0SrPNJ~~NvoRv>u*Hwu@n*-I6`Wqrym9`TukzE3+2@Eu zKX2&fJ@z~jg4<)Yx5UQ#Tjr^Lwi@%PpkKKAd~^LY(nw~|^2S(esOG&D{{Zq%-5F8( zjO;EGZJYL9v6+pWP%b5QMOHCmhY`|)D^F|?@3%q^*tzrX2F?_nNO9iSlBYMFuRmwPGyc@sgWF(WN2|Pnsr3W*6H9f+>29{+ys^LXlR-`QE^ab@tE0Qy zrm!JZu^!WRA9N?`a!=9f+6QrcIP(ZrnMYTxx1?3 z$CH@rv6eNwwxqFp52Pn#+R zF}|a~@V}K~zTocJ#Y}2m7jf$i{{RiR(O8}Q_ZbVuy;V)Akph4viHIaPTk}Hy025N4 z<1RK<^k(64$U!#0g=<$PZm=f8?)}0nf~I$oU(`z*{>#&hFS+}gwC*z*j3;TwZB4wz z{3&F3U8?H;09MCoxmV@2ye~~MQ@7aDRwhk>Cs5Pe`x z5zre~9!XViuaBdg_S&#Ld9FkNavn>NZep9(u!{#=iM!~07V97BNgSoDB7S!B%SLgo#xVw&5 zcJ6t7%OXacO70R@xAaiiS7_irHGLK@xd3C$vg+u_!r+Edwev@XWniql<8cdX0~jRf zT>k*rv}0p$CXsFouN(@k4flSdT-cC5<)VgUEs}w3+r{k0z|{j}07a6`Fl5tjsR16A zwM!QbCM%O9k*O=8+oFM7R`kO*R~jVi70@pa%3XR>><#|G$y?7>~4d^K2L;nD+N`mVnTzCxu_Zn8YQa?07V^i?G#SM@MeyeRa)CJ(a z+Rwe-G%uxA!SeUanI7!&2R8ukdk@$}6$jm2*8~IgSxBRAH&LE3$JM`jkLF6xJTewm zb|-NMa*i~1JksNC0B(+3hK$&&0pi#3Tk_M0-b1S3+2H>Ga1- zx2iSb836s_uT00a)FgoXDtJ~FI3;cc`Mg!EKM_Yo4Df)+PUFVRf8nA;>S>!ayq!4P zVYSaw(^H2vE*4n;J_UU=iaeRMNt8&QJHWX2QIRAkYi!s&2M}lxp@%;aTVl?pQaMM7 zuS=bh4<_aJa5TOwL?=gEHiKxhkKsNINxtLzif9@8H)P+L-DKL5HaOfNzKR2IGSO=) zsby6=I71Hc_pt2)r4x*-?kfo3pZ;%{QdRr=?s=VAvLMGEt&zpJ*zoo5rICH3++$_> z+2LH-IpoBgw@`V%SzB*E%T*_8$So{}e15wEN{z!{9-CJOx2L_I>Y85%SD&2{{gy^K z{{VRX$vP|}xJka?lL$z`9^RU%p&{>?Zu3Dubjw2CvkcB%w|H|kM;Ek5I>j7WQ5IrJ zjdyQrd;TgPBeg3`V{E*1kvW1$tfZ;p8);Mg;km0SFL{?g$+G&mB{z1$#JqQRK8~xB z?_hN;xVE$;{rf6u%67#O!68(KauDo(BYi5&-?Tft4b}euw2K{pWs`GCwmO0V=l=i` zQye@<;OX?&E4gJN9*#=@nDD=vCk?xPD%~$fsJm5Yh8UfJ+a0IO!#T=GWyr{O*stUw z3^Ww^T29e|2XDlVJc$QZRDo4h{5Qt&h38+EfWrR(QO#_Tk1~cx*R0LYxxXOcr^Q{u zk3K@t85tmi?%x`Ktix6c0oJuiC6XJK8~&}|vSxxpjfWozA0kDRF!SmJ>M!tbqQ`YW zNMXF_33FiD@l_R86RKV?&Zy1$LP9pNKCQb&hw$y+`Rebc{Z>WCEL85@v?`6-X=(%k zkuCQ=FlWh>@=tB5w5^-F(Z~)B(lCq zAV$wCZ@&&feYFUeBOevoNT3rTJA_wh55;z4@p9UMiDHIGGO@(ra#9B6iP_YV!+6?7 z+gf#*^s?c{k0ujH@yKORg_=#o9h=EM71@Vym6>3~b&Mz`Sr}Yy0j{*XWKSn?Oa-6l z<2<<;j0quZS&07t4FW4ka(hvH)s2KlXI=?pVJben0`Wsn`(NA{895yfs6@n+M$UR$ zS|(zD$1mokkwnj#lGvHD=VO4OGTkb6Sx$~rfXeIt(LS^@&1?LD6hGyO{!3KYsKWNb{Z>M%JB30> z+q5X&Pr}-G(pWo&G*Y%SQOzmZ(j1HJjji(!3iSDz&bx}Kj#3WI!s>0x+uS$orvhUf zuIH7pgi#5eFjY3UPFYmwRQc>$8aOgyh-Bbmgx$8`&Bmv3R{mOAtTM~VDz(scIWEpg z&@I%Bpm|!Dc0Al(+liHe@;hWRwnQm7-(k1dxx zt+iaS_egi;!;B6wPz;i>TdKD>+viZp?)do=Nj%WFEijI9$bt!p#Uqd9l~E{$yZ|a@&dL)n6f2y6QgVB)pq{?5TsJ% z#S}nEF`DIy5G*&}<*Os^1~=Xmo7gLZz|%;UhnWy!lxWi|yoBzG1{}&fdS<7Fak0{9 zG9W zK$Z;-cW=h-8O90uGWu$f$`9$O@a6I0%-=Ox2WG;LEM{cPkhCJ(v9~n4*Fx-<3Df!a zZ=}r(+0lX5ec&>OQ_e!0l7GQK&G%PpghtS0Ns$``P`2ITOA)vcbl=UnH+0wG+q$yz40yA$VKNgm5;D5S;KJO>$Kd&>p5NZ0o+g4R zexNuZA5w}4zKV6Fx!DDB@pB}NUI^26P`#P#+eqF20OKgzerj}ZO_YSVNj9QB>zfeT zajT-;g!Wc2NHs~KHx~CA4kIg^}`HGMyg&7$AhhgpqbWijX z4lptU75@M&UYLEhJ4HIYuApxVVfc$yYgN6q_6oWj#*7UM5yJch5(cq*ziaL25LG>RIS>*27OoT=ee9q8M@2XQiSCv|4+^TLt79X%vl1;Dr{t_r3 zs7JAMuO?PLP!go;ZQ8F3R#iK`I&w&Nk*b5hSDU$Ey@JF9cINZFQetR%oHB{N9I?H~ zZrkXg8uZ?d*At z#|lvfUaJ~2a+9e%2g_U&k*&{6?zoWn_y8(Co=2)5#oeN446>^OYcxyZFY|jS)0_1Q z9x@||0K7!%bUd|^#h)TLzMa3LyK@8Z?)7U$qsG#OZdDrXwuJmOHt|Wy9c<9!EV^T? z3hW%&;9etVjnA@$kEpIPToo~$!cT;sA}iBn$ry=RHg!4s8 zPN#Cx6PGLzJQ%LgqwNwZxdFEPUx%ytsLWh}nv!BXE4oD58)z)RoANi!QTA2Z7KKBD z|I+!kRwn#umRJ21HwGmNHx3uS8mc8>8nUnpYhM2V-9`7MlNJbPWN8&83ds7Q9_kJ_ z+$ox62JOhHz+0PzbKNsqJdQDQFd~jPXN!9s13BC^_L}!`?6An7!6mLQxdwVQEq_Ib*RUO}usCRn36#-6vEe zdZY&6-+=;~<4cN6a}ClrF8#m-V0hZBd^nlqaLS>Y;w2l---G~akru{=cwnf%T0%wn zSPjSb(NHf*)s>HxfZ9l=`F)cpq;k!JJW)t38?b1B{icIX+>tnAxUzULCr|9FRC<}a z4C8R%0G3;8!uO(9MgT2>+ko+)z_0`;WBWg{t&O+~@Zo)G$e9m{ZeSEqYcW%y1&0tx zrSOtN5aE2ZqG1wk-WXWWfs7-{gy|xIe~3{DlMn-9vjsjLH}a+HBLGIl+BITLEbgCh zMTZ!V5Pqv0BUq8R`c#4ER_zGSt8W7y@%J>?sxUiy53Zb)GkUrp{9AruUhHW;9z6d5 zM2jM1x`Q_DuKSNOA`yT6%RzRI$13B^k=$97ds%%!rX(!28n#Bl~ zCo)K}o>l5&+m!F|-Awl7K2&n7s?bO|QEou7w}BU#wER`uTBKgP<>W277#ZYeN z7f)%45(yuX9COIShUWQb%zp5g^Q?&^Tj2N_K4mTNFT=8yL9ifkRII)_<`1 z0DCqpkttIop|`rnYX#R$-;EI_awxM0F_qsWXvA(H=oN>RRwRba9Ega!OKnngCtXkB zLd7JJ$O2tUp|Y^#jNEDqQ3z>l5r zBR5sKaK!0zCgOjZuYhB_P1eXf>LFiBCfjZ&nOJoXriNxoEhtNCx<-{<>_8iDc0bEk zU1BUq600cVrNJWM2fmDw;G#^EkW&*HIY5Zpr*2_wHwhPN?KDJ<4hH0y40&AbS4RvP z{l7c^0RFlF;&%sWM0tVH0dAYIOJ8u>NF!+3^3w5zjoo6$W0DHE2uZJhP_fG zbTVLOK=QPKd3vCo8;;VxbtcJ~B9>@bpCuo3LN!(@pxc#gt8Jhm!V2Lr8)1`th_V~* z00oi5H^jcL=C45%Sdd6?q>#zF$XMNlz*ca}W6f$zq!X8uF<~i@l3nHYl?=om79R)| z$4t1eaQlpz5zi(-Xv8YTp326>QualvvGL`PAc@1a9mb^6Gcr91Z&jo%p`bQ zY|_Ttiko_Nj|*#43}9iJRB0q+$DU#pVz%L8Y;-pjR#Z_;3`S-WtA3NIzo*Q6BBql% zi?XbwJ%f{PZl4gSIxKO9$&3P2vuyZ<^r}gNKp2?k5InKU?(?;jhOr0YV^EhXA|ojP zu{y}tCB5U@U7XyBVL{7cQ4YStK^~x-#S?)g?o@+)e953lfs%2KVIU+@y_lU%hYmGU zDU)ohb|c)|&i=~wM03rsM;YrYX|0i$=Boq9vJhAo7a^5*C7Xk5;Z8)*G29nw4yA}> zUmJt1Sg?kkXr{bn&lfjc#A&5XFf$_7S4pIO6Y0&4*3`AXEk`8_Nep+99b1@40W5e6 zQ%p?~jvi3aGj)d`*m;Qt`V+xxxNjL|jesv=U6@^!f#dBp6cWOsXG<81BO%a&+ACKe zX=BF|vTj%0yG6mc^&5(K5|UCR(L%CHqD|((h#QvPJAJpW3{WAKXw9~=m4xtrJ)*Bb zqA`&B!mtOoD z{k0&PYTyqV;gAb!$AGVTxB*BH20(4D-x}*OkU;z^g&Bwz9_p=?z&rsSGyxZ2cyaNn z?o-pDsTkxVa8kqBRNG6jC_LC5Y5oEUnMu{jJ|z2SX>%1=s0>%mt?0Xp1}6T?3aU(f zr1jLb?Z6KX6q|9V>X!rtZsIOV_z-K4lvP*~tVXI7>uwjWoOpm~N^LFS^IO?M98g$I z3n*cx(zo0DYbV&zD)3(?b&_~hWV#s6)HW6)^HA%L_2kNthaeHC@upGs?05`QPU2F- znN(X}4LEwL>E$pZ%ApcQu!aF^1M?CpU93K|F=Gvkbm zd}#@0U7#hbr;CEuqhsuy-Q3v%l)c@_;7#xCYQcGWcKt`+oS*;G$9EP?dts@AxLuZ zV0)) z>?|xc58TxlG9Pm&E!1yIsJwdmi{H`(PgXfbs$S`nk|TnA$#N1q6cb3&DE?L^iCH6c z=3vLoMZaw!!Cbkg(o~W)7T%WH$H{4-x;D}_pE2iJR|a-m7ZtnN0lgC*9|5qj@gjtZ zLXC27Od_7clZW=vX3C{j=L|wI?(?clp)YZ9Qpm}!)ZH3_AUI+si~)Hkz`DiPE|v;SxYE;{3mx3t4>E53CK)Ubuxx|Q$a1w zk*|G4?Xsyb!!)fkMvE#nT*;mcb$KK*eKA`#)Pl?A8_uf3?v64N zSQYvb4yRgG7gi?LAnE=ZQd9>FC}WB#3NeM5g0l+?FMvbwR2iU>Xw|Wq3wm70HU;o4 ze~PU7n52(Kjz(76ihwPzHxKa9BZ92lj0n}fq1{$c z3+)%wf6GKgkpTg5;=NV-yju52M z?dh;KU?V$%@>^{H6+V70Jb-lGNnHVF;IZq&XU#?ZR1FdiqNmQr*BW|xy*z0&Ur{uU zk(pU>-*lUHlXW~5o7O7s<)4F*)l96Y(TN1ZvfGWgmmIW)G#MQzkM&nlB=SR6LaTA{{X1RB=Ig2_4>=9E2&|l zFE4`AOqPN2+aU~@d&^@YhLaO+tPdS(aAo7o6nRiTPA6L`x&X@FDi+j3$r7@t-t2&H zZ-tHZP^Z9EXDv55mJ!HK*$tOvxC?mRn_@_>tn!sz?X?-co+B6mOA9)dw(X|XWRT&k zkN{*xD`N2Io4i&)JgQjvE`*hjaU)oy&;}y^0KT9ypd%t710%_|Tib4zHot>>G=~H- zGNt`|NT+ks3%wMOia&3SP!7^p9F+pjT?LB+#Ocgvd9Nhu@kDn>q+AjL>UgiJtC>c| zh0KM$B!jSmM-k(;kR-w$a-^~g?_I9aSTQ%MvYF$6&m*g(C{vc={ya~OMRC<2Ah~%X zBI??LEyR6vZ4nM7M7iA1~oW_g?oDu(FktZ~^6&EUfp|_Y{!# zK=LVyHj+1BSAVYHX@8okN$Y~?G8?xvM;LXP+iJU7%6N?qo)mv>$NvCXSzow?D%{a+ z^@dZfo{@S@k((S#B-snp*4qw;f5KEBDkB3IxJeqm4qL?zLWjw^=tcc0ZB~_m1pUX5 z_?hY=VL=nl2 zw1TV{uNwoW_ff8Z4pU89Np&mZr-!z@k*Nc+|FE*1@`yThvq!9}3~feT=OsHaZU*)y3nRobIsvNBg zt6DG#A(c(UhTcbB6t*o=`(Ip9@74aiZZpEc`-NiyH*@-dc42nEbTQEnX6ZWnLJVq3Vm0kw)9zyd!t zJXqj{B}_(0RfUV87bn|#j_9tEBaiKU=jy|pWL`1cmOf)zJa%rvu=W0oJAc%WlX84Y z4qCP5$}&FVwZiUM2C3z!uLvYNP`E-sa>{u4_|Y5$Kw*Y7#f}&hI>rw8(lKS>vxd6W z@w2jCBqBIg{WEnNj+*Q5uVb8biCOnF+m(wc1Qi$MaaUxgZf3aK6Ue}Vzu4e-QzU?s z8WjtaBv{yTNQU4s^9RDG3`+60M$W`p*c~n5M7yU*m|$57fw+7+>2Xug>Mf`~KZOUKCD^jEZyc>3kiVS` zD~oi&2yJlS_;><1(}5rV)cM>-Tu$J7b<{zS9!zr}^tF!lKga3YOFO4wF7J>sapFJp zk1r2>H2aD@ryDJ9O3DKd9Z$nerN)W1c&;=TdlRVfsjD@;Pn>_J9lb^H>K4v_Sif`k$|WL zlSKdp1KcZ|*9vTPxHitnzj-u}b+sM&! z$q>*lDHpeeEJ!v0S(}*fKH7i^PnNZ7djR)WHq1F!XdZsbt%%$iQx;tN_bqT^QXGTK zN%ZYesoTbxV?X+KJaJ&f3*+@kSlshVBYaG}Q)=nWNg8=)?g;{+e0aItK(?diYHqSV zcIHiy1R8?&9LH!?Bi8=_ma&I2Z&tdbX(jG`w;9--^W+5IBE~;SK|6MfQpWC`wC3Ym zAEh#BHpT`fjBETm=uB?eD@i6MHg?(3e^VY3dSHRWbAMHSZ_Por9yyW1unQP+l12zX zz;gp164c}kZa#h!6S7Bb!r(}E7l`~QzX`5n!`tPEK0#=p-N>%pFa__W{Z)>_F|5&T zm9f?`3c4Lh98`nprVu2B*EcFn@!xW!oVN$^H4riWB4Nic3o1NkaNdM4I{I9X%kfp~ zpN)qc={qEfNGPzWEEn;lQ)Eby0I`JF+g3d1YIWcZ)iomfsZ! zOly(caa|H7) z2+n3T?8rvz4ZKRy1S*bwOO|P|Ahw-%=I`*%pT%w`LDjLIacH^}_ zEloRq9JtWu44Ea(>b!Dbv`1%1YK*Q&HLYBf!#sjXF;(R%Ev{Zma;pJ+S3XK!=6mr?IcnxQNLWO-Qpuv@Z9S~cFcL9nr0ad zBFzU#NU{Ey-_D~?M;bteSh#PQ4^N~vMiJIX+=9*q(WUg$o`qi9Fln*R>P0D)rEqu+ zS8H3T6I}>#Pab3Kdyniy)O`DV#7E~x?VB$WJ+CU=Kd+2RRGydXC zQ090?Q&or_< z+V>idmr4`7eaDyG)sg~W#y<^#X8tqbS@{xB#Z((xaq&O4sZ~x$wYUtEI$(nwozdFm zwYdCfXU}zDV7OuaW%z#xp^Tf;VSRjsL@?X54q?F7kZ0H-Znvk00s-5Z;snj+8ueE-VG2R&0rY5 z%FWAS(@NI0ygzjv4A`(Q>dVv$e2#{aD9e$Gn@10@`hE07QB0^&OUvfKTnf$Ax2VlD zeZw9^3)WDqrB5l+rmc&;L740<$le-pG>aHys0ERwH!6yvVj=22|^Dv^+oow%}L;#cET{JIVTN5ewf!FQ}zECc+WA zmNB;AyS#rb{KX3{LnEM(nRc)&d@MyJ>ci_>F~oqE_?t}}4Fv<%WpNfnZ?(g2lvuT| zq0`~79QokKRatGkfB_n8HRqN=aS=U1VC0L9hsvw&Li%4P|JBM*j0B4DqY1 z$#5f1I{BaYDM@f!Gh?ihENs$G8x58^0zG%Cw+DFwqf0p(Sqac6`Di%$80@U7WS%o{ z8McsVvuELDBvXwgiH9p`cA`ZAJ-$e?A`Q}5Rtu)f+{hc4hWzVZwmfqVUW{oOXx$C& zejnzlFyetCe&e3!>aurRXELt7Bf_Ykxg47-`Lzg54DnVhnGizG^8k9G zxHa|Ci(GD+u0f1BMk^Z|lADIx5VbDexb7kU08e%61|UkObE_3M3Va2s)-t5ljyZW& z>98|6vAa9$2bT0QprS|2FgeD65h9h8?rm+ul+d_%(o2sbw(tQ~R~qW3i)w1^{z?ESbj3am`h|qN(*-26ZdL$uTk)?=gNY<(l*OlNv#@g9jUq$nzGO1oT@xG;*UC>)zJboGv^kqBT^w`=>PP{F1 z?4qTXS^0W8jaV?Xl+Lg?a4abX9Vh(}VA;ePL zs;0t5oCmD8yPApmh=w`(MG#FgDPpg36h72ze+@0_BVnM}@)fqy1-Alul-CAC&cZoi zSmz-?*t}QTYG7kHC60K=%yGNY&dY7f;kt!fhsDVY4UB2ax;|xfI$3) zR5;zg#eck~ zkuxL=OK9vrNV22G+A!VYRA(wiuhScqG*Z6)6=qIm)ac50DzPOuaU^d3>Kw_`#v!qWl~8RNy0UVSO)a_*CO{R$%R;8raSW;iL_g zv1Q0(#{U2@fVm^cdrdXO!cOhn;e!|-qc3DhUvs2Ufq5U~N(MELfZ9ie=$v*jyL5;W z5JMRB(vuo+Pq|=44ot%iLpmg#E#b9hdld>ig=#x40^nkVWK%Pp)5(4p;FO!~)}Bcw zm5>}|8w89rxHY5NjKSA%JZMV-ZXAVk5J+N;^4pf7)tzh~VuRwmDuU80U4t;=rCZe! zas|+xwr?}zM_iA)NIw?`CpC)V6_LQXQg+bO;pf3|JaVSCw-x*iYP)6(0|p3NWbT6O zRBLna-n%zujj!}B@Ut7dZg(K|ky|h7cC4$f!O3s_ms`5JI8G)^f9jP0NO*XPum0c* z2^(*btrl(!_`w=@!AJCDC&g|wxU%otYmNZl!m+=F>#F|%2VFn2Pemz#E=0!4>ZA`H zy4B)F1J0~vMfIo`;kv7M(`eS->dDcXtJLt9PGSXA+ex@LHO5n7OI!{WSYv%b+B`>% zKCE5V#ECq1=sbP3pZkX;Rq?Re$s2y8t$zzzv<%B@rS0*l@dH}McMQn$GG0bt0k~NF zlxa#n0kUn8j{=MGw1aAuI@`{vpCTfHG;QpfvGJ-`6@ zZh1rfe0Xs}8|yb}k`F?dN4}MyWN`|VXx{J2!)&_k-a!nb@T+8k45*=sc*7JoQyJP@ zZ4WMB#K~rw<_jXjGaIamIaSbk^6maw=lYA!pBr?yvatzm6_VU)aydlT3}v&jJ4LOX zWKT}o8|c~@$~4a+w>SqxDtSS_zKo9}WU^v5gpyiI?&NSB{`&4*xbAU+aw1=;x8fcb zqB#ja|JKFJ_Xc?kr3)|sDQh86H1&LXP_bv@=Pb>J-V3GNfq+B)l(hl7;xslA0 zC~*?lsp3bNG;S7DXg-!wR>Sn!j-`CP_0dNt&dY%IAN)Pl5Y{>XJ=MZN0N7i?=UY@k zuqXcjjaivzR2?+-Rc$TUpWR*n0eg?es$c=ok30F%)J&fHn~{GinFQ)UTBtF$g5J|z zHV2)reiU^SlU;z_?tHfJsRHCWjX+Xu;qIz8s2skZ9||TGW`Wmom1DtuWc%uEg6Wnl ziZ=e7jbx3t2GpCKY(13i3~L&@pm0vQ^AdPp%BYSp33(xHp+C#M=O*?Ipi6S4hTb)-0tA@{U0f zzf6ybtIG`0W2lW?lwWv28)v$#Y+?kM@X50wlv-Phk71=HN!Yu@@nK7V%B>QH4Cr?8 zJfXbRs#vYt^FqXnwc_NL9`?H(OC$WXL4Y!SJc#br=8-H^i)nwxsGLU;4A&r%u@G+8 z;mikxIVGXTW$x>Nkv=JrQ3GBiT{s_4Q`#u`^AB)Fg>j^fM)&F~a|3UmD|H}Ph8`P#H95qzxB_Wq$-LhI_-;vF@GQ{b- zaUPY^hzHQL#5a#L;YG8it-Twd$ShR<0DWJLn-qu=T*sRxG1QV3LWv#t-N%&;^-#$f znK9%>WNqros-)ZV5O~!o+%qwtXduQx5DOHhHQ#-Aex}XZ(jG%&%XtGd2=kRTSsAa( z@jD;OR!f@{NDR&T#EV1?i;LZe9_ktl?$d|aI2=Pv6OREw+K{{S^9O9O@z^nJosGQ8^^F(OcR*^1n4MYs8sen}FnjtVrSt=2{;LXJPr zOR>&8^7WYtZvkWJlWWJp_WUhY_Y8^gBYcdKk9!!)8}0{AKQ$5oX$W_P7Z|QP?`1ph zxA^}6A5C1l#^rUhmFElUunK=pv+3R;Ny?y*Vlsq?y4}`Kjf)Rh`EOOt-LhI^(`M)e zAhHkCQ=k_1X-U~62}tKNDp^ccjic$dyH>$e@W1A7im7H~NlB0}-?deABTd%*_MtI* zl&(MSqTaEBODVPO;=|PROj$US!wlzQ861G1*sX=ck`K&iS4KXb@Ar*)ux#b1fou? zO?c5mxKi)rd|JHG!W;C2ize-niw%GtFaH3xp_Mi)3T2*H(me-Ex5MT~#6=3-)3R?U zjU?o1u9^Z*hq{|-1WD-n=&aJSZ5xK}3t?P}Spu{S&AfANEVcu}+SgmUVa!_4moXr2 znL8H#f0=$N8f@uRk(Mr_aYa$1ep68WYsmVOa+5y&>ZO}&8*u}~)cUav8*3N6)Eza} z{{V$5mm%@hA`$K+sV+$+RrqcKy^AJf@PP0q)RI)lfR!Mh+-*%=H6o3JqV63SpFi>JiDD^_{^Q+q zJDiO^TbA0PRWEU;vW-Gx1--+(=H^IJSwhCTY(=m?{ZtflguVH=?Y|LJEUkBC02={w zul|ixSQ1IpgKjlx5bP5qokv!`Ev!i6_|(j?SrHfn;N%JxLv0e;4kD|ud#E0+ zxnPrBw;_M}s$3?M8ge36gaXp3ai^zEJgd90n&Bhb9jsZr2m5@fuXp=byY|5oB!5$l zI+u?jECJeihaEJfV;)9Wn;t#MI}k2z0YEozJ{)T1bQ6?z!)#;~C`s6UBe%i5rj5i% zGBSVeM$39*8h?!ZLX;GgHI9Ph9W18D;6D`%E59!2GOj zS|9bC$X)Q8ryTJGRuKVZBh_*}Rh7N0^K3^3)$vPA$tk;bMi5rc$WUDA3~jxL^Q#sE zxD;pF1@>56`$Y>3-Bt!dWOn63$I?9Ml0__02P&kN*itk4pTrl))335?as5qX6Q28J z98VS&1X4WTwR=`#7L8jTT~6qY!Pn)j6vpLXh2MRNk}?2LL9nqLbfJtzY}PkU9vb`W zO4&WhwNIXR3?A>6;JX+IW8zeP183_ne5L z$-%`kW4izyN|CtecY<`Ky~nV2On}k-!+_nhINf5Lr$n;@Yd7X!U*=kNRoxP&W@oT7 zMDWKBi3s6;>PFz-nZ6~`kC!ndX%PyN2CLv(%KqBUcb?1LKHJJ(xj9%@-wd(nTTW2c z_Ij3~+xw)sZ3ZctIJ)yDKH_b(%51LQ1ta*Lvvq|lC964yf#jXZaZ5;wKUnN!Zg4C( zigy=s#FHK%Xj>oI6JOd;VE&BMmm+TSs6eLEyv8%wk)ZlX#*<) zz;94~9|ESbm#h@+7?IC&`<6*b!wymubF#-<*y}(>?J_8rVo5NxY)<7}zZ-nDR4_!t ze$D1aAWB-t!$Iz=;)fkdDTs#j*lW0p+xu!Q=~cEx*^x!=F(hpwnR=RIBQ?;Q*!2GZ zDIf1qFv;CIf)Lw!axm#S*`fo|KZTF`yK30rfV65E=GYC{iTytvqO8cu6PC*WOCtnZ z{9K%(=lFKif7x0qO0VPH+z!8-K#I*Sh}zkmUc@`2-n2f~*N&FEj72Jj*1U z*BWpF;7~&0ZcYCHa1}l5MZw!2i+I;RTpM-`NhXbf7WP?!pWQ`_rI{ms847ua8v(%5 zm0*FHfMP%@PaSG-&n#`aHUaJr4=QUK3S`$~Wyg^Kb|F}3_tRSN$bpTK@2LjE%7Dh3 z>bEq4@)8||tUR=}8n(FsK(?R(=UUe!TMV1HwuD-#-+P7{cvSWl)SWBARC>61)`*5g zE&NFySFY`IdjVnNdad#zS23X6!FP~61?|jEi|%Uk~xE13~@6=QL04-G2T#b6d?lrTaRV-f1{ zva;Tk1e{6pAt7RgM7AbChfTf#g<8?Ay0026fQ{_>0#CwiOOJVz3o=B>fJY-R0%*Cm zt*>GYsirP>RZ-ca$i`(m7=d+T!EOHlx|3r<$%%_@{n0qvz8Lv|xwzJ?NTr3xT&~px zk~?_&8jHw^IVTMj)zFy;fm z&^QTrG1g{Ivb=IO!4X@r9u6(9D^)oisg>k7@~+|mV4~vu1+9Iwa%SMGgNrIW%4`gv zDOGV|fxPNOh-O`p?T}eacK|sgYkhZ9OidJH;!hRvr2`hTLS8NhOR;Ymje!zD=!WnM^Tq!B$mecZ$la2hIIU{M(HV z{aLNBgp818+DO}V76;v2X&O0QvR8Ac>Xk+1FX8FGD*C^Uu6IQ!vPsj3oxN2avU#il z_xx2<^mT1&g=HX9_T@lcawcRKj1zzT3V>LiIHv<;f!qk%6ps&W7IINxjZ_2;CH9?I zkZp7Csxk{tzCy=a??nS>Q=sE&yLziABdit)akdEdsF08YHS9w00fqcN8kG4tNEfRr z%*Mb)01ClR@mhxiYOHa{3hp74TSc~{6I8s)?$aAFZK}t{%jH=uc`3XPzTWLC-6VF& zZiH$2G7x#0$hv=qjqVe6pSJNFrbkn_lHxcC7eWEuB%oX>ZRU*pb)JL1O@#(p<2nU( zXDrvba4f#+$>wJD=aOb(+s&CYkV}x zqZ%{qclb+_%j_U=sVq>I60~YAyGXD)-;HPX)@BRnz+&&2utZ>zQ!?%8tZc;DJeH5f zIGKIDgmVa^iGwV6=2l=q7Wk3ABU5a6p2%ZY9>HT#f+NR8tJ_N- z3ZJouQW#q>C018=Kz60{{7I(~cP!}`t}IC)T`qMLrCvRZ#lR#EL&Tf>G-fQ_B1kq? zI;!bvmwQH|RIdT><#$$ngAF8hHnLlC_}#8}Rga(ChV=S$4Pms07QdFX0nSt`BW|UQ z?zaVj1D5{EnVH=d+{QK`f}Q|>Z7;I$K9%4qEDY?R&yeCYzdD1u`d>}A6l^_*w+D5| zj&?0$8}G0xN5lp8+Jf!b^T9GojmvYm6L4>*4|QoV^SfikKS{}%4&;Q5cxo?D?B1q{ zSAl*%Z0u06hFGMT91F3#09a{zjsly-fsY2(Fhm)ZV?2XZ14FNsOSZNyOwO}ox-)GM zOpK*L8WPA&QQyaI!pV~|T-V8CD3vh71iWf(y5rM-mYQfFyCP>22qD~<@oN4b5~o0b)kdTOi|I8=?uK4o$0{(ZE9Y`m#m6cKg`ZkHRh zxhrr#-l?^x0Vxmd93kA@oo*!CeX18t4~tO;COaz!y1MOfO`kz^+xS*r>gB~`#F|ET zms2Voz(#oR_^(rgx#BDSyeDd?05P$4W!t!4#NLFL@Ew~&(AhZ|A~y>L)hx-oZGwx9 z&EoG+8F`H#Rm%o8>B2~`9%S*P=Q$-;8AuC|L`YkPzN?S-YR{~WNn;y!$bcfrdyp^c zBB^`}T}NZN&Ggcc?H1%~qP3O6kCYmx{{ZCKGhx4N?h={%eA^7L&CaMiB#n6 z92s{BW?D%5uUK5#!9q zR3zRvVewzm-ry>EmK;1K<-r$A) z`YH3W6eA?ks7ow}TaUSZTD-SdGT%_j5eXJ7`f;my+fz4RkZgInvvk!?o0>39lxQ{n zY9rRwd2uyLcUZ=zP3MaWbTWL<;!#+(EkQV{3}D22Q{IyD%HKZG?>r4Rt== zYRA%wG!tzMVa$$M6eAs~G_cXGKY6J;MF43dTL{;fUfQ312OPpekq$$+k?^XO9xQ*l ztd?12Qmj%jpkIiw^Zpv;etF@1goiMN&`Wb^Ko=*Mhacknwc#$6{F z9K|S0SYxA*7sGmi{@Ubni6fAwCRfF-q@PaF180}QdEnS&K9?Aoa#Zi%S$-nqMAatWn~ zR=WinA3OVMo~sMH8xf%c&ZQ$0&2gvn#SRA(sBSj!6?GhqyMAF3qOl}5A3AuGToT7Y z{gs&QaZ4o4Am$@MTAUu-vbX)?ZHx`vY!9;awQxNUpLIQaho*wIY*FC7tid`C^Bv~N@WN%Zn z$!mjuWnG%7j=SDKOrgYP<#~Y9X|=03nGz&zB!yvMr}X!O86P((ExN7A&4KY5Cy)~r z{+*EBd56pDsp{mm)CaeD`iR;S6n6`#k!)CjYw!2#Rd%lBkB5&mS-Ke>;lTL3R@I)9 zCNjb{Vo_WJuB0C$Traw2IOMcovcy;tTK>v93%WL)!?|E%<0NrNW?5ZKk)gRk=X&o| zvv6JFWRS#FBIf3ePKAorT0FN)ewar@3n&Y12a8|EnfA``xX|T9+ku@ANX2hg0pNTo zJPu?g49MX`jr5W|%Ot9GYn~ei8YT&$pL!~lJOKjEeSiuJ6Ss!jG|hO5jddpA{6@mf zMFmB9B}o+$Jyh`{+ou{NXzRe|o=DPlLt@q-*y(Kts)$(f90HM9;z{uPGN@rq{okA7xoSKH{w&=;R7RG-lVmDd2I*ID5q3=0+?GB0zF zenKWdjjpk~1=@CyA85aZ>dZ$HNrM~VOCCne%F2e)51*)f=m~~0m-P*8ZIoo(i%SAmii5=F{%31guLjp_yCNkKtkppb;_1Ra0ArzESqOS5Qe8!rKB z%5v~%^ersliAo_Q&5;ewz_rLW^Qj{cT3dk2%i_lW0K-+r$Yi~(xRbiXpJv*ekh(G% z8>mR#ENV9F{7p8wM9JV~J7r+SgKcBCjs6n9oAS}C2v}C=V-j4*&+Pb9#b{@=LPuL# z*9mjESZSq7@(~!ZA(rlBVXwGUM+1^lGYDS6giHw`Pch-+RrHzAJdAphsVEMs$4}vE zwTrMUt;hft8UyaC=TscqwKif6?{VO^_)SbP$yKFQMJ;f$4s{yZ+#3G?nygt-B`U+5 zf+bU}ho3F#vmublByP@RVPrNIA21wl-m0*wGRG5IIaIjon~mX^vD|z%si)LH(==*2 zv9c3wq%Hh>>2ta>gO0^oO8{HqC&9gxZdXDWl~|qEBr&zFIB=vhMuFwMB;!C z3y&JBT~QMafJfWmg_KBo&UFg63;ma(;D%XB#TJUkNR-)h@-$R#rFJmpCz2)g4LF9Y zwptKkO9C!q9HmP0T`%!z&0O~OZv|BgLZH)#1n(Eu%B|OJm<_4@GBqUm8sZd?5DKZc zB)J#ri;p{N z<7$hn-Dt+p?t^r19-s?)jj1Oil6GK1leR*)^3u9Cuo1>LO56(SO;^`>5guU72Ie!R ziDSU-A1JR!l-RiuEQOPAIdxrBF#f~iMs^&KWieeyJyq4O=_}$d!mLI~7%kNj*XkWS zJv4l*Gf+tiG-=c6IX1M7c5TW$IIVemW;4eNEJj(8f@E*HfW!@@JR3@%u`l)%pcITu zmqY|8v3nk0{a&n$M$w2+?wMo=$S!V#ZZ2EX%jn}rQIgeIpD?G8<~SQ@m(a`T_jb z=BRBM5}4&?5hAIFLUwI8Kg+n~);G`0A&2ynuYGQ)@sw5=2Pc4WdMGs29DD z3;192RZkp|#U0Np65pc0vw`W2zlON#pH8hTp;|x!g*I)MA#Gl5&=pA7lVZ^jEW>&9 z?c$_-TdGrHR%PorRp`iM6RbtK3EH7`-OGMp)i~ZqL%EbX6=~#t1hCbv+U@=tjv`4p zkRuZ;#gWxUh@jb(oAXqsaD#AN@-l(W4#Wg+K+VILdTL$V!W*$rjiZ(0R&{q5l|u$g z-oWT9tOc(;yWL1;ez_%6K za!TIhQ>Oz}4~OzyNNkM%-13i(O3z^i$=tfcvLA_OUh$7TRCkJNU*1s^5YRm z(at~pc~eFWL}h1WWlZguOtUVI=H4DBTBS%6x@9t~hDI=6NSs@F)amniRZ;ckx&_~~ z78daX{{URIv-@xCFS&l@M4t<{$}renGACgcJ741e0I9c6fgXYHU5CGYsh2(%a=|#k z6oi~3G)|;k80G_G4nLpr){0|8Hq?m3uM&fh7)2m9PC8gx=g&&N5@-YU6bTfl+=SSv z7aV^Y3V7ON1(>obf*c#JxACD<6zwh#4kGsbw4D=9a1SHg#upcZ^iWx2V}4==psnZ? zZ0V)h92RSBKrTWr%uP=Ru=kGR3CmV!@Ko%4xenDoz^7KX<)*PVH*bOQao9`=4J4%5 zoOrIaJu6knR;{w!Y!2Uo!KaXAP5>oW`a=A71FiI;-1c0Tag&D}WRMKex!f1Qg@q!Y zG8L9n5aoVl90(tpsX2giC>yw&R5{rjb*j|=(fI3R#+zim#t&r&TOk}s@iY{Zn>u-$ z?bDcf-~L(_N8a0*>rf4E3)Xe>NNl*c2T#KFYO9!oHm@d%JnOhP66Qz(t=EaZmZs3e z8!RLsIE$3Z+y%Z`wLwn-xOguNDQNbv0FiqWOtPg+d{HE!cQ%U+@9#7_WORUMzUB1a z$J_3p=8)veZPy%I@v2G$@&`Ownel{DBZL#ME%g<|!ixCDeOpjiJ0bM;hVf0^aZ?f{RDk>$o>V!&E9^wx$%4L zrK2WEI&t#WxxMsT`>Ez{Xv2vbWRSuw={nLAb^icuC?8^5kBt)!Op!9UYwd08Zw<5+ z%}s7}){{e47%cAW#pEEita$Gyz|rs#wG3Nhdw>Z%JWc5!EUJCNqkiO zOYbgMVg))i{$`?bRy{HumONJt0V)-N1bLlnDUaTB-=;EhBZ@R&RP5#e{3H%L=seEl zmzM1#Ou{j8KwAKy{J%9dS2<#Lt6CbRXz?V1Sd6QMj;0)srjF(LSnq3-;D042?m7Ls zc_Uuj@l{53~u`;WNx*$jgujR{qC1UBKfQSP9opBiYKn7>(>n{m-e zI@LoIt%DrMOE@}{VZ(*Ei+R+b-?<|SNG8`jEp2Z~;FZty3BH49;q0|F8Tku~^t-me zNG>*w*BXmA8&tZ$D;LQl#HGurWw2B5fv=Sx+(!%QxN_p zFKv=L>P^p;3%@M@g-B4ql|PO3sp=AFB#qQdvB4|MBLrBl59OiWGHxtE8%PXv0PA4X zq~)kY+yl8gNx8od8W?v8Bz0_-ZHh?RI9PC|s4m8UXJJCov~IhUfg+w4xwh7&^5@JN zQ@}ZKwCiAfp4w3Iv1N7vlsGwboyJq;bzm>JZw0K3E$JQt zl&hk~c8x4ZxYqvwmY`FMF*XG5B>2^GWGc4gxneAD>HI5N(lj%*xi0z!Wcr-R1WDk8 z-H7&7XUm8I4iaod7BU}GP*P1K&3PD;;Zaj&2gG@JEhP>ZB4{ z%X?W#<^*|MROM7XMvxIBbCL)7Yhf5${M^*6XG_h$)Prgj;7P9}rER`z9Rss#x7aCt zcGPl*QQxSludeVCLu(?i=53yA4$tJGQE*QU5%(9gm**5A;)sG03*|jB4ln-N10GCz3lDVRmREWs+4Rmg+q$fBQ%M+F2%gWMnAC zAhd&f%X6jmJL>0_EO;+8!4O+~2nk($o8mH5KQ}YhJ_PI?5t-&jmS%|x@+@{}&%C#$ zp^-j6(27eh?`BfNZ<(LOOgom?p_?#>2bS}d85pNNcJJ#tDqkc zL2qpf#kVlgGWa__L0VM$gaZblrf;s_*F67~-DbH5Ro zvAO15KY6G0CxHF9Et?}2d|1*b*e>?o-jjRoy88{NT(*JT8P!2Sckm1btS?Y(Ss^Ao zg_59ebqstwd@AeW)59F{SqOy_q$Ai%nIp*Z7U5EW;l(O6k#%EP zRLLLxRa3abxcEu))cTQ>C?dQ>X<$uLD*~HU2yn~kc4?RTYOHL&+g_^GYeqV{yfl5g?#TZD@jhdPFiVe?p^)Tu&=paL z8p^L|*>CdJ5qodhU9BXZOpo;mqEOKd+f~WEuCM8pDLED z)>&)oS`YKP#IwdDj$^S2>BKn}Fm>7!;{GaDXL&((U7@(Q%T+6Y#f$A63mt7xGClVO z({b0p{uL^aH+elMduntiPckct$Xe)js20|%E=Wzr`th!|#$pt4;Z+35|I+wIJPk8~ zHv4z*rWm*}OE%SQ>bl6$soFi7n&c3)k}PNgFdW`P*l4-4B7lrsJ<31LR66eW(3%E= zOnp2?bajnaMT}{u_S7+*VTi6cyEm>=z<&(}>poPdgzSnfNE+YYMxe5)4G?fzeT4@Z zY%U37;d&z)es6p-Uu7EZG4cPjHMI&ZA-1~=xSQgrW zVdB)JXNH5!)EPqD-u9`IEoB$>)oeDKok`-zweNjTzPvOCN~9kum7Qz|BK!fR1xQ44D%>0GZ&kRP zcu`U0!5D4m&7cUE)Dh!Lx7ykQJdXZv13Sl<2> zEiuS`#a0%5zAAk0;Z`ml9)WylM7 z!(7_IgI`Z7;LLMk!ljHj;nE>9Uh`S5i9R)6Y$1E8}%MHA~KKs>1X11Dn`)K;X-3(r3Saya{ z9mxD>S!Yl-s`Gp;LvFvb*elyvy|rqo65DzbGR(?1HPv(ip>j>n3b0v5##?)BT-&$> z8i7nbmGu{pygraIEtZiXHm5ql<`wt zd8Lub0?fb*DDtHOl0n_qZOLVA&3!eg2`(6$t%>2S{{U@PI@cwaj~nS-ZB>A9Tfhzi zh#ZnKl@6(XnF8&?$Ig$&?++1Ppf14Ki5CTJ#EM(uY@~v=Bf|dxvb`Iq(2^ei0Q&H$ zwJT)}1e%CDv>6dR^SD>Xwb%ZjZZ`duRGr_e9ETlaHo1lEW&rqBc!fTuuol~KUWzj3 zj}mxmZ{Jye)})F|B&2;q8?bqTtG z9r)>}9?IEy#t=`*=}f^CAL(%Avfo?tTB*H_!Cg(sJV&~Yj}NP>YNLXXYEOv@4Qwsv zt*_%%TA@z@^<`As8|?<>`rh=*wP9v=Nn*x~o}5G(CSiEvUlwEIwwrbjx1#QntIpyK zOA@c~$+wQ*l}&Av2LrWXO$HVzd}KiRC{2hDqP@7iMcq~ltsS0l34z+6?7_d&*(P~* zyX45BoU-sy;HzAa$skpGNhxC^9dBc;=z^WD7vGP%NT!ejEO)w}Y91;4CZZ!jWR612 z=(m#FU3|rjLNtW1fg*}tLy9*lu`FEke#$mDBt>~wE#{MD(E!^TFgG5n>re}lCPEO- zqU9z4ARm`)_fb(wu&|PN7{beS+;tKjIuC|`E0Q#k*sL8lU>#jwmD=3K!`o0?sa0AT zF@nfcov(ZOZwxf6gwVtqSmO=T^sc0}wYJ|HWJHqm#8Al`uHYmtfNE6nzTy-4sjwEn zBH1G|2ySGP=Hd6Js zsDuB z3b78qn49e*`DtEvZAh{T<1thVs>y3B4m+56((K0{22UsLuHBIPf)K}1Djs3{wUO?h zW_LJbd9csbp#`itWCP1-uc%D~*bL2`09CjmNX@|A=}^PwuE~{v?_%2}Ta;t%_gb2} z6QVv1D#;TV-AXV#%EH7~gIdHM6}$W6wx(o%>aZv4#CGHWEK2+=M~z@?En8KqBP%CY z1+617^=V!bI3ruzg;u(FU)fT1u>{)Q${;0^X&s1GYk|VLlQQYX_u=7G{{H|fdG`0) zlXuA_VEr6e05i_qEPfRpbed6+lmFBC99WsNJL2KSQ~tDsc+s);p$F;2zo~1>A=g^^ zVeN5QqlPWF^)MQmgr9E5(JDo^_*?sE=udO!MmXX^6GUHI_>=6Yz>LRv2X7EfZqw~7 zIaMF-@jl8LV^&6RF=MoT%Csf;jRjuVlH-uscE2`BW7z?IVp^5Ei}c zKlQCvU2I&71>k(?e;`W1Y)+rPq9=`1$!n3|HKmzZQph(e>`yN`F9o6)%+@4c#Qypw zbOCmMaGpgf2Tcj%<4ETHNlKHV@ji6xxy=-?Y*H@oXwSRP*-1|8UyaG48ek8`x#3qj zTE^U@Tk)u*PV6I%OR+Wqb-6UbmFg?jxYCXtyCN~ZNX`5fxsw@Un`nKNV#|@zFs=3zxQdvF>UYmuSx<*gRS+c8AYsg@v60{Dly_M?KDCOBxNUn)}z#K9ewp9 z8=o&_s%eQU+khusXu=*?UuExEosYTW_dGVVu()Er3w#ggMU|;^L+z910T}6&GSWWR?CY8j}%Y#)xo1)EnQA8~ZAfq>^|G@T;y7Hiqy+ zT9Tn|6*CwD;PI}aT#sqB%{e9xEH8a4*L5}q#8U=`r5N3#o)jy_PPW(1qqcHiR~RYW z&BT&x+{1_Ns|0&R>PsEz_71FyyAi0hOK$JRrVsBf(4RNDO>Nk5yHF}hjhwQF6v9SH(l(M>_rBys5*Uqc~_-+V&gIen7HMp+t zvgoAW#MA7==!;S%US>T@@eQq9QPpmd1s>`VBnZOikA)O6iCZZ)JZ@<_IUh>F73)c) ztU`|<1zv+5Fd2Et%lXT9;(S19_oty0re^;8}#nH ze-lzFJsbrjsU=U36H@9xfCyqCyjhy}{4G$3#LaNJc~MG` z59;WA=&6GEg#r#WgIu0#Di4aaU6&UV zw|4o~W-XPNEh;I$P7-(q{_4v9nTa;@q~v1+(PBmQNFpdzqbLyABC)p3f5k>bhax1B zJ(E1kVmA_Yk3xJqX^BSXvBtPnHjL9Z) zIbn|i0lAobEZ5pBJ}tFM;>XJx*svvoSl<2xbk?jqyU{H|ymaJZ8h~)Ru|9$cv*G) z)o*WnXfc=TWu0MGKlbq2$`1x6ns)BPj$?}}uP#i|hG{XJhTK84c3^o%wJAQ`?fLK- zG3S#BB3*Vhj@PSA~-#@k@O9#|!c1x1rt(U-W*IHki_>YwiJaUMniV)Mrz_62d zrpI-gbpzd^e3yzO#XDqU1TI(>kfxj2ZOEtdQfXz&d^q6h!dgAWUNd%45%fRizr#%- z$ku5eA3Y<J@wn-oT&OCsV0!mp!?!E4$P*LUOi0<%PMdA7Ft3_@#rC#GY6mJ1WWkY%jr>(x)4U7XzKQf%eZ#Ml7A(rq zEvJzh`^uZP^keEgrn@I=%NQ!y8FBYqJ07+e7Mvq%B09GnjZT(nlXRK#Y&rXUFzuES z^KlYiPsMFrl3YHSP=LE|(wKL?(7nD-sl;31%ui1GnBT@G_WNm2$C28=*}RCct7%Ng zlX2Dx7aB)pL>rx~6$cVceHXR4?A@Ci8zo9{lEi9F{{T~eS5ZzFoLB>ojVlnzYi`a}aNJQHZ=P-V=R zaDox3QRg9EU*@3X?b!09{lWmy;v*DNV1(qMr2Ep*rSY5 zy}~TND=?3BFU!P&6cfpR)YW75Qy$@+FL>@#_bD!?E<+&vk*_33KY}Ghq+Rmu7b~*hZQ;hkrI8@*@CX!=#d(Lf!}nFVeZG5zVWCh-_TGw{ z9R#hoSx2eQvV_zWXBQfI!%5@9O^%q*881 zq+W^Q4ZP|G+lULfyvfp=XLi`3j8BIlo)UHG@gDkEeOnny9{_7T%@a^iLtK;lDz;Qn zt8475=8eJ8ZYXmTgJuU>w25{iLJ`VM>w-5t1^v~0P!?+tZQ^OLgQW;C#bi8K(|pV7>|C^k*%4}hSh8GdaEaEGgVZNkUwpi2q+XO7dqVj z0M#jq@&Kx=#ON=l6Jh)7>v;{?vk~$i4<1F}<x0;l(q>rDzCr(C+MYNHzM@#A$aTQZV3h=li&bRp=U_;XqL7gOoU6I-_ zNg5U|$BwN)&GuJtF{n(HvEpW3tNW?X$U2zQ5Fh{t3-PMjD+7AeN%l{9+y4M=ak9$l zQVDtO>{ea0ntV)*H!z>MZ%KC9lic3gn2zW!$4?VoUb`)lTthBKlCx zy)U-*@;oZxBaS4K^HtHx#BE`4eCm@W*K`aD6w{Tfh{EY!3pfrin(@~Y0GO)f&y{5bLBOB2!!ec2fBC zl;EKKMF8_P$IbB3-Rv&0shW~_=K6=jSkqEJ_Iq z1@^LzEYzA{t%^hzQqtZc;_O6Y(tn6kueI{~MgY$4oyknO;#i^W_`7aS{{U03wy$DF zUs?W#+(4TFmKlJK0|_eoB<1QV+}=x_)M3r(WDld1orOGpOgW3R_*&h~!) z05@xw>oK;68oer|urXhmDAl z{{YzMtdb@>r(A_%s{5_^d6uJri`nPxz`;9=&|Mi~C7vcE2%lxW8ovJk;H?K~?>&LB zf~G;j$b4X#60;j9jgKrq-FN)|0LNLMw@xlUaXB!wv8st!I3X4_-Ebr-KT#$=kLIeB zOd5XKl_n9B7rC-Ul7`EWpsZ3^M@~jRJ9AJOy|M`MrS8~s^k!fggl)}Y8+asW;!-zI zQvJm%?0E{^_o#`+>#G}cFOTJ=ee1bE8*UqHmNq)a(?O45V5Y)|z)n$}UVGBD;TDGZvt68Jj%KW%+85AJ*@{@v)xs+o%riDNEL zQC{S-FU@+yWl0>%a*CU*(MQEqtQFM%02QjcEf|#Qg{-@d`G&y5Qnhzx?=RT rQieGJ@+QEqw`i;OV~E}`jMo-)KLsG2<1EG|-M5qvVA6!8gJ=KQb(znM literal 0 HcmV?d00001 diff --git a/_patternlab-files/index.twig b/_patternlab-files/index.twig new file mode 100644 index 0000000..9709503 --- /dev/null +++ b/_patternlab-files/index.twig @@ -0,0 +1,96 @@ + + + + Pattern Lab + + + + + + + + + +> + +

+ + + +
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + {#{{ viewAllPaths }}#} + + + + + + + + \ No newline at end of file diff --git a/_patternlab-files/js/fitvids.js b/_patternlab-files/js/fitvids.js new file mode 100644 index 0000000..e2c5fbe --- /dev/null +++ b/_patternlab-files/js/fitvids.js @@ -0,0 +1,77 @@ +/*global jQuery */ +/*! +* FitVids 1.0 +* +* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com +* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ +* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ +* +* Date: Thu Sept 01 18:00:00 2011 -0500 +*/ + +(function( $ ){ + + $.fn.fitVids = function( options ) { + var settings = { + customSelector: null + } + + var div = document.createElement('div'), + ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0]; + + div.className = 'fit-vids-style'; + div.innerHTML = '­'; + + ref.parentNode.insertBefore(div,ref); + + if ( options ) { + $.extend( settings, options ); + } + + return this.each(function(){ + var selectors = [ + "iframe[src*='player.vimeo.com']", + "iframe[src*='www.youtube.com']", + "iframe[src*='www.kickstarter.com']", + "object", + "embed" + ]; + + if (settings.customSelector) { + selectors.push(settings.customSelector); + } + + var $allVideos = $(this).find(selectors.join(',')); + + $allVideos.each(function(){ + var $this = $(this); + if (this.tagName.toLowerCase() == 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } + var height = ( this.tagName.toLowerCase() == 'object' || $this.attr('height') ) ? $this.attr('height') : $this.height(), + width = $this.attr('width') ? $this.attr('width') : $this.width(), + aspectRatio = height / width; + if(!$this.attr('id')){ + var videoID = 'fitvid' + Math.floor(Math.random()*999999); + $this.attr('id', videoID); + } + $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); + $this.removeAttr('height').removeAttr('width'); + }); + }); + } +})( jQuery ); \ No newline at end of file diff --git a/_patternlab-files/js/init.js b/_patternlab-files/js/init.js new file mode 100644 index 0000000..fe973aa --- /dev/null +++ b/_patternlab-files/js/init.js @@ -0,0 +1,26 @@ +(function(w){ + var sw = document.body.clientWidth, + sh = document.body.clientHeight; + + $(w).resize(function(){ //Update dimensions on resize + sw = document.body.clientWidth; + sh = document.body.clientHeight; + + //updateAds(); + }); + + + //Navigation toggle + $('.nav-toggle-menu').click(function(e) { + e.preventDefault(); + $(this).toggleClass('active'); + $('.nav').toggleClass('active'); + }); + + //Navigation toggle + $('.nav-toggle-search').click(function(e) { + e.preventDefault(); + $(this).toggleClass('active'); + $('.header .search-form').toggleClass('active'); + }); +})(this); \ No newline at end of file diff --git a/_patternlab-files/js/jquery-2.0.0b2.js b/_patternlab-files/js/jquery-2.0.0b2.js new file mode 100644 index 0000000..af8b3b8 --- /dev/null +++ b/_patternlab-files/js/jquery-2.0.0b2.js @@ -0,0 +1,8690 @@ +/*! + * jQuery JavaScript Library v2.0.0b2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-3-1 + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // A central reference to the root jQuery(document) + rootjQuery, + + // The deferred used on DOM ready + readyList, + + // Support: IE9 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "2.0.0b2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler and self cleanup method + completed = function() { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + jQuery.ready(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + // Support: Safari <=5.1 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Support: Firefox >16 + // The try/catch suppresses exceptions thrown when attempting to access + // the "constructor" property of certain host objects, ie. |window.location| + try { + if ( obj.constructor && + !core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + + if ( scripts ) { + jQuery( scripts ).remove(); + } + + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: JSON.parse, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE9 + try { + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + globalEval: function( data ) { + var indirect = eval; + if ( jQuery.trim( data ) ) { + indirect( data + ";" ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + trim: function( text ) { + return text == null ? "" : core_trim.call( text ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : core_indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: Date.now +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + var input = document.createElement("input"), + fragment = document.createDocumentFragment(), + div = document.createElement("div"), + select = document.createElement("select"), + opt = select.appendChild( document.createElement("option") ); + + // Finish early in limited environments + if ( !input.type ) { + return support; + } + + input.type = "checkbox"; + + // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) + support.checkOn = input.value === ""; + + // Must access the parent to make an option select properly + // Support: IE9, IE10 + support.optSelected = opt.selected; + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + support.boxModel = document.compatMode === "CSS1Compat"; + + // Will be defined later + support.reliableMarginRight = true; + support.boxSizingReliable = true; + support.pixelPosition = false; + + // Make sure checked status is properly cloned + // Support: IE9, IE10 + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Check if an input maintains its value after becoming a radio + // Support: IE9, IE10, Opera + input = document.createElement("input"); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment.appendChild( input ); + + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: Firefox 17+ + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + support.focusinBubbles = "onfocusin" in window; + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[ 0 ]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + // Check box-sizing and margin behavior + body.appendChild( container ).appendChild( div ); + div.innerHTML = ""; + div.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%;"; + + support.boxSizing = div.offsetWidth === 4; + support.doesNotIncludeMarginInBodyOffset = body.offsetTop !== 1; + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + body.removeChild( container ); + }); + + return support; +})( {} ); + +/* + Implementation Summary + + 1. Enforce API surface and semantic compatibility with 1.9.x branch + 2. Improve the module's maintainability by reducing the storage + paths to a single mechanism. + 3. Use the same single mechanism to support "private" and "user" data. + 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + 5. Avoid exposing implementation details on user objects (eg. expando properties) + 6. Provide a clear path for implementation upgrade to WeakMap in 2014 +*/ +var data_user, data_priv, + rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function Data() { + this.cache = {}; + this.expando = jQuery.expando + Math.random(); +} + +Data.uid = 1; + +Data.prototype = { + key: function( owner ) { + var descriptor = {}, + // Check if the owner object already has a cache key + unlock = owner[ this.expando ]; + + // If not, create one + if ( !unlock ) { + unlock = Data.uid++; + descriptor[ this.expando ] = { value: unlock }; + + // Secure it in a non-enumerable, non-writable property + try { + Object.defineProperties( owner, descriptor ); + + // Support: Android<4 + // Fallback to a less secure definition + } catch ( e ) { + descriptor[ this.expando ] = unlock; + jQuery.extend( owner, descriptor ); + } + } + + // Ensure the cache object + if ( !this.cache[ unlock ] ) { + this.cache[ unlock ] = {}; + } + + return unlock; + }, + set: function( owner, data, value ) { + var prop, + // There may be an unlock assigned to this node, + // if there is no entry for this "owner", create one inline + // and set the unlock as though an owner entry had always existed + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Support an expectation from the old data system where plain + // objects used to initialize would be set to the cache by + // reference, instead of having properties and values copied. + // Note, this will kill the connection between + // "this.cache[ unlock ]" and "cache" + if ( jQuery.isEmptyObject( cache ) ) { + this.cache[ unlock ] = data; + // Otherwise, copy the properties one-by-one to the cache object + } else { + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + } + + return this; + }, + get: function( owner, key ) { + // Either a valid cache is found, or will be created. + // New caches will be created and the unlock returned, + // allowing direct access to the newly created + // empty data object. + var cache = this.cache[ this.key( owner ) ]; + + return key === undefined ? + cache : cache[ key ]; + }, + access: function( owner, key, value ) { + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ((key && typeof key === "string") && value === undefined) ) { + return this.get( owner, key ); + } + + // [*]When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + if ( key === undefined ) { + this.cache[ unlock ] = {}; + } else { + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key ]; + } else { + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = jQuery.camelCase( key ); + name = name in cache ? + [ name ] : ( name.match( core_rnotwhite ) || [] ); + } + } + + i = name.length; + while ( i-- ) { + delete cache[ name[i] ]; + } + } + }, + hasData: function( owner ) { + return !jQuery.isEmptyObject( + this.cache[ this.key( owner ) ] + ); + }, + discard: function( owner ) { + delete this.cache[ this.key( owner ) ]; + } +}; + +// This will be used by remove()/cleanData() in manipulation to sever +// remaining references to node objects. One day we'll replace the dual +// arrays with a WeakMap and this won't be an issue. +// (Splices the data objects out of the internal cache arrays) +function data_discard( owner ) { + data_user.discard( owner ); + data_priv.discard( owner ); +} + +// These may be used throughout the jQuery core codebase +data_user = new Data(); +data_priv = new Data(); + + +jQuery.extend({ + // This is no longer relevant to jQuery core, but must remain + // supported for the sake of jQuery 1.9.x API surface compatibility. + acceptData: function() { + return true; + }, + + hasData: function( elem ) { + return data_user.hasData( elem ) || data_priv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return data_user.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + return data_user.remove( elem, name ); + }, + + // TODO: Replace all calls to _data and _removeData with direct + // calls to + // + // data_priv.access( elem, name, data ); + // + // data_priv.remove( elem, name ); + // + _data: function( elem, name, data ) { + return data_priv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + return data_priv.remove( elem, name ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = data_user.get( elem ); + + if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + data_priv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + data_user.set( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + var data, + camelKey = jQuery.camelCase( key ); + + // Get the Data... + if ( value === undefined ) { + + // Attempt to get data from the cache + // with the key as-is + data = data_user.get( elem, key ); + if ( data !== undefined ) { + return data; + } + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key, undefined ); + if ( data !== undefined ) { + return data; + } + + // As a last resort, attempt to find + // the data by checking AGAIN, but with + // a camelCased key. + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return undefined; + } + + // Set the data... + this.each(function() { + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = data_user.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + data_user.set( this, camelKey, value ); + + // *... In the case of properties that might ACTUALLY + // have dashes, we need to also store a copy of that + // unchanged property. + if ( /-/.test( key ) && data !== undefined ) { + data_user.set( this, key, value ); + } + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + data_user.remove( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? + JSON.parse( data ) : data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + data_user.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + hooks.cur = fn; + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + // In IE9+, Flash objects don't have .getAttribute (#12945) + // Support: IE9+ + if ( typeof elem.getAttribute !== core_strundefined ) { + ret = elem.getAttribute( name ); + } + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) ) { + elem[ propName ] = false; + } + + elem.removeAttribute( name ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + return elem.getAttribute( name ) !== null ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + +// IE9/10 do not see a selected option inside an optgroup unless you access it +// Support: IE9, IE10 +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + } + }); +} +var rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + 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( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + } + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== document.activeElement && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === document.activeElement && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 10+ + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } +}; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && e.preventDefault ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && e.stopPropagation ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// Support: Chrome 15+ +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// Create "bubbling" focus and blur events +// Support: Firefox 10+ +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var i, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + recompare, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsXML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + support = {}, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function() { return 0; }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Array methods + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + + rnative = /^[^{]+\{\s*\[native code/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, + funescape = function( _, escaped ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + return high !== high ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var cache, + keys = []; + + return (cache = function( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + }); +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !documentIsXML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && !rbuggyQSA.test(selector) ) { + old = true; + nid = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsXML = isXML( doc ); + + // Check if getElementsByTagName("*") returns only elements + support.tagNameNoComments = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if attributes should be retrieved by attribute nodes + support.attributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }); + + // Check if getElementsByClassName can be trusted + support.getByClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }); + + // Check if getElementsByName privileges form controls or returns elements by ID + // If so, assume (for broader support) that getElementById returns elements by name + support.getByName = assert(function( div ) { + // Inject content + div.id = expando + 0; + // Support: Windows 8 Native Apps + // Assigning innerHTML with "name" attributes throws uncatchable exceptions + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx + div.appendChild( document.createElement("a") ).setAttribute( "name", expando ); + div.appendChild( document.createElement("i") ).setAttribute( "name", expando ); + docElem.appendChild( div ); + + // Test + var pass = doc.getElementsByName && + // buggy browsers will return fewer than the correct 2 + doc.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + doc.getElementsByName( expando + 0 ).length; + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + + // Support: Webkit<537.32 + // Detached nodes confoundingly follow *each other* + support.sortDetached = assert(function( div1 ) { + return div1.compareDocumentPosition && + // Should return 1, but Webkit returns 4 (following) + (div1.compareDocumentPosition( document.createElement("div") ) & 1); + }); + + // IE6/7 return modified attributes + Expr.attrHandle = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }) ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; + + // ID find and filter + if ( support.getByName ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.tagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Name + Expr.find["NAME"] = support.getByName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; + + // Class + Expr.find["CLASS"] = support.getByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { + return context.getElementsByClassName( className ); + } + }; + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21), + // no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ]; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE8 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = ""; + if ( div.querySelectorAll("[i^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (recompare && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyQSA always contains :focus, so no need for an existence check + if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + var val; + + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( !documentIsXML ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( documentIsXML || support.attributes ) { + return elem.getAttribute( name ); + } + return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? + name : + val && val.specified ? val.value : null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + // Compensate for sort limitations + recompare = !support.sortDetached; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns Returns -1 if a precedes b, 1 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[4] ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + + nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifider + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsXML ? + elem.getAttribute("xml:lang") || elem.getAttribute("lang") : + elem.lang) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push( { + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !documentIsXML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + documentIsXML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Check sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Initialize with the default document +setDocument(); + +// Always assume the presence of duplicates if sort doesn't +// pass them to our comparison function (as in Google Chrome). +[0, 0].sort( sortOrder ); +support.detectDuplicates = hasDuplicate; + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self, matched, i, + l = this.length; + + if ( typeof selector !== "string" ) { + self = this; + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + matched = []; + for ( i = 0; i < l; i++ ) { + jQuery.find( selector, this[ i ], matched ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + matched = this.pushStack( l > 1 ? jQuery.unique( matched ) : matched ); + matched.selector = ( this.selector ? this.selector + " " : "" ) + selector; + return matched; + }, + + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter(function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true) ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[ 0 ] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = ( rneedsContext.test( selectors ) || typeof selectors !== "string" ) ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return core_indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return core_indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + if ( !guaranteedUnique[ name ] ) { + jQuery.unique( matched ); + } + + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector( elems[ 0 ], expr ) ? [ elems[ 0 ] ] : [] : + jQuery.find.matches( expr, elems ); + }, + + dir: function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }, + + sibling: function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + var filtered; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + } + + if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem ) { + return ( elem === qualifier ) === keep; + }); + } + + if ( typeof qualifier === "string" ) { + filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, filtered, !keep ); + } + + qualifier = jQuery.filter( qualifier, filtered ); + } + + return jQuery.grep(elements, function( elem ) { + return ( core_indexOf.call( qualifier, elem ) >= 0 ) === keep; + }); +} +var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + manipulation_rcheckableType = /^(?:checkbox|radio)$/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + + // Support: IE 9 + option: [ 1, "" ], + + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] + }; + +// Support: IE 9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.col = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + var wrap; + + if ( jQuery.isFunction( html ) ) { + return this.each(function( i ) { + jQuery( this ).wrapAll( html.call(this, i) ); + }); + } + + if ( this[ 0 ] ) { + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function( i ) { + jQuery( this ).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + return this.domManip(arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip(arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0, + l = this.length; + + for ( ; i < l; i++ ) { + elem = this[ i ]; + + if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0, + l = this.length; + + for ( ; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + var isFunction = jQuery.isFunction( value ); + + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !isFunction && typeof value !== "string" ) { + value = jQuery( value ).not( this ).detach(); + } + + return value !== "" ? + this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }) : + this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, table ? self.html() : undefined ); + } + self.domManip( args, table, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( + table && jQuery.nodeName( this[ i ], "table" ) ? + findOrAppend( this[ i ], "tbody" ) : + this[ i ], + node, + i + ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery.ajax({ + url: node.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because core_push.apply(_, arraylike) throws + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Support: IE >=9 + // Fix Cloning issues + if ( !jQuery.support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var elem, tmp, tag, wrap, contains, j, + i = 0, + l = elems.length, + fragment = context.createDocumentFragment(), + nodes = []; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.firstChild; + } + + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Fixes #12346 + // Support: Webkit, IE + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var data, elem, type, + l = elems.length, + i = 0, + special = jQuery.event.special; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( acceptData || jQuery.acceptData( elem ) ) { + + data = data_priv.access( elem ); + + if ( data ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + } + // Discard any remaining `private` and `user` data + data_discard( elem ); + } + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[ 0 ] || elem.appendChild( elem.ownerDocument.createElement(tag) ); +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + var attr = elem.getAttributeNode("type"); + elem.type = ( attr && attr.specified ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute("type"); + } + + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var l = elems.length, + i = 0; + + for ( ; i < l; i++ ) { + data_priv.set( + elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) + ); + } +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( data_priv.hasData( src ) ) { + pdataOld = data_priv.access( src ); + pdataCur = jQuery.extend( {}, pdataOld ); + events = pdataOld.events; + + data_priv.set( dest, pdataCur ); + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( data_user.hasData( src ) ) { + udataOld = data_user.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + data_user.set( dest, udataCur ); + } +} + + +function getAll( context, tag ) { + var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : + context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + +// Support: IE >= 9 +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} +var curCSS, iframe, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +function getStyles( elem ) { + return window.getComputedStyle( elem, null ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + style[ name ] = value; + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // Support: IE9 + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // Support: Chrome <17, Safari 5.1 + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; +}; + + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery(" +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/js/fitvids.js b/public/js/fitvids.js new file mode 100644 index 0000000..e2c5fbe --- /dev/null +++ b/public/js/fitvids.js @@ -0,0 +1,77 @@ +/*global jQuery */ +/*! +* FitVids 1.0 +* +* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com +* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ +* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ +* +* Date: Thu Sept 01 18:00:00 2011 -0500 +*/ + +(function( $ ){ + + $.fn.fitVids = function( options ) { + var settings = { + customSelector: null + } + + var div = document.createElement('div'), + ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0]; + + div.className = 'fit-vids-style'; + div.innerHTML = '­'; + + ref.parentNode.insertBefore(div,ref); + + if ( options ) { + $.extend( settings, options ); + } + + return this.each(function(){ + var selectors = [ + "iframe[src*='player.vimeo.com']", + "iframe[src*='www.youtube.com']", + "iframe[src*='www.kickstarter.com']", + "object", + "embed" + ]; + + if (settings.customSelector) { + selectors.push(settings.customSelector); + } + + var $allVideos = $(this).find(selectors.join(',')); + + $allVideos.each(function(){ + var $this = $(this); + if (this.tagName.toLowerCase() == 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } + var height = ( this.tagName.toLowerCase() == 'object' || $this.attr('height') ) ? $this.attr('height') : $this.height(), + width = $this.attr('width') ? $this.attr('width') : $this.width(), + aspectRatio = height / width; + if(!$this.attr('id')){ + var videoID = 'fitvid' + Math.floor(Math.random()*999999); + $this.attr('id', videoID); + } + $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); + $this.removeAttr('height').removeAttr('width'); + }); + }); + } +})( jQuery ); \ No newline at end of file diff --git a/public/js/init.js b/public/js/init.js new file mode 100644 index 0000000..fe973aa --- /dev/null +++ b/public/js/init.js @@ -0,0 +1,26 @@ +(function(w){ + var sw = document.body.clientWidth, + sh = document.body.clientHeight; + + $(w).resize(function(){ //Update dimensions on resize + sw = document.body.clientWidth; + sh = document.body.clientHeight; + + //updateAds(); + }); + + + //Navigation toggle + $('.nav-toggle-menu').click(function(e) { + e.preventDefault(); + $(this).toggleClass('active'); + $('.nav').toggleClass('active'); + }); + + //Navigation toggle + $('.nav-toggle-search').click(function(e) { + e.preventDefault(); + $(this).toggleClass('active'); + $('.header .search-form').toggleClass('active'); + }); +})(this); \ No newline at end of file diff --git a/public/js/jquery-2.0.0b2.js b/public/js/jquery-2.0.0b2.js new file mode 100644 index 0000000..af8b3b8 --- /dev/null +++ b/public/js/jquery-2.0.0b2.js @@ -0,0 +1,8690 @@ +/*! + * jQuery JavaScript Library v2.0.0b2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-3-1 + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // A central reference to the root jQuery(document) + rootjQuery, + + // The deferred used on DOM ready + readyList, + + // Support: IE9 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "2.0.0b2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler and self cleanup method + completed = function() { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + jQuery.ready(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + // Support: Safari <=5.1 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Support: Firefox >16 + // The try/catch suppresses exceptions thrown when attempting to access + // the "constructor" property of certain host objects, ie. |window.location| + try { + if ( obj.constructor && + !core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + + if ( scripts ) { + jQuery( scripts ).remove(); + } + + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: JSON.parse, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE9 + try { + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + globalEval: function( data ) { + var indirect = eval; + if ( jQuery.trim( data ) ) { + indirect( data + ";" ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + trim: function( text ) { + return text == null ? "" : core_trim.call( text ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : core_indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: Date.now +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + var input = document.createElement("input"), + fragment = document.createDocumentFragment(), + div = document.createElement("div"), + select = document.createElement("select"), + opt = select.appendChild( document.createElement("option") ); + + // Finish early in limited environments + if ( !input.type ) { + return support; + } + + input.type = "checkbox"; + + // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) + support.checkOn = input.value === ""; + + // Must access the parent to make an option select properly + // Support: IE9, IE10 + support.optSelected = opt.selected; + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + support.boxModel = document.compatMode === "CSS1Compat"; + + // Will be defined later + support.reliableMarginRight = true; + support.boxSizingReliable = true; + support.pixelPosition = false; + + // Make sure checked status is properly cloned + // Support: IE9, IE10 + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Check if an input maintains its value after becoming a radio + // Support: IE9, IE10, Opera + input = document.createElement("input"); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment.appendChild( input ); + + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: Firefox 17+ + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + support.focusinBubbles = "onfocusin" in window; + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[ 0 ]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + // Check box-sizing and margin behavior + body.appendChild( container ).appendChild( div ); + div.innerHTML = ""; + div.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%;"; + + support.boxSizing = div.offsetWidth === 4; + support.doesNotIncludeMarginInBodyOffset = body.offsetTop !== 1; + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + body.removeChild( container ); + }); + + return support; +})( {} ); + +/* + Implementation Summary + + 1. Enforce API surface and semantic compatibility with 1.9.x branch + 2. Improve the module's maintainability by reducing the storage + paths to a single mechanism. + 3. Use the same single mechanism to support "private" and "user" data. + 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + 5. Avoid exposing implementation details on user objects (eg. expando properties) + 6. Provide a clear path for implementation upgrade to WeakMap in 2014 +*/ +var data_user, data_priv, + rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function Data() { + this.cache = {}; + this.expando = jQuery.expando + Math.random(); +} + +Data.uid = 1; + +Data.prototype = { + key: function( owner ) { + var descriptor = {}, + // Check if the owner object already has a cache key + unlock = owner[ this.expando ]; + + // If not, create one + if ( !unlock ) { + unlock = Data.uid++; + descriptor[ this.expando ] = { value: unlock }; + + // Secure it in a non-enumerable, non-writable property + try { + Object.defineProperties( owner, descriptor ); + + // Support: Android<4 + // Fallback to a less secure definition + } catch ( e ) { + descriptor[ this.expando ] = unlock; + jQuery.extend( owner, descriptor ); + } + } + + // Ensure the cache object + if ( !this.cache[ unlock ] ) { + this.cache[ unlock ] = {}; + } + + return unlock; + }, + set: function( owner, data, value ) { + var prop, + // There may be an unlock assigned to this node, + // if there is no entry for this "owner", create one inline + // and set the unlock as though an owner entry had always existed + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Support an expectation from the old data system where plain + // objects used to initialize would be set to the cache by + // reference, instead of having properties and values copied. + // Note, this will kill the connection between + // "this.cache[ unlock ]" and "cache" + if ( jQuery.isEmptyObject( cache ) ) { + this.cache[ unlock ] = data; + // Otherwise, copy the properties one-by-one to the cache object + } else { + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + } + + return this; + }, + get: function( owner, key ) { + // Either a valid cache is found, or will be created. + // New caches will be created and the unlock returned, + // allowing direct access to the newly created + // empty data object. + var cache = this.cache[ this.key( owner ) ]; + + return key === undefined ? + cache : cache[ key ]; + }, + access: function( owner, key, value ) { + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ((key && typeof key === "string") && value === undefined) ) { + return this.get( owner, key ); + } + + // [*]When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + if ( key === undefined ) { + this.cache[ unlock ] = {}; + } else { + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key ]; + } else { + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = jQuery.camelCase( key ); + name = name in cache ? + [ name ] : ( name.match( core_rnotwhite ) || [] ); + } + } + + i = name.length; + while ( i-- ) { + delete cache[ name[i] ]; + } + } + }, + hasData: function( owner ) { + return !jQuery.isEmptyObject( + this.cache[ this.key( owner ) ] + ); + }, + discard: function( owner ) { + delete this.cache[ this.key( owner ) ]; + } +}; + +// This will be used by remove()/cleanData() in manipulation to sever +// remaining references to node objects. One day we'll replace the dual +// arrays with a WeakMap and this won't be an issue. +// (Splices the data objects out of the internal cache arrays) +function data_discard( owner ) { + data_user.discard( owner ); + data_priv.discard( owner ); +} + +// These may be used throughout the jQuery core codebase +data_user = new Data(); +data_priv = new Data(); + + +jQuery.extend({ + // This is no longer relevant to jQuery core, but must remain + // supported for the sake of jQuery 1.9.x API surface compatibility. + acceptData: function() { + return true; + }, + + hasData: function( elem ) { + return data_user.hasData( elem ) || data_priv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return data_user.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + return data_user.remove( elem, name ); + }, + + // TODO: Replace all calls to _data and _removeData with direct + // calls to + // + // data_priv.access( elem, name, data ); + // + // data_priv.remove( elem, name ); + // + _data: function( elem, name, data ) { + return data_priv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + return data_priv.remove( elem, name ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = data_user.get( elem ); + + if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + data_priv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + data_user.set( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + var data, + camelKey = jQuery.camelCase( key ); + + // Get the Data... + if ( value === undefined ) { + + // Attempt to get data from the cache + // with the key as-is + data = data_user.get( elem, key ); + if ( data !== undefined ) { + return data; + } + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key, undefined ); + if ( data !== undefined ) { + return data; + } + + // As a last resort, attempt to find + // the data by checking AGAIN, but with + // a camelCased key. + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return undefined; + } + + // Set the data... + this.each(function() { + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = data_user.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + data_user.set( this, camelKey, value ); + + // *... In the case of properties that might ACTUALLY + // have dashes, we need to also store a copy of that + // unchanged property. + if ( /-/.test( key ) && data !== undefined ) { + data_user.set( this, key, value ); + } + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + data_user.remove( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? + JSON.parse( data ) : data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + data_user.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + hooks.cur = fn; + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + // In IE9+, Flash objects don't have .getAttribute (#12945) + // Support: IE9+ + if ( typeof elem.getAttribute !== core_strundefined ) { + ret = elem.getAttribute( name ); + } + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) ) { + elem[ propName ] = false; + } + + elem.removeAttribute( name ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + return elem.getAttribute( name ) !== null ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + +// IE9/10 do not see a selected option inside an optgroup unless you access it +// Support: IE9, IE10 +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + } + }); +} +var rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + 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( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + } + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== document.activeElement && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === document.activeElement && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 10+ + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } +}; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && e.preventDefault ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && e.stopPropagation ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// Support: Chrome 15+ +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// Create "bubbling" focus and blur events +// Support: Firefox 10+ +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var i, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + recompare, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsXML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + support = {}, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function() { return 0; }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Array methods + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + + rnative = /^[^{]+\{\s*\[native code/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, + funescape = function( _, escaped ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + return high !== high ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var cache, + keys = []; + + return (cache = function( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + }); +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !documentIsXML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && !rbuggyQSA.test(selector) ) { + old = true; + nid = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsXML = isXML( doc ); + + // Check if getElementsByTagName("*") returns only elements + support.tagNameNoComments = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if attributes should be retrieved by attribute nodes + support.attributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }); + + // Check if getElementsByClassName can be trusted + support.getByClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }); + + // Check if getElementsByName privileges form controls or returns elements by ID + // If so, assume (for broader support) that getElementById returns elements by name + support.getByName = assert(function( div ) { + // Inject content + div.id = expando + 0; + // Support: Windows 8 Native Apps + // Assigning innerHTML with "name" attributes throws uncatchable exceptions + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx + div.appendChild( document.createElement("a") ).setAttribute( "name", expando ); + div.appendChild( document.createElement("i") ).setAttribute( "name", expando ); + docElem.appendChild( div ); + + // Test + var pass = doc.getElementsByName && + // buggy browsers will return fewer than the correct 2 + doc.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + doc.getElementsByName( expando + 0 ).length; + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + + // Support: Webkit<537.32 + // Detached nodes confoundingly follow *each other* + support.sortDetached = assert(function( div1 ) { + return div1.compareDocumentPosition && + // Should return 1, but Webkit returns 4 (following) + (div1.compareDocumentPosition( document.createElement("div") ) & 1); + }); + + // IE6/7 return modified attributes + Expr.attrHandle = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }) ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; + + // ID find and filter + if ( support.getByName ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.tagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Name + Expr.find["NAME"] = support.getByName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; + + // Class + Expr.find["CLASS"] = support.getByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { + return context.getElementsByClassName( className ); + } + }; + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21), + // no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ]; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE8 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = ""; + if ( div.querySelectorAll("[i^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (recompare && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyQSA always contains :focus, so no need for an existence check + if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + var val; + + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( !documentIsXML ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( documentIsXML || support.attributes ) { + return elem.getAttribute( name ); + } + return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? + name : + val && val.specified ? val.value : null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + // Compensate for sort limitations + recompare = !support.sortDetached; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns Returns -1 if a precedes b, 1 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[4] ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + + nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifider + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsXML ? + elem.getAttribute("xml:lang") || elem.getAttribute("lang") : + elem.lang) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push( { + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !documentIsXML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + documentIsXML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Check sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Initialize with the default document +setDocument(); + +// Always assume the presence of duplicates if sort doesn't +// pass them to our comparison function (as in Google Chrome). +[0, 0].sort( sortOrder ); +support.detectDuplicates = hasDuplicate; + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self, matched, i, + l = this.length; + + if ( typeof selector !== "string" ) { + self = this; + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + matched = []; + for ( i = 0; i < l; i++ ) { + jQuery.find( selector, this[ i ], matched ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + matched = this.pushStack( l > 1 ? jQuery.unique( matched ) : matched ); + matched.selector = ( this.selector ? this.selector + " " : "" ) + selector; + return matched; + }, + + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter(function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true) ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[ 0 ] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = ( rneedsContext.test( selectors ) || typeof selectors !== "string" ) ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return core_indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return core_indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + if ( !guaranteedUnique[ name ] ) { + jQuery.unique( matched ); + } + + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector( elems[ 0 ], expr ) ? [ elems[ 0 ] ] : [] : + jQuery.find.matches( expr, elems ); + }, + + dir: function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }, + + sibling: function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + var filtered; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + } + + if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem ) { + return ( elem === qualifier ) === keep; + }); + } + + if ( typeof qualifier === "string" ) { + filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, filtered, !keep ); + } + + qualifier = jQuery.filter( qualifier, filtered ); + } + + return jQuery.grep(elements, function( elem ) { + return ( core_indexOf.call( qualifier, elem ) >= 0 ) === keep; + }); +} +var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + manipulation_rcheckableType = /^(?:checkbox|radio)$/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + + // Support: IE 9 + option: [ 1, "" ], + + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] + }; + +// Support: IE 9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.col = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + var wrap; + + if ( jQuery.isFunction( html ) ) { + return this.each(function( i ) { + jQuery( this ).wrapAll( html.call(this, i) ); + }); + } + + if ( this[ 0 ] ) { + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function( i ) { + jQuery( this ).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + return this.domManip(arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip(arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0, + l = this.length; + + for ( ; i < l; i++ ) { + elem = this[ i ]; + + if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0, + l = this.length; + + for ( ; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + var isFunction = jQuery.isFunction( value ); + + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !isFunction && typeof value !== "string" ) { + value = jQuery( value ).not( this ).detach(); + } + + return value !== "" ? + this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }) : + this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, table ? self.html() : undefined ); + } + self.domManip( args, table, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( + table && jQuery.nodeName( this[ i ], "table" ) ? + findOrAppend( this[ i ], "tbody" ) : + this[ i ], + node, + i + ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery.ajax({ + url: node.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because core_push.apply(_, arraylike) throws + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Support: IE >=9 + // Fix Cloning issues + if ( !jQuery.support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var elem, tmp, tag, wrap, contains, j, + i = 0, + l = elems.length, + fragment = context.createDocumentFragment(), + nodes = []; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.firstChild; + } + + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Fixes #12346 + // Support: Webkit, IE + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var data, elem, type, + l = elems.length, + i = 0, + special = jQuery.event.special; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( acceptData || jQuery.acceptData( elem ) ) { + + data = data_priv.access( elem ); + + if ( data ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + } + // Discard any remaining `private` and `user` data + data_discard( elem ); + } + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[ 0 ] || elem.appendChild( elem.ownerDocument.createElement(tag) ); +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + var attr = elem.getAttributeNode("type"); + elem.type = ( attr && attr.specified ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute("type"); + } + + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var l = elems.length, + i = 0; + + for ( ; i < l; i++ ) { + data_priv.set( + elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) + ); + } +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( data_priv.hasData( src ) ) { + pdataOld = data_priv.access( src ); + pdataCur = jQuery.extend( {}, pdataOld ); + events = pdataOld.events; + + data_priv.set( dest, pdataCur ); + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( data_user.hasData( src ) ) { + udataOld = data_user.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + data_user.set( dest, udataCur ); + } +} + + +function getAll( context, tag ) { + var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : + context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + +// Support: IE >= 9 +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} +var curCSS, iframe, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +function getStyles( elem ) { + return window.getComputedStyle( elem, null ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + style[ name ] = value; + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // Support: IE9 + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // Support: Chrome <17, Safari 5.1 + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; +}; + + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery(" -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/js/fitvids.js b/public/js/fitvids.js deleted file mode 100644 index e2c5fbe..0000000 --- a/public/js/fitvids.js +++ /dev/null @@ -1,77 +0,0 @@ -/*global jQuery */ -/*! -* FitVids 1.0 -* -* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com -* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ -* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ -* -* Date: Thu Sept 01 18:00:00 2011 -0500 -*/ - -(function( $ ){ - - $.fn.fitVids = function( options ) { - var settings = { - customSelector: null - } - - var div = document.createElement('div'), - ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0]; - - div.className = 'fit-vids-style'; - div.innerHTML = '­'; - - ref.parentNode.insertBefore(div,ref); - - if ( options ) { - $.extend( settings, options ); - } - - return this.each(function(){ - var selectors = [ - "iframe[src*='player.vimeo.com']", - "iframe[src*='www.youtube.com']", - "iframe[src*='www.kickstarter.com']", - "object", - "embed" - ]; - - if (settings.customSelector) { - selectors.push(settings.customSelector); - } - - var $allVideos = $(this).find(selectors.join(',')); - - $allVideos.each(function(){ - var $this = $(this); - if (this.tagName.toLowerCase() == 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } - var height = ( this.tagName.toLowerCase() == 'object' || $this.attr('height') ) ? $this.attr('height') : $this.height(), - width = $this.attr('width') ? $this.attr('width') : $this.width(), - aspectRatio = height / width; - if(!$this.attr('id')){ - var videoID = 'fitvid' + Math.floor(Math.random()*999999); - $this.attr('id', videoID); - } - $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); - $this.removeAttr('height').removeAttr('width'); - }); - }); - } -})( jQuery ); \ No newline at end of file diff --git a/public/js/init.js b/public/js/init.js deleted file mode 100644 index fe973aa..0000000 --- a/public/js/init.js +++ /dev/null @@ -1,26 +0,0 @@ -(function(w){ - var sw = document.body.clientWidth, - sh = document.body.clientHeight; - - $(w).resize(function(){ //Update dimensions on resize - sw = document.body.clientWidth; - sh = document.body.clientHeight; - - //updateAds(); - }); - - - //Navigation toggle - $('.nav-toggle-menu').click(function(e) { - e.preventDefault(); - $(this).toggleClass('active'); - $('.nav').toggleClass('active'); - }); - - //Navigation toggle - $('.nav-toggle-search').click(function(e) { - e.preventDefault(); - $(this).toggleClass('active'); - $('.header .search-form').toggleClass('active'); - }); -})(this); \ No newline at end of file diff --git a/public/js/jquery-2.0.0b2.js b/public/js/jquery-2.0.0b2.js deleted file mode 100644 index af8b3b8..0000000 --- a/public/js/jquery-2.0.0b2.js +++ /dev/null @@ -1,8690 +0,0 @@ -/*! - * jQuery JavaScript Library v2.0.0b2 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-3-1 - */ -(function( window, undefined ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -//"use strict"; -var - // A central reference to the root jQuery(document) - rootjQuery, - - // The deferred used on DOM ready - readyList, - - // Support: IE9 - // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` - core_strundefined = typeof undefined, - - // Use the correct document accordingly with window argument (sandbox) - location = window.location, - document = window.document, - docElem = document.documentElement, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // [[Class]] -> type pairs - class2type = {}, - - // List of deleted data cache ids, so we can reuse them - core_deletedIds = [], - - core_version = "2.0.0b2", - - // Save a reference to some core methods - core_concat = core_deletedIds.concat, - core_push = core_deletedIds.push, - core_slice = core_deletedIds.slice, - core_indexOf = core_deletedIds.indexOf, - core_toString = class2type.toString, - core_hasOwn = class2type.hasOwnProperty, - core_trim = core_version.trim, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Used for matching numbers - core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, - - // Used for splitting on whitespace - core_rnotwhite = /\S+/g, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // The ready event handler and self cleanup method - completed = function() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: core_version, - - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return core_slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; - }, - - slice: function() { - return this.pushStack( core_slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: core_push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), - - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger("ready").off("ready"); - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - if ( obj == null ) { - return String( obj ); - } - // Support: Safari <=5.1 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ core_toString.call(obj) ] || "object" : - typeof obj; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Support: Firefox >16 - // The try/catch suppresses exceptions thrown when attempting to access - // the "constructor" property of certain host objects, ie. |window.location| - try { - if ( obj.constructor && - !core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - // data: string of html - // context (optional): If specified, the fragment will be created in this context, defaults to document - // keepScripts (optional): If true, will include scripts passed in the html string - parseHTML: function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - - if ( scripts ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); - }, - - parseJSON: JSON.parse, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - globalEval: function( data ) { - var indirect = eval; - if ( jQuery.trim( data ) ) { - indirect( data + ";" ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - trim: function( text ) { - return text == null ? "" : core_trim.call( text ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - core_push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : core_indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var l = second.length, - i = first.length, - j = 0; - - if ( typeof l === "number" ) { - for ( ; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var retVal, - ret = [], - i = 0, - length = elems.length; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return core_concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = core_slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - access: function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; - }, - - now: Date.now -}); - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || type !== "function" && - ( length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj ); -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( list && ( !fired || stack ) ) { - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var action = tuple[ 0 ], - fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = core_slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; - if( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); -jQuery.support = (function( support ) { - var input = document.createElement("input"), - fragment = document.createDocumentFragment(), - div = document.createElement("div"), - select = document.createElement("select"), - opt = select.appendChild( document.createElement("option") ); - - // Finish early in limited environments - if ( !input.type ) { - return support; - } - - input.type = "checkbox"; - - // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) - support.checkOn = input.value === ""; - - // Must access the parent to make an option select properly - // Support: IE9, IE10 - support.optSelected = opt.selected; - - // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode - support.boxModel = document.compatMode === "CSS1Compat"; - - // Will be defined later - support.reliableMarginRight = true; - support.boxSizingReliable = true; - support.pixelPosition = false; - - // Make sure checked status is properly cloned - // Support: IE9, IE10 - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Check if an input maintains its value after becoming a radio - // Support: IE9, IE10, Opera - input = document.createElement("input"); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; - - // #11217 - WebKit loses check when the name is after the checked attribute - input.setAttribute( "checked", "t" ); - input.setAttribute( "name", "t" ); - - fragment.appendChild( input ); - - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: Firefox 17+ - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - support.focusinBubbles = "onfocusin" in window; - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, marginDiv, - divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", - body = document.getElementsByTagName("body")[ 0 ]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - container = document.createElement("div"); - container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; - - // Check box-sizing and margin behavior - body.appendChild( container ).appendChild( div ); - div.innerHTML = ""; - div.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%;"; - - support.boxSizing = div.offsetWidth === 4; - support.doesNotIncludeMarginInBodyOffset = body.offsetTop !== 1; - - // Use window.getComputedStyle because jsdom on node.js will break without it. - if ( window.getComputedStyle ) { - support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; - support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - marginDiv = div.appendChild( document.createElement("div") ); - marginDiv.style.cssText = div.style.cssText = divReset; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - - support.reliableMarginRight = - !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); - } - - body.removeChild( container ); - }); - - return support; -})( {} ); - -/* - Implementation Summary - - 1. Enforce API surface and semantic compatibility with 1.9.x branch - 2. Improve the module's maintainability by reducing the storage - paths to a single mechanism. - 3. Use the same single mechanism to support "private" and "user" data. - 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) - 5. Avoid exposing implementation details on user objects (eg. expando properties) - 6. Provide a clear path for implementation upgrade to WeakMap in 2014 -*/ -var data_user, data_priv, - rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rmultiDash = /([A-Z])/g; - -function Data() { - this.cache = {}; - this.expando = jQuery.expando + Math.random(); -} - -Data.uid = 1; - -Data.prototype = { - key: function( owner ) { - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - descriptor[ this.expando ] = { value: unlock }; - - // Secure it in a non-enumerable, non-writable property - try { - Object.defineProperties( owner, descriptor ); - - // Support: Android<4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Support an expectation from the old data system where plain - // objects used to initialize would be set to the cache by - // reference, instead of having properties and values copied. - // Note, this will kill the connection between - // "this.cache[ unlock ]" and "cache" - if ( jQuery.isEmptyObject( cache ) ) { - this.cache[ unlock ] = data; - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - - return this; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - return this.get( owner, key ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = jQuery.camelCase( key ); - name = name in cache ? - [ name ] : ( name.match( core_rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[i] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ this.key( owner ) ] - ); - }, - discard: function( owner ) { - delete this.cache[ this.key( owner ) ]; - } -}; - -// This will be used by remove()/cleanData() in manipulation to sever -// remaining references to node objects. One day we'll replace the dual -// arrays with a WeakMap and this won't be an issue. -// (Splices the data objects out of the internal cache arrays) -function data_discard( owner ) { - data_user.discard( owner ); - data_priv.discard( owner ); -} - -// These may be used throughout the jQuery core codebase -data_user = new Data(); -data_priv = new Data(); - - -jQuery.extend({ - // This is no longer relevant to jQuery core, but must remain - // supported for the sake of jQuery 1.9.x API surface compatibility. - acceptData: function() { - return true; - }, - - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - return data_user.remove( elem, name ); - }, - - // TODO: Replace all calls to _data and _removeData with direct - // calls to - // - // data_priv.access( elem, name, data ); - // - // data_priv.remove( elem, name ); - // - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - return data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var attrs, name, - elem = this[0], - i = 0, - data = null; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - attrs = elem.attributes; - for ( ; i < attrs.length; i++ ) { - name = attrs[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return jQuery.access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // Get the Data... - if ( value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key, undefined ); - if ( data !== undefined ) { - return data; - } - - // As a last resort, attempt to find - // the data by checking AGAIN, but with - // a camelCased key. - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return undefined; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might ACTUALLY - // have dashes, we need to also store a copy of that - // unchanged property. - if ( /-/.test( key ) && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? - JSON.parse( data ) : data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - hooks.cur = fn; - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var nodeHook, boolHook, - rclass = /[\t\r\n]/g, - rreturn = /\r/g, - rfocusable = /^(?:input|select|textarea|button|object)$/i, - rclickable = /^(?:a|area)$/i, - rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - elem.className = jQuery.trim( cur ); - - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( core_rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - elem.className = value ? jQuery.trim( cur ) : ""; - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.match( core_rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - // Toggle whole class name - } else if ( type === core_strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val, - self = jQuery(this); - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // oldIE doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attr: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === core_strundefined ) { - return jQuery.prop( elem, name, value ); - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( notxml ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - // In IE9+, Flash objects don't have .getAttribute (#12945) - // Support: IE9+ - if ( typeof elem.getAttribute !== core_strundefined ) { - ret = elem.getAttribute( name ); - } - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( core_rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) ) { - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return ( elem[ name ] = value ); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - return elem.getAttribute( name ) !== null ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }); -}); - -// IE9/10 do not see a selected option inside an optgroup unless you access it -// Support: IE9, IE10 -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - } - }); -} -var rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( core_rnotwhite ) || [""]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = core_hasOwn.call( event, "type" ) ? event.type : event, - namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = core_slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur != this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - 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( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - } - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== document.activeElement && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === document.activeElement && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 10+ - if ( event.result !== undefined ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Create "bubbling" focus and blur events -// Support: Firefox 10+ -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2013 jQuery Foundation and other contributors - * Released under the MIT license - * http://sizzlejs.com/ - */ -(function( window, undefined ) { - -var i, - cachedruns, - Expr, - getText, - isXML, - compile, - outermostContext, - recompare, - sortInput, - - // Local document vars - setDocument, - document, - docElem, - documentIsXML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - support = {}, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - hasDuplicate = false, - sortOrder = function() { return 0; }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Array methods - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors - operators = "([*^$|!~]?=)", - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + - "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", - - // Prefer arguments quoted, - // then not containing pseudos/brackets, - // then attribute selectors/non-parenthetical expressions, - // then anything else - // These preferences are here to reduce the number of selectors - // needing tokenize in the PSEUDO preFilter - pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rsibling = /[\x20\t\r\n\f]*[+~]/, - - rnative = /^[^{]+\{\s*\[native code/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rescape = /'|\\/g, - rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, - funescape = function( _, escaped ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - return high !== high ? - escaped : - // BMP codepoint - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -/** - * For feature detection - * @param {Function} fn The function to test for native support - */ -function isNative( fn ) { - return rnative.test( fn + "" ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var cache, - keys = []; - - return (cache = function( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key += " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key ] = value); - }); -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // release memory in IE - div = null; - } -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( !documentIsXML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && !rbuggyQSA.test(selector) ) { - old = true; - nid = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && context.parentNode || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Detect xml - * @param {Element|Object} elem An element or a document - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsXML = isXML( doc ); - - // Check if getElementsByTagName("*") returns only elements - support.tagNameNoComments = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if attributes should be retrieved by attribute nodes - support.attributes = assert(function( div ) { - div.innerHTML = ""; - var type = typeof div.lastChild.getAttribute("multiple"); - // IE8 returns a string for some attributes even when not present - return type !== "boolean" && type !== "string"; - }); - - // Check if getElementsByClassName can be trusted - support.getByClassName = assert(function( div ) { - // Opera can't find a second classname (in 9.6) - div.innerHTML = ""; - if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { - return false; - } - - // Safari 3.2 caches class attributes and doesn't catch changes - div.lastChild.className = "e"; - return div.getElementsByClassName("e").length === 2; - }); - - // Check if getElementsByName privileges form controls or returns elements by ID - // If so, assume (for broader support) that getElementById returns elements by name - support.getByName = assert(function( div ) { - // Inject content - div.id = expando + 0; - // Support: Windows 8 Native Apps - // Assigning innerHTML with "name" attributes throws uncatchable exceptions - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx - div.appendChild( document.createElement("a") ).setAttribute( "name", expando ); - div.appendChild( document.createElement("i") ).setAttribute( "name", expando ); - docElem.appendChild( div ); - - // Test - var pass = doc.getElementsByName && - // buggy browsers will return fewer than the correct 2 - doc.getElementsByName( expando ).length === 2 + - // buggy browsers will return more than the correct 0 - doc.getElementsByName( expando + 0 ).length; - - // Cleanup - docElem.removeChild( div ); - - return pass; - }); - - // Support: Webkit<537.32 - // Detached nodes confoundingly follow *each other* - support.sortDetached = assert(function( div1 ) { - return div1.compareDocumentPosition && - // Should return 1, but Webkit returns 4 (following) - (div1.compareDocumentPosition( document.createElement("div") ) & 1); - }); - - // IE6/7 return modified attributes - Expr.attrHandle = assert(function( div ) { - div.innerHTML = ""; - return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && - div.firstChild.getAttribute("href") === "#"; - }) ? - {} : - { - "href": function( elem ) { - return elem.getAttribute( "href", 2 ); - }, - "type": function( elem ) { - return elem.getAttribute("type"); - } - }; - - // ID find and filter - if ( support.getByName ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && !documentIsXML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && !documentIsXML ) { - var m = context.getElementById( id ); - - return m ? - m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? - [m] : - undefined : - []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.tagNameNoComments ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Name - Expr.find["NAME"] = support.getByName && function( tag, context ) { - if ( typeof context.getElementsByName !== strundefined ) { - return context.getElementsByName( name ); - } - }; - - // Class - Expr.find["CLASS"] = support.getByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { - return context.getElementsByClassName( className ); - } - }; - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21), - // no need to also add to buggyMatches since matches checks buggyQSA - // A support test would require too much code (would include document ready) - rbuggyQSA = [ ":focus" ]; - - if ( (support.qsa = isNative(doc.querySelectorAll)) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explictly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // IE8 - Some boolean attributes are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - - // Opera 10-12/IE8 - ^= $= *= and empty values - // Should not select anything - div.innerHTML = ""; - if ( div.querySelectorAll("[i^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || - docElem.mozMatchesSelector || - docElem.webkitMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - // Document order sorting - sortOrder = docElem.compareDocumentPosition ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); - - if ( compare ) { - // Disconnected nodes - if ( compare & 1 || - (recompare && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } - - // Not directly comparable, sort on existence of method - return a.compareDocumentPosition ? -1 : 1; - } : - function( a, b ) { - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Parentless nodes are either documents or disconnected - } else if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - // rbuggyQSA always contains :focus, so no need for an existence check - if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [elem] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - var val; - - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - if ( !documentIsXML ) { - name = name.toLowerCase(); - } - if ( (val = Expr.attrHandle[ name ]) ) { - return val( elem ); - } - if ( documentIsXML || support.attributes ) { - return elem.getAttribute( name ); - } - return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? - name : - val && val.specified ? val.value : null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -// Document sorting and removing duplicates -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - // Compensate for sort limitations - recompare = !support.sortDetached; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - return results; -}; - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns Returns -1 if a precedes b, 1 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -// Returns a function to use in pseudos for input types -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -// Returns a function to use in pseudos for buttons -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -// Returns a function to use in pseudos for positionals -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - for ( ; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (see #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[5] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[4] ) { - match[2] = match[4]; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeName ) { - if ( nodeName === "*" ) { - return function() { return true; }; - } - - nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifider - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsXML ? - elem.getAttribute("xml:lang") || elem.getAttribute("lang") : - elem.lang) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), - // not comment, processing instructions, or others - // Thanks to Diego Perini for the nodeName shortcut - // Greater than "@" means alpha characters (specifically not starting with "#" or "?") - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( tokens = [] ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push( { - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var data, cache, outerCache, - dirkey = dirruns + " " + doneName; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { - if ( (data = cache[1]) === true || data === cachedruns ) { - return data === true; - } - } else { - cache = outerCache[ dir ] = [ dirkey ]; - cache[1] = matcher( elem, context, xml ) || cachedruns; - if ( cache[1] === true ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - // A counter to specify which element is currently being matched - var matcherCachedRuns = 0, - bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, expandContext ) { - var elem, j, matcher, - setMatched = [], - matchedCount = 0, - i = "0", - unmatched = seed && [], - outermost = expandContext != null, - contextBackup = outermostContext, - // We must always have either seed elements or context - elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); - - if ( outermost ) { - outermostContext = context !== document && context; - cachedruns = matcherCachedRuns; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - for ( ; (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - cachedruns = ++matcherCachedRuns; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !group ) { - group = tokenize( selector ); - } - i = group.length; - while ( i-- ) { - cached = matcherFromTokens( group[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - } - return cached; -}; - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - match = tokenize( selector ); - - if ( !seed ) { - // Try to minimize operations if there is only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && !documentIsXML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && context.parentNode || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - } - - // Compile and execute a filtering function - // Provide `match` to avoid retokenization if we modified the selector above - compile( selector, match )( - seed, - context, - documentIsXML, - results, - rsibling.test( selector ) - ); - return results; -} - -// Deprecated -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -// Check sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Initialize with the default document -setDocument(); - -// Always assume the presence of duplicates if sort doesn't -// pass them to our comparison function (as in Google Chrome). -[0, 0].sort( sortOrder ); -support.detectDuplicates = hasDuplicate; - -// Override sizzle attribute retrieval -Sizzle.attr = jQuery.attr; -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})( window ); -var runtil = /Until$/, - rparentsprev = /^(?:parents|prev(?:Until|All))/, - isSimple = /^.[^:#\[\.,]*$/, - rneedsContext = jQuery.expr.match.needsContext, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self, matched, i, - l = this.length; - - if ( typeof selector !== "string" ) { - self = this; - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - matched = []; - for ( i = 0; i < l; i++ ) { - jQuery.find( selector, this[ i ], matched ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - matched = this.pushStack( l > 1 ? jQuery.unique( matched ) : matched ); - matched.selector = ( this.selector ? this.selector + " " : "" ) + selector; - return matched; - }, - - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false) ); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true) ); - }, - - is: function( selector ) { - return !!selector && ( - typeof selector === "string" ? - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - rneedsContext.test( selector ) ? - jQuery( selector, this.context ).index( this[ 0 ] ) >= 0 : - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = ( rneedsContext.test( selectors ) || typeof selectors !== "string" ) ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - cur = matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return core_indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return core_indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( jQuery.unique(all) ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector( elems[ 0 ], expr ) ? [ elems[ 0 ] ] : [] : - jQuery.find.matches( expr, elems ); - }, - - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - var filtered; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - } - - if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem ) { - return ( elem === qualifier ) === keep; - }); - } - - if ( typeof qualifier === "string" ) { - filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, filtered, !keep ); - } - - qualifier = jQuery.filter( qualifier, filtered ); - } - - return jQuery.grep(elements, function( elem ) { - return ( core_indexOf.call( qualifier, elem ) >= 0 ) === keep; - }); -} -var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - manipulation_rcheckableType = /^(?:checkbox|radio)$/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE 9 - option: [ 1, "" ], - - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE 9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.col = wrapMap.thead; -wrapMap.th = wrapMap.td; - -jQuery.fn.extend({ - text: function( value ) { - return jQuery.access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapAll( html.call(this, i) ); - }); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - }, - - append: function() { - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.insertBefore( elem, this.firstChild ); - } - }); - }, - - before: function() { - return this.domManip(arguments, false, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip(arguments, false, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - // keepData is for internal use only--do not document - remove: function( selector, keepData ) { - var elem, - i = 0, - l = this.length; - - for ( ; i < l; i++ ) { - elem = this[ i ]; - - if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0, - l = this.length; - - for ( ; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function () { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return jQuery.access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function( value ) { - var isFunction = jQuery.isFunction( value ); - - // Make sure that the elements are removed from the DOM before they are inserted - // this can help fix replacing a parent with child elements - if ( !isFunction && typeof value !== "string" ) { - value = jQuery( value ).not( this ).detach(); - } - - return value !== "" ? - this.domManip( [ value ], true, function( elem ) { - var next = this.nextSibling, - parent = this.parentNode; - - if ( parent ) { - jQuery( this ).remove(); - parent.insertBefore( elem, next ); - } - }) : - this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, table, callback ) { - - // Flatten any nested arrays - args = core_concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, table ? self.html() : undefined ); - } - self.domManip( args, table, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - table = table && jQuery.nodeName( first, "tr" ); - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because core_push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( - table && jQuery.nodeName( this[ i ], "table" ) ? - findOrAppend( this[ i ], "tbody" ) : - this[ i ], - node, - i - ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Hope ajax is available... - jQuery.ajax({ - url: node.src, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because core_push.apply(_, arraylike) throws - core_push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Support: IE >=9 - // Fix Cloning issues - if ( !jQuery.support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - i = 0, - l = elems.length, - fragment = context.createDocumentFragment(), - nodes = []; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit - // jQuery.merge because core_push.apply(_, arraylike) throws - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || ["", ""] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.firstChild; - } - - // Support: QtWebKit - // jQuery.merge because core_push.apply(_, arraylike) throws - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Fixes #12346 - // Support: Webkit, IE - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var data, elem, type, - l = elems.length, - i = 0, - special = jQuery.event.special; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( acceptData || jQuery.acceptData( elem ) ) { - - data = data_priv.access( elem ); - - if ( data ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - } - // Discard any remaining `private` and `user` data - data_discard( elem ); - } - } -}); - -function findOrAppend( elem, tag ) { - return elem.getElementsByTagName( tag )[ 0 ] || elem.appendChild( elem.ownerDocument.createElement(tag) ); -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - var attr = elem.getAttributeNode("type"); - elem.type = ( attr && attr.specified ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var l = elems.length, - i = 0; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = jQuery.extend( {}, pdataOld ); - events = pdataOld.events; - - data_priv.set( dest, pdataCur ); - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Support: IE >= 9 -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} -var curCSS, iframe, - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rmargin = /^margin/, - rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), - rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), - elemdisplay = { BODY: "block" }, - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: 0, - fontWeight: 400 - }, - - cssExpand = [ "Top", "Right", "Bottom", "Left" ], - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt(0).toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function isHidden( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); -} - -// NOTE: we've included the "window" in window.getComputedStyle -// because jsdom on node.js will break without it. -function getStyles( elem ) { - return window.getComputedStyle( elem, null ); -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = jQuery._data( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); - } - } else { - - if ( !values[ index ] ) { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.fn.extend({ - css: function( name, value ) { - return jQuery.access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - var bool = typeof state === "boolean"; - - return this.each(function() { - if ( bool ? state : isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Exclude the following css properties to add px - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that NaN and null values aren't set. See: #7116 - if ( value == null || type === "number" && isNaN( value ) ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - style[ name ] = value; - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - }, - - // A method for quickly swapping in/out CSS properties to get correct calculations - swap: function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; - } -}); - -curCSS = function( elem, name, _computed ) { - var width, minWidth, maxWidth, - computed = _computed || getStyles( elem ), - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, - style = elem.style; - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: Chrome <17, Safari 5.1 - // A tribute to the "awesome hack by Dean Edwards" - // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right - // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret; -}; - - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -// Try to determine the default display value of an element -function css_defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - // Use the already-created iframe if possible - iframe = ( iframe || - jQuery("