axe-matchers 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ require 'axe/cucumber/step'
2
+
3
+ Then Axe::Cucumber::Step::REGEX, :be_accessible, on: -> { Axe::Cucumber::Step.create_for self }
@@ -0,0 +1,26 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ module Axe
5
+ class JavaScriptLibrary
6
+
7
+ def inject_into(page)
8
+ page.execute_script source
9
+ end
10
+
11
+ def source
12
+ axe_lib.read
13
+ end
14
+
15
+ private
16
+
17
+ def axe_lib
18
+ gem_root + 'node_modules/axe-core/axe.min.js'
19
+ end
20
+
21
+ def gem_root
22
+ Pathname.new Gem::Specification.find_by_name('axe-matchers').gem_dir
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ require 'axe/matchers/be_accessible'
@@ -0,0 +1,62 @@
1
+ require 'forwardable'
2
+ require 'axe/page'
3
+ require 'axe/api/a11y_check'
4
+
5
+ module Axe
6
+ module Matchers
7
+ class BeAccessible
8
+ extend Forwardable
9
+
10
+ def_delegators :@audit, :failure_message, :failure_message_when_negated
11
+
12
+ def initialize
13
+ @a11y_check = API::A11yCheck.new
14
+ end
15
+
16
+ def matches?(page)
17
+ @audit = @a11y_check.call Page.new page
18
+
19
+ @audit.passed?
20
+ end
21
+
22
+ def within(inclusion)
23
+ @a11y_check.include inclusion
24
+ self
25
+ end
26
+
27
+ def excluding(exclusion)
28
+ @a11y_check.exclude exclusion
29
+ self
30
+ end
31
+
32
+ def according_to(*tags)
33
+ @a11y_check.rules_by_tags tags.flatten
34
+ self
35
+ end
36
+
37
+ def checking(*rules)
38
+ @a11y_check.run_rules rules.flatten
39
+ self
40
+ end
41
+
42
+ def skipping(*rules)
43
+ @a11y_check.skip_rules rules.flatten
44
+ self
45
+ end
46
+
47
+ def checking_only(*rules)
48
+ @a11y_check.run_only_rules rules.flatten
49
+ self
50
+ end
51
+
52
+ def with_options(options)
53
+ @a11y_check.custom_options options
54
+ self
55
+ end
56
+ end
57
+
58
+ def be_accessible
59
+ BeAccessible.new
60
+ end
61
+ end
62
+ end
data/lib/axe/page.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'forwardable'
2
+ require 'webdriver_script_adapter/exec_eval_script_adapter'
3
+ require 'webdriver_script_adapter/execute_async_script_adapter'
4
+
5
+ module Axe
6
+ class Page
7
+ extend Forwardable
8
+ def_delegators :@driver, :execute_script, :execute_async_script
9
+
10
+ def initialize(driver)
11
+ @driver = wrap_exec_async wrap_exec_eval driver
12
+ end
13
+
14
+ private
15
+
16
+ # ensure driver has #execute_async_script
17
+ def wrap_exec_async(driver)
18
+ ::WebDriverScriptAdapter::ExecuteAsyncScriptAdapter.wrap driver
19
+ end
20
+
21
+ # ensure driver has #execute_script and #evaluate_script
22
+ def wrap_exec_eval(driver)
23
+ ::WebDriverScriptAdapter::ExecEvalScriptAdapter.wrap driver
24
+ end
25
+ end
26
+ end
data/lib/axe/rspec.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'axe/matchers'
2
+ require 'rspec/core'
3
+
4
+ RSpec.configure do |config|
5
+ config.include Axe::Matchers
6
+ end
@@ -0,0 +1,3 @@
1
+ module Axe
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,27 @@
1
+ require 'dumb_delegator'
2
+
3
+ module WebDriverScriptAdapter
4
+ # Capybara distinguishes eval from exec
5
+ # (eval is a query, exec is a command)
6
+ # this decorator makes webdriver act like capybara
7
+ class ExecEvalScriptAdapter < ::DumbDelegator
8
+
9
+ def self.wrap(driver)
10
+ raise WebDriverError, "WebDriver must respond to #execute_script" unless driver.respond_to? :execute_script
11
+ driver.respond_to?(:evaluate_script) ? driver : new(driver)
12
+ end
13
+
14
+ # executes script without returning result
15
+ def execute_script(script)
16
+ super
17
+ nil
18
+ end
19
+
20
+ # returns result of executing script
21
+ def evaluate_script(script)
22
+ __getobj__.execute_script "return #{script}"
23
+ end
24
+ end
25
+
26
+ class WebDriverError < TypeError; end
27
+ end
@@ -0,0 +1,90 @@
1
+ require 'dumb_delegator'
2
+ require 'securerandom'
3
+ require 'timeout'
4
+ require 'webdriver_script_adapter/exec_eval_script_adapter'
5
+
6
+ module WebDriverScriptAdapter
7
+ class << self
8
+ attr_accessor :async_results_identifier, :max_wait_time, :wait_interval
9
+
10
+ def configure
11
+ yield self
12
+ end
13
+ end
14
+
15
+ module Defaults
16
+ module_function
17
+
18
+ def async_results_identifier
19
+ -> { ::SecureRandom.uuid }
20
+ end
21
+
22
+ def max_wait_time
23
+ if defined? ::Capybara
24
+ if ::Capybara.respond_to? :default_max_wait_time
25
+ ::Capybara.default_max_wait_time
26
+ else
27
+ ::Capybara.default_wait_time
28
+ end
29
+ elsif defined? ::Selenium::WebDriver::Wait::DEFAULT_TIMEOUT
30
+ ::Selenium::WebDriver::Wait::DEFAULT_TIMEOUT
31
+ else
32
+ 3
33
+ end
34
+ end
35
+
36
+ def wait_interval
37
+ if defined? ::Selenium::WebDriver::Wait::DEFAULT_INTERVAL
38
+ ::Selenium::WebDriver::Wait::DEFAULT_INTERVAL
39
+ else
40
+ 0.1
41
+ end
42
+ end
43
+ end
44
+
45
+ module ScriptWriter
46
+ module_function
47
+
48
+ def async_results_identifier
49
+ id = WebDriverScriptAdapter.async_results_identifier
50
+ "window['#{ id.respond_to?(:call) ? id.call : id }']"
51
+ end
52
+
53
+ def callback(resultsIdentifier)
54
+ "function(returnValue){ #{resultsIdentifier} = returnValue; }"
55
+ end
56
+
57
+ def async_wrapper(script, *args)
58
+ "(function(){ #{script} })(#{args.join(', ')});"
59
+ end
60
+ end
61
+
62
+ module Patiently
63
+ module_function
64
+
65
+ def wait_until
66
+ ::Timeout.timeout(WebDriverScriptAdapter.max_wait_time) do
67
+ sleep(WebDriverScriptAdapter.wait_interval) while (value = yield).nil?
68
+ value
69
+ end
70
+ end
71
+ end
72
+
73
+ class ExecuteAsyncScriptAdapter < ::DumbDelegator
74
+ def self.wrap(driver)
75
+ new ExecEvalScriptAdapter.wrap driver
76
+ end
77
+
78
+ def execute_async_script(script, *args)
79
+ results = ScriptWriter.async_results_identifier
80
+ execute_script ScriptWriter.async_wrapper(script, *args, ScriptWriter.callback(results))
81
+ Patiently.wait_until { evaluate_script results }
82
+ end
83
+ end
84
+
85
+ configure do |c|
86
+ c.async_results_identifier = Defaults.async_results_identifier
87
+ c.max_wait_time = Defaults.max_wait_time
88
+ c.wait_interval = Defaults.wait_interval
89
+ end
90
+ end
@@ -0,0 +1,25 @@
1
+ /*! aXe v1.0.1
2
+ * Copyright (c) 2015 Deque Systems, Inc.
3
+ *
4
+ * Your use of this Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+ *
8
+ * This entire copyright notice must appear in every copy of this file you
9
+ * distribute or in any file that contains substantial portions of this source
10
+ * code.
11
+ */
12
+ !function(a){function b(a){"use strict";var c,d,e=a;if(null!==a&&"object"==typeof a)if(Array.isArray(a))for(e=[],c=0,d=a.length;d>c;c++)e[c]=b(a[c]);else{e={};for(c in a)e[c]=b(a[c])}return e}function c(a){"use strict";this.reporter=a,this.rules=[],this.tools={}}function d(a){"use strict";this.id=a.id,this.data=null,this.relatedNodes=[],this.result=null}function e(a){"use strict";this.id=a.id,this.options=a.options,this.selector=a.selector,this.evaluate=a.evaluate,a.after&&(this.after=a.after),a.matches&&(this.matches=a.matches),this.enabled=a.hasOwnProperty("enabled")?a.enabled:!0}function f(a,b){"use strict";if(!R.isHidden(b)){var c=R.findBy(a.frames,"node",b);c||a.frames.push({node:b,include:[],exclude:[]})}}function g(a,b,c){"use strict";a.frames=a.frames||[];var d,e,f=document.querySelectorAll(c.shift());a:for(var g=0,h=f.length;h>g;g++){e=f[g];for(var i=0,j=a.frames.length;j>i;i++)if(a.frames[i].node===e){a.frames[i][b].push(c);break a}d={node:e,include:[],exclude:[]},c&&d[b].push(c),a.frames.push(d)}}function h(a){"use strict";if(a&&"object"==typeof a){if(a instanceof Node)return{include:[a],exclude:[]};if(a.hasOwnProperty("include")||a.hasOwnProperty("exclude"))return{include:a.include||[],exclude:a.exclude||[]};if(a.length===+a.length)return{include:a,exclude:[]}}return"string"==typeof a?{include:[a],exclude:[]}:{include:[],exclude:[]}}function i(a,b){"use strict";for(var c,d=[],e=0,h=a[b].length;h>e;e++){if(c=a[b][e],"string"==typeof c){d=d.concat(R.toArray(document.querySelectorAll(c)));break}c&&c.length?c.length>1?g(a,b,c):d=d.concat(R.toArray(document.querySelectorAll(c[0]))):d.push(c)}return d.filter(function(b){if(b){if("IFRAME"===b.nodeName||"FRAME"===b.nodeName)return f(a,b),!1;R.toArray(b.querySelectorAll("iframe, frame")).forEach(function(b){f(a,b)})}return b})}function j(a){"use strict";this.frames=[],this.page=a instanceof Node&&a.nodeType===Node.DOCUMENT_NODE||!a,this.initiator=a&&"boolean"==typeof a.initiator?a.initiator:!0,a=h(a),this.exclude=a.exclude,this.include=a.include,this.include=i(this,"include"),this.exclude=i(this,"exclude")}function k(a,b,c){"use strict";if(b=b||300,c=c||"...",a.length>b){var d=Math.floor((b-c.length)/2);a=a.slice(0,d)+c+a.slice(-d)}return a}function l(a,b){"use strict";b=b||{},this.selector=b.selector||[R.getSelector(a)],this.source=k(b.source||a.outerHTML),this.element=a}function m(a){"use strict";this.id=a.id,this.result=Q.constants.result.NA,this.pageLevel=a.pageLevel,this.impact=null,this.nodes=[]}function n(a,b){"use strict";var c,d;if(b.all)for(c=0,d=b.all.length;d>c;c++)a.all.push(new e(b.all[c]));if(b.none)for(c=0,d=b.none.length;d>c;c++)a.none.push(new e(b.none[c]));if(b.any)for(c=0,d=b.any.length;d>c;c++)a.any.push(new e(b.any[c]))}function o(a){"use strict";this.id=a.id,this.selector=a.selector||"*",this.excludeHidden="boolean"==typeof a.excludeHidden?a.excludeHidden:!0,this.enabled="boolean"==typeof a.enabled?a.enabled:!0,this.pageLevel="boolean"==typeof a.pageLevel?a.pageLevel:!1,this.any=[],this.all=[],this.none=[],n(this,a),this.tags=a.tags||[],a.matches&&(this.matches=a.matches)}function p(a){"use strict";return R.getAllChecks(a).filter(function(a){return"function"==typeof a.after})}function q(a,b){"use strict";var c=[];return a.forEach(function(a){var d=R.getAllChecks(a);d.forEach(function(a){a.id===b&&c.push(a)})}),c}function r(a){"use strict";return a.filter(function(a){return a.filtered!==!0})}function s(a){"use strict";var b=["any","all","none"],c=a.nodes.filter(function(a){var c=0;return b.forEach(function(b){a[b]=r(a[b]),c+=a[b].length}),c>0});return a.pageLevel&&c.length&&(c=[c.reduce(function(a,c){return a?(b.forEach(function(b){a[b].push.apply(a[b],c[b])}),a):void 0})]),c}function t(a){"use strict";a.source=a.source||{},this.id=a.id,this.options=a.options,this._run=a.source.run,this._cleanup=a.source.cleanup,this.active=!1}function u(a){"use strict";if(!Q._audit)throw new Error("No audit configured");var b=R.queue();Object.keys(Q._audit.tools).forEach(function(a){var c=Q._audit.tools[a];c.active&&b.defer(function(a){c.cleanup(a)})}),R.toArray(document.querySelectorAll("frame, iframe")).forEach(function(a){b.defer(function(b){return R.sendCommandToFrame(a,{command:"cleanup-tool"},b)})}),b.then(a)}function v(a,b){"use strict";var c=a&&a.context||{};c.include&&!c.include.length&&(c.include=[document]);var d=a&&a.options||{};switch(a.command){case"rules":return z(c,d,b);case"run-tool":return A(a.parameter,a.selectorArray,d,b);case"cleanup-tool":return u(b)}}function w(a){"use strict";var b=a||{};return b.rules=b.rules||[],b.tools=b.tools||[],b.data=b.data||{checks:{},rules:{}},b}function x(a){"use strict";if(T&&T.parentNode&&(T.parentNode.removeChild(T),T=null),a){var b=document.head||document.getElementsByTagName("head")[0];return T=document.createElement("style"),T.type="text/css",void 0===T.styleSheet?T.appendChild(document.createTextNode(a)):T.styleSheet.cssText=a,b.appendChild(T),T}}function y(a){"use strict";return"string"==typeof a&&V[a]?V[a]:"function"==typeof a?a:U}function z(a,b,c){"use strict";a=new j(a);var d=R.queue(),e=Q._audit;a.frames.length&&d.defer(function(c){R.collectResultsFromFrames(a,b,"rules",null,c)}),d.defer(function(c){e.run(a,b,c)}),d.then(function(d){var f=R.mergeResults(d.map(function(a){return{results:a}}));a.initiator&&(f=e.after(f,b),f=f.map(R.finalizeRuleResult)),c(f)})}function A(a,b,c,d){"use strict";if(!Q._audit)throw new Error("No audit configured");if(b.length>1){var e=document.querySelector(b.shift());return R.sendCommandToFrame(e,{options:c,command:"run-tool",parameter:a,selectorArray:b},d)}var f=document.querySelector(b.shift());Q._audit.tools[a].run(f,c,d)}function B(a,b){"use strict";Object.keys(Q.constants.raisedMetadata).forEach(function(c){var d=Q.constants.raisedMetadata[c],e=b.reduce(function(a,b){var e=d.indexOf(b[c]);return e>a?e:a},-1);d[e]&&(a[c]=d[e])})}function C(a){"use strict";var b=a.any.length||a.all.length||a.none.length;return b?Q.constants.result.FAIL:Q.constants.result.PASS}function D(a){"use strict";function b(a){return R.extendBlacklist({},a,["result"])}var c=R.extendBlacklist({violations:[],passes:[]},a,["nodes"]);return a.nodes.forEach(function(a){var d=R.getFailingChecks(a),e=C(d);return e===Q.constants.result.FAIL?(B(a,R.getAllChecks(d)),a.any=d.any.map(b),a.all=d.all.map(b),a.none=d.none.map(b),void c.violations.push(a)):(a.any=a.any.filter(function(a){return a.result}).map(b),a.all=a.all.map(b),a.none=a.none.map(b),void c.passes.push(a))}),B(c,c.violations),c.result=c.violations.length?Q.constants.result.FAIL:c.passes.length?Q.constants.result.PASS:c.result,c}function E(a){"use strict";for(var b=1,c=a.nodeName;a=a.previousElementSibling;)a.nodeName===c&&b++;return b}function F(a,b){"use strict";var c,d,e=a.parentNode.children;if(!e)return!1;var f=e.length;for(c=0;f>c;c++)if(d=e[c],d!==a&&R.matchesSelector(d,b))return!0;return!1}function G(a,b,c){"use strict";a.forEach(function(a){a.node.selector.unshift(c),a.node=new l(b,a.node);var d=R.getAllChecks(a);d.length&&d.forEach(function(a){a.relatedNodes.forEach(function(a){a.selector.unshift(c),a=new l(b,a)})})})}function H(a,b){"use strict";for(var c,d,e=b[0].node,f=0,g=a.length;g>f;f++)if(d=a[f].node,c=R.nodeSorter(d.element,e.element),c>0||0===c&&e.selector.length<d.selector.length)return void a.splice.apply(a,[f,0].concat(b));a.push.apply(a,b)}function I(a){"use strict";return a&&a.results?Array.isArray(a.results)?a.results.length?a.results:null:[a.results]:null}function J(a){"use strict";return a.sort(function(a,b){return R.contains(a,b)?1:-1})[0]}function K(a,b){"use strict";var c=b.include&&J(b.include.filter(function(b){return R.contains(b,a)})),d=b.exclude&&J(b.exclude.filter(function(b){return R.contains(b,a)}));return!d&&c||d&&R.contains(d,c)?!0:!1}function L(a,b,c){"use strict";for(var d=0,e=b.length;e>d;d++)-1===a.indexOf(b[d])&&K(b[d],c)&&a.push(b[d])}var M=function(){"use strict";function a(a){var b,c,d=a.Element.prototype,e=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],f=e.length;for(b=0;f>b;b++)if(c=e[b],d[c])return c}var b;return function(c,d){return b&&c[b]||(b=a(c.ownerDocument.defaultView)),c[b](d)}}(),N=function(a){"use strict";for(var b,c=String(a),d=c.length,e=-1,f="",g=c.charCodeAt(0);++e<d;){if(b=c.charCodeAt(e),0==b)throw new Error("INVALID_CHARACTER_ERR");f+=b>=1&&31>=b||b>=127&&159>=b||0==e&&b>=48&&57>=b||1==e&&b>=48&&57>=b&&45==g?"\\"+b.toString(16)+" ":(1!=e||45!=b||45!=g)&&(b>=128||45==b||95==b||b>=48&&57>=b||b>=65&&90>=b||b>=97&&122>=b)?c.charAt(e):"\\"+c.charAt(e)}return f};(function(){function a(a,b,c){var d=b&&c||0,e=0;for(b=b||[],a.toLowerCase().replace(/[0-9a-f]{2}/g,function(a){16>e&&(b[d+e++]=m[a])});16>e;)b[d+e++]=0;return b}function b(a,b){var c=b||0,d=l;return d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]}function c(a,c,d){var e=c&&d||0,f=c||[];a=a||{};var g=null!=a.clockseq?a.clockseq:q,h=null!=a.msecs?a.msecs:(new Date).getTime(),i=null!=a.nsecs?a.nsecs:s+1,j=h-r+(i-s)/1e4;if(0>j&&null==a.clockseq&&(g=g+1&16383),(0>j||h>r)&&null==a.nsecs&&(i=0),i>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");r=h,s=i,q=g,h+=122192928e5;var k=(1e4*(268435455&h)+i)%4294967296;f[e++]=k>>>24&255,f[e++]=k>>>16&255,f[e++]=k>>>8&255,f[e++]=255&k;var l=h/4294967296*1e4&268435455;f[e++]=l>>>8&255,f[e++]=255&l,f[e++]=l>>>24&15|16,f[e++]=l>>>16&255,f[e++]=g>>>8|128,f[e++]=255&g;for(var m=a.node||p,n=0;6>n;n++)f[e+n]=m[n];return c?c:b(f)}function d(a,c,d){var f=c&&d||0;"string"==typeof a&&(c="binary"==a?new k(16):null,a=null),a=a||{};var g=a.random||(a.rng||e)();if(g[6]=15&g[6]|64,g[8]=63&g[8]|128,c)for(var h=0;16>h;h++)c[f+h]=g[h];return c||b(g)}var e,f=this;if("function"==typeof f.require)try{var g=f.require("crypto").randomBytes;e=g&&function(){return g(16)}}catch(h){}if(!e&&f.crypto&&crypto.getRandomValues){var i=new Uint8Array(16);e=function(){return crypto.getRandomValues(i),i}}if(!e){var j=new Array(16);e=function(){for(var a,b=0;16>b;b++)0===(3&b)&&(a=4294967296*Math.random()),j[b]=a>>>((3&b)<<3)&255;return j}}for(var k="function"==typeof f.Buffer?f.Buffer:Array,l=[],m={},n=0;256>n;n++)l[n]=(n+256).toString(16).substr(1),m[l[n]]=n;var o=e(),p=[1|o[0],o[1],o[2],o[3],o[4],o[5]],q=16383&(o[6]<<8|o[7]),r=0,s=0,t=d;if(t.v1=c,t.v4=d,t.parse=a,t.unparse=b,t.BufferClass=k,"undefined"!=typeof module&&module.exports)module.exports=t;else if("function"==typeof P&&P.amd)P(function(){return t});else{var u=f.uuid;t.noConflict=function(){return f.uuid=u,t},f.uuid=t}}).call(this);var O,P,Q={},R={};R.matchesSelector=M,R.escapeSelector=N,R.clone=b;var S={};c.prototype.addRule=function(a){"use strict";for(var b,c=0,d=this.rules.length;d>c;c++)if(b=this.rules[c],b.id===a.id)return void(this.rules[c]=new o(a));this.rules.push(new o(a))},c.prototype.addTool=function(a){"use strict";this.tools[a.id]=new t(a)},c.prototype.run=function(a,b,c){"use strict";var d=R.queue();this.rules.forEach(function(c){R.ruleShouldRun(c,a,b)&&d.defer(function(d){c.run(a,b,d)})}),d.then(c)},c.prototype.after=function(a,b){"use strict";var c=this.rules;return a.map(function(a){var d=R.findBy(c,"id",a.id);return d.after(a,b)})},e.prototype.matches=function(a){"use strict";return!this.selector||R.matchesSelector(a,this.selector)?!0:!1},e.prototype.run=function(a,b,c){"use strict";b=b||{};var e=b.hasOwnProperty("enabled")?b.enabled:this.enabled,f=b.options||this.options;if(e&&this.matches(a)){var g,h=new d(this),i=R.checkHelper(h,c);try{g=this.evaluate.call(i,a,f)}catch(j){return Q.log(j.message,j.stack),void c(null)}i.isAsync||(h.result=g,setTimeout(function(){c(h)},0))}else c(null)},l.prototype.toJSON=function(){"use strict";return{selector:this.selector,source:this.source}},o.prototype.matches=function(){"use strict";return!0},o.prototype.gather=function(a){"use strict";var b=R.select(this.selector,a);return this.excludeHidden?b.filter(function(a){return!R.isHidden(a)}):b},o.prototype.runChecks=function(a,b,c,d){"use strict";var e=this,f=R.queue();this[a].forEach(function(a){var d=R.getCheckOption(a,e.id,c);f.defer(function(c){a.run(b,d,c)})}),f.then(function(b){b=b.filter(function(a){return a}),d({type:a,results:b})})},o.prototype.run=function(a,b,c){"use strict";var d,e=this.gather(a),f=R.queue(),g=this;d=new m(this),e.forEach(function(a){g.matches(a)&&f.defer(function(c){var e=R.queue();e.defer(function(c){g.runChecks("any",a,b,c)}),e.defer(function(c){g.runChecks("all",a,b,c)}),e.defer(function(c){g.runChecks("none",a,b,c)}),e.then(function(b){if(b.length){var e=!1,f={node:new l(a)};b.forEach(function(a){var b=a.results.filter(function(a){return a});f[a.type]=b,b.length&&(e=!0)}),e&&d.nodes.push(f)}c()})})}),f.then(function(){c(d)})},o.prototype.after=function(a,b){"use strict";var c=p(this),d=this.id;return c.forEach(function(c){var e=q(a.nodes,c.id),f=R.getCheckOption(c,d,b),g=c.after(e,f);e.forEach(function(a){-1===g.indexOf(a)&&(a.filtered=!0)})}),a.nodes=s(a),a},t.prototype.run=function(a,b,c){"use strict";b="undefined"==typeof b?this.options:b,this.active=!0,this._run(a,b,c)},t.prototype.cleanup=function(a){"use strict";this.active=!1,this._cleanup(a)},Q.constants={},Q.constants.result={PASS:"PASS",FAIL:"FAIL",NA:"NA"},Q.constants.raisedMetadata={impact:["minor","moderate","serious","critical"]},Q.version="dev",a.axe=Q,Q.log=function(){"use strict";"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},Q.cleanup=u,Q.configure=function(a){"use strict";var b=Q._audit;if(!b)throw new Error("No audit configured");a.reporter&&("function"==typeof a.reporter||V[a.reporter])&&(b.reporter=a.reporter)},Q.getRules=function(a){"use strict";a=a||[];var b=a.length?Q._audit.rules.filter(function(b){return!!a.filter(function(a){return-1!==b.tags.indexOf(a)}).length}):Q._audit.rules,c=Q._audit.data.rules||{};return b.map(function(a){var b=c[a.id]||{description:""};return{ruleId:a.id,description:b.description}})};var T;Q._load=function(a){"use strict";a=w(a),Q._audit=new c(a.reporter),O=a.commons,Q._audit.version=a.version;var b,d;for(b=0,d=a.rules.length;d>b;b++)Q._audit.addRule(a.rules[b]);for(b=0,d=a.tools.length;d>b;b++)Q._audit.addTool(a.tools[b]);Q._audit.data=a.data||{checks:{},rules:{}},x(a.style),R.respondable.subscribe("axe.ping",function(a,b){b({axe:!0})}),R.respondable.subscribe("axe.start",v)};var U,V={};Q.reporter=function(a,b,c){"use strict";V[a]=b,c&&(U=b)},Q.a11yCheck=function(a,b,c){"use strict";"function"==typeof b&&(c=b,b={}),b&&"object"==typeof b||(b={});var d=Q._audit;if(!d)throw new Error("No audit configured");var e=y(b.reporter||d.reporter);z(a,b,function(a){e(a,c)})},Q.tool=A,S.failureSummary=function(a){"use strict";var b={};return b.none=a.none.concat(a.all),b.any=a.any,Object.keys(b).map(function(a){return b[a].length?Q._audit.data.failureSummaries[a].failureMessage(b[a].map(function(a){return a.message||""})):void 0}).filter(function(a){return void 0!==a}).join("\n\n")},S.formatNode=function(a){"use strict";return{target:a?a.selector:null,html:a?a.source:null}},S.splitResults=function(a,b){"use strict";var c=[],d=[];return a.forEach(function(a){function e(c){var d=c.result||a.result,e=S.formatNode(c.node);return e.impact=c.impact||null,b(e,c,d)}var f,g={id:a.id,description:a.description,help:a.help,helpUrl:a.helpUrl||null,impact:null,tags:a.tags,nodes:[]};f=R.clone(g),f.impact=a.impact||null,f.nodes=a.violations.map(e),g.nodes=a.passes.map(e),f.nodes.length&&c.push(f),g.nodes.length&&d.push(g)}),{violations:c,passes:d,url:window.location.href,timestamp:new Date}},Q.reporter("raw",function(a,b){"use strict";b(a)}),Q.reporter("v1",function(a,b){"use strict";b(S.splitResults(a,function(a,b,c){return c===Q.constants.result.FAIL&&(a.failureSummary=S.failureSummary(b)),a}))}),Q.reporter("v2",function(a,b){"use strict";function c(a){return{id:a.id,impact:a.impact,message:a.message,data:a.data,relatedNodes:a.relatedNodes.map(S.formatNode)}}b(S.splitResults(a,function(a,b){return a.any=b.any.map(c),a.all=b.all.map(c),a.none=b.none.map(c),a}))},!0),R.checkHelper=function(a,b){"use strict";return{isAsync:!1,async:function(){return this.isAsync=!0,function(c){a.value=c,b(a)}},data:function(b){a.data=b},relatedNodes:function(b){b=Array.isArray(b)?b:[b],a.relatedNodes=b.map(function(a){return new l(a)})}}},R.sendCommandToFrame=function(a,b,c){"use strict";var d=a.contentWindow;if(!d)return Q.log("Frame does not have a content window",a),c({});var e=setTimeout(function(){e=setTimeout(function(){Q.log("No response from frame: ",a),c(null)},0)},500);R.respondable(d,"axe.ping",null,function(){clearTimeout(e),e=setTimeout(function(){Q.log("Error returning results from frame: ",a),c({}),c=null},3e4),R.respondable(d,"axe.start",b,function(a){c&&(clearTimeout(e),c(a))})})},R.collectResultsFromFrames=function(a,b,c,d,e){"use strict";function f(e){var f={options:b,command:c,parameter:d,context:{initiator:!1,page:a.page,include:e.include||[],exclude:e.exclude||[]}};g.defer(function(a){var b=e.node;R.sendCommandToFrame(b,f,function(c){return c?a({results:c,frameElement:b,frame:R.getSelector(b)}):void a(null)})})}for(var g=R.queue(),h=a.frames,i=0,j=h.length;j>i;i++)f(h[i]);g.then(function(a){e(R.mergeResults(a))})},R.contains=function(a,b){"use strict";return"function"==typeof a.contains?a.contains(b):!!(16&a.compareDocumentPosition(b))},R.extendBlacklist=function(a,b,c){"use strict";c=c||[];for(var d in b)b.hasOwnProperty(d)&&-1===c.indexOf(d)&&(a[d]=b[d]);return a},R.extendMetaData=function(a,b){"use strict";for(var c in b)if(b.hasOwnProperty(c))if("function"==typeof b[c])try{a[c]=b[c](a)}catch(d){a[c]=null}else a[c]=b[c]},R.getFailingChecks=function(a){"use strict";var b=a.any.filter(function(a){return!a.result});return{all:a.all.filter(function(a){return!a.result}),any:b.length===a.any.length?b:[],none:a.none.filter(function(a){return!!a.result})}},R.finalizeRuleResult=function(a){"use strict";return R.publishMetaData(a),D(a)},R.findBy=function(a,b,c){"use strict";a=a||[];var d,e;for(d=0,e=a.length;e>d;d++)if(a[d][b]===c)return a[d]},R.getAllChecks=function(a){"use strict";var b=[];return b.concat(a.any||[]).concat(a.all||[]).concat(a.none||[])},R.getCheckOption=function(a,b,c){"use strict";var d=((c.rules&&c.rules[b]||{}).checks||{})[a.id],e=(c.checks||{})[a.id],f=a.enabled,g=a.options;return e&&(e.hasOwnProperty("enabled")&&(f=e.enabled),e.hasOwnProperty("options")&&(g=e.options)),d&&(d.hasOwnProperty("enabled")&&(f=d.enabled),d.hasOwnProperty("options")&&(g=d.options)),{enabled:f,options:g}},R.getSelector=function(a){"use strict";function b(a){return R.escapeSelector(a)}for(var c,d=[];a.parentNode;){if(c="",a.id&&1===document.querySelectorAll("#"+R.escapeSelector(a.id)).length){d.unshift("#"+R.escapeSelector(a.id));break}if(a.className&&"string"==typeof a.className&&(c="."+a.className.trim().split(/\s+/).map(b).join("."),("."===c||F(a,c))&&(c="")),!c){if(c=R.escapeSelector(a.nodeName).toLowerCase(),"html"===c||"body"===c){d.unshift(c);break}F(a,c)&&(c+=":nth-of-type("+E(a)+")")}d.unshift(c),a=a.parentNode}return d.join(" > ")},R.isHidden=function(a,b){"use strict";if(9===a.nodeType)return!1;var c=a.ownerDocument.defaultView.getComputedStyle(a,null);return c&&a.parentNode&&"none"!==c.getPropertyValue("display")&&(b||"hidden"!==c.getPropertyValue("visibility"))&&"true"!==a.getAttribute("aria-hidden")?R.isHidden(a.parentNode,!0):!0},R.mergeResults=function(a){"use strict";var b=[];return a.forEach(function(a){var c=I(a);c&&c.length&&c.forEach(function(c){c.nodes&&a.frame&&G(c.nodes,a.frameElement,a.frame);var d=R.findBy(b,"id",c.id);d?c.nodes.length&&H(d.nodes,c.nodes):b.push(c)})}),b},R.nodeSorter=function(a,b){"use strict";return a===b?0:4&a.compareDocumentPosition(b)?-1:1},R.publishMetaData=function(a){"use strict";function b(a){return function(b){var d=c[b.id]||{},e=d.messages||{},f=R.extendBlacklist({},d,["messages"]);f.message=b.result===a?e.pass:e.fail,R.extendMetaData(b,f)}}var c=Q._audit.data.checks||{},d=Q._audit.data.rules||{},e=R.findBy(Q._audit.rules,"id",a.id)||{};a.tags=R.clone(e.tags||[]);var f=b(!0),g=b(!1);a.nodes.forEach(function(a){a.any.forEach(f),a.all.forEach(f),a.none.forEach(g)}),R.extendMetaData(a,R.clone(d[a.id]||{}))},function(){"use strict";function a(){}function b(){function b(){for(var a=e.length;a>f;f++){var b=e[f],d=b.shift();b.push(c(f)),d.apply(null,b)}}function c(a){return function(b){e[a]=b,--g||d()}}function d(){h(e)}var e=[],f=0,g=0,h=a;return{defer:function(a){e.push([a]),++g,b()},then:function(a){h=a,g||d()},abort:function(b){h=a,b(e)}}}R.queue=b}(),function(a){"use strict";function b(a){return"object"==typeof a&&"string"==typeof a.uuid&&a._respondable===!0}function c(a,b,c,d,e){var f={uuid:d,topic:b,message:c,_respondable:!0};g[d]=e,a.postMessage(JSON.stringify(f),"*")}function d(a,b,d,e){var f=uuid.v1();c(a,b,d,f,e)}function e(a,b){var c=b.topic,d=b.message,e=h[c];e&&e(d,f(a.source,null,b.uuid))}function f(a,b,d){return function(e,f){c(a,b,e,d,f)}}var g={},h={};d.subscribe=function(a,b){h[a]=b},window.addEventListener("message",function(a){if("string"==typeof a.data){var c;try{c=JSON.parse(a.data)}catch(d){}if(b(c)){var h=c.uuid;g[h]&&(g[h](c.message,f(a.source,c.topic,h)),g[h]=null),e(a,c)}}},!1),a.respondable=d}(R),R.ruleShouldRun=function(a,b,c){"use strict";if(a.pageLevel&&!b.page)return!1;var d=c.runOnly,e=(c.rules||{})[a.id];return d?"rule"===d.type?-1!==d.values.indexOf(a.id):!!(d.values||[]).filter(function(b){return-1!==a.tags.indexOf(b)}).length:(e&&e.hasOwnProperty("enabled")?e.enabled:a.enabled)?!0:!1},R.select=function(a,b){"use strict";for(var c=[],d=0,e=b.include.length;e>d;d++)L(c,b.include[d].querySelectorAll(a),b);return c.sort(R.nodeSorter)},R.toArray=function(a){"use strict";return Array.prototype.slice.call(a)},/*! aXe Rules v1.0.2
13
+ * Copyright (c) 2015 Deque Systems, Inc.
14
+ *
15
+ * Your use of this Source Code Form is subject to the terms of the Mozilla Public
16
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
17
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
18
+ *
19
+ * This entire copyright notice must appear in every copy of this file you
20
+ * distribute or in any file that contains substantial portions of this source
21
+ * code.
22
+ */
23
+ Q._load({data:{rules:{accesskeys:{description:"Ensures that each element on the page with an accesskey attribute has a unique value",helpUrl:"https://dequeuniversity.com/courses/html-css/robust-compatibility/markup-validation",help:"accesskey attribute value must be unique"},"area-alt":{helpUrl:"https://dequeuniversity.com/courses/html-css/images/image-maps",help:"Active <area> elements need alternate text",description:"Checks the <area> elements of image maps to ensure that they have an alternative text"},"aria-allowed-attr":{helpUrl:"https://dequeuniversity.com/issues/aria-allowed-attr",help:"ARIA attributes not allowed for role assigned to this element",description:"Checks all attributes that start with 'aria-' to ensure that they are all official WAI-ARIA attributes"},"aria-required-attr":{description:"Checks all elements that contain WAI-ARIA roles to ensure that all required aria- attributes are present",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/special-input-attributes",help:"ARIA attribute not provided for element with given role"},"aria-required-children":{helpUrl:"https://dequeuniversity.com/issues/aria-required-children",description:"Checks all elements that contain a WAI-ARIA role to ensure that all required children roles are present",help:"Certain ARIA roles must contain particular children"},"aria-required-parent":{helpUrl:"https://dequeuniversity.com/issues/aria-required-parent",description:"Checks all elements that contain a WAI-ARIA role to ensure that all required parent roles are present",help:"Certain ARIA roles must be contained by particular parents"},"aria-roles":{description:"Checks all elements that contain the WAI-ARIA role attribute to ensure that the role value is valid",help:"ARIA roles used must conform to valid values",helpUrl:"https://dequeuniversity.com/issues/aria-roles"},"aria-valid-attr-value":{helpUrl:"https://dequeuniversity.com/issues/aria-valid-attr-value",description:"Checks all elements that contain WAI-ARIA atributes to ensure that the values of the attributes are valid",help:"ARIA attributes used must conform to valid values"},"aria-valid-attr":{helpUrl:"https://dequeuniversity.com/issues/aria-valid-attr",description:"Checks all elements that contain WAI-ARIA attributes to ensure that the attributes are valid attributes",help:"ARIA attributes used must conform to valid names"},"audio-caption":{helpUrl:"https://dequeuniversity.com/issues/audio-caption",description:"Checks the use of all <audio> element to ensure that the element contains a <caption> element",help:"HTML5 <audio> elements need a captions track"},blink:{description:"Checks to make sure that the <blink> tag is never used",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/fonts-and-typography#id55_avoid_blink_marquee",help:"The <blink> tag is deprecated and must not be used"},"button-name":{description:"Checks all <button> elements to ensure that they have a discernable accessible name",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels#id84_example_button",help:"<button> elements must have alternate text"},bypass:{description:"Ensures that each page has at least one mechanism for a keyboard-only user to bypass the navigation and jump straight to the content",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/",help:"Page must have means to bypass content"},checkboxgroup:{description:"Ensures that all checkbox groups have a group and that that group designation is consistent",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels#id84_labels_for_checkboxes",help:"Checkbox inputs with the same name must be part of a group"},"color-contrast":{description:"Checks all elements to ensure that the contrast between the foreground and the background meets the WCAG 2 AA contrast ratio thresholds.",help:"Elements must have sufficient color contrast",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/color-contrast"},"data-table":{description:"Checks that data tables are marked up semantically and have the correct header structure",helpUrl:"https://dequeuniversity.com/courses/html-css/data-tables/",help:"Data tables should be marked up properly"},"definition-list":{description:"Ensures that all <dl> elements are structured correctly",help:"<dl> elements must contain properly-ordered <dt> and <dd> elements",helpUrl:"https://dequeuniversity.com/issues/definition-list"},dlitem:{helpUrl:"https://dequeuniversity.com/issues/dlitem",description:"Ensures that all <dd> and <dt> elements have a <dl> as a parent",help:"<dd> and <dt> elements must be contained in a <dl>"},"document-title":{description:"Ensures that each HTML document contains a title",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/page-title",help:"Documents must have <title> element to aid in navigation"},"duplicate-id":{description:"Ensures that each element on the page with an ID attribute has a unique ID attribute value",helpUrl:"https://dequeuniversity.com/courses/html-css/robust-compatibility/markup-validation",help:"ID attribute value must be unique"},"empty-heading":{helpUrl:"https://dequeuniversity.com/issues/empty-heading",description:"Ensures that headings on the page do not contain empty text",help:"Headings should not be empty"},"frame-title":{description:"Ensure that all iframe and frame elements contain a unique and non-empty title attribute",helpUrl:"https://dequeuniversity.com/courses/html-css/frames/titles",help:"Frames must have unique title attribute"},"heading-order":{description:"Ensure that the order in which the headings appear in the DOM is semantically correct",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/headings#id37_use_headings_in_order",help:"Heading levels must only increase by one"},"html-lang":{description:"Ensures that every HTML document has a lang attribute and that it contains a valid value",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/language",help:"documentElement (<html>) must have a valid 'lang' attribute"},"image-alt":{description:"Ensures that every <img> element has alternative text or is marked as presentational",helpUrl:"https://dequeuniversity.com/courses/html-css/images/alt-text",help:"Images must have alternate text"},"input-image-alt":{description:"Ensures that every <input> that represents an image button has an accessible name",helpUrl:"https://dequeuniversity.com/courses/html-css/images/alt-text#id57_active_images_links_and_buttons",help:"Image buttons must have alternate text"},"label-title-only":{description:"Ensures that every <input> that requires a label is not only labeled using the title attribute",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels",help:"Only title or aria-describedby used to generate label for form element"},label:{description:"Ensures that every input element that requires a label, has an appropriate label",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels",help:"Form elements must have labels"},"layout-table":{description:"Ensures that <table> elements that are being used for layout do not contain markup only relevant for data tables",help:"Layout tables must not use data table elements",helpUrl:"https://dequeuniversity.com/courses/html-css/data-tables/"},"link-name":{description:"Ensures that every link has an accessible name",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/links",help:"Links must have alternate text"},list:{description:"Ensures that lists are structured correctly",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/lists-links-blockquote#id38_lists",help:"<ul> and <ol> lists must contain only <li> listitems"},listitem:{description:"Ensures that every list item is used semantically",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/lists-links-blockquote#id38_lists",help:"All <li> elements must be contained in a <ul> or <ol>"},marquee:{description:"Ensures that the deprecated <marquee> tag is not used",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/fonts-and-typography#id55_avoid_blink_marquee",help:"<marquee> elements are deprecated and must not be used"},"meta-refresh":{description:"Ensures that <meta> refresh is not used",help:"Timed refresh must not exist"},"meta-viewport":{description:"Ensures that when <meta> viewport is used, it does not cause text scaling problems",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/fonts-and-typography#id55_ensure_text_resize_to_200_percent",help:"Zooming and scaling must not disabled"},"object-alt":{description:"Ensures that every <object> element has a text alternative",help:"An embedded object must have a text alternative",helpUrl:"https://dequeuniversity.com/issues/object-alt"},radiogroup:{description:"Ensures that radio button groups are part of a group structure",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels#id84_labels_for_radio_buttons",help:"Radio inputs with the same name must be part of a group"},region:{description:"Ensures that all content on a page is contained within a landmark region",help:"Content must be contained in a region",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/html5-aria-landmarks"},scope:{description:"Ensures that the scope attribute is used correctly on tables",helpUrl:"https://dequeuniversity.com/courses/html-css/data-tables/row-and-column-headers#id81_associate_header_cells_with_data_cells",help:"scope attribute is used correctly"},"server-side-image-map":{description:"Ensures that server-side image maps are never used",helpUrl:"https://dequeuniversity.com/courses/html-css/images/image-maps#id63_avoid_use_of_server_side_image_maps",help:"Server-side image maps should not be used"},"skip-link":{description:"Ensures that the best practice of having a skip link as the very first link in a page, is adhered-to",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/skip-navigation",help:"The page must have a skip link as its first link"},tabindex:{description:"Ensures that explicit tabindex attributes that are greater than 0 are never used",helpUrl:"https://dequeuniversity.com/courses/html-css/device-independence/keyboard-tab-order",help:"Elements must not have tabindex greater than zero"},"valid-lang":{description:"Ensures that when the 'lang' attribute is used, it has a valid value",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/language#id35__language_codes",help:"lang attribute must have a valid value"},"video-caption":{description:"Ensures that the HTML5 <video> tag is captioned",helpUrl:"https://dequeuniversity.com/courses/html-css/video-audio-multimedia/",help:"HTML5 video elements need captions"},"video-description":{description:"Ensures that every <video> tag has an audio description",helpUrl:"https://dequeuniversity.com/courses/html-css/video-audio-multimedia/",help:"HTML5 video elements need an audio description track"}},checks:{accesskeys:{impact:"critical",messages:{pass:function(a){var b="Accesskey attribute value is unique";return b},fail:function(a){var b="Document has multiple elements with the same accesskey";return b}}},"non-empty-alt":{impact:"critical",messages:{pass:function(a){var b="Element has a non-empty alt attribute";return b},fail:function(a){var b="Element has no alt attribute or the alt attribute is empty";return b}}},"aria-label":{impact:"critical",messages:{pass:function(a){var b="aria-label attribute exists and is not empty";return b},fail:function(a){var b="aria-label attribute does not exist or is empty";return b}}},"aria-labelledby":{impact:"critical",messages:{pass:function(a){var b="aria-labelledby attribute exists and references elements that are visible to screen readers";return b},fail:function(a){var b="aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible";return b}}},"aria-allowed-attr":{impact:"critical",messages:{pass:function(a){var b="ARIA attributes are used correctly for the defined role";return b},fail:function(a){var b="ARIA attribute"+(a.data&&a.data.length>1?"s are":" is")+" not allowed:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-required-attr":{impact:"critical",messages:{pass:function(a){var b="All required ARIA attributes are present";return b},fail:function(a){var b="Required ARIA attribute"+(a.data&&a.data.length>1?"s":"")+" not present:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-required-children":{impact:"critical",messages:{pass:function(a){var b="Required ARIA children are present";return b},fail:function(a){var b="Required ARIA "+(a.data&&a.data.length>1?"children":"child")+" role not present:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-required-parent":{impact:"critical",messages:{pass:function(a){var b="Required ARIA parent role present";return b},fail:function(a){var b="Required ARIA parent"+(a.data&&a.data.length>1?"s":"")+" role not present:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},invalidrole:{impact:"critical",messages:{pass:function(a){var b="ARIA role is valid";return b},fail:function(a){var b="Role must be one of the valid ARIA roles";return b}}},abstractrole:{impact:"serious",messages:{pass:function(a){var b="Abstract roles are not used";return b},fail:function(a){var b="Abstract roles cannot be directly used";return b}}},"aria-valid-attr-value":{impact:"critical",messages:{pass:function(a){var b="ARIA attribute values are valid";return b},fail:function(a){var b="Invalid ARIA attribute value"+(a.data&&a.data.length>1?"s":"")+":",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-valid-attr":{impact:"critical",messages:{pass:function(a){var b="ARIA attribute name"+(a.data&&a.data.length>1?"s":"")+" are valid";return b},fail:function(a){var b="Invalid ARIA attribute name"+(a.data&&a.data.length>1?"s":"")+":",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},caption:{impact:"critical",messages:{pass:function(a){var b="The multimedia element has a captions track";return b},fail:function(a){var b="The multimedia element does not have a captions track";return b}}},exists:{impact:"minor",messages:{pass:function(a){var b="Element does not exist";return b},fail:function(a){var b="Element exists";return b}}},"non-empty-if-present":{impact:"critical",messages:{pass:function(a){var b="Element ";return b+=a.data?"has a non-empty value attribute":"does not have a value attribute"},fail:function(a){var b="Element has a value attribute and the value attribute is empty";return b}}},"non-empty-value":{impact:"critical",messages:{pass:function(a){var b="Element has a non-empty value attribute";return b},fail:function(a){var b="Element has no value attribute or the value attribute is empty";return b}}},"button-has-visible-text":{impact:"critical",messages:{pass:function(a){var b="Element has inner text that is visible to screen readers";return b},fail:function(a){var b="Element does not have inner text that is visible to screen readers";return b}}},"role-presentation":{impact:"moderate",messages:{pass:function(a){var b='Element\'s default semantics were overriden with role="presentation"';return b},fail:function(a){var b='Element\'s default semantics were not overridden with role="presentation"';return b}}},"duplicate-img-label":{impact:"minor",messages:{pass:function(a){var b="Element does not duplicate existing text in <img> alt text";return b},fail:function(a){var b="Element contains <img> element with alt text that duplicates existing text";return b}}},"focusable-no-name":{impact:"serious",messages:{pass:function(a){var b="Element is not in tab order or has accessible text";return b},fail:function(a){var b="Element is in tab order and does not have accessible text";return b}}},"internal-link-present":{impact:"critical",messages:{pass:function(a){var b="Valid skip link found";return b},fail:function(a){var b="No valid skip link found";return b}}},"header-present":{impact:"moderate",messages:{pass:function(a){var b="Page has a header";return b},fail:function(a){var b="Page does not have a header";return b}}},landmark:{impact:"serious",messages:{pass:function(a){var b="Page has a landmark region";return b},fail:function(a){var b="Page does not have a landmark region";return b}}},"group-labelledby":{impact:"critical",messages:{pass:function(a){var b='All elements with the name "'+a.data.name+'" reference the same element with aria-labelledby';return b},fail:function(a){var b='All elements with the name "'+a.data.name+'" do not reference the same element with aria-labelledby';return b}}},fieldset:{impact:"critical",messages:{pass:function(a){var b="Element is contained in a fieldset";return b},fail:function(a){var b="";return a.data&&a.data.failureCode?"no-legend"===a.data.failureCode?b+="Fieldset does not have a legend as its first child":"empty-legend"===a.data.failureCode?b+="Legend does not have text that is visible to screen readers":"mixed-inputs"===a.data.failureCode?b+="Fieldset contains unrelated inputs":"no-group-label"===a.data.failureCode?b+="ARIA group does not have aria-label or aria-labelledby":"group-mixed-inputs"===a.data.failureCode&&(b+="ARIA group contains unrelated inputs"):b+="Element does not have a containing fieldset or ARIA group",b}}},"color-contrast":{impact:"critical",messages:{pass:function(a){var b="";return b+=a.data&&a.data.contrastRatio?"Element has sufficient color contrast of "+a.data.contrastRatio:"Unable to determine contrast ratio"},fail:function(a){var b="Element has insufficient color contrast of "+a.data.contrastRatio+" (foreground color: "+a.data.fgColor+", background color: "+a.data.bgColor+", font size: "+a.data.fontSize+", font weight: "+a.data.fontWeight+")";return b}}},"consistent-columns":{impact:"critical",messages:{pass:function(a){var b="Table has consistent column widths";return b},fail:function(a){var b="Table does not have the same number of columns in every row";return b}}},"cell-no-header":{impact:"critical",messages:{pass:function(a){var b="All data cells have table headers";return b},fail:function(a){var b="Some data cells do not have table headers";return b}}},"headers-visible-text":{impact:"critical",messages:{pass:function(a){var b="Header cell has visible text";return b},fail:function(a){var b="Header cell does not have visible text";return b}}},"headers-attr-reference":{impact:"critical",messages:{pass:function(a){var b="headers attribute references elements that are visible to screen readers";return b},fail:function(a){var b="headers attribute references element that is not visible to screen readers";return b}}},"th-scope":{impact:"serious",messages:{pass:function(a){var b="<th> elements use scope attribute";return b},fail:function(a){var b="<th> elements must use scope attribute";return b}}},"no-caption":{impact:"serious",messages:{pass:function(a){var b="Table has a <caption>";return b},fail:function(a){var b="Table does not have a <caption>";return b}}},"th-headers-attr":{impact:"serious",messages:{pass:function(a){var b="<th> elements do not use headers attribute";return b},fail:function(a){var b="<th> elements should not use headers attribute";return b}}},"th-single-row-column":{impact:"serious",messages:{pass:function(a){var b="<th> elements are used when there is only a single row and single column of headers";return b},fail:function(a){var b="<th> elements should only be used when there is a single row and single column of headers";return b}}},"same-caption-summary":{impact:"moderate",messages:{pass:function(a){var b="Content of summary attribute and <caption> are not duplicated";return b},fail:function(a){var b="Content of summary attribute and <caption> element are indentical";return b}}},rowspan:{impact:"critical",messages:{pass:function(a){var b="Table does not have cells with rowspan attribute greater than 1";return b},fail:function(a){var b="Table has cells whose rowspan attribute is not equal to 1";return b}}},"has-dlitems":{impact:"serious",messages:{pass:function(a){var b="Element has both <dt> and <dd> elements";return b},fail:function(a){var b="Element does not have at least one <dt> element followed by at least one <dd> element";return b}}},"only-dlitems":{impact:"serious",messages:{pass:function(a){var b="Element only has children that are <dt> or <dd> elements";return b},fail:function(a){var b="Element has children that are not <dt> or <dd> elements";return b}}},dlitem:{impact:"serious",messages:{pass:function(a){var b="Description list item has a <dl> parent element";return b},fail:function(a){var b="Description list item does not have a <dl> parent element";return b}}},"doc-has-title":{impact:"moderate",messages:{pass:function(a){var b="Document has a non-empty <title> element";return b},fail:function(a){var b="Document does not have a non-empty <title> element";return b}}},"duplicate-id":{impact:"critical",messages:{pass:function(a){var b="Document has no elements that share the same id attribute";return b},fail:function(a){var b="Document has multiple elements with the same id attribute";return b}}},"has-visible-text":{impact:"critical",messages:{pass:function(a){var b="Element has text that is visible to screen readers";return b},fail:function(a){var b="Element does not have text that is visible to screen readers";return b}}},"non-empty-title":{impact:"critical",messages:{pass:function(a){var b="Element has a title attribute";return b},fail:function(a){var b="Element has no title attribute or the title attribute is empty";return b}}},"unique-frame-title":{impact:"serious",messages:{pass:function(a){var b="Element's title attribute is unique";return b},fail:function(a){var b="Element's title attribute is not unique";return b}}},"heading-order":{impact:"minor",messages:{pass:function(a){var b="Heading order valid";return b},fail:function(a){var b="Heading order invalid";return b}}},"has-lang":{impact:"serious",messages:{pass:function(a){var b="The <html> element has a lang attribute";return b},fail:function(a){var b="The <html> element does not have a lang attribute";return b}}},"valid-lang":{impact:"serious",messages:{pass:function(a){var b="Value of lang attribute is included in the list of allowable languages";return b},fail:function(a){var b="Value of lang attribute not included in the list of allowable languages";return b}}},"has-alt":{impact:"critical",messages:{pass:function(a){var b="Element has an alt attribute";return b},fail:function(a){var b="Element does not have an alt attribute";return b}}},"title-only":{impact:"serious",messages:{pass:function(a){var b="Form element does not solely use title attribute for its label";return b},fail:function(a){var b="Only title used to generate label for form element";return b}}},"implicit-label":{impact:"critical",messages:{pass:function(a){var b="Form element has an implicit (wrapped) <label>";return b},fail:function(a){var b="Form element does not have an implicit (wrapped) <label>";return b}}},"explicit-label":{impact:"critical",messages:{pass:function(a){var b="Form element has an explicit <label>";return b},fail:function(a){var b="Form element does not have an explicit <label>";return b}}},"help-same-as-label":{impact:"minor",messages:{pass:function(a){var b="Help text (title or aria-describedby) does not duplicate label text";return b},fail:function(a){var b="Help text (title or aria-describedby) text is the same as the label text";return b}}},"multiple-label":{impact:"serious",messages:{pass:function(a){var b="Form element does not have multiple <label> elements";return b},fail:function(a){var b="Form element has multiple <label> elements";return b}}},"has-th":{impact:"serious",messages:{pass:function(a){var b="Layout table does not use <th> elements";return b},fail:function(a){var b="Layout table uses <th> elements";return b}}},"has-caption":{impact:"serious",messages:{pass:function(a){var b="Layout table does not use <caption> element";return b},fail:function(a){var b="Layout table uses <caption> element";return b}}},"has-summary":{impact:"serious",messages:{pass:function(a){var b="Layout table does not use summary attribute";return b},fail:function(a){var b="Layout table uses summary attribute";return b}}},"has-listitem":{impact:"minor",messages:{pass:function(a){var b="List element contains a <li> element";return b},fail:function(a){var b="List element does not contain a <li> element";return b}}},"only-listitems":{impact:"serious",messages:{pass:function(a){var b="List element only has children that are <li> elements";return b},fail:function(a){var b="List element has children that are not <li> elements";return b}}},listitem:{impact:"critical",messages:{pass:function(a){var b="List item has a <ul> or <ol> parent element";return b},fail:function(a){var b="List item does not have a <ul> or <ol> parent element";return b}}},"meta-refresh":{impact:"critical",messages:{pass:function(a){var b="<meta> tag does not immediately refresh the page";return b},fail:function(a){var b="<meta> tag forces timed refresh of page";return b}}},"meta-viewport":{impact:"critical",messages:{pass:function(a){var b="<meta> tag does not disable zooming";return b},fail:function(a){var b="<meta> tag disables zooming";return b}}},region:{impact:"moderate",messages:{pass:function(a){var b="Content contained by ARIA landmark";return b},fail:function(a){var b="Content not contained by an ARIA landmark";return b}}},"html5-scope":{impact:"serious",messages:{pass:function(a){var b="Scope attribute is only used on table header elements (<th>)";return b},fail:function(a){var b="In HTML 5, scope attributes may only be used on table header elements (<th>)";return b}}},"html4-scope":{impact:"serious",messages:{pass:function(a){var b="Scope attribute is only used on table cell elements (<th> and <td>)";return b},fail:function(a){var b="In HTML 4, the scope attribute may only be used on table cell elements (<th> and <td>)";return b}}},"scope-value":{impact:"critical",messages:{pass:function(a){var b="Scope attribute is used correctly";return b},fail:function(a){var b="The value of the scope attribute may only be 'row' or 'col'";return b}}},"skip-link":{impact:"critical",messages:{pass:function(a){var b="Valid skip link found";return b},fail:function(a){var b="No valid skip link found";return b}}},tabindex:{impact:"serious",messages:{pass:function(a){var b="Element does not have a tabindex greater than 0";return b},fail:function(a){var b="Element has a tabindex greater than 0";return b}}},description:{impact:"serious",messages:{pass:function(a){var b="The multimedia element has an audio description track";return b},fail:function(a){var b="The multimedia element does not have an audio description track";return b}}}},failureSummaries:{any:{failureMessage:function(a){var b="Fix any of the following:",c=a;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+="\n "+d.split("\n").join("\n ");return b}},none:{failureMessage:function(a){var b="Fix all of the following:",c=a;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+="\n "+d.split("\n").join("\n ");return b}}}},rules:[{id:"accesskeys",selector:"[accesskey]",tags:["wcag2a","wcag211"],all:[],any:[],none:[{id:"accesskeys",evaluate:function(a,b){return this.data(a.getAttribute("accesskey")),this.relatedNodes([a]),!0},after:function(a,b){var c={};return a.filter(function(a){return c[a.data]?(c[a.data].relatedNodes.push(a.relatedNodes[0]),!1):(c[a.data]=a,a.relatedNodes=[],!0)}).map(function(a){return a.result=!!a.relatedNodes.length,a})}}]},{id:"area-alt",selector:"map area[href]",excludeHidden:!1,tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"non-empty-alt",evaluate:function(a,b){var c=a.getAttribute("alt");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}}],none:[]},{id:"aria-allowed-attr",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-allowed-attr",matches:function(a){var b=a.getAttribute("role");b||(b=O.aria.implicitRole(a));var c=O.aria.allowedAttr(b);if(b&&c){var d=/^aria-/;if(a.hasAttributes())for(var e=a.attributes,f=0,g=e.length;g>f;f++)if(d.test(e[f].nodeName))return!0}return!1},evaluate:function(a,b){var c,d,e,f=[],g=a.getAttribute("role"),h=a.attributes;if(g||(g=O.aria.implicitRole(a)),e=O.aria.allowedAttr(g),g&&e)for(var i=0,j=h.length;j>i;i++)c=h[i],d=c.nodeName,O.aria.validateAttr(d)&&-1===e.indexOf(d)&&f.push(d+'="'+c.nodeValue+'"');return f.length?(this.data(f),!1):!0}}],none:[]},{id:"aria-required-attr",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-required-attr",evaluate:function(a,b){var c=[];if(a.hasAttributes()){var d,e=a.getAttribute("role"),f=O.aria.requiredAttr(e);if(e&&f)for(var g=0,h=f.length;h>g;g++)d=f[g],a.getAttribute(d)||c.push(d)}return c.length?(this.data(c),!1):!0}}],none:[]},{id:"aria-required-children",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-required-children",evaluate:function(a,b){function c(a,b,c){if(null===a)return!1;var d=g(b),e=['[role="'+b+'"]'];return d&&(e=e.concat(d)),e=e.join(","),c?h(a,e)||!!a.querySelector(e):!!a.querySelector(e)}function d(a,b){var d,e;for(d=0,e=a.length;e>d;d++)if(null!==a[d]&&c(a[d],b,!0))return!0;return!1}function e(a,b,e){var f,g=b.length,h=[],j=i(a,"aria-owns");for(f=0;g>f;f++){var k=b[f];if(c(a,k)||d(j,k)){if(!e)return null}else e&&h.push(k)}return h.length?h:!e&&b.length?b:null}var f=O.aria.requiredOwned,g=O.aria.implicitNodes,h=O.utils.matchesSelector,i=O.dom.idrefs,j=a.getAttribute("role"),k=f(j);if(!k)return!0;var l=!1,m=k.one;if(!m){var l=!0;m=k.all}var n=e(a,m,l);return n?(this.data(n),!1):!0}}],none:[]},{id:"aria-required-parent",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-required-parent",evaluate:function(a,b){function c(a){var b=O.aria.implicitNodes(a)||[];return b.concat('[role="'+a+'"]').join(",")}function d(a,b,d){var e,f,g=a.getAttribute("role"),h=[];if(b||(b=O.aria.requiredContext(g)),!b)return null;for(e=0,f=b.length;f>e;e++){if(d&&O.utils.matchesSelector(a,c(b[e])))return null;if(O.dom.findUp(a,c(b[e])))return null;h.push(b[e])}return h}function e(a){for(var b=[],c=null;a;)a.id&&(c=a.ownerDocument.querySelector("[aria-owns~="+O.utils.escapeSelector(a.id)+"]"),c&&b.push(c)),a=a.parentNode;return b.length?b:null}var f=d(a);if(!f)return!0;var g=e(a);if(g)for(var h=0,i=g.length;i>h;h++)if(f=d(g[h],f,!0),!f)return!0;return this.data(f),!1}}],none:[]},{id:"aria-roles",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[],none:[{id:"invalidrole",evaluate:function(a,b){return!O.aria.isValidRole(a.getAttribute("role"))}},{id:"abstractrole",evaluate:function(a,b){return"abstract"===O.aria.getRoleType(a.getAttribute("role"))}}]},{id:"aria-valid-attr-value",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-valid-attr-value",matches:function(a){var b=/^aria-/;if(a.hasAttributes())for(var c=a.attributes,d=0,e=c.length;e>d;d++)if(b.test(c[d].nodeName))return!0;return!1},evaluate:function(a,b){b=Array.isArray(b)?b:[];for(var c,d,e=[],f=/^aria-/,g=a.attributes,h=0,i=g.length;i>h;h++)c=g[h],d=c.nodeName,-1===b.indexOf(d)&&f.test(d)&&!O.aria.validateAttrValue(a,d)&&e.push(d+'="'+c.nodeValue+'"');return e.length?(this.data(e),!1):!0},options:[]}],none:[]},{id:"aria-valid-attr",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-valid-attr",matches:function(a){var b=/^aria-/;if(a.hasAttributes())for(var c=a.attributes,d=0,e=c.length;e>d;d++)if(b.test(c[d].nodeName))return!0;return!1},evaluate:function(a,b){
24
+ b=Array.isArray(b)?b:[];for(var c,d=[],e=/^aria-/,f=a.attributes,g=0,h=f.length;h>g;g++)c=f[g].nodeName,-1===b.indexOf(c)&&e.test(c)&&!O.aria.validateAttr(c)&&d.push(c);return d.length?(this.data(d),!1):!0},options:[]}],none:[]},{id:"audio-caption",selector:"audio",excludeHidden:!1,tags:["wcag2a","wcag122","section508","section508a"],all:[],any:[],none:[{id:"caption",evaluate:function(a,b){return!a.querySelector("track[kind=captions]")}}]},{id:"blink",selector:"blink",tags:["wcag2a","wcag411"],all:[],any:[],none:[{id:"exists",evaluate:function(a,b){return!0}}]},{id:"button-name",selector:'button, [role="button"], input[type="button"], input[type="submit"], input[type="reset"]',tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"non-empty-if-present",evaluate:function(a,b){var c=a.getAttribute("value");return this.data(c),null===c||""!==O.text.sanitize(c).trim()},selector:'[type="submit"], [type="reset"]'},{id:"non-empty-value",evaluate:function(a,b){var c=a.getAttribute("value");return!!(c?O.text.sanitize(c).trim():"")},selector:'[type="button"]'},{id:"button-has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0},selector:'button, [role="button"]:not(input)'},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"role-presentation",evaluate:function(a,b){return"presentation"===a.getAttribute("role")}}],none:[{id:"duplicate-img-label",evaluate:function(a,b){for(var c=a.querySelectorAll("img"),d=O.text.visible(a,!0),e=0,f=c.length;f>e;e++){var g=O.text.accessibleText(c[e]);if(g===d&&""!==d)return!0}return!1},enabled:!1},{id:"focusable-no-name",evaluate:function(a,b){var c=a.getAttribute("tabindex"),d=O.dom.isFocusable(a)&&c>-1;return d?!O.text.accessibleText(a):!1}}]},{id:"bypass",selector:"html",pageLevel:!0,matches:function(a){return!!a.querySelector("a[href]")},tags:["wcag2a","wcag241","section508","section508o"],all:[],any:[{id:"internal-link-present",selector:"html",evaluate:function(a,b){return!!a.querySelector('a[href^="#"]')}},{id:"header-present",selector:"html",evaluate:function(a,b){return!!a.querySelector('h1, h2, h3, h4, h5, h6, [role="heading"]')}},{id:"landmark",selector:"html",evaluate:function(a,b){return!!a.querySelector('[role="main"]')}}],none:[]},{id:"checkboxgroup",selector:"input[type=checkbox][name]",tags:["wcag2a","wcag131"],all:[],any:[{id:"group-labelledby",evaluate:function(a,b){this.data({name:a.getAttribute("name"),type:a.getAttribute("type")});var c=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+O.utils.escapeSelector(a.name)+'"]');return c.length<=1?!0:0!==[].map.call(c,function(a){var b=a.getAttribute("aria-labelledby");return b?b.split(/\s+/):[]}).reduce(function(a,b){return a.filter(function(a){return-1!==b.indexOf(a)})}).filter(function(b){var c=a.ownerDocument.getElementById(b);return c&&O.text.accessibleText(c)}).length},after:function(a,b){var c={};return a.filter(function(a){var b=a.data;return b&&(c[b.type]=c[b.type]||{},!c[b.type][b.name])?(c[b.type][b.name]=!0,!0):!1})}},{id:"fieldset",evaluate:function(a,b){function c(a,b){return O.utils.toArray(a.querySelectorAll('select,textarea,button,input:not([name="'+b+'"]):not([type="hidden"])'))}function d(a,b){var d=a.firstElementChild;if(!d||"LEGEND"!==d.nodeName)return i.relatedNodes([a]),h="no-legend",!1;if(!O.text.accessibleText(d))return i.relatedNodes([d]),h="empty-legend",!1;var e=c(a,b);return e.length?(i.relatedNodes(e),h="mixed-inputs",!1):!0}function e(a,b){var d=O.dom.idrefs(a,"aria-labelledby").some(function(a){return a&&O.text.accessibleText(a)}),e=a.getAttribute("aria-label");if(!(d||e&&O.text.sanitize(e)))return i.relatedNodes(a),h="no-group-label",!1;var f=c(a,b);return f.length?(i.relatedNodes(f),h="group-mixed-inputs",!1):!0}function f(a,b){return O.utils.toArray(a).filter(function(a){return a!==b})}function g(b){var c=O.utils.escapeSelector(a.name),g=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+c+'"]');if(g.length<2)return!0;var j=O.dom.findUp(b,"fieldset"),k=O.dom.findUp(b,'[role="group"]'+("radio"===a.type?',[role="radiogroup"]':""));return k||j?j?d(j,c):e(k,c):(h="no-group",i.relatedNodes(f(g,b)),!1)}var h,i=this,j={name:a.getAttribute("name"),type:a.getAttribute("type")},k=g(a);return k||(j.failureCode=h),this.data(j),k},after:function(a,b){var c={};return a.filter(function(a){if(a.result)return!0;var b=a.data;if(b){if(c[b.type]=c[b.type]||{},!c[b.type][b.name])return c[b.type][b.name]=[b],!0;var d=c[b.type][b.name].some(function(a){return a.failureCode===b.failureCode});return d||c[b.type][b.name].push(b),!d}return!1})}}],none:[]},{id:"color-contrast",selector:"*",tags:["wcag2aa","wcag143"],all:[],any:[{id:"color-contrast",matches:function(a){var b=a.nodeName,c=a.type;if("INPUT"===b)return-1===["hidden","range","color","checkbox","radio","image"].indexOf(c)&&!a.disabled;if("SELECT"===b)return!!a.options.length&&!a.disabled;if("TEXTAREA"===b)return!a.disabled;if("OPTION"===b)return!1;if("BUTTON"===b&&a.disabled)return!1;if(""===O.text.visible(a,!1,!0))return!1;var d,e,f=a.ownerDocument.createRange(),g=a.childNodes,h=g.length;for(e=0;h>e;e++)d=g[e],3===d.nodeType&&""!==O.text.sanitize(d.nodeValue)&&f.selectNodeContents(d);var i=f.getClientRects();for(h=i.length,e=0;h>e;e++)if(O.dom.visuallyOverlaps(i[e],a))return!0;return!1},evaluate:function(a,b){var c=[],d=O.color.getBackgroundColor(a,c),e=O.color.getForegroundColor(a);if(null===e||null===d)return!0;var f=a.ownerDocument.defaultView,g=f.getComputedStyle(a),h=parseFloat(g.getPropertyValue("font-size")),i=g.getPropertyValue("font-weight"),j=-1!==["bold","bolder","600","700","800","900"].indexOf(i),k=O.color.hasValidContrastRatio(d,e,h,j);return this.data({fgColor:e.toHexString(),bgColor:d.toHexString(),contrastRatio:k.contrastRatio.toFixed(2),fontSize:(72*h/96).toFixed(1)+"pt",fontWeight:j?"bold":"normal"}),k.isValid||this.relatedNodes(c),k.isValid}}],none:[]},{id:"data-table",selector:"table",matches:function(a){return O.table.isDataTable(a)},tags:["wcag2a","wcag131"],all:[],any:[{id:"consistent-columns",evaluate:function(a,b){for(var c,d=O.table.toArray(a),e=[],f=0,g=d.length;g>f;f++)0===f?c=d[f].length:c!==d[f].length&&e.push(a.rows[f]);return!e.length}}],none:[{id:"cell-no-header",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],!O.table.isDataCell(d)||O.aria.label(d)||O.table.getHeaders(d).length||e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"headers-visible-text",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],O.table.isHeader(d)&&!O.text.accessibleText(d)&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"headers-attr-reference",evaluate:function(a,b){function c(a){a&&O.text.accessibleText(a)||g.push(e)}for(var d,e,f,g=[],h=0,i=a.rows.length;i>h;h++){d=a.rows[h];for(var j=0,k=d.cells.length;k>j;j++)e=d.cells[j],f=O.dom.idrefs(e,"headers"),f.length&&f.forEach(c)}return g.length?(this.relatedNodes(g),!0):!1}},{id:"th-scope",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],"TH"!==d.nodeName||d.getAttribute("scope")||e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"no-caption",evaluate:function(a,b){return!(a.caption||{}).textContent},enabled:!1},{id:"th-headers-attr",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],"TH"===d.nodeName&&d.getAttribute("headers")&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"th-single-row-column",evaluate:function(a,b){for(var c,d,e,f=[],g=[],h=0,i=a.rows.length;i>h;h++){c=a.rows[h];for(var j=0,k=c.cells.length;k>j;j++)d=c.cells[j],d.nodeName&&(O.table.isColumnHeader(d)&&-1===g.indexOf(h)?g.push(h):O.table.isRowHeader(d)&&(e=O.table.getCellPosition(d),-1===f.indexOf(e.x)&&f.push(e.x)))}return g.length>1||f.length>1?!0:!1}},{id:"same-caption-summary",selector:"table",evaluate:function(a,b){return!(!a.summary||!a.caption)&&a.summary===O.text.accessibleText(a.caption)}},{id:"rowspan",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],1!==d.rowSpan&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}}]},{id:"definition-list",selector:"dl",tags:["wcag2a","wcag131"],all:[],any:[],none:[{id:"has-dlitems",evaluate:function(a,b){var c=a.children;if(0===c.length)return!0;for(var d=!1,e=0;e<c.length;e++)if("DT"===c[e].nodeName&&(d=!0),d&&"DD"===c[e].nodeName)return!1;return!0}},{id:"only-dlitems",evaluate:function(a,b){for(var c,d=[],e=a.childNodes,f=!1,g=0;g<e.length;g++)c=e[g],1===c.nodeType&&"DT"!==c.nodeName&&"DD"!==c.nodeName?d.push(c):3===c.nodeType&&""!==c.nodeValue.trim()&&(f=!0);return d.length&&this.relatedNodes(d),!!d.length||f}}]},{id:"dlitem",selector:"dd, dt",tags:["wcag2a","wcag131"],all:[],any:[{id:"dlitem",evaluate:function(a,b){return"DL"===a.parentNode.tagName}}],none:[]},{id:"document-title",selector:"html",tags:["wcag2a","wcag242"],all:[],any:[{id:"doc-has-title",evaluate:function(a,b){var c=a.ownerDocument.title;return!!(c?O.text.sanitize(c).trim():"")}}],none:[]},{id:"duplicate-id",selector:"[id]",tags:["wcag2a","wcag411"],all:[],any:[{id:"duplicate-id",evaluate:function(a,b){for(var c=a.ownerDocument.querySelectorAll('[id="'+O.utils.escapeSelector(a.id)+'"]'),d=[],e=0;e<c.length;e++)c[e]!==a&&d.push(c[e]);return d.length&&this.relatedNodes(d),this.data(a.getAttribute("id")),c.length<=1},after:function(a,b){var c=[];return a.filter(function(a){return-1===c.indexOf(a.data)?(c.push(a.data),!0):!1})}}],none:[]},{id:"empty-heading",selector:'h1, h2, h3, h4, h5, h6, [role="heading"]',tags:["wcag2a","wcag131"],all:[],any:[{id:"has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0}}],none:[]},{id:"frame-title",selector:"frame, iframe",tags:["wcag2a","wcag241"],all:[],any:[{id:"non-empty-title",evaluate:function(a,b){var c=a.getAttribute("title");return!!(c?O.text.sanitize(c).trim():"")}}],none:[{id:"unique-frame-title",evaluate:function(a,b){return this.data(a.title),!0},after:function(a,b){var c={};return a.forEach(function(a){c[a.data]=void 0!==c[a.data]?++c[a.data]:0}),a.filter(function(a){return!!c[a.data]})}}]},{id:"heading-order",selector:"h1,h2,h3,h4,h5,h6,[role=heading]",enabled:!1,tags:["best-practice"],all:[],any:[{id:"heading-order",evaluate:function(a,b){var c=a.getAttribute("aria-level");if(null!==c)return this.data(parseInt(c,10)),!0;var d=a.tagName.match(/H(\d)/);return d?(this.data(parseInt(d[1],10)),!0):!0},after:function(a,b){if(a.length<2)return a;for(var c=a[0].data,d=1;d<a.length;d++)a[d].result&&a[d].data>c+1&&(a[d].result=!1),c=a[d].data;return a}}],none:[]},{id:"html-lang",selector:"html",tags:["wcag2a","wcag311"],all:[],any:[{id:"has-lang",evaluate:function(a,b){return a.hasAttribute("lang")||a.hasAttribute("xml:lang")}}],none:[{id:"valid-lang",options:["en","es","ja"],evaluate:function(a,b){var c=(a.getAttribute("lang")||"").trim().toLowerCase(),d=(a.getAttribute("xml:lang")||"").trim().toLowerCase(),e=[];return(b||[]).forEach(function(a){a=a.toLowerCase(),!c||c!==a&&0!==c.indexOf(a.toLowerCase()+"-")||(c=null),!d||d!==a&&0!==d.indexOf(a.toLowerCase()+"-")||(d=null)}),d&&e.push('xml:lang="'+d+'"'),c&&e.push('lang="'+c+'"'),e.length?(this.data(e),!0):!1}}]},{id:"image-alt",selector:"img",tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"has-alt",evaluate:function(a,b){return a.hasAttribute("alt")}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"non-empty-title",evaluate:function(a,b){var c=a.getAttribute("title");return!!(c?O.text.sanitize(c).trim():"")}}],none:[]},{id:"input-image-alt",selector:'input[type="image"]',tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"non-empty-alt",evaluate:function(a,b){var c=a.getAttribute("alt");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}}],none:[]},{id:"label-title-only",selector:"input:not([type='hidden']):not([type='image']):not([type='button']):not([type='submit']):not([type='reset']), select, textarea",enabled:!1,tags:["best-practice"],all:[],any:[],none:[{id:"title-only",evaluate:function(a,b){var c=O.text.label(a);return!(c||!a.getAttribute("title")&&!a.getAttribute("aria-describedby"))}}]},{id:"label",selector:"input:not([type='hidden']):not([type='image']):not([type='button']):not([type='submit']):not([type='reset']), select, textarea",tags:["wcag2a","wcag332","wcag131","section508","section508n"],all:[],any:[{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"implicit-label",evaluate:function(a,b){var c=O.dom.findUp(a,"label");return c?!!O.text.accessibleText(c):!1}},{id:"explicit-label",evaluate:function(a,b){var c=a.ownerDocument.querySelector('label[for="'+O.utils.escapeSelector(a.id)+'"]');return c?!!O.text.accessibleText(c):!1},selector:"[id]"},{id:"non-empty-title",evaluate:function(a,b){var c=a.getAttribute("title");return!!(c?O.text.sanitize(c).trim():"")}}],none:[{id:"help-same-as-label",evaluate:function(a,b){var c=O.text.label(a),d=a.getAttribute("title");if(!c)return!1;if(!d&&(d="",a.getAttribute("aria-describedby"))){var e=O.dom.idrefs(a,"aria-describedby");d=e.map(function(a){return a?O.text.accessibleText(a):""}).join("")}return O.text.sanitize(d)===O.text.sanitize(c)},enabled:!1},{id:"multiple-label",evaluate:function(a,b){for(var c=[].slice.call(a.ownerDocument.querySelectorAll('label[for="'+O.utils.escapeSelector(a.id)+'"]')),d=a.parentNode;d;)"LABEL"===d.tagName&&-1===c.indexOf(d)&&c.push(d),d=d.parentNode;return this.relatedNodes(c),c.length>1}}]},{id:"layout-table",selector:"table",matches:function(a){return!O.table.isDataTable(a)},tags:["wcag2a","wcag131"],all:[],any:[],none:[{id:"has-th",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],"TH"===d.nodeName&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"has-caption",evaluate:function(a,b){return!!a.caption}},{id:"has-summary",evaluate:function(a,b){return!!a.summary}}]},{id:"link-name",selector:'a[href]:not([role="button"]), [role=link][href]',tags:["wcag2a","wcag111","wcag412","section508","section508a"],all:[],any:[{id:"has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"role-presentation",evaluate:function(a,b){return"presentation"===a.getAttribute("role")}}],none:[{id:"duplicate-img-label",evaluate:function(a,b){for(var c=a.querySelectorAll("img"),d=O.text.visible(a,!0),e=0,f=c.length;f>e;e++){var g=O.text.accessibleText(c[e]);if(g===d&&""!==d)return!0}return!1},enabled:!1},{id:"focusable-no-name",evaluate:function(a,b){var c=a.getAttribute("tabindex"),d=O.dom.isFocusable(a)&&c>-1;return d?!O.text.accessibleText(a):!1}}]},{id:"list",selector:"ul, ol",tags:["wcag2a","wcag131"],all:[],any:[],none:[{id:"has-listitem",evaluate:function(a,b){var c=a.children;if(0===c.length)return!0;for(var d=0;d<c.length;d++)if("LI"===c[d].nodeName)return!1;return!0}},{id:"only-listitems",evaluate:function(a,b){for(var c,d=[],e=a.childNodes,f=!1,g=0;g<e.length;g++)c=e[g],1===c.nodeType&&"LI"!==c.nodeName?d.push(c):3===c.nodeType&&""!==c.nodeValue.trim()&&(f=!0);return d.length&&this.relatedNodes(d),!!d.length||f}}]},{id:"listitem",selector:"li",tags:["wcag2a","wcag131"],all:[],any:[{id:"listitem",evaluate:function(a,b){return-1!==["UL","OL"].indexOf(a.parentNode.tagName)}}],none:[]},{id:"marquee",selector:"marquee",tags:["wcag2a","wcag222","section508","section508j"],all:[],any:[],none:[{id:"exists",evaluate:function(a,b){return!0}}]},{id:"meta-refresh",selector:'meta[http-equiv="refresh"]',excludeHidden:!1,tags:["wcag2a","wcag2aaa","wcag221","wcag224","wcag325"],all:[],any:[{id:"meta-refresh",evaluate:function(a,b){var c=a.getAttribute("content")||"",d=c.split(/[;,]/);return""===c||"0"===d[0]}}],none:[]},{id:"meta-viewport",selector:'meta[name="viewport"]',excludeHidden:!1,tags:["wcag2aa","wcag144"],all:[],any:[{id:"meta-viewport",evaluate:function(a,b){for(var c,d=a.getAttribute("content")||"",e=d.split(/[;,]/),f={},g=0,h=e.length;h>g;g++){c=e[g].split("=");var i=c.shift();i&&c.length&&(f[i.trim()]=c.join("=").trim())}return f["maximum-scale"]&&parseFloat(f["maximum-scale"])<5?!1:"no"===f["user-scalable"]?!1:!0}}],none:[]},{id:"object-alt",selector:"object",tags:["wcag2a","wcag111"],all:[],any:[{id:"has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0}}],none:[]},{id:"radiogroup",selector:"input[type=radio][name]",tags:["wcag2a","wcag131"],all:[],any:[{id:"group-labelledby",evaluate:function(a,b){this.data({name:a.getAttribute("name"),type:a.getAttribute("type")});var c=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+O.utils.escapeSelector(a.name)+'"]');return c.length<=1?!0:0!==[].map.call(c,function(a){var b=a.getAttribute("aria-labelledby");return b?b.split(/\s+/):[]}).reduce(function(a,b){return a.filter(function(a){return-1!==b.indexOf(a)})}).filter(function(b){var c=a.ownerDocument.getElementById(b);return c&&O.text.accessibleText(c)}).length},after:function(a,b){var c={};return a.filter(function(a){var b=a.data;return b&&(c[b.type]=c[b.type]||{},!c[b.type][b.name])?(c[b.type][b.name]=!0,!0):!1})}},{id:"fieldset",evaluate:function(a,b){function c(a,b){return O.utils.toArray(a.querySelectorAll('select,textarea,button,input:not([name="'+b+'"]):not([type="hidden"])'))}function d(a,b){var d=a.firstElementChild;if(!d||"LEGEND"!==d.nodeName)return i.relatedNodes([a]),h="no-legend",!1;if(!O.text.accessibleText(d))return i.relatedNodes([d]),h="empty-legend",!1;var e=c(a,b);return e.length?(i.relatedNodes(e),h="mixed-inputs",!1):!0}function e(a,b){var d=O.dom.idrefs(a,"aria-labelledby").some(function(a){return a&&O.text.accessibleText(a)}),e=a.getAttribute("aria-label");if(!(d||e&&O.text.sanitize(e)))return i.relatedNodes(a),h="no-group-label",!1;var f=c(a,b);return f.length?(i.relatedNodes(f),h="group-mixed-inputs",!1):!0}function f(a,b){return O.utils.toArray(a).filter(function(a){return a!==b})}function g(b){var c=O.utils.escapeSelector(a.name),g=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+c+'"]');if(g.length<2)return!0;var j=O.dom.findUp(b,"fieldset"),k=O.dom.findUp(b,'[role="group"]'+("radio"===a.type?',[role="radiogroup"]':""));return k||j?j?d(j,c):e(k,c):(h="no-group",i.relatedNodes(f(g,b)),!1)}var h,i=this,j={name:a.getAttribute("name"),type:a.getAttribute("type")},k=g(a);return k||(j.failureCode=h),this.data(j),k},after:function(a,b){var c={};return a.filter(function(a){if(a.result)return!0;var b=a.data;if(b){if(c[b.type]=c[b.type]||{},!c[b.type][b.name])return c[b.type][b.name]=[b],!0;var d=c[b.type][b.name].some(function(a){return a.failureCode===b.failureCode});return d||c[b.type][b.name].push(b),!d}return!1})}}],none:[]},{id:"region",selector:"html",pageLevel:!0,enabled:!1,tags:["best-practice"],all:[],any:[{id:"region",evaluate:function(a,b){function c(a){return h&&O.dom.isFocusable(O.dom.getElementByReference(h,"href"))&&h===a}function d(a){var b=a.getAttribute("role");return b&&-1!==g.indexOf(b)}function e(a){return d(a)?null:c(a)?f(a):O.dom.isVisible(a,!0)&&(O.text.visible(a,!0,!0)||O.dom.isVisualContent(a))?a:f(a)}function f(a){var b=O.utils.toArray(a.children);return 0===b.length?[]:b.map(e).filter(function(a){return null!==a}).reduce(function(a,b){return a.concat(b)},[])}var g=O.aria.getRolesByType("landmark"),h=a.querySelector("a[href]"),i=f(a);return this.relatedNodes(i),!i.length},after:function(a,b){return[a[0]]}}],none:[]},{id:"scope",selector:"[scope]",tags:["wcag2a","wcag411","wcag131"],all:[],any:[{id:"html5-scope",evaluate:function(a,b){return O.dom.isHTML5(a.ownerDocument)?"TH"===a.nodeName:!1}},{id:"html4-scope",evaluate:function(a,b){return O.dom.isHTML5(a.ownerDocument)?!1:"TH"===a.nodeName||"TD"===a.nodeName}}],none:[{id:"scope-value",evaluate:function(a,b){var c=a.getAttribute("scope");return"row"!==c&&"col"!==c}}]},{id:"server-side-image-map",selector:"img[ismap]",tags:["wcag2a","wcag211","section508","section508f"],all:[],any:[],none:[{id:"exists",evaluate:function(a,b){return!0}}]},{id:"skip-link",selector:"a[href]",pageLevel:!0,enabled:!1,tags:["best-practice"],all:[],any:[{id:"skip-link",selector:"a[href]",evaluate:function(a,b){return O.dom.isFocusable(O.dom.getElementByReference(a,"href"))},after:function(a,b){return[a[0]]}}],none:[]},{id:"tabindex",selector:"[tabindex]",tags:["wcag2a","wcag243"],all:[],any:[{id:"tabindex",evaluate:function(a,b){return a.tabIndex<=0}}],none:[]},{id:"valid-lang",selector:"[lang]:not(html), [xml\\:lang]:not(html)",tags:["wcag2aa","wcag312"],all:[],any:[],none:[{id:"valid-lang",options:["en","es","ja"],evaluate:function(a,b){var c=(a.getAttribute("lang")||"").trim().toLowerCase(),d=(a.getAttribute("xml:lang")||"").trim().toLowerCase(),e=[];return(b||[]).forEach(function(a){a=a.toLowerCase(),!c||c!==a&&0!==c.indexOf(a.toLowerCase()+"-")||(c=null),!d||d!==a&&0!==d.indexOf(a.toLowerCase()+"-")||(d=null)}),d&&e.push('xml:lang="'+d+'"'),c&&e.push('lang="'+c+'"'),e.length?(this.data(e),!0):!1}}]},{id:"video-caption",selector:"video",tags:["wcag2a","wcag122","wcag123","section508","section508a"],all:[],any:[],none:[{id:"caption",evaluate:function(a,b){return!a.querySelector("track[kind=captions]")}}]},{id:"video-description",selector:"video",tags:["wcag2aa","wcag125","section508","section508a"],all:[],any:[],none:[{id:"description",evaluate:function(a,b){return!a.querySelector("track[kind=descriptions]")}}]}],commons:function(){function a(b){"use strict";var c,d,e=b;if(null!==b&&"object"==typeof b)if(Array.isArray(b))for(e=[],c=0,d=b.length;d>c;c++)e[c]=a(b[c]);else{e={};for(c in b)e[c]=a(b[c])}return e}function b(a){"use strict";var b=a.match(/rect\s*\(([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px\s*\)/);return b&&5===b.length?b[3]-b[1]<=0&&b[2]-b[4]<=0:!1}function c(a){var b=null;return a.id&&(b=a.ownerDocument.querySelector('label[for="'+v.escapeSelector(a.id)+'"]'))?b:b=s.findUp(a,"label")}function d(a){return-1!==["button","reset","submit"].indexOf(a.type)}function e(a){return"TEXTAREA"===a.nodeName||"SELECT"===a.nodeName||"INPUT"===a.nodeName&&"hidden"!==a.type}function f(a){return-1!==["BUTTON","SUMMARY","A"].indexOf(a.nodeName)}function g(a){return-1!==["TABLE","FIGURE"].indexOf(a.nodeName)}function h(a){if("INPUT"===a.nodeName)return!a.hasAttribute("type")||-1!==z.indexOf(a.getAttribute("type"))&&a.value?a.value:"";if("SELECT"===a.nodeName){var b=a.options;if(b&&b.length){for(var c="",d=0;d<b.length;d++)b[d].selected&&(c+=" "+b[d].text);return u.sanitize(c)}return""}return"TEXTAREA"===a.nodeName&&a.value?a.value:""}function i(a,b){var c=a.querySelector(b);return c?u.accessibleText(c):""}function j(a){if(!a)return!1;switch(a.nodeName){case"SELECT":case"TEXTAREA":return!0;case"INPUT":return!a.hasAttribute("type")||-1!==z.indexOf(a.getAttribute("type"));default:return!1}}function k(a){return"INPUT"===a.nodeName&&"image"===a.type||-1!==["IMG","APPLET","AREA"].indexOf(a.nodeName)}function l(a){return!!u.sanitize(a)}var m={};m.version="dev";var n=function(){"use strict";function a(a){var b,c,d=a.Element.prototype,e=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],f=e.length;for(b=0;f>b;b++)if(c=e[b],d[c])return c}var b;return function(c,d){return b&&c[b]||(b=a(c.ownerDocument.defaultView)),c[b](d)}}(),o=function(a){"use strict";for(var b,c=String(a),d=c.length,e=-1,f="",g=c.charCodeAt(0);++e<d;){if(b=c.charCodeAt(e),0==b)throw new Error("INVALID_CHARACTER_ERR");f+=b>=1&&31>=b||b>=127&&159>=b||0==e&&b>=48&&57>=b||1==e&&b>=48&&57>=b&&45==g?"\\"+b.toString(16)+" ":(1!=e||45!=b||45!=g)&&(b>=128||45==b||95==b||b>=48&&57>=b||b>=65&&90>=b||b>=97&&122>=b)?c.charAt(e):"\\"+c.charAt(e)}return f},p=m.aria={},q=p._lut={};q.attributes={"aria-activedescendant":{type:"http://www.w3.org/2001/XMLSchema#idref"},"aria-atomic":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-autocomplete":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["inline","list","both","none"]},"aria-busy":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-checked":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","mixed","undefined"]},"aria-controls":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-describedby":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-disabled":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-dropeffect":{type:"http://www.w3.org/2001/XMLSchema#nmtokens",values:["copy","move","reference","execute","popup","none"]},"aria-expanded":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","undefined"]},"aria-flowto":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-grabbed":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","undefined"]},"aria-haspopup":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-hidden":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-invalid":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","spelling","grammar"]},"aria-label":{type:"http://www.w3.org/2001/XMLSchema#string"},"aria-labelledby":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-level":{type:"http://www.w3.org/2001/XMLSchema#int"},"aria-live":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["off","polite","assertive"]},"aria-multiline":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-multiselectable":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-orientation":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["horizontal","vertical"]},"aria-owns":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-posinset":{type:"http://www.w3.org/2001/XMLSchema#int"},"aria-pressed":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","mixed","undefined"]},"aria-readonly":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-relevant":{type:"http://www.w3.org/2001/XMLSchema#nmtokens",values:["additions","removals","text","all"]},"aria-required":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-selected":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","undefined"]},"aria-setsize":{type:"http://www.w3.org/2001/XMLSchema#int"},"aria-sort":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["ascending","descending","other","none"]},"aria-valuemax":{type:"http://www.w3.org/2001/XMLSchema#decimal"},"aria-valuemin":{type:"http://www.w3.org/2001/XMLSchema#decimal"},"aria-valuenow":{type:"http://www.w3.org/2001/XMLSchema#decimal"},"aria-valuetext":{type:"http://www.w3.org/2001/XMLSchema#string"}},q.globalAttributes=["aria-atomic","aria-busy","aria-controls","aria-describedby","aria-disabled","aria-dropeffect","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant"],q.role={alert:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},alertdialog:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},application:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},article:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["article"]},banner:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},button:{type:"widget",attributes:{allowed:["aria-expanded","aria-pressed"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["button",'input[type="button"]','input[type="image"]']},checkbox:{type:"widget",attributes:{required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,implicit:['input[type="checkbox"]']},columnheader:{type:"structure",attributes:{allowed:["aria-expanded","aria-sort","aria-readonly","aria-selected","aria-required"]},owned:null,nameFrom:["author","contents"],context:["row"]},combobox:{type:"composite",attributes:{required:["aria-expanded"],allowed:["aria-autocomplete","aria-required","aria-activedescendant"]},owned:{all:["listbox","textbox"]},nameFrom:["author"],context:null},command:{nameFrom:["author"],type:"abstract"},complementary:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["aside"]},composite:{nameFrom:["author"],type:"abstract"},contentinfo:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},definition:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},dialog:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["dialog"]},directory:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null},document:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["body"]},form:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},grid:{type:"composite",attributes:{allowed:["aria-level","aria-multiselectable","aria-readonly","aria-activedescendant","aria-expanded"]},owned:{one:["rowgroup","row"]},nameFrom:["author"],context:null},gridcell:{type:"widget",attributes:{allowed:["aria-selected","aria-readonly","aria-expanded","aria-required"]},owned:null,nameFrom:["author","contents"],context:["row"]},group:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["details"]},heading:{type:"structure",attributes:{allowed:["aria-level","aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["h1","h2","h3","h4","h5","h6"]},img:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["img"]},input:{nameFrom:["author"],type:"abstract"},landmark:{nameFrom:["author"],type:"abstract"},link:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["a[href]"]},list:{type:"structure",attributes:{
25
+ allowed:["aria-expanded"]},owned:{all:["listitem"]},nameFrom:["author"],context:null,implicit:["ol","ul"]},listbox:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-required","aria-expanded"]},owned:{all:["option"]},nameFrom:["author"],context:null,implicit:["select"]},listitem:{type:"structure",attributes:{allowed:["aria-level","aria-posinset","aria-setsize","aria-expanded"]},owned:null,nameFrom:["author","contents"],context:["list"],implicit:["li"]},log:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},main:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},marquee:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},math:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},menu:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:{one:["menuitem","menuitemradio","menuitemcheckbox"]},nameFrom:["author"],context:null},menubar:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:null,nameFrom:["author"],context:null},menuitem:{type:"widget",attributes:null,owned:null,nameFrom:["author","contents"],context:["menu","menubar"]},menuitemcheckbox:{type:"widget",attributes:{required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"]},menuitemradio:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize"],required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"]},navigation:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},note:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},option:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize","aria-checked"]},owned:null,nameFrom:["author","contents"],context:["listbox"]},presentation:{type:"structure",attributes:null,owned:null,nameFrom:["author"],context:null},progressbar:{type:"widget",attributes:{allowed:["aria-valuetext","aria-valuenow","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null},radio:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize"],required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,implicit:['input[type="radio"]']},radiogroup:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-required","aria-expanded"]},owned:{all:["radio"]},nameFrom:["author"],context:null},range:{nameFrom:["author"],type:"abstract"},region:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["section"]},roletype:{type:"abstract"},row:{type:"structure",attributes:{allowed:["aria-level","aria-selected","aria-activedescendant","aria-expanded"]},owned:{one:["columnheader","rowheader","gridcell"]},nameFrom:["author","contents"],context:["rowgroup","grid","treegrid"]},rowgroup:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:{all:["row"]},nameFrom:["author","contents"],context:["grid"]},rowheader:{type:"structure",attributes:{allowed:["aria-sort","aria-required","aria-readonly","aria-expanded","aria-selected"]},owned:null,nameFrom:["author","contents"],context:["row"]},scrollbar:{type:"widget",attributes:{required:["aria-controls","aria-orientation","aria-valuenow","aria-valuemax","aria-valuemin"],allowed:["aria-valuetext"]},owned:null,nameFrom:["author"],context:null},search:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},section:{nameFrom:["author","contents"],type:"abstract"},sectionhead:{nameFrom:["author","contents"],type:"abstract"},select:{nameFrom:["author"],type:"abstract"},separator:{type:"structure",attributes:{allowed:["aria-expanded","aria-orientation"]},owned:null,nameFrom:["author"],context:null},slider:{type:"widget",attributes:{allowed:["aria-valuetext","aria-orientation"],required:["aria-valuenow","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null},spinbutton:{type:"widget",attributes:{allowed:["aria-valuetext","aria-required"],required:["aria-valuenow","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null},status:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["output"]},structure:{type:"abstract"},tab:{type:"widget",attributes:{allowed:["aria-selected","aria-expanded"]},owned:null,nameFrom:["author","contents"],context:["tablist"]},tablist:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-level","aria-multiselectable"]},owned:{all:["tab"]},nameFrom:["author"],context:null},tabpanel:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},textbox:{type:"widget",attributes:{allowed:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-readonly","aria-required"]},owned:null,nameFrom:["author"],context:null,implicit:['input[type="text"]',"input:not([type])"]},timer:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},toolbar:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:['menu[type="toolbar"]']},tooltip:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null},tree:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-required","aria-expanded"]},owned:{all:["treeitem"]},nameFrom:["author"],context:null},treegrid:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-level","aria-multiselectable","aria-readonly","aria-required"]},owned:{all:["treeitem"]},nameFrom:["author"],context:null},treeitem:{type:"widget",attributes:{allowed:["aria-checked","aria-selected","aria-expanded","aria-level","aria-posinset","aria-setsize"]},owned:null,nameFrom:["author","contents"],context:["treegrid","tree"]},widget:{type:"abstract"},window:{nameFrom:["author"],type:"abstract"}};var r={};m.color=r;var s=m.dom={},t=m.table={},u=m.text={},v=m.utils={};v.escapeSelector=o,v.matchesSelector=n,v.clone=a,p.requiredAttr=function(a){"use strict";var b=q.role[a],c=b&&b.attributes&&b.attributes.required;return c||[]},p.allowedAttr=function(a){"use strict";var b=q.role[a],c=b&&b.attributes&&b.attributes.allowed||[],d=b&&b.attributes&&b.attributes.required||[];return c.concat(q.globalAttributes).concat(d)},p.validateAttr=function(a){"use strict";return!!q.attributes[a]},p.validateAttrValue=function(a,b){"use strict";var c,d,e,f,g=a.ownerDocument,h=a.getAttribute(b),i=q.attributes[b];if(!i)return!0;if(i.values)return"string"==typeof h&&-1!==i.values.indexOf(h.toLowerCase())?!0:!1;switch(i.type){case"http://www.w3.org/2001/XMLSchema#idref":return!(!h||!g.getElementById(h));case"http://www.w3.org/2001/XMLSchema#idrefs":for(c=v.tokenList(h),d=0,e=c.length;e>d;d++)if(c[d]&&!g.getElementById(c[d]))return!1;return!!c.length;case"http://www.w3.org/2001/XMLSchema#string":return!0;case"http://www.w3.org/2001/XMLSchema#decimal":return f=h.match(/^[-+]?([0-9]*)\.?([0-9]*)$/),!(!f||!f[1]&&!f[2]);case"http://www.w3.org/2001/XMLSchema#int":return/^[-+]?[0-9]+$/.test(h)}},p.label=function(a){var b,c;return a.getAttribute("aria-labelledby")&&(b=s.idrefs(a,"aria-labelledby"),c=b.map(function(a){return a?u.visible(a,!0):""}).join(" ").trim())?c:(c=a.getAttribute("aria-label"),c&&(c=u.sanitize(c).trim())?c:null)},p.isValidRole=function(a){"use strict";return q.role[a]?!0:!1},p.getRolesWithNameFromContents=function(){return Object.keys(q.role).filter(function(a){return q.role[a].nameFrom&&-1!==q.role[a].nameFrom.indexOf("contents")})},p.getRolesByType=function(a){return Object.keys(q.role).filter(function(b){return q.role[b].type===a})},p.getRoleType=function(a){var b=q.role[a];return b&&b.type||null},p.requiredOwned=function(a){"use strict";var b=null,c=q.role[a];return c&&(b=v.clone(c.owned)),b},p.requiredContext=function(a){"use strict";var b=null,c=q.role[a];return c&&(b=v.clone(c.context)),b},p.implicitNodes=function(a){"use strict";var b=null,c=q.role[a];return c&&c.implicit&&(b=v.clone(c.implicit)),b},p.implicitRole=function(a){"use strict";var b,c,d,e=q.role;for(b in e)if(e.hasOwnProperty(b)&&(c=e[b],c.implicit))for(var f=0,g=c.implicit.length;g>f;f++)if(d=c.implicit[f],v.matchesSelector(a,d))return b;return null},r.Color=function(a,b,c,d){this.red=a,this.green=b,this.blue=c,this.alpha=d,this.toHexString=function(){var a=Math.round(this.red).toString(16),b=Math.round(this.green).toString(16),c=Math.round(this.blue).toString(16);return"#"+(this.red>15.5?a:"0"+a)+(this.green>15.5?b:"0"+b)+(this.blue>15.5?c:"0"+c)};var e=/^rgb\((\d+), (\d+), (\d+)\)$/,f=/^rgba\((\d+), (\d+), (\d+), (\d*(\.\d+)?)\)/;this.parseRgbString=function(a){var b=a.match(e);return b?(this.red=parseInt(b[1],10),this.green=parseInt(b[2],10),this.blue=parseInt(b[3],10),void(this.alpha=1)):(b=a.match(f),b?(this.red=parseInt(b[1],10),this.green=parseInt(b[2],10),this.blue=parseInt(b[3],10),void(this.alpha=parseFloat(b[4]))):void 0)},this.getRelativeLuminance=function(){var a=this.red/255,b=this.green/255,c=this.blue/255,d=.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4),e=.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4),f=.03928>=c?c/12.92:Math.pow((c+.055)/1.055,2.4);return.2126*d+.7152*e+.0722*f}},r.flattenColors=function(a,b){var c=a.alpha,d=(1-c)*b.red+c*a.red,e=(1-c)*b.green+c*a.green,f=(1-c)*b.blue+c*a.blue,g=a.alpha+b.alpha*(1-a.alpha);return new r.Color(d,e,f,g)},r.getContrast=function(a,b){if(!b||!a)return null;b.alpha<1&&(b=r.flattenColors(b,a));var c=a.getRelativeLuminance(),d=b.getRelativeLuminance();return(Math.max(d,c)+.05)/(Math.min(d,c)+.05)},r.hasValidContrastRatio=function(a,b,c,d){var e=r.getContrast(a,b),f=d&&Math.ceil(72*c)/96<14||!d&&Math.ceil(72*c)/96<18;return{isValid:f&&e>=4.5||!f&&e>=3,contrastRatio:e}};var w=function(a){var b,c=a.ownerDocument.defaultView,d=c.getComputedStyle(a);if("none"!==d.getPropertyValue("background-image"))return null;var e=d.getPropertyValue("background-color");"transparent"===e?b=new r.Color(0,0,0,0):(b=new r.Color,b.parseRgbString(e));var f=d.getPropertyValue("opacity");return b.alpha=b.alpha*f,b};s.isOpaque=function(a){var b=w(a);return null===b||1===b.alpha?!0:!1};var x=function(a,b){for(var c,d,e,f,g,h,i,j=[],k=!1,l=a.ownerDocument.defaultView,m=a,n=l.getComputedStyle(m);null!==m&&(!s.isOpaque(m)||0===parseInt(n.getPropertyValue("height"),10));)e=n.getPropertyValue("position"),f=n.getPropertyValue("top"),g=n.getPropertyValue("bottom"),h=n.getPropertyValue("left"),i=n.getPropertyValue("right"),("static"!==e&&"relative"!==e||"relative"===e&&("auto"!==h||"auto"!==i||"auto"!==f||"auto"!==g))&&(k=!0),m=m.parentElement,null!==m&&(n=l.getComputedStyle(m),0!==parseInt(n.getPropertyValue("height"),10)&&j.push(m));return k&&s.supportsElementsFromPoint(a.ownerDocument)&&(c=s.elementsFromPoint(a.ownerDocument,Math.ceil(b.left+1),Math.ceil(b.top+1)),c&&(d=c.indexOf(a))<c.length-1&&(j=c.slice(d+1))),j};r.getBackgroundColor=function(a,b){var c,d,e=w(a);if(!b||null!==e&&0===e.alpha||b.push(a),null===e||1===e.alpha)return e;a.scrollIntoView();for(var f=a.getBoundingClientRect(),g=a,h=[{color:e,node:a}],i=x(g,f);1!==e.alpha;){if(c=i.shift(),!c&&"HTML"!==g.tagName)return null;if(c||"HTML"!==g.tagName){if(!s.visuallyContains(a,c))return null;if(d=w(c),!b||null!==d&&0===d.alpha||b.push(c),null===d)return null}else d=new r.Color(255,255,255,1);g=c,e=d,h.push({color:e,node:g})}for(var j=h.pop(),k=j.color;void 0!==(j=h.pop());)k=r.flattenColors(j.color,k);return k},r.getForegroundColor=function(a){var b=a.ownerDocument.defaultView,c=b.getComputedStyle(a),d=new r.Color;d.parseRgbString(c.getPropertyValue("color"));var e=c.getPropertyValue("opacity");if(d.alpha=d.alpha*e,1===d.alpha)return d;var f=r.getBackgroundColor(a);return null===f?null:r.flattenColors(d,f)},s.findUp=function(a,b){"use strict";var c,d=a.ownerDocument,e=d.querySelectorAll(b),f=e.length;if(!f)return null;for(e=v.toArray(e),c=a.parentNode;c&&-1===e.indexOf(c);)c=c.parentNode;return c},s.getElementByReference=function(a,b){"use strict";var c,d=a.getAttribute(b),e=a.ownerDocument;if(d&&"#"===d.charAt(0)){if(d=d.substring(1),c=e.getElementById(d))return c;if(c=e.getElementsByName(d),c.length)return c[0]}return null},s.getElementCoordinates=function(a){"use strict";var b=a.ownerDocument,c=s.getScrollOffset(b),d=c.left,e=c.top,f=a.getBoundingClientRect();return{top:f.top+e,right:f.right+d,bottom:f.bottom+e,left:f.left+d,width:f.right-f.left,height:f.bottom-f.top}},s.supportsElementsFromPoint=function(a){var b=a.createElement("x");return b.style.cssText="pointer-events:auto","auto"===b.style.pointerEvents||!!a.msElementsFromPoint},s.elementsFromPoint=function(a,b,c){var d,e,f,g=[],h=[];if(a.msElementsFromPoint){var i=a.msElementsFromPoint(b,c);return i?Array.prototype.slice.call(i):null}for(;(d=a.elementFromPoint(b,c))&&-1===g.indexOf(d)&&null!==d&&(g.push(d),h.push({value:d.style.getPropertyValue("pointer-events"),priority:d.style.getPropertyPriority("pointer-events")}),d.style.setProperty("pointer-events","none","important"),!s.isOpaque(d)););for(e=h.length;f=h[--e];)g[e].style.setProperty("pointer-events",f.value?f.value:"",f.priority);return g},s.getScrollOffset=function(a){"use strict";if(!a.nodeType&&a.document&&(a=a.document),9===a.nodeType){var b=a.documentElement,c=a.body;return{left:b&&b.scrollLeft||c&&c.scrollLeft||0,top:b&&b.scrollTop||c&&c.scrollTop||0}}return{left:a.scrollLeft,top:a.scrollTop}},s.getViewportSize=function(a){"use strict";var b,c=a.document,d=c.documentElement;return a.innerWidth?{width:a.innerWidth,height:a.innerHeight}:d?{width:d.clientWidth,height:d.clientHeight}:(b=c.body,{width:b.clientWidth,height:b.clientHeight})},s.idrefs=function(a,b){"use strict";var c,d,e=a.ownerDocument,f=[],g=a.getAttribute(b);if(g)for(g=v.tokenList(g),c=0,d=g.length;d>c;c++)f.push(e.getElementById(g[c]));return f},s.isFocusable=function(a){"use strict";if(!a||a.disabled||!s.isVisible(a)&&"AREA"!==a.nodeName)return!1;switch(a.nodeName){case"A":case"AREA":if(a.href)return!0;break;case"INPUT":return"hidden"!==a.type;case"TEXTAREA":case"SELECT":case"DETAILS":case"BUTTON":return!0}var b=a.getAttribute("tabindex");return b&&!isNaN(parseInt(b,10))?!0:!1},s.isHTML5=function(a){var b=a.doctype;return null===b?!1:"html"===b.name&&!b.publicId&&!b.systemId},s.isNode=function(a){"use strict";var b=a&&a.ownerDocument||a,c=b&&b.defaultView;return!!c&&a instanceof c.Node},s.isOffscreen=function(a){"use strict";var b,c=a.ownerDocument,d=c.defaultView,e=c.documentElement,f=d.getComputedStyle(c.body||e).getPropertyValue("direction"),g=s.getElementCoordinates(a);if(g.bottom<0)return!0;if("ltr"===f){if(g.right<0)return!0}else if(b=Math.max(e.scrollWidth,s.getViewportSize(d).width),g.left>b)return!0;return!1},s.isVisible=function(a,c,d){"use strict";var e,f=a.nodeName,g=a.parentNode;return 9===a.nodeType?!0:(e=a.ownerDocument.defaultView.getComputedStyle(a,null),null===e?!1:"none"===e.getPropertyValue("display")||"STYLE"===f||"SCRIPT"===f||!c&&b(e.getPropertyValue("clip"))||!d&&("hidden"===e.getPropertyValue("visibility")||!c&&s.isOffscreen(a))||c&&"true"===a.getAttribute("aria-hidden")?!1:g?s.isVisible(g,c,!0):!1)},s.isVisualContent=function(a){"use strict";switch(a.tagName.toUpperCase()){case"IMG":case"IFRAME":case"OBJECT":case"VIDEO":case"AUDIO":case"CANVAS":case"SVG":case"MATH":case"BUTTON":case"SELECT":case"TEXTAREA":case"KEYGEN":case"PROGRESS":case"METER":return!0;case"INPUT":return"hidden"!==a.type;default:return!1}},s.visuallyContains=function(a,b){var c=a.getBoundingClientRect(),d=b.getBoundingClientRect(),e=d.top,f=d.left,g={top:e-b.scrollTop,bottom:e-b.scrollTop+b.scrollHeight,left:f-b.scrollLeft,right:f-b.scrollLeft+b.scrollWidth};if(c.left<g.left&&c.left<d.left||c.top<g.top&&c.top<d.top||c.right>g.right&&c.right>d.right||c.bottom>g.bottom&&c.bottom>d.bottom)return!1;var h=a.ownerDocument.defaultView,i=h.getComputedStyle(b);return c.right>d.right||c.bottom>d.bottom?"scroll"===i.overflow||"auto"===i.overflow||"hidden"===i.overflow||b instanceof h.HTMLBodyElement||b instanceof h.HTMLHtmlElement:!0},s.visuallyOverlaps=function(a,b){var c=b.getBoundingClientRect(),d=c.top,e=c.left,f={top:d-b.scrollTop,bottom:d-b.scrollTop+b.scrollHeight,left:e-b.scrollLeft,right:e-b.scrollLeft+b.scrollWidth};if(a.left>f.right&&a.left>c.right||a.top>f.bottom&&a.top>c.bottom||a.right<f.left&&a.right<c.left||a.bottom<f.top&&a.bottom<c.top)return!1;var g=b.ownerDocument.defaultView,h=g.getComputedStyle(b);return a.left>c.right||a.top>c.bottom?"scroll"===h.overflow||"auto"===h.overflow||b instanceof g.HTMLBodyElement||b instanceof g.HTMLHtmlElement:!0},t.getCellPosition=function(a){for(var b,c=t.toArray(s.findUp(a,"table")),d=0;d<c.length;d++)if(c[d]&&(b=c[d].indexOf(a),-1!==b))return{x:b,y:d}},t.getHeaders=function(a){if(a.getAttribute("headers"))return m.dom.idrefs(a,"headers");for(var b,c=[],d=m.table.toArray(m.dom.findUp(a,"table")),e=m.table.getCellPosition(a),f=e.x-1;f>=0;f--)b=d[e.y][f],m.table.isRowHeader(b)&&c.unshift(b);for(var g=e.y-1;g>=0;g--)b=d[g][e.x],b&&m.table.isColumnHeader(b)&&c.unshift(b);return c},t.isColumnHeader=function(a){var b=a.getAttribute("scope");if("col"===b)return!0;if(b||"TH"!==a.nodeName)return!1;for(var c,d=t.getCellPosition(a),e=t.toArray(s.findUp(a,"table")),f=e[d.y],g=0,h=f.length;h>g;g++)if(c=f[g],c!==a&&t.isDataCell(c))return!1;return!0},t.isDataCell=function(a){return a.children.length||a.textContent.trim()?"TD"===a.nodeName:!1},t.isDataTable=function(a){var b=a.ownerDocument.defaultView,c=a.getAttribute("role");if("presentation"===c&&!s.isFocusable(a))return!1;if("true"===a.getAttribute("contenteditable")||s.findUp(a,'[contenteditable="true"]'))return!0;if("grid"===c||"treegrid"===c)return!0;if("landmark"===m.aria.getRoleType(c))return!0;if("0"===a.getAttribute("datatable"))return!1;if(a.getAttribute("summary"))return!0;if(a.tHead||a.tFoot||a.caption)return!0;for(var d=0,e=a.children.length;e>d;d++)if("COLGROUP"===a.children[d].nodeName)return!0;for(var f,g,h=0,i=a.rows.length,j=!1,k=0;i>k;k++){f=a.rows[k];for(var l=0,n=f.cells.length;n>l;l++){if(g=f.cells[l],j||g.offsetWidth===g.clientWidth&&g.offsetHeight===g.clientHeight||(j=!0),g.getAttribute("scope")||g.getAttribute("headers")||g.getAttribute("abbr"))return!0;if("TH"===g.nodeName)return!0;if(1===g.children.length&&"ABBR"===g.children[0].nodeName)return!0;h++}}if(a.getElementsByTagName("table").length)return!1;if(2>i)return!1;var o=a.rows[Math.ceil(i/2)];if(1===o.cells.length&&1===o.cells[0].colSpan)return!1;if(o.cells.length>=5)return!0;if(j)return!0;var p,q;for(k=0;i>k;k++){if(f=a.rows[k],p&&p!==b.getComputedStyle(f).getPropertyValue("background-color"))return!0;if(p=b.getComputedStyle(f).getPropertyValue("background-color"),q&&q!==b.getComputedStyle(f).getPropertyValue("background-image"))return!0;q=b.getComputedStyle(f).getPropertyValue("background-image")}return i>=20?!0:s.getElementCoordinates(a).width>.95*s.getViewportSize(b).width?!1:10>h?!1:a.querySelector("object, embed, iframe, applet")?!1:!0},t.isHeader=function(a){return t.isColumnHeader(a)||t.isRowHeader(a)?!0:a.id?!!a.ownerDocument.querySelector('[headers~="'+v.escapeSelector(a.id)+'"]'):!1},t.isRowHeader=function(a){var b=a.getAttribute("scope");if("row"===b)return!0;if(b||"TH"!==a.nodeName)return!1;if(t.isColumnHeader(a))return!1;for(var c,d=t.getCellPosition(a),e=t.toArray(s.findUp(a,"table")),f=0,g=e.length;g>f;f++)if(c=e[f][d.x],c!==a&&t.isDataCell(c))return!1;return!0},t.toArray=function(a){for(var b=[],c=a.rows,d=0,e=c.length;e>d;d++){var f=c[d].cells;b[d]=b[d]||[];for(var g=0,h=0,i=f.length;i>h;h++)for(var j=0;j<f[h].colSpan;j++){for(var k=0;k<f[h].rowSpan;k++){for(b[d+k]=b[d+k]||[];b[d+k][g];)g++;b[d+k][g]=f[h]}g++}}return b};var y={submit:"Submit",reset:"Reset"},z=["text","search","tel","url","email","date","time","number","range","color"],A=["a","em","strong","small","mark","abbr","dfn","i","b","s","u","code","var","samp","kbd","sup","sub","q","cite","span","bdo","bdi","br","wbr","ins","del","img","embed","object","iframe","map","area","script","noscript","ruby","video","audio","input","textarea","select","button","label","output","datalist","keygen","progress","command","canvas","time","meter"];return u.accessibleText=function(a){function b(a,b,g){var h="";if(f(a)&&(h=n(a,!1,!1)||"",l(h)))return h;if("FIGURE"===a.nodeName&&(h=i(a,"figcaption"),l(h)))return h;if("TABLE"===a.nodeName){if(h=i(a,"caption"),l(h))return h;if(h=a.getAttribute("title")||a.getAttribute("summary")||"",l(h))return h}if(k(a))return a.getAttribute("alt")||"";if(e(a)&&!g){if(d(a))return a.value||a.title||y[a.type]||"";var j=c(a);if(j)return o(j,b,!0)}return""}function m(a,b,c){return!b&&a.hasAttribute("aria-labelledby")?u.sanitize(s.idrefs(a,"aria-labelledby").map(function(b){return a===b&&q.pop(),o(b,!0,a!==b)}).join(" ")):c&&j(a)||!a.hasAttribute("aria-label")?"":u.sanitize(a.getAttribute("aria-label"))}function n(a,b,c){for(var d,e=a.childNodes,f="",g=0;g<e.length;g++)d=e[g],3===d.nodeType?f+=d.textContent:1===d.nodeType&&(-1===A.indexOf(d.nodeName.toLowerCase())&&(f+=" "),f+=o(e[g],b,c));return f}function o(a,c,d){"use strict";var e="";if(null===a||!s.isVisible(a,!0)||-1!==q.indexOf(a))return"";q.push(a);var f=a.getAttribute("role");return e+=m(a,c,d),l(e)?e:(e=b(a,c,d),l(e)?e:d&&(e+=h(a),l(e))?e:g(a)||f&&-1===p.getRolesWithNameFromContents().indexOf(f)||(e=n(a,c,d),!l(e))?a.hasAttribute("title")?a.getAttribute("title"):"":e)}var q=[];return u.sanitize(o(a))},u.label=function(a){var b,c;return(c=p.label(a))?c:a.id&&(b=a.ownerDocument.querySelector('label[for="'+v.escapeSelector(a.id)+'"]'),c=b&&u.visible(b,!0))?c:(b=s.findUp(a,"label"),c=b&&u.visible(b,!0),c?c:null)},u.sanitize=function(a){"use strict";return a.replace(/\r\n/g,"\n").replace(/\u00A0/g," ").replace(/[\s]{2,}/g," ").trim()},u.visible=function(a,b,c){"use strict";var d,e,f,g=a.childNodes,h=g.length,i="";for(d=0;h>d;d++)e=g[d],3===e.nodeType?(f=e.nodeValue,f&&s.isVisible(a,b)&&(i+=e.nodeValue)):c||(i+=u.visible(e,b));return u.sanitize(i)},v.toArray=function(a){"use strict";return Array.prototype.slice.call(a)},v.tokenList=function(a){"use strict";return a.trim().replace(/\s{2,}/g," ").split(" ")},m}(),version:"1.0.2"}),Q.version="1.0.1"}(this);
metadata ADDED
@@ -0,0 +1,270 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: axe-matchers
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Deque Systems
8
+ - Test Double
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-08-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: dumb_delegator
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '0.8'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '0.8'
28
+ - !ruby/object:Gem::Dependency
29
+ name: virtus
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '1.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.6'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '1.6'
56
+ - !ruby/object:Gem::Dependency
57
+ name: cucumber
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.3'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '10.4'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '10.4'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '3.2'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: '3.2'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec-its
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '1.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: '1.2'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rspec_junit_formatter
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '0.2'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '0.2'
126
+ - !ruby/object:Gem::Dependency
127
+ name: sinatra
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '1.4'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: '1.4'
140
+ - !ruby/object:Gem::Dependency
141
+ name: capybara
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: '2.4'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: '2.4'
154
+ - !ruby/object:Gem::Dependency
155
+ name: capybara-webkit
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '1.3'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: '1.3'
168
+ - !ruby/object:Gem::Dependency
169
+ name: poltergeist
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '1.6'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '1.6'
182
+ - !ruby/object:Gem::Dependency
183
+ name: selenium-webdriver
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ version: '2.46'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ~>
194
+ - !ruby/object:Gem::Version
195
+ version: '2.46'
196
+ - !ruby/object:Gem::Dependency
197
+ name: watir-webdriver
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: '0.8'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ~>
208
+ - !ruby/object:Gem::Version
209
+ version: '0.8'
210
+ description: |2
211
+ axe-matchers provides matchers that wrap the axe-core accessibility library.
212
+ The matchers can be used with RSpec, MiniTest, Cucumber and other test tools.
213
+ Cucumber step definitions for are also provided.
214
+ email:
215
+ executables: []
216
+ extensions: []
217
+ extra_rdoc_files: []
218
+ files:
219
+ - lib/axe/api/a11y_check.rb
220
+ - lib/axe/api/audit.rb
221
+ - lib/axe/api/context.rb
222
+ - lib/axe/api/options.rb
223
+ - lib/axe/api/results/check.rb
224
+ - lib/axe/api/results/checked_node.rb
225
+ - lib/axe/api/results/node.rb
226
+ - lib/axe/api/results/rule.rb
227
+ - lib/axe/api/results.rb
228
+ - lib/axe/api/rules.rb
229
+ - lib/axe/api/value_object.rb
230
+ - lib/axe/api.rb
231
+ - lib/axe/configuration.rb
232
+ - lib/axe/cucumber/step.rb
233
+ - lib/axe/cucumber/step_definitions.rb
234
+ - lib/axe/javascript_library.rb
235
+ - lib/axe/matchers/be_accessible.rb
236
+ - lib/axe/matchers.rb
237
+ - lib/axe/page.rb
238
+ - lib/axe/rspec.rb
239
+ - lib/axe/version.rb
240
+ - lib/axe.rb
241
+ - lib/webdriver_script_adapter/exec_eval_script_adapter.rb
242
+ - lib/webdriver_script_adapter/execute_async_script_adapter.rb
243
+ - node_modules/axe-core/axe.min.js
244
+ - LICENSE
245
+ - README.md
246
+ homepage: https://www.deque.com
247
+ licenses:
248
+ - MPL-2.0
249
+ metadata: {}
250
+ post_install_message:
251
+ rdoc_options: []
252
+ require_paths:
253
+ - lib
254
+ required_ruby_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - '>='
257
+ - !ruby/object:Gem::Version
258
+ version: 1.9.3
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - '>='
262
+ - !ruby/object:Gem::Version
263
+ version: 1.3.6
264
+ requirements: []
265
+ rubyforge_project:
266
+ rubygems_version: 2.0.14
267
+ signing_key:
268
+ specification_version: 4
269
+ summary: Automated accessibility testing powered by aXe
270
+ test_files: []