babelacc

compare different implementations of the text alternative computation  https://p.ce9e.org/babelacc/
git clone https://git.ce9e.org/babelacc.git

commit
15a0e41ec1ef025a1207af63a7a6479566320a06
parent
24cf63e8a02ef5bcd563a4c14448c188eda4b6f0
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2019-03-26 20:57
build

Diffstat

M babel.js 10892 +++++++++++++++++++++++++++++++++++--------------------------
M fuzz.js 2102 +++++++++++++++++++++++++++++++------------------------------

2 files changed, 7281 insertions, 5713 deletions


diff --git a/babel.js b/babel.js

@@ -1,190 +1,4 @@
    1     1 (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
    2    -1 // shim for using process in browser
    3    -1 var process = module.exports = {};
    4    -1 
    5    -1 // cached from whatever global is present so that test runners that stub it
    6    -1 // don't break things.  But we need to wrap it in a try catch in case it is
    7    -1 // wrapped in strict mode code which doesn't define any globals.  It's inside a
    8    -1 // function because try/catches deoptimize in certain engines.
    9    -1 
   10    -1 var cachedSetTimeout;
   11    -1 var cachedClearTimeout;
   12    -1 
   13    -1 function defaultSetTimout() {
   14    -1     throw new Error('setTimeout has not been defined');
   15    -1 }
   16    -1 function defaultClearTimeout () {
   17    -1     throw new Error('clearTimeout has not been defined');
   18    -1 }
   19    -1 (function () {
   20    -1     try {
   21    -1         if (typeof setTimeout === 'function') {
   22    -1             cachedSetTimeout = setTimeout;
   23    -1         } else {
   24    -1             cachedSetTimeout = defaultSetTimout;
   25    -1         }
   26    -1     } catch (e) {
   27    -1         cachedSetTimeout = defaultSetTimout;
   28    -1     }
   29    -1     try {
   30    -1         if (typeof clearTimeout === 'function') {
   31    -1             cachedClearTimeout = clearTimeout;
   32    -1         } else {
   33    -1             cachedClearTimeout = defaultClearTimeout;
   34    -1         }
   35    -1     } catch (e) {
   36    -1         cachedClearTimeout = defaultClearTimeout;
   37    -1     }
   38    -1 } ())
   39    -1 function runTimeout(fun) {
   40    -1     if (cachedSetTimeout === setTimeout) {
   41    -1         //normal enviroments in sane situations
   42    -1         return setTimeout(fun, 0);
   43    -1     }
   44    -1     // if setTimeout wasn't available but was latter defined
   45    -1     if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
   46    -1         cachedSetTimeout = setTimeout;
   47    -1         return setTimeout(fun, 0);
   48    -1     }
   49    -1     try {
   50    -1         // when when somebody has screwed with setTimeout but no I.E. maddness
   51    -1         return cachedSetTimeout(fun, 0);
   52    -1     } catch(e){
   53    -1         try {
   54    -1             // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
   55    -1             return cachedSetTimeout.call(null, fun, 0);
   56    -1         } catch(e){
   57    -1             // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
   58    -1             return cachedSetTimeout.call(this, fun, 0);
   59    -1         }
   60    -1     }
   61    -1 
   62    -1 
   63    -1 }
   64    -1 function runClearTimeout(marker) {
   65    -1     if (cachedClearTimeout === clearTimeout) {
   66    -1         //normal enviroments in sane situations
   67    -1         return clearTimeout(marker);
   68    -1     }
   69    -1     // if clearTimeout wasn't available but was latter defined
   70    -1     if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
   71    -1         cachedClearTimeout = clearTimeout;
   72    -1         return clearTimeout(marker);
   73    -1     }
   74    -1     try {
   75    -1         // when when somebody has screwed with setTimeout but no I.E. maddness
   76    -1         return cachedClearTimeout(marker);
   77    -1     } catch (e){
   78    -1         try {
   79    -1             // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
   80    -1             return cachedClearTimeout.call(null, marker);
   81    -1         } catch (e){
   82    -1             // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
   83    -1             // Some versions of I.E. have different rules for clearTimeout vs setTimeout
   84    -1             return cachedClearTimeout.call(this, marker);
   85    -1         }
   86    -1     }
   87    -1 
   88    -1 
   89    -1 
   90    -1 }
   91    -1 var queue = [];
   92    -1 var draining = false;
   93    -1 var currentQueue;
   94    -1 var queueIndex = -1;
   95    -1 
   96    -1 function cleanUpNextTick() {
   97    -1     if (!draining || !currentQueue) {
   98    -1         return;
   99    -1     }
  100    -1     draining = false;
  101    -1     if (currentQueue.length) {
  102    -1         queue = currentQueue.concat(queue);
  103    -1     } else {
  104    -1         queueIndex = -1;
  105    -1     }
  106    -1     if (queue.length) {
  107    -1         drainQueue();
  108    -1     }
  109    -1 }
  110    -1 
  111    -1 function drainQueue() {
  112    -1     if (draining) {
  113    -1         return;
  114    -1     }
  115    -1     var timeout = runTimeout(cleanUpNextTick);
  116    -1     draining = true;
  117    -1 
  118    -1     var len = queue.length;
  119    -1     while(len) {
  120    -1         currentQueue = queue;
  121    -1         queue = [];
  122    -1         while (++queueIndex < len) {
  123    -1             if (currentQueue) {
  124    -1                 currentQueue[queueIndex].run();
  125    -1             }
  126    -1         }
  127    -1         queueIndex = -1;
  128    -1         len = queue.length;
  129    -1     }
  130    -1     currentQueue = null;
  131    -1     draining = false;
  132    -1     runClearTimeout(timeout);
  133    -1 }
  134    -1 
  135    -1 process.nextTick = function (fun) {
  136    -1     var args = new Array(arguments.length - 1);
  137    -1     if (arguments.length > 1) {
  138    -1         for (var i = 1; i < arguments.length; i++) {
  139    -1             args[i - 1] = arguments[i];
  140    -1         }
  141    -1     }
  142    -1     queue.push(new Item(fun, args));
  143    -1     if (queue.length === 1 && !draining) {
  144    -1         runTimeout(drainQueue);
  145    -1     }
  146    -1 };
  147    -1 
  148    -1 // v8 likes predictible objects
  149    -1 function Item(fun, array) {
  150    -1     this.fun = fun;
  151    -1     this.array = array;
  152    -1 }
  153    -1 Item.prototype.run = function () {
  154    -1     this.fun.apply(null, this.array);
  155    -1 };
  156    -1 process.title = 'browser';
  157    -1 process.browser = true;
  158    -1 process.env = {};
  159    -1 process.argv = [];
  160    -1 process.version = ''; // empty string to avoid regexp issues
  161    -1 process.versions = {};
  162    -1 
  163    -1 function noop() {}
  164    -1 
  165    -1 process.on = noop;
  166    -1 process.addListener = noop;
  167    -1 process.once = noop;
  168    -1 process.off = noop;
  169    -1 process.removeListener = noop;
  170    -1 process.removeAllListeners = noop;
  171    -1 process.emit = noop;
  172    -1 process.prependListener = noop;
  173    -1 process.prependOnceListener = noop;
  174    -1 
  175    -1 process.listeners = function (name) { return [] }
  176    -1 
  177    -1 process.binding = function (name) {
  178    -1     throw new Error('process.binding is not supported');
  179    -1 };
  180    -1 
  181    -1 process.cwd = function () { return '/' };
  182    -1 process.chdir = function (dir) {
  183    -1     throw new Error('process.chdir is not supported');
  184    -1 };
  185    -1 process.umask = function() { return 0; };
  186    -1 
  187    -1 },{}],2:[function(require,module,exports){
  188     2 // Copyright 2012 Google Inc.
  189     3 //
  190     4 // Licensed under the Apache License, Version 2.0 (the "License");
@@ -1467,7 +1281,7 @@ axs.utils.findDescendantsWithRole = function(element, role) {
 1467  1281     return result;
 1468  1282 };
 1469  1283 
 1470    -1 },{}],3:[function(require,module,exports){
   -1  1284 },{}],2:[function(require,module,exports){
 1471  1285 // Copyright 2013 Google Inc.
 1472  1286 //
 1473  1287 // Licensed under the Apache License, Version 2.0 (the "License");
@@ -1504,7 +1318,7 @@ axs.browserUtils.matchSelector = function(element, selector) {
 1504  1318     return false;
 1505  1319 };
 1506  1320 
 1507    -1 },{}],4:[function(require,module,exports){
   -1  1321 },{}],3:[function(require,module,exports){
 1508  1322 // Copyright 2015 Google Inc.
 1509  1323 //
 1510  1324 // Licensed under the Apache License, Version 2.0 (the "License");
@@ -2046,7 +1860,7 @@ axs.color.YCC_CUBE_FACES_WHITE = [ { p0: axs.color.WHITE_YCC, p1: axs.color.CYAN
 2046  1860                                    { p0: axs.color.WHITE_YCC, p1: axs.color.MAGENTA_YCC, p2: axs.color.YELLOW_YCC },
 2047  1861                                    { p0: axs.color.WHITE_YCC, p1: axs.color.YELLOW_YCC, p2: axs.color.CYAN_YCC } ];
 2048  1862 
 2049    -1 },{}],5:[function(require,module,exports){
   -1  1863 },{}],4:[function(require,module,exports){
 2050  1864 // Copyright 2012 Google Inc.
 2051  1865 //
 2052  1866 // Licensed under the Apache License, Version 2.0 (the "License");
@@ -3730,7 +3544,7 @@ axs.constants.TAG_TO_IMPLICIT_SEMANTIC_INFO = {
 3730  3544     }]
 3731  3545 };
 3732  3546 
 3733    -1 },{}],6:[function(require,module,exports){
   -1  3547 },{}],5:[function(require,module,exports){
 3734  3548 // Copyright 2015 Google Inc.
 3735  3549 //
 3736  3550 // Licensed under the Apache License, Version 2.0 (the "License");
@@ -3944,7 +3758,7 @@ axs.dom.composedTreeSearch = function(node, end, callbacks, parentFlags, opt_sha
 3944  3758     return found;
 3945  3759 };
 3946  3760 
 3947    -1 },{}],7:[function(require,module,exports){
   -1  3761 },{}],6:[function(require,module,exports){
 3948  3762 // Copyright 2012 Google Inc.
 3949  3763 //
 3950  3764 // Licensed under the Apache License, Version 2.0 (the "License");
@@ -4873,7 +4687,7 @@ axs.properties.getNativelySupportedAttributes = function(element) {
 4873  4687     };
 4874  4688 })();
 4875  4689 
 4876    -1 },{}],8:[function(require,module,exports){
   -1  4690 },{}],7:[function(require,module,exports){
 4877  4691 var query = require('./lib/query.js');
 4878  4692 var name = require('./lib/name.js');
 4879  4693 
@@ -4889,7 +4703,7 @@ module.exports = {
 4889  4703 	closest: query.closest,
 4890  4704 };
 4891  4705 
 4892    -1 },{"./lib/name.js":10,"./lib/query.js":11}],9:[function(require,module,exports){
   -1  4706 },{"./lib/name.js":9,"./lib/query.js":10}],8:[function(require,module,exports){
 4893  4707 exports.attributes = {
 4894  4708 	// widget
 4895  4709 	'autocomplete': 'token',
@@ -5216,8 +5030,8 @@ exports.nameFromDescendant = {
 5216  5030 };
 5217  5031 
 5218  5032 exports.nameDefaults = {
 5219    -1 	'[type="submit"]': 'Submit',
 5220    -1 	'[type="reset"]': 'Reset',
   -1  5033 	'input[type="submit"]': 'Submit',
   -1  5034 	'input[type="reset"]': 'Reset',
 5221  5035 	'summary': 'Details',
 5222  5036 };
 5223  5037 
@@ -5232,7 +5046,7 @@ exports.labelable = [
 5232  5046 	'textarea',
 5233  5047 ];
 5234  5048 
 5235    -1 },{}],10:[function(require,module,exports){
   -1  5049 },{}],9:[function(require,module,exports){
 5236  5050 var constants = require('./constants.js');
 5237  5051 var query = require('./query.js');
 5238  5052 var util = require('./util.js');
@@ -5297,7 +5111,7 @@ var getContent = function(root, referenced, owned) {
 5297  5111 
 5298  5112 var allowNameFromContent = function(el) {
 5299  5113 	var role = query.getRole(el);
 5300    -1 	return !role || constants.nameFromContents.indexOf(role) !== -1;
   -1  5114 	return role && constants.nameFromContents.indexOf(role) !== -1;
 5301  5115 };
 5302  5116 
 5303  5117 var isLabelable = function(el) {
@@ -5323,15 +5137,22 @@ var getLabelNodes = function(element) {
 5323  5137 	return labels;
 5324  5138 };
 5325  5139 
 5326    -1 // http://www.ssbbartgroup.com/blog/how-the-w3c-text-alternative-computation-works/
 5327    -1 // https://www.w3.org/TR/accname-aam-1.1/#h-mapping_additional_nd_te
   -1  5140 var isInLabelForOtherWidget = function(el) {
   -1  5141 	var label = el.parentElement.closest('label');
   -1  5142 	var ownLabels = getLabelNodes(el);
   -1  5143 	return label && ownLabels.indexOf(label) === -1;
   -1  5144 };
   -1  5145 
 5328  5146 var getName = function(el, recursive, referenced, owned) {
 5329  5147 	var ret = '';
 5330  5148 	var owned = owned || [];
 5331  5149 
   -1  5150 	// A
 5332  5151 	if (query.getAttribute(el, 'hidden', referenced)) {
 5333  5152 		return '';
 5334  5153 	}
   -1  5154 
   -1  5155 	// B
 5335  5156 	if (!recursive && el.matches('[aria-labelledby]')) {
 5336  5157 		var ids = el.getAttribute('aria-labelledby').split(/\s+/);
 5337  5158 		var strings = ids.map(function(id) {
@@ -5340,13 +5161,14 @@ var getName = function(el, recursive, referenced, owned) {
 5340  5161 		});
 5341  5162 		ret = strings.join(' ');
 5342  5163 	}
   -1  5164 
   -1  5165 	// C
 5343  5166 	if (!ret.trim() && el.matches('[aria-label]')) {
 5344  5167 		ret = el.getAttribute('aria-label');
 5345  5168 	}
 5346    -1 	if (!ret.trim() && query.matches(el, 'presentation')) {
 5347    -1 		return getContent(el, referenced, owned);
 5348    -1 	}
 5349    -1 	if (!ret && !recursive && isLabelable(el)) {
   -1  5169 
   -1  5170 	// D
   -1  5171 	if (!ret.trim() && !recursive && isLabelable(el)) {
 5350  5172 		var strings = getLabelNodes(el).map(function(label) {
 5351  5173 			return getName(label, true, label, owned);
 5352  5174 		});
@@ -5371,23 +5193,40 @@ var getName = function(el, recursive, referenced, owned) {
 5371  5193 			}
 5372  5194 		}
 5373  5195 	}
 5374    -1 	if (el.closest('label') || recursive || query.matches(el, 'button')) {
 5375    -1 		if (!ret.trim() && query.matches(el, 'textbox,button,combobox,listbox,range')) {
   -1  5196 
   -1  5197 	// E
   -1  5198 	if (!ret.trim() && (recursive || isInLabelForOtherWidget(el) || query.matches(el, 'button'))) {
   -1  5199 		if (query.matches(el, 'textbox,button,combobox,listbox,range')) {
 5376  5200 			if (query.matches(el, 'textbox,button')) {
 5377  5201 				ret = el.value || el.textContent;
 5378  5202 			} else if (query.matches(el, 'combobox,listbox')) {
 5379  5203 				var selected = query.querySelector(el, ':selected') || query.querySelector(el, 'option');
 5380  5204 				if (selected) {
 5381  5205 					ret = getName(selected, recursive, referenced, owned);
   -1  5206 				} else {
   -1  5207 					ret = el.value || '';
 5382  5208 				}
 5383  5209 			} else if (query.matches(el, 'range')) {
 5384  5210 				ret = '' + (query.getAttribute(el, 'valuetext') || query.getAttribute(el, 'valuenow') || el.value);
 5385  5211 			}
 5386  5212 		}
 5387  5213 	}
 5388    -1 	if (!ret.trim() && (recursive || allowNameFromContent(el)) && !query.matches(el, 'menu')) {
   -1  5214 
   -1  5215 	// F
   -1  5216 	// FIXME: menu is not mentioned in the spec
   -1  5217 	if (!ret.trim() && (recursive || allowNameFromContent(el) || el.closest('label')) && !query.matches(el, 'menu')) {
 5389  5218 		ret = getContent(el, referenced, owned);
 5390  5219 	}
   -1  5220 
   -1  5221 	// TODO: G
   -1  5222 	// TODO: H
   -1  5223 
   -1  5224 	// FIXME: not mentioned in the spec
   -1  5225 	if (!ret.trim() && query.matches(el, 'presentation')) {
   -1  5226 		return getContent(el, referenced, owned);
   -1  5227 	}
   -1  5228 
   -1  5229 	// FIXME: not mentioned in the spec
 5391  5230 	if (!ret.trim()) {
 5392  5231 		for (var selector in constants.nameDefaults) {
 5393  5232 			if (el.matches(selector)) {
@@ -5395,6 +5234,8 @@ var getName = function(el, recursive, referenced, owned) {
 5395  5234 			}
 5396  5235 		}
 5397  5236 	}
   -1  5237 
   -1  5238 	// I
 5398  5239 	if (!ret.trim()) {
 5399  5240 		ret = el.title || '';
 5400  5241 	}
@@ -5439,7 +5280,7 @@ module.exports = {
 5439  5280 	getDescription: getDescription,
 5440  5281 };
 5441  5282 
 5442    -1 },{"./constants.js":9,"./query.js":11,"./util.js":12}],11:[function(require,module,exports){
   -1  5283 },{"./constants.js":8,"./query.js":10,"./util.js":11}],10:[function(require,module,exports){
 5443  5284 var constants = require('./constants.js');
 5444  5285 var util = require('./util.js');
 5445  5286 
@@ -5598,7 +5439,7 @@ module.exports = {
 5598  5439 	closest: closest,
 5599  5440 };
 5600  5441 
 5601    -1 },{"./constants.js":9,"./util.js":12}],12:[function(require,module,exports){
   -1  5442 },{"./constants.js":8,"./util.js":11}],11:[function(require,module,exports){
 5602  5443 var walkDOM = function(root, fn) {
 5603  5444 	if (fn(root) === false) {
 5604  5445 		return false;
@@ -5628,10 +5469,9 @@ module.exports = {
 5628  5469 	searchUp: searchUp,
 5629  5470 };
 5630  5471 
 5631    -1 },{}],13:[function(require,module,exports){
 5632    -1 (function (process){
 5633    -1 /*! aXe v3.1.2
 5634    -1  * Copyright (c) 2018 Deque Systems, Inc.
   -1  5472 },{}],12:[function(require,module,exports){
   -1  5473 /*! aXe v3.2.2
   -1  5474  * Copyright (c) 2019 Deque Systems, Inc.
 5635  5475  *
 5636  5476  * Your use of this Source Code Form is subject to the terms of the Mozilla Public
 5637  5477  * License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -5651,7 +5491,7 @@ module.exports = {
 5651  5491     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
 5652  5492   };
 5653  5493   var axe = axe || {};
 5654    -1   axe.version = '3.1.2';
   -1  5494   axe.version = '3.2.2';
 5655  5495   if (typeof define === 'function' && define.amd) {
 5656  5496     define('axe-core', [], function() {
 5657  5497       'use strict';
@@ -5678,1117 +5518,2143 @@ module.exports = {
 5678  5518   }
 5679  5519   SupportError.prototype = Object.create(Error.prototype);
 5680  5520   SupportError.prototype.constructor = SupportError;
 5681    -1   'use strict';
 5682    -1   axe.imports = {};
 5683    -1   'use strict';
 5684    -1   var utils = axe.utils = {};
 5685    -1   'use strict';
 5686    -1   var helpers = {};
 5687    -1   'use strict';
 5688    -1   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
 5689    -1     return typeof obj;
 5690    -1   } : function(obj) {
 5691    -1     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
 5692    -1   };
 5693    -1   var _extends = Object.assign || function(target) {
 5694    -1     for (var i = 1; i < arguments.length; i++) {
 5695    -1       var source = arguments[i];
 5696    -1       for (var key in source) {
 5697    -1         if (Object.prototype.hasOwnProperty.call(source, key)) {
 5698    -1           target[key] = source[key];
 5699    -1         }
   -1  5521   (function() {
   -1  5522     function r(e, n, t) {
   -1  5523       function o(i, f) {
   -1  5524         if (!n[i]) {
   -1  5525           if (!e[i]) {
   -1  5526             var c = 'function' == typeof require && require;
   -1  5527             if (!f && c) {
   -1  5528               return c(i, !0);
   -1  5529             }
   -1  5530             if (u) {
   -1  5531               return u(i, !0);
   -1  5532             }
   -1  5533             var a = new Error('Cannot find module \'' + i + '\'');
   -1  5534             throw a.code = 'MODULE_NOT_FOUND', a;
   -1  5535           }
   -1  5536           var p = n[i] = {
   -1  5537             exports: {}
   -1  5538           };
   -1  5539           e[i][0].call(p.exports, function(r) {
   -1  5540             var n = e[i][1][r];
   -1  5541             return o(n || r);
   -1  5542           }, p, p.exports, r, e, n, t);
   -1  5543         }
   -1  5544         return n[i].exports;
   -1  5545       }
   -1  5546       for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++) {
   -1  5547         o(t[i]);
   -1  5548       }
   -1  5549       return o;
   -1  5550     }
   -1  5551     return r;
   -1  5552   })()({
   -1  5553     1: [ function(_dereq_, module, exports) {
   -1  5554       _dereq_('es6-promise').polyfill();
   -1  5555       axe.imports = {
   -1  5556         axios: _dereq_('axios'),
   -1  5557         CssSelectorParser: _dereq_('css-selector-parser').CssSelectorParser,
   -1  5558         doT: _dereq_('dot'),
   -1  5559         emojiRegexText: _dereq_('emoji-regex')
   -1  5560       };
   -1  5561     }, {
   -1  5562       axios: 2,
   -1  5563       'css-selector-parser': 27,
   -1  5564       dot: 29,
   -1  5565       'emoji-regex': 30,
   -1  5566       'es6-promise': 31
   -1  5567     } ],
   -1  5568     2: [ function(_dereq_, module, exports) {
   -1  5569       module.exports = _dereq_('./lib/axios');
   -1  5570     }, {
   -1  5571       './lib/axios': 4
   -1  5572     } ],
   -1  5573     3: [ function(_dereq_, module, exports) {
   -1  5574       (function(process) {
   -1  5575         'use strict';
   -1  5576         var utils = _dereq_('./../utils');
   -1  5577         var settle = _dereq_('./../core/settle');
   -1  5578         var buildURL = _dereq_('./../helpers/buildURL');
   -1  5579         var parseHeaders = _dereq_('./../helpers/parseHeaders');
   -1  5580         var isURLSameOrigin = _dereq_('./../helpers/isURLSameOrigin');
   -1  5581         var createError = _dereq_('../core/createError');
   -1  5582         var btoa = typeof window !== 'undefined' && window.btoa && window.btoa.bind(window) || _dereq_('./../helpers/btoa');
   -1  5583         module.exports = function xhrAdapter(config) {
   -1  5584           return new Promise(function dispatchXhrRequest(resolve, reject) {
   -1  5585             var requestData = config.data;
   -1  5586             var requestHeaders = config.headers;
   -1  5587             if (utils.isFormData(requestData)) {
   -1  5588               delete requestHeaders['Content-Type'];
   -1  5589             }
   -1  5590             var request = new XMLHttpRequest();
   -1  5591             var loadEvent = 'onreadystatechange';
   -1  5592             var xDomain = false;
   -1  5593             if (process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {
   -1  5594               request = new window.XDomainRequest();
   -1  5595               loadEvent = 'onload';
   -1  5596               xDomain = true;
   -1  5597               request.onprogress = function handleProgress() {};
   -1  5598               request.ontimeout = function handleTimeout() {};
   -1  5599             }
   -1  5600             if (config.auth) {
   -1  5601               var username = config.auth.username || '';
   -1  5602               var password = config.auth.password || '';
   -1  5603               requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
   -1  5604             }
   -1  5605             request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);
   -1  5606             request.timeout = config.timeout;
   -1  5607             request[loadEvent] = function handleLoad() {
   -1  5608               if (!request || request.readyState !== 4 && !xDomain) {
   -1  5609                 return;
   -1  5610               }
   -1  5611               if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
   -1  5612                 return;
   -1  5613               }
   -1  5614               var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
   -1  5615               var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
   -1  5616               var response = {
   -1  5617                 data: responseData,
   -1  5618                 status: request.status === 1223 ? 204 : request.status,
   -1  5619                 statusText: request.status === 1223 ? 'No Content' : request.statusText,
   -1  5620                 headers: responseHeaders,
   -1  5621                 config: config,
   -1  5622                 request: request
   -1  5623               };
   -1  5624               settle(resolve, reject, response);
   -1  5625               request = null;
   -1  5626             };
   -1  5627             request.onerror = function handleError() {
   -1  5628               reject(createError('Network Error', config, null, request));
   -1  5629               request = null;
   -1  5630             };
   -1  5631             request.ontimeout = function handleTimeout() {
   -1  5632               reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request));
   -1  5633               request = null;
   -1  5634             };
   -1  5635             if (utils.isStandardBrowserEnv()) {
   -1  5636               var cookies = _dereq_('./../helpers/cookies');
   -1  5637               var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;
   -1  5638               if (xsrfValue) {
   -1  5639                 requestHeaders[config.xsrfHeaderName] = xsrfValue;
   -1  5640               }
   -1  5641             }
   -1  5642             if ('setRequestHeader' in request) {
   -1  5643               utils.forEach(requestHeaders, function setRequestHeader(val, key) {
   -1  5644                 if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
   -1  5645                   delete requestHeaders[key];
   -1  5646                 } else {
   -1  5647                   request.setRequestHeader(key, val);
   -1  5648                 }
   -1  5649               });
   -1  5650             }
   -1  5651             if (config.withCredentials) {
   -1  5652               request.withCredentials = true;
   -1  5653             }
   -1  5654             if (config.responseType) {
   -1  5655               try {
   -1  5656                 request.responseType = config.responseType;
   -1  5657               } catch (e) {
   -1  5658                 if (config.responseType !== 'json') {
   -1  5659                   throw e;
   -1  5660                 }
   -1  5661               }
   -1  5662             }
   -1  5663             if (typeof config.onDownloadProgress === 'function') {
   -1  5664               request.addEventListener('progress', config.onDownloadProgress);
   -1  5665             }
   -1  5666             if (typeof config.onUploadProgress === 'function' && request.upload) {
   -1  5667               request.upload.addEventListener('progress', config.onUploadProgress);
   -1  5668             }
   -1  5669             if (config.cancelToken) {
   -1  5670               config.cancelToken.promise.then(function onCanceled(cancel) {
   -1  5671                 if (!request) {
   -1  5672                   return;
   -1  5673                 }
   -1  5674                 request.abort();
   -1  5675                 reject(cancel);
   -1  5676                 request = null;
   -1  5677               });
   -1  5678             }
   -1  5679             if (requestData === undefined) {
   -1  5680               requestData = null;
   -1  5681             }
   -1  5682             request.send(requestData);
   -1  5683           });
   -1  5684         };
   -1  5685       }).call(this, _dereq_('_process'));
   -1  5686     }, {
   -1  5687       '../core/createError': 10,
   -1  5688       './../core/settle': 13,
   -1  5689       './../helpers/btoa': 17,
   -1  5690       './../helpers/buildURL': 18,
   -1  5691       './../helpers/cookies': 20,
   -1  5692       './../helpers/isURLSameOrigin': 22,
   -1  5693       './../helpers/parseHeaders': 24,
   -1  5694       './../utils': 26,
   -1  5695       _process: 33
   -1  5696     } ],
   -1  5697     4: [ function(_dereq_, module, exports) {
   -1  5698       'use strict';
   -1  5699       var utils = _dereq_('./utils');
   -1  5700       var bind = _dereq_('./helpers/bind');
   -1  5701       var Axios = _dereq_('./core/Axios');
   -1  5702       var defaults = _dereq_('./defaults');
   -1  5703       function createInstance(defaultConfig) {
   -1  5704         var context = new Axios(defaultConfig);
   -1  5705         var instance = bind(Axios.prototype.request, context);
   -1  5706         utils.extend(instance, Axios.prototype, context);
   -1  5707         utils.extend(instance, context);
   -1  5708         return instance;
 5700  5709       }
 5701    -1     }
 5702    -1     return target;
 5703    -1   };
 5704    -1   function getDefaultConfiguration(audit) {
 5705    -1     'use strict';
 5706    -1     var config;
 5707    -1     if (audit) {
 5708    -1       config = axe.utils.clone(audit);
 5709    -1       config.commons = audit.commons;
 5710    -1     } else {
 5711    -1       config = {};
 5712    -1     }
 5713    -1     config.reporter = config.reporter || null;
 5714    -1     config.rules = config.rules || [];
 5715    -1     config.checks = config.checks || [];
 5716    -1     config.data = _extends({
 5717    -1       checks: {},
 5718    -1       rules: {}
 5719    -1     }, config.data);
 5720    -1     return config;
 5721    -1   }
 5722    -1   function unpackToObject(collection, audit, method) {
 5723    -1     'use strict';
 5724    -1     var i, l;
 5725    -1     for (i = 0, l = collection.length; i < l; i++) {
 5726    -1       audit[method](collection[i]);
 5727    -1     }
 5728    -1   }
 5729    -1   function Audit(audit) {
 5730    -1     this.brand = 'axe';
 5731    -1     this.application = 'axeAPI';
 5732    -1     this.tagExclude = [ 'experimental' ];
 5733    -1     this.defaultConfig = audit;
 5734    -1     this._init();
 5735    -1     this._defaultLocale = null;
 5736    -1   }
 5737    -1   Audit.prototype._setDefaultLocale = function() {
 5738    -1     if (this._defaultLocale) {
 5739    -1       return;
 5740    -1     }
 5741    -1     var locale = {
 5742    -1       checks: {},
 5743    -1       rules: {}
 5744    -1     };
 5745    -1     var checkIDs = Object.keys(this.data.checks);
 5746    -1     for (var i = 0; i < checkIDs.length; i++) {
 5747    -1       var id = checkIDs[i];
 5748    -1       var check = this.data.checks[id];
 5749    -1       var _check$messages = check.messages, pass = _check$messages.pass, fail = _check$messages.fail, incomplete = _check$messages.incomplete;
 5750    -1       locale.checks[id] = {
 5751    -1         pass: pass,
 5752    -1         fail: fail,
 5753    -1         incomplete: incomplete
   -1  5710       var axios = createInstance(defaults);
   -1  5711       axios.Axios = Axios;
   -1  5712       axios.create = function create(instanceConfig) {
   -1  5713         return createInstance(utils.merge(defaults, instanceConfig));
 5754  5714       };
 5755    -1     }
 5756    -1     var ruleIDs = Object.keys(this.data.rules);
 5757    -1     for (var _i = 0; _i < ruleIDs.length; _i++) {
 5758    -1       var _id = ruleIDs[_i];
 5759    -1       var rule = this.data.rules[_id];
 5760    -1       var description = rule.description, help = rule.help;
 5761    -1       locale.rules[_id] = {
 5762    -1         description: description,
 5763    -1         help: help
   -1  5715       axios.Cancel = _dereq_('./cancel/Cancel');
   -1  5716       axios.CancelToken = _dereq_('./cancel/CancelToken');
   -1  5717       axios.isCancel = _dereq_('./cancel/isCancel');
   -1  5718       axios.all = function all(promises) {
   -1  5719         return Promise.all(promises);
 5764  5720       };
 5765    -1     }
 5766    -1     this._defaultLocale = locale;
 5767    -1   };
 5768    -1   Audit.prototype._resetLocale = function() {
 5769    -1     var defaultLocale = this._defaultLocale;
 5770    -1     if (!defaultLocale) {
 5771    -1       return;
 5772    -1     }
 5773    -1     this.applyLocale(defaultLocale);
 5774    -1   };
 5775    -1   var mergeCheckLocale = function mergeCheckLocale(a, b) {
 5776    -1     var pass = b.pass, fail = b.fail;
 5777    -1     if (typeof pass === 'string') {
 5778    -1       pass = axe.imports.doT.compile(pass);
 5779    -1     }
 5780    -1     if (typeof fail === 'string') {
 5781    -1       fail = axe.imports.doT.compile(fail);
 5782    -1     }
 5783    -1     return _extends({}, a, {
 5784    -1       messages: {
 5785    -1         pass: pass || a.messages.pass,
 5786    -1         fail: fail || a.messages.fail,
 5787    -1         incomplete: _typeof(a.messages.incomplete) === 'object' ? _extends({}, a.messages.incomplete, b.incomplete) : b.incomplete
 5788    -1       }
 5789    -1     });
 5790    -1   };
 5791    -1   var mergeRuleLocale = function mergeRuleLocale(a, b) {
 5792    -1     var help = b.help, description = b.description;
 5793    -1     if (typeof help === 'string') {
 5794    -1       help = axe.imports.doT.compile(help);
 5795    -1     }
 5796    -1     if (typeof description === 'string') {
 5797    -1       description = axe.imports.doT.compile(description);
 5798    -1     }
 5799    -1     return _extends({}, a, {
 5800    -1       help: help || a.help,
 5801    -1       description: description || a.description
 5802    -1     });
 5803    -1   };
 5804    -1   Audit.prototype._applyCheckLocale = function(checks) {
 5805    -1     var keys = Object.keys(checks);
 5806    -1     for (var i = 0; i < keys.length; i++) {
 5807    -1       var id = keys[i];
 5808    -1       if (!this.data.checks[id]) {
 5809    -1         throw new Error('Locale provided for unknown check: "' + id + '"');
 5810    -1       }
 5811    -1       this.data.checks[id] = mergeCheckLocale(this.data.checks[id], checks[id]);
 5812    -1     }
 5813    -1   };
 5814    -1   Audit.prototype._applyRuleLocale = function(rules) {
 5815    -1     var keys = Object.keys(rules);
 5816    -1     for (var i = 0; i < keys.length; i++) {
 5817    -1       var id = keys[i];
 5818    -1       if (!this.data.rules[id]) {
 5819    -1         throw new Error('Locale provided for unknown rule: "' + id + '"');
   -1  5721       axios.spread = _dereq_('./helpers/spread');
   -1  5722       module.exports = axios;
   -1  5723       module.exports.default = axios;
   -1  5724     }, {
   -1  5725       './cancel/Cancel': 5,
   -1  5726       './cancel/CancelToken': 6,
   -1  5727       './cancel/isCancel': 7,
   -1  5728       './core/Axios': 8,
   -1  5729       './defaults': 15,
   -1  5730       './helpers/bind': 16,
   -1  5731       './helpers/spread': 25,
   -1  5732       './utils': 26
   -1  5733     } ],
   -1  5734     5: [ function(_dereq_, module, exports) {
   -1  5735       'use strict';
   -1  5736       function Cancel(message) {
   -1  5737         this.message = message;
 5820  5738       }
 5821    -1       this.data.rules[id] = mergeRuleLocale(this.data.rules[id], rules[id]);
 5822    -1     }
 5823    -1   };
 5824    -1   Audit.prototype.applyLocale = function(locale) {
 5825    -1     this._setDefaultLocale();
 5826    -1     if (locale.checks) {
 5827    -1       this._applyCheckLocale(locale.checks);
 5828    -1     }
 5829    -1     if (locale.rules) {
 5830    -1       this._applyRuleLocale(locale.rules);
 5831    -1     }
 5832    -1   };
 5833    -1   Audit.prototype._init = function() {
 5834    -1     var audit = getDefaultConfiguration(this.defaultConfig);
 5835    -1     axe.commons = commons = audit.commons;
 5836    -1     this.reporter = audit.reporter;
 5837    -1     this.commands = {};
 5838    -1     this.rules = [];
 5839    -1     this.checks = {};
 5840    -1     unpackToObject(audit.rules, this, 'addRule');
 5841    -1     unpackToObject(audit.checks, this, 'addCheck');
 5842    -1     this.data = {};
 5843    -1     this.data.checks = audit.data && audit.data.checks || {};
 5844    -1     this.data.rules = audit.data && audit.data.rules || {};
 5845    -1     this.data.failureSummaries = audit.data && audit.data.failureSummaries || {};
 5846    -1     this.data.incompleteFallbackMessage = audit.data && audit.data.incompleteFallbackMessage || '';
 5847    -1     this._constructHelpUrls();
 5848    -1   };
 5849    -1   Audit.prototype.registerCommand = function(command) {
 5850    -1     'use strict';
 5851    -1     this.commands[command.id] = command.callback;
 5852    -1   };
 5853    -1   Audit.prototype.addRule = function(spec) {
 5854    -1     'use strict';
 5855    -1     if (spec.metadata) {
 5856    -1       this.data.rules[spec.id] = spec.metadata;
 5857    -1     }
 5858    -1     var rule = this.getRule(spec.id);
 5859    -1     if (rule) {
 5860    -1       rule.configure(spec);
 5861    -1     } else {
 5862    -1       this.rules.push(new Rule(spec, this));
 5863    -1     }
 5864    -1   };
 5865    -1   Audit.prototype.addCheck = function(spec) {
 5866    -1     'use strict';
 5867    -1     var metadata = spec.metadata;
 5868    -1     if ((typeof metadata === 'undefined' ? 'undefined' : _typeof(metadata)) === 'object') {
 5869    -1       this.data.checks[spec.id] = metadata;
 5870    -1       if (_typeof(metadata.messages) === 'object') {
 5871    -1         Object.keys(metadata.messages).filter(function(prop) {
 5872    -1           return metadata.messages.hasOwnProperty(prop) && typeof metadata.messages[prop] === 'string';
 5873    -1         }).forEach(function(prop) {
 5874    -1           if (metadata.messages[prop].indexOf('function') === 0) {
 5875    -1             metadata.messages[prop] = new Function('return ' + metadata.messages[prop] + ';')();
   -1  5739       Cancel.prototype.toString = function toString() {
   -1  5740         return 'Cancel' + (this.message ? ': ' + this.message : '');
   -1  5741       };
   -1  5742       Cancel.prototype.__CANCEL__ = true;
   -1  5743       module.exports = Cancel;
   -1  5744     }, {} ],
   -1  5745     6: [ function(_dereq_, module, exports) {
   -1  5746       'use strict';
   -1  5747       var Cancel = _dereq_('./Cancel');
   -1  5748       function CancelToken(executor) {
   -1  5749         if (typeof executor !== 'function') {
   -1  5750           throw new TypeError('executor must be a function.');
   -1  5751         }
   -1  5752         var resolvePromise;
   -1  5753         this.promise = new Promise(function promiseExecutor(resolve) {
   -1  5754           resolvePromise = resolve;
   -1  5755         });
   -1  5756         var token = this;
   -1  5757         executor(function cancel(message) {
   -1  5758           if (token.reason) {
   -1  5759             return;
 5876  5760           }
   -1  5761           token.reason = new Cancel(message);
   -1  5762           resolvePromise(token.reason);
 5877  5763         });
 5878  5764       }
 5879    -1     }
 5880    -1     if (this.checks[spec.id]) {
 5881    -1       this.checks[spec.id].configure(spec);
 5882    -1     } else {
 5883    -1       this.checks[spec.id] = new Check(spec);
 5884    -1     }
 5885    -1   };
 5886    -1   function getRulesToRun(rules, context, options) {
 5887    -1     var base = {
 5888    -1       now: [],
 5889    -1       later: []
 5890    -1     };
 5891    -1     var splitRules = rules.reduce(function(out, rule) {
 5892    -1       if (!axe.utils.ruleShouldRun(rule, context, options)) {
 5893    -1         return out;
 5894    -1       }
 5895    -1       if (rule.preload) {
 5896    -1         out.later.push(rule);
 5897    -1         return out;
   -1  5765       CancelToken.prototype.throwIfRequested = function throwIfRequested() {
   -1  5766         if (this.reason) {
   -1  5767           throw this.reason;
   -1  5768         }
   -1  5769       };
   -1  5770       CancelToken.source = function source() {
   -1  5771         var cancel;
   -1  5772         var token = new CancelToken(function executor(c) {
   -1  5773           cancel = c;
   -1  5774         });
   -1  5775         return {
   -1  5776           token: token,
   -1  5777           cancel: cancel
   -1  5778         };
   -1  5779       };
   -1  5780       module.exports = CancelToken;
   -1  5781     }, {
   -1  5782       './Cancel': 5
   -1  5783     } ],
   -1  5784     7: [ function(_dereq_, module, exports) {
   -1  5785       'use strict';
   -1  5786       module.exports = function isCancel(value) {
   -1  5787         return !!(value && value.__CANCEL__);
   -1  5788       };
   -1  5789     }, {} ],
   -1  5790     8: [ function(_dereq_, module, exports) {
   -1  5791       'use strict';
   -1  5792       var defaults = _dereq_('./../defaults');
   -1  5793       var utils = _dereq_('./../utils');
   -1  5794       var InterceptorManager = _dereq_('./InterceptorManager');
   -1  5795       var dispatchRequest = _dereq_('./dispatchRequest');
   -1  5796       function Axios(instanceConfig) {
   -1  5797         this.defaults = instanceConfig;
   -1  5798         this.interceptors = {
   -1  5799           request: new InterceptorManager(),
   -1  5800           response: new InterceptorManager()
   -1  5801         };
 5898  5802       }
 5899    -1       out.now.push(rule);
 5900    -1       return out;
 5901    -1     }, base);
 5902    -1     return splitRules;
 5903    -1   }
 5904    -1   function getDefferedRule(rule, context, options) {
 5905    -1     var markStart = void 0;
 5906    -1     var markEnd = void 0;
 5907    -1     if (options.performanceTimer) {
 5908    -1       markStart = 'mark_rule_start_' + rule.id;
 5909    -1       markEnd = 'mark_rule_end_' + rule.id;
 5910    -1       axe.utils.performanceTimer.mark(markStart);
 5911    -1     }
 5912    -1     return function(resolve, reject) {
 5913    -1       rule.run(context, options, function(ruleResult) {
 5914    -1         if (options.performanceTimer) {
 5915    -1           axe.utils.performanceTimer.mark(markEnd);
 5916    -1           axe.utils.performanceTimer.measure('rule_' + rule.id, markStart, markEnd);
   -1  5803       Axios.prototype.request = function request(config) {
   -1  5804         if (typeof config === 'string') {
   -1  5805           config = utils.merge({
   -1  5806             url: arguments[0]
   -1  5807           }, arguments[1]);
 5917  5808         }
 5918    -1         resolve(ruleResult);
 5919    -1       }, function(err) {
 5920    -1         if (!options.debug) {
 5921    -1           var errResult = Object.assign(new RuleResult(rule), {
 5922    -1             result: axe.constants.CANTTELL,
 5923    -1             description: 'An error occured while running this rule',
 5924    -1             message: err.message,
 5925    -1             stack: err.stack,
 5926    -1             error: err
 5927    -1           });
 5928    -1           resolve(errResult);
 5929    -1         } else {
 5930    -1           reject(err);
   -1  5809         config = utils.merge(defaults, {
   -1  5810           method: 'get'
   -1  5811         }, this.defaults, config);
   -1  5812         config.method = config.method.toLowerCase();
   -1  5813         var chain = [ dispatchRequest, undefined ];
   -1  5814         var promise = Promise.resolve(config);
   -1  5815         this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
   -1  5816           chain.unshift(interceptor.fulfilled, interceptor.rejected);
   -1  5817         });
   -1  5818         this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
   -1  5819           chain.push(interceptor.fulfilled, interceptor.rejected);
   -1  5820         });
   -1  5821         while (chain.length) {
   -1  5822           promise = promise.then(chain.shift(), chain.shift());
 5931  5823         }
   -1  5824         return promise;
   -1  5825       };
   -1  5826       utils.forEach([ 'delete', 'get', 'head', 'options' ], function forEachMethodNoData(method) {
   -1  5827         Axios.prototype[method] = function(url, config) {
   -1  5828           return this.request(utils.merge(config || {}, {
   -1  5829             method: method,
   -1  5830             url: url
   -1  5831           }));
   -1  5832         };
 5932  5833       });
 5933    -1     };
 5934    -1   }
 5935    -1   Audit.prototype.run = function(context, options, resolve, reject) {
 5936    -1     'use strict';
 5937    -1     this.normalizeOptions(options);
 5938    -1     axe._selectCache = [];
 5939    -1     var allRulesToRun = getRulesToRun(this.rules, context, options);
 5940    -1     var runNowRules = allRulesToRun.now;
 5941    -1     var runLaterRules = allRulesToRun.later;
 5942    -1     var nowRulesQueue = axe.utils.queue();
 5943    -1     runNowRules.forEach(function(rule) {
 5944    -1       nowRulesQueue.defer(getDefferedRule(rule, context, options));
 5945    -1     });
 5946    -1     var preloaderQueue = axe.utils.queue();
 5947    -1     if (runLaterRules.length) {
 5948    -1       preloaderQueue.defer(function(res, rej) {
 5949    -1         axe.utils.preload(options).then(function(preloadResults) {
 5950    -1           var assets = preloadResults[0];
 5951    -1           res(assets);
 5952    -1         }).catch(function(err) {
 5953    -1           console.warn('Couldn\'t load preload assets: ', err);
 5954    -1           var assets = undefined;
 5955    -1           res(assets);
 5956    -1         });
   -1  5834       utils.forEach([ 'post', 'put', 'patch' ], function forEachMethodWithData(method) {
   -1  5835         Axios.prototype[method] = function(url, data, config) {
   -1  5836           return this.request(utils.merge(config || {}, {
   -1  5837             method: method,
   -1  5838             url: url,
   -1  5839             data: data
   -1  5840           }));
   -1  5841         };
 5957  5842       });
 5958    -1     }
 5959    -1     var queueForNowRulesAndPreloader = axe.utils.queue();
 5960    -1     queueForNowRulesAndPreloader.defer(nowRulesQueue);
 5961    -1     queueForNowRulesAndPreloader.defer(preloaderQueue);
 5962    -1     queueForNowRulesAndPreloader.then(function(nowRulesAndPreloaderResults) {
 5963    -1       var assetsFromQueue = nowRulesAndPreloaderResults.pop();
 5964    -1       if (assetsFromQueue && assetsFromQueue.length) {
 5965    -1         var assets = assetsFromQueue[0];
 5966    -1         if (assets) {
 5967    -1           context = _extends({}, context, assets);
 5968    -1         }
 5969    -1       }
 5970    -1       var nowRulesResults = nowRulesAndPreloaderResults[0];
 5971    -1       if (!runLaterRules.length) {
 5972    -1         axe._selectCache = undefined;
 5973    -1         resolve(nowRulesResults.filter(function(result) {
 5974    -1           return !!result;
 5975    -1         }));
 5976    -1         return;
 5977    -1       }
 5978    -1       var laterRulesQueue = axe.utils.queue();
 5979    -1       runLaterRules.forEach(function(rule) {
 5980    -1         var deferredRule = getDefferedRule(rule, context, options);
 5981    -1         laterRulesQueue.defer(deferredRule);
 5982    -1       });
 5983    -1       laterRulesQueue.then(function(laterRuleResults) {
 5984    -1         axe._selectCache = undefined;
 5985    -1         resolve(nowRulesResults.concat(laterRuleResults).filter(function(result) {
 5986    -1           return !!result;
 5987    -1         }));
 5988    -1       }).catch(reject);
 5989    -1     }).catch(reject);
 5990    -1   };
 5991    -1   Audit.prototype.after = function(results, options) {
 5992    -1     'use strict';
 5993    -1     var rules = this.rules;
 5994    -1     return results.map(function(ruleResult) {
 5995    -1       var rule = axe.utils.findBy(rules, 'id', ruleResult.id);
 5996    -1       if (!rule) {
 5997    -1         throw new Error('Result for unknown rule. You may be running mismatch aXe-core versions');
 5998    -1       }
 5999    -1       return rule.after(ruleResult, options);
 6000    -1     });
 6001    -1   };
 6002    -1   Audit.prototype.getRule = function(ruleId) {
 6003    -1     return this.rules.find(function(rule) {
 6004    -1       return rule.id === ruleId;
 6005    -1     });
 6006    -1   };
 6007    -1   Audit.prototype.normalizeOptions = function(options) {
 6008    -1     'use strict';
 6009    -1     var audit = this;
 6010    -1     if (_typeof(options.runOnly) === 'object') {
 6011    -1       if (Array.isArray(options.runOnly)) {
 6012    -1         options.runOnly = {
 6013    -1           type: 'tag',
 6014    -1           values: options.runOnly
 6015    -1         };
 6016    -1       }
 6017    -1       var only = options.runOnly;
 6018    -1       if (only.value && !only.values) {
 6019    -1         only.values = only.value;
 6020    -1         delete only.value;
   -1  5843       module.exports = Axios;
   -1  5844     }, {
   -1  5845       './../defaults': 15,
   -1  5846       './../utils': 26,
   -1  5847       './InterceptorManager': 9,
   -1  5848       './dispatchRequest': 11
   -1  5849     } ],
   -1  5850     9: [ function(_dereq_, module, exports) {
   -1  5851       'use strict';
   -1  5852       var utils = _dereq_('./../utils');
   -1  5853       function InterceptorManager() {
   -1  5854         this.handlers = [];
 6021  5855       }
 6022    -1       if (!Array.isArray(only.values) || only.values.length === 0) {
 6023    -1         throw new Error('runOnly.values must be a non-empty array');
   -1  5856       InterceptorManager.prototype.use = function use(fulfilled, rejected) {
   -1  5857         this.handlers.push({
   -1  5858           fulfilled: fulfilled,
   -1  5859           rejected: rejected
   -1  5860         });
   -1  5861         return this.handlers.length - 1;
   -1  5862       };
   -1  5863       InterceptorManager.prototype.eject = function eject(id) {
   -1  5864         if (this.handlers[id]) {
   -1  5865           this.handlers[id] = null;
   -1  5866         }
   -1  5867       };
   -1  5868       InterceptorManager.prototype.forEach = function forEach(fn) {
   -1  5869         utils.forEach(this.handlers, function forEachHandler(h) {
   -1  5870           if (h !== null) {
   -1  5871             fn(h);
   -1  5872           }
   -1  5873         });
   -1  5874       };
   -1  5875       module.exports = InterceptorManager;
   -1  5876     }, {
   -1  5877       './../utils': 26
   -1  5878     } ],
   -1  5879     10: [ function(_dereq_, module, exports) {
   -1  5880       'use strict';
   -1  5881       var enhanceError = _dereq_('./enhanceError');
   -1  5882       module.exports = function createError(message, config, code, request, response) {
   -1  5883         var error = new Error(message);
   -1  5884         return enhanceError(error, config, code, request, response);
   -1  5885       };
   -1  5886     }, {
   -1  5887       './enhanceError': 12
   -1  5888     } ],
   -1  5889     11: [ function(_dereq_, module, exports) {
   -1  5890       'use strict';
   -1  5891       var utils = _dereq_('./../utils');
   -1  5892       var transformData = _dereq_('./transformData');
   -1  5893       var isCancel = _dereq_('../cancel/isCancel');
   -1  5894       var defaults = _dereq_('../defaults');
   -1  5895       var isAbsoluteURL = _dereq_('./../helpers/isAbsoluteURL');
   -1  5896       var combineURLs = _dereq_('./../helpers/combineURLs');
   -1  5897       function throwIfCancellationRequested(config) {
   -1  5898         if (config.cancelToken) {
   -1  5899           config.cancelToken.throwIfRequested();
   -1  5900         }
 6024  5901       }
 6025    -1       if ([ 'rule', 'rules' ].includes(only.type)) {
 6026    -1         only.type = 'rule';
 6027    -1         only.values.forEach(function(ruleId) {
 6028    -1           if (!audit.getRule(ruleId)) {
 6029    -1             throw new Error('unknown rule `' + ruleId + '` in options.runOnly');
   -1  5902       module.exports = function dispatchRequest(config) {
   -1  5903         throwIfCancellationRequested(config);
   -1  5904         if (config.baseURL && !isAbsoluteURL(config.url)) {
   -1  5905           config.url = combineURLs(config.baseURL, config.url);
   -1  5906         }
   -1  5907         config.headers = config.headers || {};
   -1  5908         config.data = transformData(config.data, config.headers, config.transformRequest);
   -1  5909         config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers || {});
   -1  5910         utils.forEach([ 'delete', 'get', 'head', 'post', 'put', 'patch', 'common' ], function cleanHeaderConfig(method) {
   -1  5911           delete config.headers[method];
   -1  5912         });
   -1  5913         var adapter = config.adapter || defaults.adapter;
   -1  5914         return adapter(config).then(function onAdapterResolution(response) {
   -1  5915           throwIfCancellationRequested(config);
   -1  5916           response.data = transformData(response.data, response.headers, config.transformResponse);
   -1  5917           return response;
   -1  5918         }, function onAdapterRejection(reason) {
   -1  5919           if (!isCancel(reason)) {
   -1  5920             throwIfCancellationRequested(config);
   -1  5921             if (reason && reason.response) {
   -1  5922               reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);
   -1  5923             }
 6030  5924           }
   -1  5925           return Promise.reject(reason);
 6031  5926         });
 6032    -1       } else if ([ 'tag', 'tags', undefined ].includes(only.type)) {
 6033    -1         only.type = 'tag';
 6034    -1         var unmatchedTags = audit.rules.reduce(function(unmatchedTags, rule) {
 6035    -1           return unmatchedTags.length ? unmatchedTags.filter(function(tag) {
 6036    -1             return !rule.tags.includes(tag);
 6037    -1           }) : unmatchedTags;
 6038    -1         }, only.values);
 6039    -1         if (unmatchedTags.length !== 0) {
 6040    -1           throw new Error('Could not find tags `' + unmatchedTags.join('`, `') + '`');
   -1  5927       };
   -1  5928     }, {
   -1  5929       '../cancel/isCancel': 7,
   -1  5930       '../defaults': 15,
   -1  5931       './../helpers/combineURLs': 19,
   -1  5932       './../helpers/isAbsoluteURL': 21,
   -1  5933       './../utils': 26,
   -1  5934       './transformData': 14
   -1  5935     } ],
   -1  5936     12: [ function(_dereq_, module, exports) {
   -1  5937       'use strict';
   -1  5938       module.exports = function enhanceError(error, config, code, request, response) {
   -1  5939         error.config = config;
   -1  5940         if (code) {
   -1  5941           error.code = code;
 6041  5942         }
 6042    -1       } else {
 6043    -1         throw new Error('Unknown runOnly type \'' + only.type + '\'');
   -1  5943         error.request = request;
   -1  5944         error.response = response;
   -1  5945         return error;
   -1  5946       };
   -1  5947     }, {} ],
   -1  5948     13: [ function(_dereq_, module, exports) {
   -1  5949       'use strict';
   -1  5950       var createError = _dereq_('./createError');
   -1  5951       module.exports = function settle(resolve, reject, response) {
   -1  5952         var validateStatus = response.config.validateStatus;
   -1  5953         if (!response.status || !validateStatus || validateStatus(response.status)) {
   -1  5954           resolve(response);
   -1  5955         } else {
   -1  5956           reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));
   -1  5957         }
   -1  5958       };
   -1  5959     }, {
   -1  5960       './createError': 10
   -1  5961     } ],
   -1  5962     14: [ function(_dereq_, module, exports) {
   -1  5963       'use strict';
   -1  5964       var utils = _dereq_('./../utils');
   -1  5965       module.exports = function transformData(data, headers, fns) {
   -1  5966         utils.forEach(fns, function transform(fn) {
   -1  5967           data = fn(data, headers);
   -1  5968         });
   -1  5969         return data;
   -1  5970       };
   -1  5971     }, {
   -1  5972       './../utils': 26
   -1  5973     } ],
   -1  5974     15: [ function(_dereq_, module, exports) {
   -1  5975       (function(process) {
   -1  5976         'use strict';
   -1  5977         var utils = _dereq_('./utils');
   -1  5978         var normalizeHeaderName = _dereq_('./helpers/normalizeHeaderName');
   -1  5979         var DEFAULT_CONTENT_TYPE = {
   -1  5980           'Content-Type': 'application/x-www-form-urlencoded'
   -1  5981         };
   -1  5982         function setContentTypeIfUnset(headers, value) {
   -1  5983           if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
   -1  5984             headers['Content-Type'] = value;
   -1  5985           }
   -1  5986         }
   -1  5987         function getDefaultAdapter() {
   -1  5988           var adapter;
   -1  5989           if (typeof XMLHttpRequest !== 'undefined') {
   -1  5990             adapter = _dereq_('./adapters/xhr');
   -1  5991           } else if (typeof process !== 'undefined') {
   -1  5992             adapter = _dereq_('./adapters/http');
   -1  5993           }
   -1  5994           return adapter;
   -1  5995         }
   -1  5996         var defaults = {
   -1  5997           adapter: getDefaultAdapter(),
   -1  5998           transformRequest: [ function transformRequest(data, headers) {
   -1  5999             normalizeHeaderName(headers, 'Content-Type');
   -1  6000             if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {
   -1  6001               return data;
   -1  6002             }
   -1  6003             if (utils.isArrayBufferView(data)) {
   -1  6004               return data.buffer;
   -1  6005             }
   -1  6006             if (utils.isURLSearchParams(data)) {
   -1  6007               setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
   -1  6008               return data.toString();
   -1  6009             }
   -1  6010             if (utils.isObject(data)) {
   -1  6011               setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
   -1  6012               return JSON.stringify(data);
   -1  6013             }
   -1  6014             return data;
   -1  6015           } ],
   -1  6016           transformResponse: [ function transformResponse(data) {
   -1  6017             if (typeof data === 'string') {
   -1  6018               try {
   -1  6019                 data = JSON.parse(data);
   -1  6020               } catch (e) {}
   -1  6021             }
   -1  6022             return data;
   -1  6023           } ],
   -1  6024           timeout: 0,
   -1  6025           xsrfCookieName: 'XSRF-TOKEN',
   -1  6026           xsrfHeaderName: 'X-XSRF-TOKEN',
   -1  6027           maxContentLength: -1,
   -1  6028           validateStatus: function validateStatus(status) {
   -1  6029             return status >= 200 && status < 300;
   -1  6030           }
   -1  6031         };
   -1  6032         defaults.headers = {
   -1  6033           common: {
   -1  6034             Accept: 'application/json, text/plain, */*'
   -1  6035           }
   -1  6036         };
   -1  6037         utils.forEach([ 'delete', 'get', 'head' ], function forEachMethodNoData(method) {
   -1  6038           defaults.headers[method] = {};
   -1  6039         });
   -1  6040         utils.forEach([ 'post', 'put', 'patch' ], function forEachMethodWithData(method) {
   -1  6041           defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
   -1  6042         });
   -1  6043         module.exports = defaults;
   -1  6044       }).call(this, _dereq_('_process'));
   -1  6045     }, {
   -1  6046       './adapters/http': 3,
   -1  6047       './adapters/xhr': 3,
   -1  6048       './helpers/normalizeHeaderName': 23,
   -1  6049       './utils': 26,
   -1  6050       _process: 33
   -1  6051     } ],
   -1  6052     16: [ function(_dereq_, module, exports) {
   -1  6053       'use strict';
   -1  6054       module.exports = function bind(fn, thisArg) {
   -1  6055         return function wrap() {
   -1  6056           var args = new Array(arguments.length);
   -1  6057           for (var i = 0; i < args.length; i++) {
   -1  6058             args[i] = arguments[i];
   -1  6059           }
   -1  6060           return fn.apply(thisArg, args);
   -1  6061         };
   -1  6062       };
   -1  6063     }, {} ],
   -1  6064     17: [ function(_dereq_, module, exports) {
   -1  6065       'use strict';
   -1  6066       var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
   -1  6067       function E() {
   -1  6068         this.message = 'String contains an invalid character';
 6044  6069       }
 6045    -1     }
 6046    -1     if (_typeof(options.rules) === 'object') {
 6047    -1       Object.keys(options.rules).forEach(function(ruleId) {
 6048    -1         if (!audit.getRule(ruleId)) {
 6049    -1           throw new Error('unknown rule `' + ruleId + '` in options.rules');
   -1  6070       E.prototype = new Error();
   -1  6071       E.prototype.code = 5;
   -1  6072       E.prototype.name = 'InvalidCharacterError';
   -1  6073       function btoa(input) {
   -1  6074         var str = String(input);
   -1  6075         var output = '';
   -1  6076         for (var block, charCode, idx = 0, map = chars; str.charAt(idx | 0) || (map = '=', 
   -1  6077         idx % 1); output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {
   -1  6078           charCode = str.charCodeAt(idx += 3 / 4);
   -1  6079           if (charCode > 255) {
   -1  6080             throw new E();
   -1  6081           }
   -1  6082           block = block << 8 | charCode;
 6050  6083         }
 6051    -1       });
 6052    -1     }
 6053    -1     return options;
 6054    -1   };
 6055    -1   Audit.prototype.setBranding = function(branding) {
 6056    -1     'use strict';
 6057    -1     var previous = {
 6058    -1       brand: this.brand,
 6059    -1       application: this.application
 6060    -1     };
 6061    -1     if (branding && branding.hasOwnProperty('brand') && branding.brand && typeof branding.brand === 'string') {
 6062    -1       this.brand = branding.brand;
 6063    -1     }
 6064    -1     if (branding && branding.hasOwnProperty('application') && branding.application && typeof branding.application === 'string') {
 6065    -1       this.application = branding.application;
 6066    -1     }
 6067    -1     this._constructHelpUrls(previous);
 6068    -1   };
 6069    -1   function getHelpUrl(_ref, ruleId, version) {
 6070    -1     var brand = _ref.brand, application = _ref.application;
 6071    -1     return axe.constants.helpUrlBase + brand + '/' + (version || axe.version.substring(0, axe.version.lastIndexOf('.'))) + '/' + ruleId + '?application=' + application;
 6072    -1   }
 6073    -1   Audit.prototype._constructHelpUrls = function() {
 6074    -1     var _this = this;
 6075    -1     var previous = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
 6076    -1     var version = (axe.version.match(/^[1-9][0-9]*\.[0-9]+/) || [ 'x.y' ])[0];
 6077    -1     this.rules.forEach(function(rule) {
 6078    -1       if (!_this.data.rules[rule.id]) {
 6079    -1         _this.data.rules[rule.id] = {};
   -1  6084         return output;
 6080  6085       }
 6081    -1       var metaData = _this.data.rules[rule.id];
 6082    -1       if (typeof metaData.helpUrl !== 'string' || previous && metaData.helpUrl === getHelpUrl(previous, rule.id, version)) {
 6083    -1         metaData.helpUrl = getHelpUrl(_this, rule.id, version);
   -1  6086       module.exports = btoa;
   -1  6087     }, {} ],
   -1  6088     18: [ function(_dereq_, module, exports) {
   -1  6089       'use strict';
   -1  6090       var utils = _dereq_('./../utils');
   -1  6091       function encode(val) {
   -1  6092         return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');
 6084  6093       }
 6085    -1     });
 6086    -1   };
 6087    -1   Audit.prototype.resetRulesAndChecks = function() {
 6088    -1     'use strict';
 6089    -1     this._init();
 6090    -1     this._resetLocale();
 6091    -1   };
 6092    -1   'use strict';
 6093    -1   function CheckResult(check) {
 6094    -1     'use strict';
 6095    -1     this.id = check.id;
 6096    -1     this.data = null;
 6097    -1     this.relatedNodes = [];
 6098    -1     this.result = null;
 6099    -1   }
 6100    -1   'use strict';
 6101    -1   function createExecutionContext(spec) {
 6102    -1     'use strict';
 6103    -1     if (typeof spec === 'string') {
 6104    -1       return new Function('return ' + spec + ';')();
 6105    -1     }
 6106    -1     return spec;
 6107    -1   }
 6108    -1   function Check(spec) {
 6109    -1     if (spec) {
 6110    -1       this.id = spec.id;
 6111    -1       this.configure(spec);
 6112    -1     }
 6113    -1   }
 6114    -1   Check.prototype.enabled = true;
 6115    -1   Check.prototype.run = function(node, options, context, resolve, reject) {
 6116    -1     'use strict';
 6117    -1     options = options || {};
 6118    -1     var enabled = options.hasOwnProperty('enabled') ? options.enabled : this.enabled, checkOptions = options.options || this.options;
 6119    -1     if (enabled) {
 6120    -1       var checkResult = new CheckResult(this);
 6121    -1       var checkHelper = axe.utils.checkHelper(checkResult, options, resolve, reject);
 6122    -1       var result;
 6123    -1       try {
 6124    -1         result = this.evaluate.call(checkHelper, node.actualNode, checkOptions, node, context);
 6125    -1       } catch (e) {
 6126    -1         reject(e);
 6127    -1         return;
 6128    -1       }
 6129    -1       if (!checkHelper.isAsync) {
 6130    -1         checkResult.result = result;
 6131    -1         setTimeout(function() {
 6132    -1           resolve(checkResult);
 6133    -1         }, 0);
 6134    -1       }
 6135    -1     } else {
 6136    -1       resolve(null);
 6137    -1     }
 6138    -1   };
 6139    -1   Check.prototype.configure = function(spec) {
 6140    -1     var _this = this;
 6141    -1     [ 'options', 'enabled' ].filter(function(prop) {
 6142    -1       return spec.hasOwnProperty(prop);
 6143    -1     }).forEach(function(prop) {
 6144    -1       return _this[prop] = spec[prop];
 6145    -1     });
 6146    -1     [ 'evaluate', 'after' ].filter(function(prop) {
 6147    -1       return spec.hasOwnProperty(prop);
 6148    -1     }).forEach(function(prop) {
 6149    -1       return _this[prop] = createExecutionContext(spec[prop]);
 6150    -1     });
 6151    -1   };
 6152    -1   'use strict';
 6153    -1   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
 6154    -1     return typeof obj;
 6155    -1   } : function(obj) {
 6156    -1     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
 6157    -1   };
 6158    -1   function pushUniqueFrame(collection, frame) {
 6159    -1     'use strict';
 6160    -1     if (axe.utils.isHidden(frame)) {
 6161    -1       return;
 6162    -1     }
 6163    -1     var fr = axe.utils.findBy(collection, 'node', frame);
 6164    -1     if (!fr) {
 6165    -1       collection.push({
 6166    -1         node: frame,
 6167    -1         include: [],
 6168    -1         exclude: []
 6169    -1       });
 6170    -1     }
 6171    -1   }
 6172    -1   function pushUniqueFrameSelector(context, type, selectorArray) {
 6173    -1     'use strict';
 6174    -1     context.frames = context.frames || [];
 6175    -1     var result, frame;
 6176    -1     var frames = document.querySelectorAll(selectorArray.shift());
 6177    -1     frameloop: for (var i = 0, l = frames.length; i < l; i++) {
 6178    -1       frame = frames[i];
 6179    -1       for (var j = 0, l2 = context.frames.length; j < l2; j++) {
 6180    -1         if (context.frames[j].node === frame) {
 6181    -1           context.frames[j][type].push(selectorArray);
 6182    -1           break frameloop;
   -1  6094       module.exports = function buildURL(url, params, paramsSerializer) {
   -1  6095         if (!params) {
   -1  6096           return url;
 6183  6097         }
 6184    -1       }
 6185    -1       result = {
 6186    -1         node: frame,
 6187    -1         include: [],
 6188    -1         exclude: []
   -1  6098         var serializedParams;
   -1  6099         if (paramsSerializer) {
   -1  6100           serializedParams = paramsSerializer(params);
   -1  6101         } else if (utils.isURLSearchParams(params)) {
   -1  6102           serializedParams = params.toString();
   -1  6103         } else {
   -1  6104           var parts = [];
   -1  6105           utils.forEach(params, function serialize(val, key) {
   -1  6106             if (val === null || typeof val === 'undefined') {
   -1  6107               return;
   -1  6108             }
   -1  6109             if (utils.isArray(val)) {
   -1  6110               key = key + '[]';
   -1  6111             } else {
   -1  6112               val = [ val ];
   -1  6113             }
   -1  6114             utils.forEach(val, function parseValue(v) {
   -1  6115               if (utils.isDate(v)) {
   -1  6116                 v = v.toISOString();
   -1  6117               } else if (utils.isObject(v)) {
   -1  6118                 v = JSON.stringify(v);
   -1  6119               }
   -1  6120               parts.push(encode(key) + '=' + encode(v));
   -1  6121             });
   -1  6122           });
   -1  6123           serializedParams = parts.join('&');
   -1  6124         }
   -1  6125         if (serializedParams) {
   -1  6126           url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
   -1  6127         }
   -1  6128         return url;
 6189  6129       };
 6190    -1       if (selectorArray) {
 6191    -1         result[type].push(selectorArray);
 6192    -1       }
 6193    -1       context.frames.push(result);
 6194    -1     }
 6195    -1   }
 6196    -1   function normalizeContext(context) {
 6197    -1     'use strict';
 6198    -1     if (context && (typeof context === 'undefined' ? 'undefined' : _typeof(context)) === 'object' || context instanceof NodeList) {
 6199    -1       if (context instanceof Node) {
 6200    -1         return {
 6201    -1           include: [ context ],
 6202    -1           exclude: []
 6203    -1         };
 6204    -1       }
 6205    -1       if (context.hasOwnProperty('include') || context.hasOwnProperty('exclude')) {
   -1  6130     }, {
   -1  6131       './../utils': 26
   -1  6132     } ],
   -1  6133     19: [ function(_dereq_, module, exports) {
   -1  6134       'use strict';
   -1  6135       module.exports = function combineURLs(baseURL, relativeURL) {
   -1  6136         return relativeURL ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL;
   -1  6137       };
   -1  6138     }, {} ],
   -1  6139     20: [ function(_dereq_, module, exports) {
   -1  6140       'use strict';
   -1  6141       var utils = _dereq_('./../utils');
   -1  6142       module.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {
 6206  6143         return {
 6207    -1           include: context.include && +context.include.length ? context.include : [ document ],
 6208    -1           exclude: context.exclude || []
   -1  6144           write: function write(name, value, expires, path, domain, secure) {
   -1  6145             var cookie = [];
   -1  6146             cookie.push(name + '=' + encodeURIComponent(value));
   -1  6147             if (utils.isNumber(expires)) {
   -1  6148               cookie.push('expires=' + new Date(expires).toGMTString());
   -1  6149             }
   -1  6150             if (utils.isString(path)) {
   -1  6151               cookie.push('path=' + path);
   -1  6152             }
   -1  6153             if (utils.isString(domain)) {
   -1  6154               cookie.push('domain=' + domain);
   -1  6155             }
   -1  6156             if (secure === true) {
   -1  6157               cookie.push('secure');
   -1  6158             }
   -1  6159             document.cookie = cookie.join('; ');
   -1  6160           },
   -1  6161           read: function read(name) {
   -1  6162             var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
   -1  6163             return match ? decodeURIComponent(match[3]) : null;
   -1  6164           },
   -1  6165           remove: function remove(name) {
   -1  6166             this.write(name, '', Date.now() - 864e5);
   -1  6167           }
 6209  6168         };
 6210    -1       }
 6211    -1       if (context.length === +context.length) {
   -1  6169       }() : function nonStandardBrowserEnv() {
 6212  6170         return {
 6213    -1           include: context,
 6214    -1           exclude: []
   -1  6171           write: function write() {},
   -1  6172           read: function read() {
   -1  6173             return null;
   -1  6174           },
   -1  6175           remove: function remove() {}
 6215  6176         };
 6216    -1       }
 6217    -1     }
 6218    -1     if (typeof context === 'string') {
 6219    -1       return {
 6220    -1         include: [ context ],
 6221    -1         exclude: []
   -1  6177       }();
   -1  6178     }, {
   -1  6179       './../utils': 26
   -1  6180     } ],
   -1  6181     21: [ function(_dereq_, module, exports) {
   -1  6182       'use strict';
   -1  6183       module.exports = function isAbsoluteURL(url) {
   -1  6184         return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
 6222  6185       };
 6223    -1     }
 6224    -1     return {
 6225    -1       include: [ document ],
 6226    -1       exclude: []
 6227    -1     };
 6228    -1   }
 6229    -1   function parseSelectorArray(context, type) {
 6230    -1     'use strict';
 6231    -1     var item, result = [], nodeList;
 6232    -1     for (var i = 0, l = context[type].length; i < l; i++) {
 6233    -1       item = context[type][i];
 6234    -1       if (typeof item === 'string') {
 6235    -1         nodeList = Array.from(document.querySelectorAll(item));
 6236    -1         result = result.concat(nodeList.map(function(node) {
 6237    -1           return axe.utils.getNodeFromTree(context.flatTree[0], node);
 6238    -1         }));
 6239    -1         break;
 6240    -1       } else if (item && item.length && !(item instanceof Node)) {
 6241    -1         if (item.length > 1) {
 6242    -1           pushUniqueFrameSelector(context, type, item);
 6243    -1         } else {
 6244    -1           nodeList = Array.from(document.querySelectorAll(item[0]));
 6245    -1           result = result.concat(nodeList.map(function(node) {
 6246    -1             return axe.utils.getNodeFromTree(context.flatTree[0], node);
 6247    -1           }));
   -1  6186     }, {} ],
   -1  6187     22: [ function(_dereq_, module, exports) {
   -1  6188       'use strict';
   -1  6189       var utils = _dereq_('./../utils');
   -1  6190       module.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {
   -1  6191         var msie = /(msie|trident)/i.test(navigator.userAgent);
   -1  6192         var urlParsingNode = document.createElement('a');
   -1  6193         var originURL;
   -1  6194         function resolveURL(url) {
   -1  6195           var href = url;
   -1  6196           if (msie) {
   -1  6197             urlParsingNode.setAttribute('href', href);
   -1  6198             href = urlParsingNode.href;
   -1  6199           }
   -1  6200           urlParsingNode.setAttribute('href', href);
   -1  6201           return {
   -1  6202             href: urlParsingNode.href,
   -1  6203             protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
   -1  6204             host: urlParsingNode.host,
   -1  6205             search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
   -1  6206             hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
   -1  6207             hostname: urlParsingNode.hostname,
   -1  6208             port: urlParsingNode.port,
   -1  6209             pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname
   -1  6210           };
 6248  6211         }
 6249    -1       } else if (item instanceof Node) {
 6250    -1         if (item.documentElement instanceof Node) {
 6251    -1           result.push(context.flatTree[0]);
   -1  6212         originURL = resolveURL(window.location.href);
   -1  6213         return function isURLSameOrigin(requestURL) {
   -1  6214           var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;
   -1  6215           return parsed.protocol === originURL.protocol && parsed.host === originURL.host;
   -1  6216         };
   -1  6217       }() : function nonStandardBrowserEnv() {
   -1  6218         return function isURLSameOrigin() {
   -1  6219           return true;
   -1  6220         };
   -1  6221       }();
   -1  6222     }, {
   -1  6223       './../utils': 26
   -1  6224     } ],
   -1  6225     23: [ function(_dereq_, module, exports) {
   -1  6226       'use strict';
   -1  6227       var utils = _dereq_('../utils');
   -1  6228       module.exports = function normalizeHeaderName(headers, normalizedName) {
   -1  6229         utils.forEach(headers, function processHeader(value, name) {
   -1  6230           if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
   -1  6231             headers[normalizedName] = value;
   -1  6232             delete headers[name];
   -1  6233           }
   -1  6234         });
   -1  6235       };
   -1  6236     }, {
   -1  6237       '../utils': 26
   -1  6238     } ],
   -1  6239     24: [ function(_dereq_, module, exports) {
   -1  6240       'use strict';
   -1  6241       var utils = _dereq_('./../utils');
   -1  6242       var ignoreDuplicateOf = [ 'age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent' ];
   -1  6243       module.exports = function parseHeaders(headers) {
   -1  6244         var parsed = {};
   -1  6245         var key;
   -1  6246         var val;
   -1  6247         var i;
   -1  6248         if (!headers) {
   -1  6249           return parsed;
   -1  6250         }
   -1  6251         utils.forEach(headers.split('\n'), function parser(line) {
   -1  6252           i = line.indexOf(':');
   -1  6253           key = utils.trim(line.substr(0, i)).toLowerCase();
   -1  6254           val = utils.trim(line.substr(i + 1));
   -1  6255           if (key) {
   -1  6256             if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
   -1  6257               return;
   -1  6258             }
   -1  6259             if (key === 'set-cookie') {
   -1  6260               parsed[key] = (parsed[key] ? parsed[key] : []).concat([ val ]);
   -1  6261             } else {
   -1  6262               parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
   -1  6263             }
   -1  6264           }
   -1  6265         });
   -1  6266         return parsed;
   -1  6267       };
   -1  6268     }, {
   -1  6269       './../utils': 26
   -1  6270     } ],
   -1  6271     25: [ function(_dereq_, module, exports) {
   -1  6272       'use strict';
   -1  6273       module.exports = function spread(callback) {
   -1  6274         return function wrap(arr) {
   -1  6275           return callback.apply(null, arr);
   -1  6276         };
   -1  6277       };
   -1  6278     }, {} ],
   -1  6279     26: [ function(_dereq_, module, exports) {
   -1  6280       'use strict';
   -1  6281       var bind = _dereq_('./helpers/bind');
   -1  6282       var isBuffer = _dereq_('is-buffer');
   -1  6283       var toString = Object.prototype.toString;
   -1  6284       function isArray(val) {
   -1  6285         return toString.call(val) === '[object Array]';
   -1  6286       }
   -1  6287       function isArrayBuffer(val) {
   -1  6288         return toString.call(val) === '[object ArrayBuffer]';
   -1  6289       }
   -1  6290       function isFormData(val) {
   -1  6291         return typeof FormData !== 'undefined' && val instanceof FormData;
   -1  6292       }
   -1  6293       function isArrayBufferView(val) {
   -1  6294         var result;
   -1  6295         if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
   -1  6296           result = ArrayBuffer.isView(val);
 6252  6297         } else {
 6253    -1           result.push(axe.utils.getNodeFromTree(context.flatTree[0], item));
   -1  6298           result = val && val.buffer && val.buffer instanceof ArrayBuffer;
 6254  6299         }
   -1  6300         return result;
 6255  6301       }
 6256    -1     }
 6257    -1     return result.filter(function(r) {
 6258    -1       return r;
 6259    -1     });
 6260    -1   }
 6261    -1   function validateContext(context) {
 6262    -1     'use strict';
 6263    -1     if (context.include.length === 0) {
 6264    -1       if (context.frames.length === 0) {
 6265    -1         var env = axe.utils.respondable.isInFrame() ? 'frame' : 'page';
 6266    -1         return new Error('No elements found for include in ' + env + ' Context');
   -1  6302       function isString(val) {
   -1  6303         return typeof val === 'string';
 6267  6304       }
 6268    -1       context.frames.forEach(function(frame, i) {
 6269    -1         if (frame.include.length === 0) {
 6270    -1           return new Error('No elements found for include in Context of frame ' + i);
   -1  6305       function isNumber(val) {
   -1  6306         return typeof val === 'number';
   -1  6307       }
   -1  6308       function isUndefined(val) {
   -1  6309         return typeof val === 'undefined';
   -1  6310       }
   -1  6311       function isObject(val) {
   -1  6312         return val !== null && typeof val === 'object';
   -1  6313       }
   -1  6314       function isDate(val) {
   -1  6315         return toString.call(val) === '[object Date]';
   -1  6316       }
   -1  6317       function isFile(val) {
   -1  6318         return toString.call(val) === '[object File]';
   -1  6319       }
   -1  6320       function isBlob(val) {
   -1  6321         return toString.call(val) === '[object Blob]';
   -1  6322       }
   -1  6323       function isFunction(val) {
   -1  6324         return toString.call(val) === '[object Function]';
   -1  6325       }
   -1  6326       function isStream(val) {
   -1  6327         return isObject(val) && isFunction(val.pipe);
   -1  6328       }
   -1  6329       function isURLSearchParams(val) {
   -1  6330         return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
   -1  6331       }
   -1  6332       function trim(str) {
   -1  6333         return str.replace(/^\s*/, '').replace(/\s*$/, '');
   -1  6334       }
   -1  6335       function isStandardBrowserEnv() {
   -1  6336         if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
   -1  6337           return false;
   -1  6338         }
   -1  6339         return typeof window !== 'undefined' && typeof document !== 'undefined';
   -1  6340       }
   -1  6341       function forEach(obj, fn) {
   -1  6342         if (obj === null || typeof obj === 'undefined') {
   -1  6343           return;
   -1  6344         }
   -1  6345         if (typeof obj !== 'object') {
   -1  6346           obj = [ obj ];
   -1  6347         }
   -1  6348         if (isArray(obj)) {
   -1  6349           for (var i = 0, l = obj.length; i < l; i++) {
   -1  6350             fn.call(null, obj[i], i, obj);
   -1  6351           }
   -1  6352         } else {
   -1  6353           for (var key in obj) {
   -1  6354             if (Object.prototype.hasOwnProperty.call(obj, key)) {
   -1  6355               fn.call(null, obj[key], key, obj);
   -1  6356             }
   -1  6357           }
   -1  6358         }
   -1  6359       }
   -1  6360       function merge() {
   -1  6361         var result = {};
   -1  6362         function assignValue(val, key) {
   -1  6363           if (typeof result[key] === 'object' && typeof val === 'object') {
   -1  6364             result[key] = merge(result[key], val);
   -1  6365           } else {
   -1  6366             result[key] = val;
   -1  6367           }
   -1  6368         }
   -1  6369         for (var i = 0, l = arguments.length; i < l; i++) {
   -1  6370           forEach(arguments[i], assignValue);
 6271  6371         }
 6272    -1       });
 6273    -1     }
 6274    -1   }
 6275    -1   function getRootNode(_ref) {
 6276    -1     var include = _ref.include, exclude = _ref.exclude;
 6277    -1     var selectors = Array.from(include).concat(Array.from(exclude));
 6278    -1     var localDocument = selectors.reduce(function(result, item) {
 6279    -1       if (result) {
 6280  6372         return result;
 6281    -1       } else if (item instanceof Element) {
 6282    -1         return item.ownerDocument;
 6283    -1       } else if (item instanceof Document) {
 6284    -1         return item;
 6285  6373       }
 6286    -1     }, null);
 6287    -1     return (localDocument || document).documentElement;
 6288    -1   }
 6289    -1   function Context(spec) {
 6290    -1     'use strict';
 6291    -1     var _this = this;
 6292    -1     this.frames = [];
 6293    -1     this.initiator = spec && typeof spec.initiator === 'boolean' ? spec.initiator : true;
 6294    -1     this.page = false;
 6295    -1     spec = normalizeContext(spec);
 6296    -1     this.flatTree = axe.utils.getFlattenedTree(getRootNode(spec));
 6297    -1     this.exclude = spec.exclude;
 6298    -1     this.include = spec.include;
 6299    -1     this.include = parseSelectorArray(this, 'include');
 6300    -1     this.exclude = parseSelectorArray(this, 'exclude');
 6301    -1     axe.utils.select('frame, iframe', this).forEach(function(frame) {
 6302    -1       if (isNodeInContext(frame, _this)) {
 6303    -1         pushUniqueFrame(_this.frames, frame.actualNode);
   -1  6374       function extend(a, b, thisArg) {
   -1  6375         forEach(b, function assignValue(val, key) {
   -1  6376           if (thisArg && typeof val === 'function') {
   -1  6377             a[key] = bind(val, thisArg);
   -1  6378           } else {
   -1  6379             a[key] = val;
   -1  6380           }
   -1  6381         });
   -1  6382         return a;
 6304  6383       }
 6305    -1     });
 6306    -1     if (this.include.length === 1 && this.include[0].actualNode === document.documentElement) {
 6307    -1       this.page = true;
 6308    -1     }
 6309    -1     var err = validateContext(this);
 6310    -1     if (err instanceof Error) {
 6311    -1       throw err;
 6312    -1     }
 6313    -1     if (!Array.isArray(this.include)) {
 6314    -1       this.include = Array.from(this.include);
 6315    -1     }
 6316    -1     this.include.sort(axe.utils.nodeSorter);
 6317    -1   }
 6318    -1   'use strict';
 6319    -1   function RuleResult(rule) {
 6320    -1     'use strict';
 6321    -1     this.id = rule.id;
 6322    -1     this.result = axe.constants.NA;
 6323    -1     this.pageLevel = rule.pageLevel;
 6324    -1     this.impact = null;
 6325    -1     this.nodes = [];
 6326    -1   }
 6327    -1   'use strict';
 6328    -1   function Rule(spec, parentAudit) {
 6329    -1     'use strict';
 6330    -1     this._audit = parentAudit;
 6331    -1     this.id = spec.id;
 6332    -1     this.selector = spec.selector || '*';
 6333    -1     this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;
 6334    -1     this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;
 6335    -1     this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;
 6336    -1     this.any = spec.any || [];
 6337    -1     this.all = spec.all || [];
 6338    -1     this.none = spec.none || [];
 6339    -1     this.tags = spec.tags || [];
 6340    -1     this.preload = spec.preload ? true : false;
 6341    -1     if (spec.matches) {
 6342    -1       this.matches = createExecutionContext(spec.matches);
 6343    -1     }
 6344    -1   }
 6345    -1   Rule.prototype.matches = function() {
 6346    -1     'use strict';
 6347    -1     return true;
 6348    -1   };
 6349    -1   Rule.prototype.gather = function(context) {
 6350    -1     'use strict';
 6351    -1     var elements = axe.utils.select(this.selector, context);
 6352    -1     if (this.excludeHidden) {
 6353    -1       return elements.filter(function(element) {
 6354    -1         return !axe.utils.isHidden(element.actualNode);
 6355    -1       });
 6356    -1     }
 6357    -1     return elements;
 6358    -1   };
 6359    -1   Rule.prototype.runChecks = function(type, node, options, context, resolve, reject) {
 6360    -1     'use strict';
 6361    -1     var self = this;
 6362    -1     var checkQueue = axe.utils.queue();
 6363    -1     this[type].forEach(function(c) {
 6364    -1       var check = self._audit.checks[c.id || c];
 6365    -1       var option = axe.utils.getCheckOption(check, self.id, options);
 6366    -1       checkQueue.defer(function(res, rej) {
 6367    -1         check.run(node, option, context, res, rej);
 6368    -1       });
 6369    -1     });
 6370    -1     checkQueue.then(function(results) {
 6371    -1       results = results.filter(function(check) {
 6372    -1         return check;
 6373    -1       });
 6374    -1       resolve({
 6375    -1         type: type,
 6376    -1         results: results
 6377    -1       });
 6378    -1     }).catch(reject);
 6379    -1   };
 6380    -1   Rule.prototype.run = function(context, options, resolve, reject) {
 6381    -1     var _this = this;
 6382    -1     var q = axe.utils.queue();
 6383    -1     var ruleResult = new RuleResult(this);
 6384    -1     var markStart = 'mark_runchecks_start_' + this.id;
 6385    -1     var markEnd = 'mark_runchecks_end_' + this.id;
 6386    -1     var nodes = void 0;
 6387    -1     try {
 6388    -1       nodes = this.gather(context).filter(function(node) {
 6389    -1         return _this.matches(node.actualNode, node);
 6390    -1       });
 6391    -1     } catch (error) {
 6392    -1       reject(new SupportError({
 6393    -1         cause: error,
 6394    -1         ruleId: this.id
 6395    -1       }));
 6396    -1       return;
 6397    -1     }
 6398    -1     if (options.performanceTimer) {
 6399    -1       axe.log('gather (', nodes.length, '):', axe.utils.performanceTimer.timeElapsed() + 'ms');
 6400    -1       axe.utils.performanceTimer.mark(markStart);
 6401    -1     }
 6402    -1     nodes.forEach(function(node) {
 6403    -1       q.defer(function(resolveNode, rejectNode) {
 6404    -1         var checkQueue = axe.utils.queue();
 6405    -1         [ 'any', 'all', 'none' ].forEach(function(type) {
 6406    -1           checkQueue.defer(function(res, rej) {
 6407    -1             _this.runChecks(type, node, options, context, res, rej);
 6408    -1           });
 6409    -1         });
 6410    -1         checkQueue.then(function(results) {
 6411    -1           if (results.length) {
 6412    -1             var hasResults = false, result = {};
 6413    -1             results.forEach(function(r) {
 6414    -1               var res = r.results.filter(function(result) {
 6415    -1                 return result;
 6416    -1               });
 6417    -1               result[r.type] = res;
 6418    -1               if (res.length) {
 6419    -1                 hasResults = true;
 6420    -1               }
 6421    -1             });
 6422    -1             if (hasResults) {
 6423    -1               result.node = new axe.utils.DqElement(node.actualNode, options);
 6424    -1               ruleResult.nodes.push(result);
 6425    -1             }
 6426    -1           }
 6427    -1           resolveNode();
 6428    -1         }).catch(function(err) {
 6429    -1           return rejectNode(err);
 6430    -1         });
 6431    -1       });
 6432    -1     });
 6433    -1     if (options.performanceTimer) {
 6434    -1       axe.utils.performanceTimer.mark(markEnd);
 6435    -1       axe.utils.performanceTimer.measure('runchecks_' + this.id, markStart, markEnd);
 6436    -1     }
 6437    -1     q.then(function() {
 6438    -1       return resolve(ruleResult);
 6439    -1     }).catch(function(error) {
 6440    -1       return reject(error);
 6441    -1     });
 6442    -1   };
 6443    -1   function findAfterChecks(rule) {
 6444    -1     'use strict';
 6445    -1     return axe.utils.getAllChecks(rule).map(function(c) {
 6446    -1       var check = rule._audit.checks[c.id || c];
 6447    -1       return check && typeof check.after === 'function' ? check : null;
 6448    -1     }).filter(Boolean);
 6449    -1   }
 6450    -1   function findCheckResults(nodes, checkID) {
 6451    -1     'use strict';
 6452    -1     var checkResults = [];
 6453    -1     nodes.forEach(function(nodeResult) {
 6454    -1       var checks = axe.utils.getAllChecks(nodeResult);
 6455    -1       checks.forEach(function(checkResult) {
 6456    -1         if (checkResult.id === checkID) {
 6457    -1           checkResults.push(checkResult);
   -1  6384       module.exports = {
   -1  6385         isArray: isArray,
   -1  6386         isArrayBuffer: isArrayBuffer,
   -1  6387         isBuffer: isBuffer,
   -1  6388         isFormData: isFormData,
   -1  6389         isArrayBufferView: isArrayBufferView,
   -1  6390         isString: isString,
   -1  6391         isNumber: isNumber,
   -1  6392         isObject: isObject,
   -1  6393         isUndefined: isUndefined,
   -1  6394         isDate: isDate,
   -1  6395         isFile: isFile,
   -1  6396         isBlob: isBlob,
   -1  6397         isFunction: isFunction,
   -1  6398         isStream: isStream,
   -1  6399         isURLSearchParams: isURLSearchParams,
   -1  6400         isStandardBrowserEnv: isStandardBrowserEnv,
   -1  6401         forEach: forEach,
   -1  6402         merge: merge,
   -1  6403         extend: extend,
   -1  6404         trim: trim
   -1  6405       };
   -1  6406     }, {
   -1  6407       './helpers/bind': 16,
   -1  6408       'is-buffer': 32
   -1  6409     } ],
   -1  6410     27: [ function(_dereq_, module, exports) {
   -1  6411       module.exports = {
   -1  6412         CssSelectorParser: _dereq_('./lib/css-selector-parser.js').CssSelectorParser
   -1  6413       };
   -1  6414     }, {
   -1  6415       './lib/css-selector-parser.js': 28
   -1  6416     } ],
   -1  6417     28: [ function(_dereq_, module, exports) {
   -1  6418       function CssSelectorParser() {
   -1  6419         this.pseudos = {};
   -1  6420         this.attrEqualityMods = {};
   -1  6421         this.ruleNestingOperators = {};
   -1  6422         this.substitutesEnabled = false;
   -1  6423       }
   -1  6424       CssSelectorParser.prototype.registerSelectorPseudos = function(name) {
   -1  6425         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6426           name = arguments[j];
   -1  6427           this.pseudos[name] = 'selector';
   -1  6428         }
   -1  6429         return this;
   -1  6430       };
   -1  6431       CssSelectorParser.prototype.unregisterSelectorPseudos = function(name) {
   -1  6432         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6433           name = arguments[j];
   -1  6434           delete this.pseudos[name];
 6458  6435         }
 6459    -1       });
 6460    -1     });
 6461    -1     return checkResults;
 6462    -1   }
 6463    -1   function filterChecks(checks) {
 6464    -1     'use strict';
 6465    -1     return checks.filter(function(check) {
 6466    -1       return check.filtered !== true;
 6467    -1     });
 6468    -1   }
 6469    -1   function sanitizeNodes(result) {
 6470    -1     'use strict';
 6471    -1     var checkTypes = [ 'any', 'all', 'none' ];
 6472    -1     var nodes = result.nodes.filter(function(detail) {
 6473    -1       var length = 0;
 6474    -1       checkTypes.forEach(function(type) {
 6475    -1         detail[type] = filterChecks(detail[type]);
 6476    -1         length += detail[type].length;
 6477    -1       });
 6478    -1       return length > 0;
 6479    -1     });
 6480    -1     if (result.pageLevel && nodes.length) {
 6481    -1       nodes = [ nodes.reduce(function(a, b) {
 6482    -1         if (a) {
 6483    -1           checkTypes.forEach(function(type) {
 6484    -1             a[type].push.apply(a[type], b[type]);
 6485    -1           });
 6486    -1           return a;
   -1  6436         return this;
   -1  6437       };
   -1  6438       CssSelectorParser.prototype.registerNumericPseudos = function(name) {
   -1  6439         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6440           name = arguments[j];
   -1  6441           this.pseudos[name] = 'numeric';
 6487  6442         }
 6488    -1       }) ];
 6489    -1     }
 6490    -1     return nodes;
 6491    -1   }
 6492    -1   Rule.prototype.after = function(result, options) {
 6493    -1     'use strict';
 6494    -1     var afterChecks = findAfterChecks(this);
 6495    -1     var ruleID = this.id;
 6496    -1     afterChecks.forEach(function(check) {
 6497    -1       var beforeResults = findCheckResults(result.nodes, check.id);
 6498    -1       var option = axe.utils.getCheckOption(check, ruleID, options);
 6499    -1       var afterResults = check.after(beforeResults, option);
 6500    -1       beforeResults.forEach(function(item) {
 6501    -1         if (afterResults.indexOf(item) === -1) {
 6502    -1           item.filtered = true;
   -1  6443         return this;
   -1  6444       };
   -1  6445       CssSelectorParser.prototype.unregisterNumericPseudos = function(name) {
   -1  6446         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6447           name = arguments[j];
   -1  6448           delete this.pseudos[name];
 6503  6449         }
 6504    -1       });
 6505    -1     });
 6506    -1     result.nodes = sanitizeNodes(result);
 6507    -1     return result;
 6508    -1   };
 6509    -1   Rule.prototype.configure = function(spec) {
 6510    -1     'use strict';
 6511    -1     if (spec.hasOwnProperty('selector')) {
 6512    -1       this.selector = spec.selector;
 6513    -1     }
 6514    -1     if (spec.hasOwnProperty('excludeHidden')) {
 6515    -1       this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;
 6516    -1     }
 6517    -1     if (spec.hasOwnProperty('enabled')) {
 6518    -1       this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;
 6519    -1     }
 6520    -1     if (spec.hasOwnProperty('pageLevel')) {
 6521    -1       this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;
 6522    -1     }
 6523    -1     if (spec.hasOwnProperty('any')) {
 6524    -1       this.any = spec.any;
 6525    -1     }
 6526    -1     if (spec.hasOwnProperty('all')) {
 6527    -1       this.all = spec.all;
 6528    -1     }
 6529    -1     if (spec.hasOwnProperty('none')) {
 6530    -1       this.none = spec.none;
 6531    -1     }
 6532    -1     if (spec.hasOwnProperty('tags')) {
 6533    -1       this.tags = spec.tags;
 6534    -1     }
 6535    -1     if (spec.hasOwnProperty('matches')) {
 6536    -1       if (typeof spec.matches === 'string') {
 6537    -1         this.matches = new Function('return ' + spec.matches + ';')();
 6538    -1       } else {
 6539    -1         this.matches = spec.matches;
 6540    -1       }
 6541    -1     }
 6542    -1   };
 6543    -1   'use strict';
 6544    -1   (function(axe) {
 6545    -1     var definitions = [ {
 6546    -1       name: 'NA',
 6547    -1       value: 'inapplicable',
 6548    -1       priority: 0,
 6549    -1       group: 'inapplicable'
 6550    -1     }, {
 6551    -1       name: 'PASS',
 6552    -1       value: 'passed',
 6553    -1       priority: 1,
 6554    -1       group: 'passes'
 6555    -1     }, {
 6556    -1       name: 'CANTTELL',
 6557    -1       value: 'cantTell',
 6558    -1       priority: 2,
 6559    -1       group: 'incomplete'
 6560    -1     }, {
 6561    -1       name: 'FAIL',
 6562    -1       value: 'failed',
 6563    -1       priority: 3,
 6564    -1       group: 'violations'
 6565    -1     } ];
 6566    -1     var constants = {
 6567    -1       helpUrlBase: 'https://dequeuniversity.com/rules/',
 6568    -1       results: [],
 6569    -1       resultGroups: [],
 6570    -1       resultGroupMap: {},
 6571    -1       impact: Object.freeze([ 'minor', 'moderate', 'serious', 'critical' ]),
 6572    -1       preloadAssets: Object.freeze([ 'cssom' ]),
 6573    -1       preloadAssetsTimeout: 1e4
 6574    -1     };
 6575    -1     definitions.forEach(function(definition) {
 6576    -1       var name = definition.name;
 6577    -1       var value = definition.value;
 6578    -1       var priority = definition.priority;
 6579    -1       var group = definition.group;
 6580    -1       constants[name] = value;
 6581    -1       constants[name + '_PRIO'] = priority;
 6582    -1       constants[name + '_GROUP'] = group;
 6583    -1       constants.results[priority] = value;
 6584    -1       constants.resultGroups[priority] = group;
 6585    -1       constants.resultGroupMap[value] = group;
 6586    -1     });
 6587    -1     Object.freeze(constants.results);
 6588    -1     Object.freeze(constants.resultGroups);
 6589    -1     Object.freeze(constants.resultGroupMap);
 6590    -1     Object.freeze(constants);
 6591    -1     Object.defineProperty(axe, 'constants', {
 6592    -1       value: constants,
 6593    -1       enumerable: true,
 6594    -1       configurable: false,
 6595    -1       writable: false
 6596    -1     });
 6597    -1   })(axe);
 6598    -1   'use strict';
 6599    -1   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
 6600    -1     return typeof obj;
 6601    -1   } : function(obj) {
 6602    -1     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
 6603    -1   };
 6604    -1   axe.imports['axios'] = function() {
 6605    -1     return function(modules) {
 6606    -1       var installedModules = {};
 6607    -1       function __webpack_require__(moduleId) {
 6608    -1         if (installedModules[moduleId]) {
 6609    -1           return installedModules[moduleId].exports;
 6610    -1         }
 6611    -1         var module = installedModules[moduleId] = {
 6612    -1           exports: {},
 6613    -1           id: moduleId,
 6614    -1           loaded: false
   -1  6450         return this;
   -1  6451       };
   -1  6452       CssSelectorParser.prototype.registerNestingOperators = function(operator) {
   -1  6453         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6454           operator = arguments[j];
   -1  6455           this.ruleNestingOperators[operator] = true;
   -1  6456         }
   -1  6457         return this;
   -1  6458       };
   -1  6459       CssSelectorParser.prototype.unregisterNestingOperators = function(operator) {
   -1  6460         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6461           operator = arguments[j];
   -1  6462           delete this.ruleNestingOperators[operator];
   -1  6463         }
   -1  6464         return this;
   -1  6465       };
   -1  6466       CssSelectorParser.prototype.registerAttrEqualityMods = function(mod) {
   -1  6467         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6468           mod = arguments[j];
   -1  6469           this.attrEqualityMods[mod] = true;
   -1  6470         }
   -1  6471         return this;
   -1  6472       };
   -1  6473       CssSelectorParser.prototype.unregisterAttrEqualityMods = function(mod) {
   -1  6474         for (var j = 0, len = arguments.length; j < len; j++) {
   -1  6475           mod = arguments[j];
   -1  6476           delete this.attrEqualityMods[mod];
   -1  6477         }
   -1  6478         return this;
   -1  6479       };
   -1  6480       CssSelectorParser.prototype.enableSubstitutes = function() {
   -1  6481         this.substitutesEnabled = true;
   -1  6482         return this;
   -1  6483       };
   -1  6484       CssSelectorParser.prototype.disableSubstitutes = function() {
   -1  6485         this.substitutesEnabled = false;
   -1  6486         return this;
   -1  6487       };
   -1  6488       function isIdentStart(c) {
   -1  6489         return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c === '-' || c === '_';
   -1  6490       }
   -1  6491       function isIdent(c) {
   -1  6492         return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c === '-' || c === '_';
   -1  6493       }
   -1  6494       function isHex(c) {
   -1  6495         return c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' || c >= '0' && c <= '9';
   -1  6496       }
   -1  6497       function isDecimal(c) {
   -1  6498         return c >= '0' && c <= '9';
   -1  6499       }
   -1  6500       function isAttrMatchOperator(chr) {
   -1  6501         return chr === '=' || chr === '^' || chr === '$' || chr === '*' || chr === '~';
   -1  6502       }
   -1  6503       var identSpecialChars = {
   -1  6504         '!': true,
   -1  6505         '"': true,
   -1  6506         '#': true,
   -1  6507         $: true,
   -1  6508         '%': true,
   -1  6509         '&': true,
   -1  6510         '\'': true,
   -1  6511         '(': true,
   -1  6512         ')': true,
   -1  6513         '*': true,
   -1  6514         '+': true,
   -1  6515         ',': true,
   -1  6516         '.': true,
   -1  6517         '/': true,
   -1  6518         ';': true,
   -1  6519         '<': true,
   -1  6520         '=': true,
   -1  6521         '>': true,
   -1  6522         '?': true,
   -1  6523         '@': true,
   -1  6524         '[': true,
   -1  6525         '\\': true,
   -1  6526         ']': true,
   -1  6527         '^': true,
   -1  6528         '`': true,
   -1  6529         '{': true,
   -1  6530         '|': true,
   -1  6531         '}': true,
   -1  6532         '~': true
   -1  6533       };
   -1  6534       var strReplacementsRev = {
   -1  6535         '\n': '\\n',
   -1  6536         '\r': '\\r',
   -1  6537         '\t': '\\t',
   -1  6538         '\f': '\\f',
   -1  6539         '\v': '\\v'
   -1  6540       };
   -1  6541       var singleQuoteEscapeChars = {
   -1  6542         n: '\n',
   -1  6543         r: '\r',
   -1  6544         t: '\t',
   -1  6545         f: '\f',
   -1  6546         '\\': '\\',
   -1  6547         '\'': '\''
   -1  6548       };
   -1  6549       var doubleQuotesEscapeChars = {
   -1  6550         n: '\n',
   -1  6551         r: '\r',
   -1  6552         t: '\t',
   -1  6553         f: '\f',
   -1  6554         '\\': '\\',
   -1  6555         '"': '"'
   -1  6556       };
   -1  6557       function ParseContext(str, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {
   -1  6558         var chr, getIdent, getStr, l, skipWhitespace;
   -1  6559         l = str.length;
   -1  6560         chr = null;
   -1  6561         getStr = function(quote, escapeTable) {
   -1  6562           var esc, hex, result;
   -1  6563           result = '';
   -1  6564           pos++;
   -1  6565           chr = str.charAt(pos);
   -1  6566           while (pos < l) {
   -1  6567             if (chr === quote) {
   -1  6568               pos++;
   -1  6569               return result;
   -1  6570             } else if (chr === '\\') {
   -1  6571               pos++;
   -1  6572               chr = str.charAt(pos);
   -1  6573               if (chr === quote) {
   -1  6574                 result += quote;
   -1  6575               } else if (esc = escapeTable[chr]) {
   -1  6576                 result += esc;
   -1  6577               } else if (isHex(chr)) {
   -1  6578                 hex = chr;
   -1  6579                 pos++;
   -1  6580                 chr = str.charAt(pos);
   -1  6581                 while (isHex(chr)) {
   -1  6582                   hex += chr;
   -1  6583                   pos++;
   -1  6584                   chr = str.charAt(pos);
   -1  6585                 }
   -1  6586                 if (chr === ' ') {
   -1  6587                   pos++;
   -1  6588                   chr = str.charAt(pos);
   -1  6589                 }
   -1  6590                 result += String.fromCharCode(parseInt(hex, 16));
   -1  6591                 continue;
   -1  6592               } else {
   -1  6593                 result += chr;
   -1  6594               }
   -1  6595             } else {
   -1  6596               result += chr;
   -1  6597             }
   -1  6598             pos++;
   -1  6599             chr = str.charAt(pos);
   -1  6600           }
   -1  6601           return result;
 6615  6602         };
 6616    -1         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
 6617    -1         module.loaded = true;
 6618    -1         return module.exports;
 6619    -1       }
 6620    -1       __webpack_require__.m = modules;
 6621    -1       __webpack_require__.c = installedModules;
 6622    -1       __webpack_require__.p = '';
 6623    -1       return __webpack_require__(0);
 6624    -1     }([ function(module, exports, __webpack_require__) {
 6625    -1       module.exports = __webpack_require__(1);
 6626    -1     }, function(module, exports, __webpack_require__) {
 6627    -1       'use strict';
 6628    -1       var utils = __webpack_require__(2);
 6629    -1       var bind = __webpack_require__(3);
 6630    -1       var Axios = __webpack_require__(5);
 6631    -1       var defaults = __webpack_require__(6);
 6632    -1       function createInstance(defaultConfig) {
 6633    -1         var context = new Axios(defaultConfig);
 6634    -1         var instance = bind(Axios.prototype.request, context);
 6635    -1         utils.extend(instance, Axios.prototype, context);
 6636    -1         utils.extend(instance, context);
 6637    -1         return instance;
   -1  6603         getIdent = function() {
   -1  6604           var result = '';
   -1  6605           chr = str.charAt(pos);
   -1  6606           while (pos < l) {
   -1  6607             if (isIdent(chr)) {
   -1  6608               result += chr;
   -1  6609             } else if (chr === '\\') {
   -1  6610               pos++;
   -1  6611               if (pos >= l) {
   -1  6612                 throw Error('Expected symbol but end of file reached.');
   -1  6613               }
   -1  6614               chr = str.charAt(pos);
   -1  6615               if (identSpecialChars[chr]) {
   -1  6616                 result += chr;
   -1  6617               } else if (isHex(chr)) {
   -1  6618                 var hex = chr;
   -1  6619                 pos++;
   -1  6620                 chr = str.charAt(pos);
   -1  6621                 while (isHex(chr)) {
   -1  6622                   hex += chr;
   -1  6623                   pos++;
   -1  6624                   chr = str.charAt(pos);
   -1  6625                 }
   -1  6626                 if (chr === ' ') {
   -1  6627                   pos++;
   -1  6628                   chr = str.charAt(pos);
   -1  6629                 }
   -1  6630                 result += String.fromCharCode(parseInt(hex, 16));
   -1  6631                 continue;
   -1  6632               } else {
   -1  6633                 result += chr;
   -1  6634               }
   -1  6635             } else {
   -1  6636               return result;
   -1  6637             }
   -1  6638             pos++;
   -1  6639             chr = str.charAt(pos);
   -1  6640           }
   -1  6641           return result;
   -1  6642         };
   -1  6643         skipWhitespace = function() {
   -1  6644           chr = str.charAt(pos);
   -1  6645           var result = false;
   -1  6646           while (chr === ' ' || chr === '\t' || chr === '\n' || chr === '\r' || chr === '\f') {
   -1  6647             result = true;
   -1  6648             pos++;
   -1  6649             chr = str.charAt(pos);
   -1  6650           }
   -1  6651           return result;
   -1  6652         };
   -1  6653         this.parse = function() {
   -1  6654           var res = this.parseSelector();
   -1  6655           if (pos < l) {
   -1  6656             throw Error('Rule expected but "' + str.charAt(pos) + '" found.');
   -1  6657           }
   -1  6658           return res;
   -1  6659         };
   -1  6660         this.parseSelector = function() {
   -1  6661           var res;
   -1  6662           var selector = res = this.parseSingleSelector();
   -1  6663           chr = str.charAt(pos);
   -1  6664           while (chr === ',') {
   -1  6665             pos++;
   -1  6666             skipWhitespace();
   -1  6667             if (res.type !== 'selectors') {
   -1  6668               res = {
   -1  6669                 type: 'selectors',
   -1  6670                 selectors: [ selector ]
   -1  6671               };
   -1  6672             }
   -1  6673             selector = this.parseSingleSelector();
   -1  6674             if (!selector) {
   -1  6675               throw Error('Rule expected after ",".');
   -1  6676             }
   -1  6677             res.selectors.push(selector);
   -1  6678           }
   -1  6679           return res;
   -1  6680         };
   -1  6681         this.parseSingleSelector = function() {
   -1  6682           skipWhitespace();
   -1  6683           var selector = {
   -1  6684             type: 'ruleSet'
   -1  6685           };
   -1  6686           var rule = this.parseRule();
   -1  6687           if (!rule) {
   -1  6688             return null;
   -1  6689           }
   -1  6690           var currentRule = selector;
   -1  6691           while (rule) {
   -1  6692             rule.type = 'rule';
   -1  6693             currentRule.rule = rule;
   -1  6694             currentRule = rule;
   -1  6695             skipWhitespace();
   -1  6696             chr = str.charAt(pos);
   -1  6697             if (pos >= l || chr === ',' || chr === ')') {
   -1  6698               break;
   -1  6699             }
   -1  6700             if (ruleNestingOperators[chr]) {
   -1  6701               var op = chr;
   -1  6702               pos++;
   -1  6703               skipWhitespace();
   -1  6704               rule = this.parseRule();
   -1  6705               if (!rule) {
   -1  6706                 throw Error('Rule expected after "' + op + '".');
   -1  6707               }
   -1  6708               rule.nestingOperator = op;
   -1  6709             } else {
   -1  6710               rule = this.parseRule();
   -1  6711               if (rule) {
   -1  6712                 rule.nestingOperator = null;
   -1  6713               }
   -1  6714             }
   -1  6715           }
   -1  6716           return selector;
   -1  6717         };
   -1  6718         this.parseRule = function() {
   -1  6719           var rule = null;
   -1  6720           while (pos < l) {
   -1  6721             chr = str.charAt(pos);
   -1  6722             if (chr === '*') {
   -1  6723               pos++;
   -1  6724               (rule = rule || {}).tagName = '*';
   -1  6725             } else if (isIdentStart(chr) || chr === '\\') {
   -1  6726               (rule = rule || {}).tagName = getIdent();
   -1  6727             } else if (chr === '.') {
   -1  6728               pos++;
   -1  6729               rule = rule || {};
   -1  6730               (rule.classNames = rule.classNames || []).push(getIdent());
   -1  6731             } else if (chr === '#') {
   -1  6732               pos++;
   -1  6733               (rule = rule || {}).id = getIdent();
   -1  6734             } else if (chr === '[') {
   -1  6735               pos++;
   -1  6736               skipWhitespace();
   -1  6737               var attr = {
   -1  6738                 name: getIdent()
   -1  6739               };
   -1  6740               skipWhitespace();
   -1  6741               if (chr === ']') {
   -1  6742                 pos++;
   -1  6743               } else {
   -1  6744                 var operator = '';
   -1  6745                 if (attrEqualityMods[chr]) {
   -1  6746                   operator = chr;
   -1  6747                   pos++;
   -1  6748                   chr = str.charAt(pos);
   -1  6749                 }
   -1  6750                 if (pos >= l) {
   -1  6751                   throw Error('Expected "=" but end of file reached.');
   -1  6752                 }
   -1  6753                 if (chr !== '=') {
   -1  6754                   throw Error('Expected "=" but "' + chr + '" found.');
   -1  6755                 }
   -1  6756                 attr.operator = operator + '=';
   -1  6757                 pos++;
   -1  6758                 skipWhitespace();
   -1  6759                 var attrValue = '';
   -1  6760                 attr.valueType = 'string';
   -1  6761                 if (chr === '"') {
   -1  6762                   attrValue = getStr('"', doubleQuotesEscapeChars);
   -1  6763                 } else if (chr === '\'') {
   -1  6764                   attrValue = getStr('\'', singleQuoteEscapeChars);
   -1  6765                 } else if (substitutesEnabled && chr === '$') {
   -1  6766                   pos++;
   -1  6767                   attrValue = getIdent();
   -1  6768                   attr.valueType = 'substitute';
   -1  6769                 } else {
   -1  6770                   while (pos < l) {
   -1  6771                     if (chr === ']') {
   -1  6772                       break;
   -1  6773                     }
   -1  6774                     attrValue += chr;
   -1  6775                     pos++;
   -1  6776                     chr = str.charAt(pos);
   -1  6777                   }
   -1  6778                   attrValue = attrValue.trim();
   -1  6779                 }
   -1  6780                 skipWhitespace();
   -1  6781                 if (pos >= l) {
   -1  6782                   throw Error('Expected "]" but end of file reached.');
   -1  6783                 }
   -1  6784                 if (chr !== ']') {
   -1  6785                   throw Error('Expected "]" but "' + chr + '" found.');
   -1  6786                 }
   -1  6787                 pos++;
   -1  6788                 attr.value = attrValue;
   -1  6789               }
   -1  6790               rule = rule || {};
   -1  6791               (rule.attrs = rule.attrs || []).push(attr);
   -1  6792             } else if (chr === ':') {
   -1  6793               pos++;
   -1  6794               var pseudoName = getIdent();
   -1  6795               var pseudo = {
   -1  6796                 name: pseudoName
   -1  6797               };
   -1  6798               if (chr === '(') {
   -1  6799                 pos++;
   -1  6800                 var value = '';
   -1  6801                 skipWhitespace();
   -1  6802                 if (pseudos[pseudoName] === 'selector') {
   -1  6803                   pseudo.valueType = 'selector';
   -1  6804                   value = this.parseSelector();
   -1  6805                 } else {
   -1  6806                   pseudo.valueType = pseudos[pseudoName] || 'string';
   -1  6807                   if (chr === '"') {
   -1  6808                     value = getStr('"', doubleQuotesEscapeChars);
   -1  6809                   } else if (chr === '\'') {
   -1  6810                     value = getStr('\'', singleQuoteEscapeChars);
   -1  6811                   } else if (substitutesEnabled && chr === '$') {
   -1  6812                     pos++;
   -1  6813                     value = getIdent();
   -1  6814                     pseudo.valueType = 'substitute';
   -1  6815                   } else {
   -1  6816                     while (pos < l) {
   -1  6817                       if (chr === ')') {
   -1  6818                         break;
   -1  6819                       }
   -1  6820                       value += chr;
   -1  6821                       pos++;
   -1  6822                       chr = str.charAt(pos);
   -1  6823                     }
   -1  6824                     value = value.trim();
   -1  6825                   }
   -1  6826                   skipWhitespace();
   -1  6827                 }
   -1  6828                 if (pos >= l) {
   -1  6829                   throw Error('Expected ")" but end of file reached.');
   -1  6830                 }
   -1  6831                 if (chr !== ')') {
   -1  6832                   throw Error('Expected ")" but "' + chr + '" found.');
   -1  6833                 }
   -1  6834                 pos++;
   -1  6835                 pseudo.value = value;
   -1  6836               }
   -1  6837               rule = rule || {};
   -1  6838               (rule.pseudos = rule.pseudos || []).push(pseudo);
   -1  6839             } else {
   -1  6840               break;
   -1  6841             }
   -1  6842           }
   -1  6843           return rule;
   -1  6844         };
   -1  6845         return this;
 6638  6846       }
 6639    -1       var axios = createInstance(defaults);
 6640    -1       axios.Axios = Axios;
 6641    -1       axios.create = function create(instanceConfig) {
 6642    -1         return createInstance(utils.merge(defaults, instanceConfig));
 6643    -1       };
 6644    -1       axios.Cancel = __webpack_require__(23);
 6645    -1       axios.CancelToken = __webpack_require__(24);
 6646    -1       axios.isCancel = __webpack_require__(20);
 6647    -1       axios.all = function all(promises) {
 6648    -1         return Promise.all(promises);
   -1  6847       CssSelectorParser.prototype.parse = function(str) {
   -1  6848         var context = new ParseContext(str, 0, this.pseudos, this.attrEqualityMods, this.ruleNestingOperators, this.substitutesEnabled);
   -1  6849         return context.parse();
 6649  6850       };
 6650    -1       axios.spread = __webpack_require__(25);
 6651    -1       module.exports = axios;
 6652    -1       module.exports.default = axios;
 6653    -1     }, function(module, exports, __webpack_require__) {
 6654    -1       'use strict';
 6655    -1       var bind = __webpack_require__(3);
 6656    -1       var isBuffer = __webpack_require__(4);
 6657    -1       var toString = Object.prototype.toString;
 6658    -1       function isArray(val) {
 6659    -1         return toString.call(val) === '[object Array]';
 6660    -1       }
 6661    -1       function isArrayBuffer(val) {
 6662    -1         return toString.call(val) === '[object ArrayBuffer]';
 6663    -1       }
 6664    -1       function isFormData(val) {
 6665    -1         return typeof FormData !== 'undefined' && val instanceof FormData;
 6666    -1       }
 6667    -1       function isArrayBufferView(val) {
 6668    -1         var result;
 6669    -1         if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
 6670    -1           result = ArrayBuffer.isView(val);
 6671    -1         } else {
 6672    -1           result = val && val.buffer && val.buffer instanceof ArrayBuffer;
   -1  6851       CssSelectorParser.prototype.escapeIdentifier = function(s) {
   -1  6852         var result = '';
   -1  6853         var i = 0;
   -1  6854         var len = s.length;
   -1  6855         while (i < len) {
   -1  6856           var chr = s.charAt(i);
   -1  6857           if (identSpecialChars[chr]) {
   -1  6858             result += '\\' + chr;
   -1  6859           } else {
   -1  6860             if (!(chr === '_' || chr === '-' || chr >= 'A' && chr <= 'Z' || chr >= 'a' && chr <= 'z' || i !== 0 && chr >= '0' && chr <= '9')) {
   -1  6861               var charCode = chr.charCodeAt(0);
   -1  6862               if ((charCode & 63488) === 55296) {
   -1  6863                 var extraCharCode = s.charCodeAt(i++);
   -1  6864                 if ((charCode & 64512) !== 55296 || (extraCharCode & 64512) !== 56320) {
   -1  6865                   throw Error('UCS-2(decode): illegal sequence');
   -1  6866                 }
   -1  6867                 charCode = ((charCode & 1023) << 10) + (extraCharCode & 1023) + 65536;
   -1  6868               }
   -1  6869               result += '\\' + charCode.toString(16) + ' ';
   -1  6870             } else {
   -1  6871               result += chr;
   -1  6872             }
   -1  6873           }
   -1  6874           i++;
 6673  6875         }
 6674  6876         return result;
 6675    -1       }
 6676    -1       function isString(val) {
 6677    -1         return typeof val === 'string';
 6678    -1       }
 6679    -1       function isNumber(val) {
 6680    -1         return typeof val === 'number';
 6681    -1       }
 6682    -1       function isUndefined(val) {
 6683    -1         return typeof val === 'undefined';
 6684    -1       }
 6685    -1       function isObject(val) {
 6686    -1         return val !== null && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object';
 6687    -1       }
 6688    -1       function isDate(val) {
 6689    -1         return toString.call(val) === '[object Date]';
 6690    -1       }
 6691    -1       function isFile(val) {
 6692    -1         return toString.call(val) === '[object File]';
 6693    -1       }
 6694    -1       function isBlob(val) {
 6695    -1         return toString.call(val) === '[object Blob]';
 6696    -1       }
 6697    -1       function isFunction(val) {
 6698    -1         return toString.call(val) === '[object Function]';
 6699    -1       }
 6700    -1       function isStream(val) {
 6701    -1         return isObject(val) && isFunction(val.pipe);
 6702    -1       }
 6703    -1       function isURLSearchParams(val) {
 6704    -1         return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
 6705    -1       }
 6706    -1       function trim(str) {
 6707    -1         return str.replace(/^\s*/, '').replace(/\s*$/, '');
 6708    -1       }
 6709    -1       function isStandardBrowserEnv() {
 6710    -1         if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
 6711    -1           return false;
   -1  6877       };
   -1  6878       CssSelectorParser.prototype.escapeStr = function(s) {
   -1  6879         var result = '';
   -1  6880         var i = 0;
   -1  6881         var len = s.length;
   -1  6882         var chr, replacement;
   -1  6883         while (i < len) {
   -1  6884           chr = s.charAt(i);
   -1  6885           if (chr === '"') {
   -1  6886             chr = '\\"';
   -1  6887           } else if (chr === '\\') {
   -1  6888             chr = '\\\\';
   -1  6889           } else if (replacement = strReplacementsRev[chr]) {
   -1  6890             chr = replacement;
   -1  6891           }
   -1  6892           result += chr;
   -1  6893           i++;
 6712  6894         }
 6713    -1         return typeof window !== 'undefined' && typeof document !== 'undefined';
 6714    -1       }
 6715    -1       function forEach(obj, fn) {
 6716    -1         if (obj === null || typeof obj === 'undefined') {
 6717    -1           return;
   -1  6895         return '"' + result + '"';
   -1  6896       };
   -1  6897       CssSelectorParser.prototype.render = function(path) {
   -1  6898         return this._renderEntity(path).trim();
   -1  6899       };
   -1  6900       CssSelectorParser.prototype._renderEntity = function(entity) {
   -1  6901         var currentEntity, parts, res;
   -1  6902         res = '';
   -1  6903         switch (entity.type) {
   -1  6904          case 'ruleSet':
   -1  6905           currentEntity = entity.rule;
   -1  6906           parts = [];
   -1  6907           while (currentEntity) {
   -1  6908             if (currentEntity.nestingOperator) {
   -1  6909               parts.push(currentEntity.nestingOperator);
   -1  6910             }
   -1  6911             parts.push(this._renderEntity(currentEntity));
   -1  6912             currentEntity = currentEntity.rule;
   -1  6913           }
   -1  6914           res = parts.join(' ');
   -1  6915           break;
   -1  6916 
   -1  6917          case 'selectors':
   -1  6918           res = entity.selectors.map(this._renderEntity, this).join(', ');
   -1  6919           break;
   -1  6920 
   -1  6921          case 'rule':
   -1  6922           if (entity.tagName) {
   -1  6923             if (entity.tagName === '*') {
   -1  6924               res = '*';
   -1  6925             } else {
   -1  6926               res = this.escapeIdentifier(entity.tagName);
   -1  6927             }
   -1  6928           }
   -1  6929           if (entity.id) {
   -1  6930             res += '#' + this.escapeIdentifier(entity.id);
   -1  6931           }
   -1  6932           if (entity.classNames) {
   -1  6933             res += entity.classNames.map(function(cn) {
   -1  6934               return '.' + this.escapeIdentifier(cn);
   -1  6935             }, this).join('');
   -1  6936           }
   -1  6937           if (entity.attrs) {
   -1  6938             res += entity.attrs.map(function(attr) {
   -1  6939               if (attr.operator) {
   -1  6940                 if (attr.valueType === 'substitute') {
   -1  6941                   return '[' + this.escapeIdentifier(attr.name) + attr.operator + '$' + attr.value + ']';
   -1  6942                 } else {
   -1  6943                   return '[' + this.escapeIdentifier(attr.name) + attr.operator + this.escapeStr(attr.value) + ']';
   -1  6944                 }
   -1  6945               } else {
   -1  6946                 return '[' + this.escapeIdentifier(attr.name) + ']';
   -1  6947               }
   -1  6948             }, this).join('');
   -1  6949           }
   -1  6950           if (entity.pseudos) {
   -1  6951             res += entity.pseudos.map(function(pseudo) {
   -1  6952               if (pseudo.valueType) {
   -1  6953                 if (pseudo.valueType === 'selector') {
   -1  6954                   return ':' + this.escapeIdentifier(pseudo.name) + '(' + this._renderEntity(pseudo.value) + ')';
   -1  6955                 } else if (pseudo.valueType === 'substitute') {
   -1  6956                   return ':' + this.escapeIdentifier(pseudo.name) + '($' + pseudo.value + ')';
   -1  6957                 } else if (pseudo.valueType === 'numeric') {
   -1  6958                   return ':' + this.escapeIdentifier(pseudo.name) + '(' + pseudo.value + ')';
   -1  6959                 } else {
   -1  6960                   return ':' + this.escapeIdentifier(pseudo.name) + '(' + this.escapeIdentifier(pseudo.value) + ')';
   -1  6961                 }
   -1  6962               } else {
   -1  6963                 return ':' + this.escapeIdentifier(pseudo.name);
   -1  6964               }
   -1  6965             }, this).join('');
   -1  6966           }
   -1  6967           break;
   -1  6968 
   -1  6969          default:
   -1  6970           throw Error('Unknown entity type: "' + entity.type(+'".'));
 6718  6971         }
 6719    -1         if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') {
 6720    -1           obj = [ obj ];
   -1  6972         return res;
   -1  6973       };
   -1  6974       exports.CssSelectorParser = CssSelectorParser;
   -1  6975     }, {} ],
   -1  6976     29: [ function(_dereq_, module, exports) {
   -1  6977       (function() {
   -1  6978         'use strict';
   -1  6979         var doT = {
   -1  6980           name: 'doT',
   -1  6981           version: '1.1.1',
   -1  6982           templateSettings: {
   -1  6983             evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g,
   -1  6984             interpolate: /\{\{=([\s\S]+?)\}\}/g,
   -1  6985             encode: /\{\{!([\s\S]+?)\}\}/g,
   -1  6986             use: /\{\{#([\s\S]+?)\}\}/g,
   -1  6987             useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
   -1  6988             define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
   -1  6989             defineParams: /^\s*([\w$]+):([\s\S]+)/,
   -1  6990             conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
   -1  6991             iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
   -1  6992             varname: 'it',
   -1  6993             strip: true,
   -1  6994             append: true,
   -1  6995             selfcontained: false,
   -1  6996             doNotSkipEncoded: false
   -1  6997           },
   -1  6998           template: undefined,
   -1  6999           compile: undefined,
   -1  7000           log: true
   -1  7001         }, _globals;
   -1  7002         doT.encodeHTMLSource = function(doNotSkipEncoded) {
   -1  7003           var encodeHTMLRules = {
   -1  7004             '&': '&#38;',
   -1  7005             '<': '&#60;',
   -1  7006             '>': '&#62;',
   -1  7007             '"': '&#34;',
   -1  7008             '\'': '&#39;',
   -1  7009             '/': '&#47;'
   -1  7010           }, matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g;
   -1  7011           return function(code) {
   -1  7012             return code ? code.toString().replace(matchHTML, function(m) {
   -1  7013               return encodeHTMLRules[m] || m;
   -1  7014             }) : '';
   -1  7015           };
   -1  7016         };
   -1  7017         _globals = function() {
   -1  7018           return this || {};
   -1  7019         }();
   -1  7020         if (typeof module !== 'undefined' && module.exports) {
   -1  7021           module.exports = doT;
   -1  7022         } else if (typeof define === 'function' && define.amd) {
   -1  7023           define(function() {
   -1  7024             return doT;
   -1  7025           });
   -1  7026         } else {
   -1  7027           _globals.doT = doT;
 6721  7028         }
 6722    -1         if (isArray(obj)) {
 6723    -1           for (var i = 0, l = obj.length; i < l; i++) {
 6724    -1             fn.call(null, obj[i], i, obj);
   -1  7029         var startend = {
   -1  7030           append: {
   -1  7031             start: '\'+(',
   -1  7032             end: ')+\'',
   -1  7033             startencode: '\'+encodeHTML('
   -1  7034           },
   -1  7035           split: {
   -1  7036             start: '\';out+=(',
   -1  7037             end: ');out+=\'',
   -1  7038             startencode: '\';out+=encodeHTML('
   -1  7039           }
   -1  7040         }, skip = /$^/;
   -1  7041         function resolveDefs(c, block, def) {
   -1  7042           return (typeof block === 'string' ? block : block.toString()).replace(c.define || skip, function(m, code, assign, value) {
   -1  7043             if (code.indexOf('def.') === 0) {
   -1  7044               code = code.substring(4);
   -1  7045             }
   -1  7046             if (!(code in def)) {
   -1  7047               if (assign === ':') {
   -1  7048                 if (c.defineParams) {
   -1  7049                   value.replace(c.defineParams, function(m, param, v) {
   -1  7050                     def[code] = {
   -1  7051                       arg: param,
   -1  7052                       text: v
   -1  7053                     };
   -1  7054                   });
   -1  7055                 }
   -1  7056                 if (!(code in def)) {
   -1  7057                   def[code] = value;
   -1  7058                 }
   -1  7059               } else {
   -1  7060                 new Function('def', 'def[\'' + code + '\']=' + value)(def);
   -1  7061               }
   -1  7062             }
   -1  7063             return '';
   -1  7064           }).replace(c.use || skip, function(m, code) {
   -1  7065             if (c.useParams) {
   -1  7066               code = code.replace(c.useParams, function(m, s, d, param) {
   -1  7067                 if (def[d] && def[d].arg && param) {
   -1  7068                   var rw = (d + ':' + param).replace(/'|\\/g, '_');
   -1  7069                   def.__exp = def.__exp || {};
   -1  7070                   def.__exp[rw] = def[d].text.replace(new RegExp('(^|[^\\w$])' + def[d].arg + '([^\\w$])', 'g'), '$1' + param + '$2');
   -1  7071                   return s + 'def.__exp[\'' + rw + '\']';
   -1  7072                 }
   -1  7073               });
   -1  7074             }
   -1  7075             var v = new Function('def', 'return ' + code)(def);
   -1  7076             return v ? resolveDefs(c, v, def) : v;
   -1  7077           });
   -1  7078         }
   -1  7079         function unescape(code) {
   -1  7080           return code.replace(/\\('|\\)/g, '$1').replace(/[\r\t\n]/g, ' ');
   -1  7081         }
   -1  7082         doT.template = function(tmpl, c, def) {
   -1  7083           c = c || doT.templateSettings;
   -1  7084           var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv, str = c.use || c.define ? resolveDefs(c, tmpl, def || {}) : tmpl;
   -1  7085           str = ('var out=\'' + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g, ' ').replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g, '') : str).replace(/'|\\/g, '\\$&').replace(c.interpolate || skip, function(m, code) {
   -1  7086             return cse.start + unescape(code) + cse.end;
   -1  7087           }).replace(c.encode || skip, function(m, code) {
   -1  7088             needhtmlencode = true;
   -1  7089             return cse.startencode + unescape(code) + cse.end;
   -1  7090           }).replace(c.conditional || skip, function(m, elsecase, code) {
   -1  7091             return elsecase ? code ? '\';}else if(' + unescape(code) + '){out+=\'' : '\';}else{out+=\'' : code ? '\';if(' + unescape(code) + '){out+=\'' : '\';}out+=\'';
   -1  7092           }).replace(c.iterate || skip, function(m, iterate, vname, iname) {
   -1  7093             if (!iterate) {
   -1  7094               return '\';} } out+=\'';
   -1  7095             }
   -1  7096             sid += 1;
   -1  7097             indv = iname || 'i' + sid;
   -1  7098             iterate = unescape(iterate);
   -1  7099             return '\';var arr' + sid + '=' + iterate + ';if(arr' + sid + '){var ' + vname + ',' + indv + '=-1,l' + sid + '=arr' + sid + '.length-1;while(' + indv + '<l' + sid + '){' + vname + '=arr' + sid + '[' + indv + '+=1];out+=\'';
   -1  7100           }).replace(c.evaluate || skip, function(m, code) {
   -1  7101             return '\';' + unescape(code) + 'out+=\'';
   -1  7102           }) + '\';return out;').replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r').replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, '');
   -1  7103           if (needhtmlencode) {
   -1  7104             if (!c.selfcontained && _globals && !_globals._encodeHTML) {
   -1  7105               _globals._encodeHTML = doT.encodeHTMLSource(c.doNotSkipEncoded);
   -1  7106             }
   -1  7107             str = 'var encodeHTML = typeof _encodeHTML !== \'undefined\' ? _encodeHTML : (' + doT.encodeHTMLSource.toString() + '(' + (c.doNotSkipEncoded || '') + '));' + str;
 6725  7108           }
 6726    -1         } else {
 6727    -1           for (var key in obj) {
 6728    -1             if (Object.prototype.hasOwnProperty.call(obj, key)) {
 6729    -1               fn.call(null, obj[key], key, obj);
   -1  7109           try {
   -1  7110             return new Function(c.varname, str);
   -1  7111           } catch (e) {
   -1  7112             if (typeof console !== 'undefined') {
   -1  7113               console.log('Could not create a template function: ' + str);
 6730  7114             }
   -1  7115             throw e;
 6731  7116           }
 6732    -1         }
 6733    -1       }
 6734    -1       function merge() {
 6735    -1         var result = {};
 6736    -1         function assignValue(val, key) {
 6737    -1           if (_typeof(result[key]) === 'object' && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {
 6738    -1             result[key] = merge(result[key], val);
   -1  7117         };
   -1  7118         doT.compile = function(tmpl, def) {
   -1  7119           return doT.template(tmpl, null, def);
   -1  7120         };
   -1  7121       })();
   -1  7122     }, {} ],
   -1  7123     30: [ function(_dereq_, module, exports) {
   -1  7124       'use strict';
   -1  7125       module.exports = function() {
   -1  7126         return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
   -1  7127       };
   -1  7128     }, {} ],
   -1  7129     31: [ function(_dereq_, module, exports) {
   -1  7130       (function(process, global) {
   -1  7131         (function(global, factory) {
   -1  7132           typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.ES6Promise = factory();
   -1  7133         })(this, function() {
   -1  7134           'use strict';
   -1  7135           function objectOrFunction(x) {
   -1  7136             var type = typeof x;
   -1  7137             return x !== null && (type === 'object' || type === 'function');
   -1  7138           }
   -1  7139           function isFunction(x) {
   -1  7140             return typeof x === 'function';
   -1  7141           }
   -1  7142           var _isArray = void 0;
   -1  7143           if (Array.isArray) {
   -1  7144             _isArray = Array.isArray;
 6739  7145           } else {
 6740    -1             result[key] = val;
   -1  7146             _isArray = function(x) {
   -1  7147               return Object.prototype.toString.call(x) === '[object Array]';
   -1  7148             };
 6741  7149           }
 6742    -1         }
 6743    -1         for (var i = 0, l = arguments.length; i < l; i++) {
 6744    -1           forEach(arguments[i], assignValue);
 6745    -1         }
 6746    -1         return result;
 6747    -1       }
 6748    -1       function extend(a, b, thisArg) {
 6749    -1         forEach(b, function assignValue(val, key) {
 6750    -1           if (thisArg && typeof val === 'function') {
 6751    -1             a[key] = bind(val, thisArg);
   -1  7150           var isArray = _isArray;
   -1  7151           var len = 0;
   -1  7152           var vertxNext = void 0;
   -1  7153           var customSchedulerFn = void 0;
   -1  7154           var asap = function asap(callback, arg) {
   -1  7155             queue[len] = callback;
   -1  7156             queue[len + 1] = arg;
   -1  7157             len += 2;
   -1  7158             if (len === 2) {
   -1  7159               if (customSchedulerFn) {
   -1  7160                 customSchedulerFn(flush);
   -1  7161               } else {
   -1  7162                 scheduleFlush();
   -1  7163               }
   -1  7164             }
   -1  7165           };
   -1  7166           function setScheduler(scheduleFn) {
   -1  7167             customSchedulerFn = scheduleFn;
   -1  7168           }
   -1  7169           function setAsap(asapFn) {
   -1  7170             asap = asapFn;
   -1  7171           }
   -1  7172           var browserWindow = typeof window !== 'undefined' ? window : undefined;
   -1  7173           var browserGlobal = browserWindow || {};
   -1  7174           var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
   -1  7175           var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
   -1  7176           var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
   -1  7177           function useNextTick() {
   -1  7178             return function() {
   -1  7179               return process.nextTick(flush);
   -1  7180             };
   -1  7181           }
   -1  7182           function useVertxTimer() {
   -1  7183             if (typeof vertxNext !== 'undefined') {
   -1  7184               return function() {
   -1  7185                 vertxNext(flush);
   -1  7186               };
   -1  7187             }
   -1  7188             return useSetTimeout();
   -1  7189           }
   -1  7190           function useMutationObserver() {
   -1  7191             var iterations = 0;
   -1  7192             var observer = new BrowserMutationObserver(flush);
   -1  7193             var node = document.createTextNode('');
   -1  7194             observer.observe(node, {
   -1  7195               characterData: true
   -1  7196             });
   -1  7197             return function() {
   -1  7198               node.data = iterations = ++iterations % 2;
   -1  7199             };
   -1  7200           }
   -1  7201           function useMessageChannel() {
   -1  7202             var channel = new MessageChannel();
   -1  7203             channel.port1.onmessage = flush;
   -1  7204             return function() {
   -1  7205               return channel.port2.postMessage(0);
   -1  7206             };
   -1  7207           }
   -1  7208           function useSetTimeout() {
   -1  7209             var globalSetTimeout = setTimeout;
   -1  7210             return function() {
   -1  7211               return globalSetTimeout(flush, 1);
   -1  7212             };
   -1  7213           }
   -1  7214           var queue = new Array(1e3);
   -1  7215           function flush() {
   -1  7216             for (var i = 0; i < len; i += 2) {
   -1  7217               var callback = queue[i];
   -1  7218               var arg = queue[i + 1];
   -1  7219               callback(arg);
   -1  7220               queue[i] = undefined;
   -1  7221               queue[i + 1] = undefined;
   -1  7222             }
   -1  7223             len = 0;
   -1  7224           }
   -1  7225           function attemptVertx() {
   -1  7226             try {
   -1  7227               var vertx = Function('return this')().require('vertx');
   -1  7228               vertxNext = vertx.runOnLoop || vertx.runOnContext;
   -1  7229               return useVertxTimer();
   -1  7230             } catch (e) {
   -1  7231               return useSetTimeout();
   -1  7232             }
   -1  7233           }
   -1  7234           var scheduleFlush = void 0;
   -1  7235           if (isNode) {
   -1  7236             scheduleFlush = useNextTick();
   -1  7237           } else if (BrowserMutationObserver) {
   -1  7238             scheduleFlush = useMutationObserver();
   -1  7239           } else if (isWorker) {
   -1  7240             scheduleFlush = useMessageChannel();
   -1  7241           } else if (browserWindow === undefined && typeof _dereq_ === 'function') {
   -1  7242             scheduleFlush = attemptVertx();
 6752  7243           } else {
 6753    -1             a[key] = val;
   -1  7244             scheduleFlush = useSetTimeout();
 6754  7245           }
 6755    -1         });
 6756    -1         return a;
 6757    -1       }
 6758    -1       module.exports = {
 6759    -1         isArray: isArray,
 6760    -1         isArrayBuffer: isArrayBuffer,
 6761    -1         isBuffer: isBuffer,
 6762    -1         isFormData: isFormData,
 6763    -1         isArrayBufferView: isArrayBufferView,
 6764    -1         isString: isString,
 6765    -1         isNumber: isNumber,
 6766    -1         isObject: isObject,
 6767    -1         isUndefined: isUndefined,
 6768    -1         isDate: isDate,
 6769    -1         isFile: isFile,
 6770    -1         isBlob: isBlob,
 6771    -1         isFunction: isFunction,
 6772    -1         isStream: isStream,
 6773    -1         isURLSearchParams: isURLSearchParams,
 6774    -1         isStandardBrowserEnv: isStandardBrowserEnv,
 6775    -1         forEach: forEach,
 6776    -1         merge: merge,
 6777    -1         extend: extend,
 6778    -1         trim: trim
 6779    -1       };
 6780    -1     }, function(module, exports) {
 6781    -1       'use strict';
 6782    -1       module.exports = function bind(fn, thisArg) {
 6783    -1         return function wrap() {
 6784    -1           var args = new Array(arguments.length);
 6785    -1           for (var i = 0; i < args.length; i++) {
 6786    -1             args[i] = arguments[i];
   -1  7246           function then(onFulfillment, onRejection) {
   -1  7247             var parent = this;
   -1  7248             var child = new this.constructor(noop);
   -1  7249             if (child[PROMISE_ID] === undefined) {
   -1  7250               makePromise(child);
   -1  7251             }
   -1  7252             var _state = parent._state;
   -1  7253             if (_state) {
   -1  7254               var callback = arguments[_state - 1];
   -1  7255               asap(function() {
   -1  7256                 return invokeCallback(_state, child, callback, parent._result);
   -1  7257               });
   -1  7258             } else {
   -1  7259               subscribe(parent, child, onFulfillment, onRejection);
   -1  7260             }
   -1  7261             return child;
 6787  7262           }
 6788    -1           return fn.apply(thisArg, args);
 6789    -1         };
 6790    -1       };
 6791    -1     }, function(module, exports) {
   -1  7263           function resolve$1(object) {
   -1  7264             var Constructor = this;
   -1  7265             if (object && typeof object === 'object' && object.constructor === Constructor) {
   -1  7266               return object;
   -1  7267             }
   -1  7268             var promise = new Constructor(noop);
   -1  7269             resolve(promise, object);
   -1  7270             return promise;
   -1  7271           }
   -1  7272           var PROMISE_ID = Math.random().toString(36).substring(2);
   -1  7273           function noop() {}
   -1  7274           var PENDING = void 0;
   -1  7275           var FULFILLED = 1;
   -1  7276           var REJECTED = 2;
   -1  7277           var TRY_CATCH_ERROR = {
   -1  7278             error: null
   -1  7279           };
   -1  7280           function selfFulfillment() {
   -1  7281             return new TypeError('You cannot resolve a promise with itself');
   -1  7282           }
   -1  7283           function cannotReturnOwn() {
   -1  7284             return new TypeError('A promises callback cannot return that same promise.');
   -1  7285           }
   -1  7286           function getThen(promise) {
   -1  7287             try {
   -1  7288               return promise.then;
   -1  7289             } catch (error) {
   -1  7290               TRY_CATCH_ERROR.error = error;
   -1  7291               return TRY_CATCH_ERROR;
   -1  7292             }
   -1  7293           }
   -1  7294           function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
   -1  7295             try {
   -1  7296               then$$1.call(value, fulfillmentHandler, rejectionHandler);
   -1  7297             } catch (e) {
   -1  7298               return e;
   -1  7299             }
   -1  7300           }
   -1  7301           function handleForeignThenable(promise, thenable, then$$1) {
   -1  7302             asap(function(promise) {
   -1  7303               var sealed = false;
   -1  7304               var error = tryThen(then$$1, thenable, function(value) {
   -1  7305                 if (sealed) {
   -1  7306                   return;
   -1  7307                 }
   -1  7308                 sealed = true;
   -1  7309                 if (thenable !== value) {
   -1  7310                   resolve(promise, value);
   -1  7311                 } else {
   -1  7312                   fulfill(promise, value);
   -1  7313                 }
   -1  7314               }, function(reason) {
   -1  7315                 if (sealed) {
   -1  7316                   return;
   -1  7317                 }
   -1  7318                 sealed = true;
   -1  7319                 reject(promise, reason);
   -1  7320               }, 'Settle: ' + (promise._label || ' unknown promise'));
   -1  7321               if (!sealed && error) {
   -1  7322                 sealed = true;
   -1  7323                 reject(promise, error);
   -1  7324               }
   -1  7325             }, promise);
   -1  7326           }
   -1  7327           function handleOwnThenable(promise, thenable) {
   -1  7328             if (thenable._state === FULFILLED) {
   -1  7329               fulfill(promise, thenable._result);
   -1  7330             } else if (thenable._state === REJECTED) {
   -1  7331               reject(promise, thenable._result);
   -1  7332             } else {
   -1  7333               subscribe(thenable, undefined, function(value) {
   -1  7334                 return resolve(promise, value);
   -1  7335               }, function(reason) {
   -1  7336                 return reject(promise, reason);
   -1  7337               });
   -1  7338             }
   -1  7339           }
   -1  7340           function handleMaybeThenable(promise, maybeThenable, then$$1) {
   -1  7341             if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
   -1  7342               handleOwnThenable(promise, maybeThenable);
   -1  7343             } else {
   -1  7344               if (then$$1 === TRY_CATCH_ERROR) {
   -1  7345                 reject(promise, TRY_CATCH_ERROR.error);
   -1  7346                 TRY_CATCH_ERROR.error = null;
   -1  7347               } else if (then$$1 === undefined) {
   -1  7348                 fulfill(promise, maybeThenable);
   -1  7349               } else if (isFunction(then$$1)) {
   -1  7350                 handleForeignThenable(promise, maybeThenable, then$$1);
   -1  7351               } else {
   -1  7352                 fulfill(promise, maybeThenable);
   -1  7353               }
   -1  7354             }
   -1  7355           }
   -1  7356           function resolve(promise, value) {
   -1  7357             if (promise === value) {
   -1  7358               reject(promise, selfFulfillment());
   -1  7359             } else if (objectOrFunction(value)) {
   -1  7360               handleMaybeThenable(promise, value, getThen(value));
   -1  7361             } else {
   -1  7362               fulfill(promise, value);
   -1  7363             }
   -1  7364           }
   -1  7365           function publishRejection(promise) {
   -1  7366             if (promise._onerror) {
   -1  7367               promise._onerror(promise._result);
   -1  7368             }
   -1  7369             publish(promise);
   -1  7370           }
   -1  7371           function fulfill(promise, value) {
   -1  7372             if (promise._state !== PENDING) {
   -1  7373               return;
   -1  7374             }
   -1  7375             promise._result = value;
   -1  7376             promise._state = FULFILLED;
   -1  7377             if (promise._subscribers.length !== 0) {
   -1  7378               asap(publish, promise);
   -1  7379             }
   -1  7380           }
   -1  7381           function reject(promise, reason) {
   -1  7382             if (promise._state !== PENDING) {
   -1  7383               return;
   -1  7384             }
   -1  7385             promise._state = REJECTED;
   -1  7386             promise._result = reason;
   -1  7387             asap(publishRejection, promise);
   -1  7388           }
   -1  7389           function subscribe(parent, child, onFulfillment, onRejection) {
   -1  7390             var _subscribers = parent._subscribers;
   -1  7391             var length = _subscribers.length;
   -1  7392             parent._onerror = null;
   -1  7393             _subscribers[length] = child;
   -1  7394             _subscribers[length + FULFILLED] = onFulfillment;
   -1  7395             _subscribers[length + REJECTED] = onRejection;
   -1  7396             if (length === 0 && parent._state) {
   -1  7397               asap(publish, parent);
   -1  7398             }
   -1  7399           }
   -1  7400           function publish(promise) {
   -1  7401             var subscribers = promise._subscribers;
   -1  7402             var settled = promise._state;
   -1  7403             if (subscribers.length === 0) {
   -1  7404               return;
   -1  7405             }
   -1  7406             var child = void 0, callback = void 0, detail = promise._result;
   -1  7407             for (var i = 0; i < subscribers.length; i += 3) {
   -1  7408               child = subscribers[i];
   -1  7409               callback = subscribers[i + settled];
   -1  7410               if (child) {
   -1  7411                 invokeCallback(settled, child, callback, detail);
   -1  7412               } else {
   -1  7413                 callback(detail);
   -1  7414               }
   -1  7415             }
   -1  7416             promise._subscribers.length = 0;
   -1  7417           }
   -1  7418           function tryCatch(callback, detail) {
   -1  7419             try {
   -1  7420               return callback(detail);
   -1  7421             } catch (e) {
   -1  7422               TRY_CATCH_ERROR.error = e;
   -1  7423               return TRY_CATCH_ERROR;
   -1  7424             }
   -1  7425           }
   -1  7426           function invokeCallback(settled, promise, callback, detail) {
   -1  7427             var hasCallback = isFunction(callback), value = void 0, error = void 0, succeeded = void 0, failed = void 0;
   -1  7428             if (hasCallback) {
   -1  7429               value = tryCatch(callback, detail);
   -1  7430               if (value === TRY_CATCH_ERROR) {
   -1  7431                 failed = true;
   -1  7432                 error = value.error;
   -1  7433                 value.error = null;
   -1  7434               } else {
   -1  7435                 succeeded = true;
   -1  7436               }
   -1  7437               if (promise === value) {
   -1  7438                 reject(promise, cannotReturnOwn());
   -1  7439                 return;
   -1  7440               }
   -1  7441             } else {
   -1  7442               value = detail;
   -1  7443               succeeded = true;
   -1  7444             }
   -1  7445             if (promise._state !== PENDING) {} else if (hasCallback && succeeded) {
   -1  7446               resolve(promise, value);
   -1  7447             } else if (failed) {
   -1  7448               reject(promise, error);
   -1  7449             } else if (settled === FULFILLED) {
   -1  7450               fulfill(promise, value);
   -1  7451             } else if (settled === REJECTED) {
   -1  7452               reject(promise, value);
   -1  7453             }
   -1  7454           }
   -1  7455           function initializePromise(promise, resolver) {
   -1  7456             try {
   -1  7457               resolver(function resolvePromise(value) {
   -1  7458                 resolve(promise, value);
   -1  7459               }, function rejectPromise(reason) {
   -1  7460                 reject(promise, reason);
   -1  7461               });
   -1  7462             } catch (e) {
   -1  7463               reject(promise, e);
   -1  7464             }
   -1  7465           }
   -1  7466           var id = 0;
   -1  7467           function nextId() {
   -1  7468             return id++;
   -1  7469           }
   -1  7470           function makePromise(promise) {
   -1  7471             promise[PROMISE_ID] = id++;
   -1  7472             promise._state = undefined;
   -1  7473             promise._result = undefined;
   -1  7474             promise._subscribers = [];
   -1  7475           }
   -1  7476           function validationError() {
   -1  7477             return new Error('Array Methods must be provided an Array');
   -1  7478           }
   -1  7479           var Enumerator = function() {
   -1  7480             function Enumerator(Constructor, input) {
   -1  7481               this._instanceConstructor = Constructor;
   -1  7482               this.promise = new Constructor(noop);
   -1  7483               if (!this.promise[PROMISE_ID]) {
   -1  7484                 makePromise(this.promise);
   -1  7485               }
   -1  7486               if (isArray(input)) {
   -1  7487                 this.length = input.length;
   -1  7488                 this._remaining = input.length;
   -1  7489                 this._result = new Array(this.length);
   -1  7490                 if (this.length === 0) {
   -1  7491                   fulfill(this.promise, this._result);
   -1  7492                 } else {
   -1  7493                   this.length = this.length || 0;
   -1  7494                   this._enumerate(input);
   -1  7495                   if (this._remaining === 0) {
   -1  7496                     fulfill(this.promise, this._result);
   -1  7497                   }
   -1  7498                 }
   -1  7499               } else {
   -1  7500                 reject(this.promise, validationError());
   -1  7501               }
   -1  7502             }
   -1  7503             Enumerator.prototype._enumerate = function _enumerate(input) {
   -1  7504               for (var i = 0; this._state === PENDING && i < input.length; i++) {
   -1  7505                 this._eachEntry(input[i], i);
   -1  7506               }
   -1  7507             };
   -1  7508             Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
   -1  7509               var c = this._instanceConstructor;
   -1  7510               var resolve$$1 = c.resolve;
   -1  7511               if (resolve$$1 === resolve$1) {
   -1  7512                 var _then = getThen(entry);
   -1  7513                 if (_then === then && entry._state !== PENDING) {
   -1  7514                   this._settledAt(entry._state, i, entry._result);
   -1  7515                 } else if (typeof _then !== 'function') {
   -1  7516                   this._remaining--;
   -1  7517                   this._result[i] = entry;
   -1  7518                 } else if (c === Promise$1) {
   -1  7519                   var promise = new c(noop);
   -1  7520                   handleMaybeThenable(promise, entry, _then);
   -1  7521                   this._willSettleAt(promise, i);
   -1  7522                 } else {
   -1  7523                   this._willSettleAt(new c(function(resolve$$1) {
   -1  7524                     return resolve$$1(entry);
   -1  7525                   }), i);
   -1  7526                 }
   -1  7527               } else {
   -1  7528                 this._willSettleAt(resolve$$1(entry), i);
   -1  7529               }
   -1  7530             };
   -1  7531             Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
   -1  7532               var promise = this.promise;
   -1  7533               if (promise._state === PENDING) {
   -1  7534                 this._remaining--;
   -1  7535                 if (state === REJECTED) {
   -1  7536                   reject(promise, value);
   -1  7537                 } else {
   -1  7538                   this._result[i] = value;
   -1  7539                 }
   -1  7540               }
   -1  7541               if (this._remaining === 0) {
   -1  7542                 fulfill(promise, this._result);
   -1  7543               }
   -1  7544             };
   -1  7545             Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
   -1  7546               var enumerator = this;
   -1  7547               subscribe(promise, undefined, function(value) {
   -1  7548                 return enumerator._settledAt(FULFILLED, i, value);
   -1  7549               }, function(reason) {
   -1  7550                 return enumerator._settledAt(REJECTED, i, reason);
   -1  7551               });
   -1  7552             };
   -1  7553             return Enumerator;
   -1  7554           }();
   -1  7555           function all(entries) {
   -1  7556             return new Enumerator(this, entries).promise;
   -1  7557           }
   -1  7558           function race(entries) {
   -1  7559             var Constructor = this;
   -1  7560             if (!isArray(entries)) {
   -1  7561               return new Constructor(function(_, reject) {
   -1  7562                 return reject(new TypeError('You must pass an array to race.'));
   -1  7563               });
   -1  7564             } else {
   -1  7565               return new Constructor(function(resolve, reject) {
   -1  7566                 var length = entries.length;
   -1  7567                 for (var i = 0; i < length; i++) {
   -1  7568                   Constructor.resolve(entries[i]).then(resolve, reject);
   -1  7569                 }
   -1  7570               });
   -1  7571             }
   -1  7572           }
   -1  7573           function reject$1(reason) {
   -1  7574             var Constructor = this;
   -1  7575             var promise = new Constructor(noop);
   -1  7576             reject(promise, reason);
   -1  7577             return promise;
   -1  7578           }
   -1  7579           function needsResolver() {
   -1  7580             throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
   -1  7581           }
   -1  7582           function needsNew() {
   -1  7583             throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
   -1  7584           }
   -1  7585           var Promise$1 = function() {
   -1  7586             function Promise(resolver) {
   -1  7587               this[PROMISE_ID] = nextId();
   -1  7588               this._result = this._state = undefined;
   -1  7589               this._subscribers = [];
   -1  7590               if (noop !== resolver) {
   -1  7591                 typeof resolver !== 'function' && needsResolver();
   -1  7592                 this instanceof Promise ? initializePromise(this, resolver) : needsNew();
   -1  7593               }
   -1  7594             }
   -1  7595             Promise.prototype.catch = function _catch(onRejection) {
   -1  7596               return this.then(null, onRejection);
   -1  7597             };
   -1  7598             Promise.prototype.finally = function _finally(callback) {
   -1  7599               var promise = this;
   -1  7600               var constructor = promise.constructor;
   -1  7601               if (isFunction(callback)) {
   -1  7602                 return promise.then(function(value) {
   -1  7603                   return constructor.resolve(callback()).then(function() {
   -1  7604                     return value;
   -1  7605                   });
   -1  7606                 }, function(reason) {
   -1  7607                   return constructor.resolve(callback()).then(function() {
   -1  7608                     throw reason;
   -1  7609                   });
   -1  7610                 });
   -1  7611               }
   -1  7612               return promise.then(callback, callback);
   -1  7613             };
   -1  7614             return Promise;
   -1  7615           }();
   -1  7616           Promise$1.prototype.then = then;
   -1  7617           Promise$1.all = all;
   -1  7618           Promise$1.race = race;
   -1  7619           Promise$1.resolve = resolve$1;
   -1  7620           Promise$1.reject = reject$1;
   -1  7621           Promise$1._setScheduler = setScheduler;
   -1  7622           Promise$1._setAsap = setAsap;
   -1  7623           Promise$1._asap = asap;
   -1  7624           function polyfill() {
   -1  7625             var local = void 0;
   -1  7626             if (typeof global !== 'undefined') {
   -1  7627               local = global;
   -1  7628             } else if (typeof self !== 'undefined') {
   -1  7629               local = self;
   -1  7630             } else {
   -1  7631               try {
   -1  7632                 local = Function('return this')();
   -1  7633               } catch (e) {
   -1  7634                 throw new Error('polyfill failed because global object is unavailable in this environment');
   -1  7635               }
   -1  7636             }
   -1  7637             var P = local.Promise;
   -1  7638             if (P) {
   -1  7639               var promiseToString = null;
   -1  7640               try {
   -1  7641                 promiseToString = Object.prototype.toString.call(P.resolve());
   -1  7642               } catch (e) {}
   -1  7643               if (promiseToString === '[object Promise]' && !P.cast) {
   -1  7644                 return;
   -1  7645               }
   -1  7646             }
   -1  7647             local.Promise = Promise$1;
   -1  7648           }
   -1  7649           Promise$1.polyfill = polyfill;
   -1  7650           Promise$1.Promise = Promise$1;
   -1  7651           return Promise$1;
   -1  7652         });
   -1  7653       }).call(this, _dereq_('_process'), typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {});
   -1  7654     }, {
   -1  7655       _process: 33
   -1  7656     } ],
   -1  7657     32: [ function(_dereq_, module, exports) {
 6792  7658       module.exports = function(obj) {
 6793  7659         return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
 6794  7660       };
@@ -6798,748 +7664,1081 @@ module.exports = {
 6798  7664       function isSlowBuffer(obj) {
 6799  7665         return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));
 6800  7666       }
 6801    -1     }, function(module, exports, __webpack_require__) {
 6802    -1       'use strict';
 6803    -1       var defaults = __webpack_require__(6);
 6804    -1       var utils = __webpack_require__(2);
 6805    -1       var InterceptorManager = __webpack_require__(17);
 6806    -1       var dispatchRequest = __webpack_require__(18);
 6807    -1       function Axios(instanceConfig) {
 6808    -1         this.defaults = instanceConfig;
 6809    -1         this.interceptors = {
 6810    -1           request: new InterceptorManager(),
 6811    -1           response: new InterceptorManager()
 6812    -1         };
   -1  7667     }, {} ],
   -1  7668     33: [ function(_dereq_, module, exports) {
   -1  7669       var process = module.exports = {};
   -1  7670       var cachedSetTimeout;
   -1  7671       var cachedClearTimeout;
   -1  7672       function defaultSetTimout() {
   -1  7673         throw new Error('setTimeout has not been defined');
 6813  7674       }
 6814    -1       Axios.prototype.request = function request(config) {
 6815    -1         if (typeof config === 'string') {
 6816    -1           config = utils.merge({
 6817    -1             url: arguments[0]
 6818    -1           }, arguments[1]);
 6819    -1         }
 6820    -1         config = utils.merge(defaults, {
 6821    -1           method: 'get'
 6822    -1         }, this.defaults, config);
 6823    -1         config.method = config.method.toLowerCase();
 6824    -1         var chain = [ dispatchRequest, undefined ];
 6825    -1         var promise = Promise.resolve(config);
 6826    -1         this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
 6827    -1           chain.unshift(interceptor.fulfilled, interceptor.rejected);
 6828    -1         });
 6829    -1         this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
 6830    -1           chain.push(interceptor.fulfilled, interceptor.rejected);
 6831    -1         });
 6832    -1         while (chain.length) {
 6833    -1           promise = promise.then(chain.shift(), chain.shift());
   -1  7675       function defaultClearTimeout() {
   -1  7676         throw new Error('clearTimeout has not been defined');
   -1  7677       }
   -1  7678       (function() {
   -1  7679         try {
   -1  7680           if (typeof setTimeout === 'function') {
   -1  7681             cachedSetTimeout = setTimeout;
   -1  7682           } else {
   -1  7683             cachedSetTimeout = defaultSetTimout;
   -1  7684           }
   -1  7685         } catch (e) {
   -1  7686           cachedSetTimeout = defaultSetTimout;
 6834  7687         }
 6835    -1         return promise;
 6836    -1       };
 6837    -1       utils.forEach([ 'delete', 'get', 'head', 'options' ], function forEachMethodNoData(method) {
 6838    -1         Axios.prototype[method] = function(url, config) {
 6839    -1           return this.request(utils.merge(config || {}, {
 6840    -1             method: method,
 6841    -1             url: url
 6842    -1           }));
 6843    -1         };
 6844    -1       });
 6845    -1       utils.forEach([ 'post', 'put', 'patch' ], function forEachMethodWithData(method) {
 6846    -1         Axios.prototype[method] = function(url, data, config) {
 6847    -1           return this.request(utils.merge(config || {}, {
 6848    -1             method: method,
 6849    -1             url: url,
 6850    -1             data: data
 6851    -1           }));
 6852    -1         };
 6853    -1       });
 6854    -1       module.exports = Axios;
 6855    -1     }, function(module, exports, __webpack_require__) {
 6856    -1       'use strict';
 6857    -1       var utils = __webpack_require__(2);
 6858    -1       var normalizeHeaderName = __webpack_require__(7);
 6859    -1       var DEFAULT_CONTENT_TYPE = {
 6860    -1         'Content-Type': 'application/x-www-form-urlencoded'
 6861    -1       };
 6862    -1       function setContentTypeIfUnset(headers, value) {
 6863    -1         if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
 6864    -1           headers['Content-Type'] = value;
   -1  7688         try {
   -1  7689           if (typeof clearTimeout === 'function') {
   -1  7690             cachedClearTimeout = clearTimeout;
   -1  7691           } else {
   -1  7692             cachedClearTimeout = defaultClearTimeout;
   -1  7693           }
   -1  7694         } catch (e) {
   -1  7695           cachedClearTimeout = defaultClearTimeout;
 6865  7696         }
 6866    -1       }
 6867    -1       function getDefaultAdapter() {
 6868    -1         var adapter;
 6869    -1         if (typeof XMLHttpRequest !== 'undefined') {
 6870    -1           adapter = __webpack_require__(8);
 6871    -1         } else if (typeof process !== 'undefined') {
 6872    -1           adapter = __webpack_require__(8);
   -1  7697       })();
   -1  7698       function runTimeout(fun) {
   -1  7699         if (cachedSetTimeout === setTimeout) {
   -1  7700           return setTimeout(fun, 0);
 6873  7701         }
 6874    -1         return adapter;
 6875    -1       }
 6876    -1       var defaults = {
 6877    -1         adapter: getDefaultAdapter(),
 6878    -1         transformRequest: [ function transformRequest(data, headers) {
 6879    -1           normalizeHeaderName(headers, 'Content-Type');
 6880    -1           if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {
 6881    -1             return data;
 6882    -1           }
 6883    -1           if (utils.isArrayBufferView(data)) {
 6884    -1             return data.buffer;
   -1  7702         if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
   -1  7703           cachedSetTimeout = setTimeout;
   -1  7704           return setTimeout(fun, 0);
   -1  7705         }
   -1  7706         try {
   -1  7707           return cachedSetTimeout(fun, 0);
   -1  7708         } catch (e) {
   -1  7709           try {
   -1  7710             return cachedSetTimeout.call(null, fun, 0);
   -1  7711           } catch (e) {
   -1  7712             return cachedSetTimeout.call(this, fun, 0);
 6885  7713           }
 6886    -1           if (utils.isURLSearchParams(data)) {
 6887    -1             setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
 6888    -1             return data.toString();
   -1  7714         }
   -1  7715       }
   -1  7716       function runClearTimeout(marker) {
   -1  7717         if (cachedClearTimeout === clearTimeout) {
   -1  7718           return clearTimeout(marker);
   -1  7719         }
   -1  7720         if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
   -1  7721           cachedClearTimeout = clearTimeout;
   -1  7722           return clearTimeout(marker);
   -1  7723         }
   -1  7724         try {
   -1  7725           return cachedClearTimeout(marker);
   -1  7726         } catch (e) {
   -1  7727           try {
   -1  7728             return cachedClearTimeout.call(null, marker);
   -1  7729           } catch (e) {
   -1  7730             return cachedClearTimeout.call(this, marker);
 6889  7731           }
 6890    -1           if (utils.isObject(data)) {
 6891    -1             setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
 6892    -1             return JSON.stringify(data);
   -1  7732         }
   -1  7733       }
   -1  7734       var queue = [];
   -1  7735       var draining = false;
   -1  7736       var currentQueue;
   -1  7737       var queueIndex = -1;
   -1  7738       function cleanUpNextTick() {
   -1  7739         if (!draining || !currentQueue) {
   -1  7740           return;
   -1  7741         }
   -1  7742         draining = false;
   -1  7743         if (currentQueue.length) {
   -1  7744           queue = currentQueue.concat(queue);
   -1  7745         } else {
   -1  7746           queueIndex = -1;
   -1  7747         }
   -1  7748         if (queue.length) {
   -1  7749           drainQueue();
   -1  7750         }
   -1  7751       }
   -1  7752       function drainQueue() {
   -1  7753         if (draining) {
   -1  7754           return;
   -1  7755         }
   -1  7756         var timeout = runTimeout(cleanUpNextTick);
   -1  7757         draining = true;
   -1  7758         var len = queue.length;
   -1  7759         while (len) {
   -1  7760           currentQueue = queue;
   -1  7761           queue = [];
   -1  7762           while (++queueIndex < len) {
   -1  7763             if (currentQueue) {
   -1  7764               currentQueue[queueIndex].run();
   -1  7765             }
 6893  7766           }
 6894    -1           return data;
 6895    -1         } ],
 6896    -1         transformResponse: [ function transformResponse(data) {
 6897    -1           if (typeof data === 'string') {
 6898    -1             try {
 6899    -1               data = JSON.parse(data);
 6900    -1             } catch (e) {}
   -1  7767           queueIndex = -1;
   -1  7768           len = queue.length;
   -1  7769         }
   -1  7770         currentQueue = null;
   -1  7771         draining = false;
   -1  7772         runClearTimeout(timeout);
   -1  7773       }
   -1  7774       process.nextTick = function(fun) {
   -1  7775         var args = new Array(arguments.length - 1);
   -1  7776         if (arguments.length > 1) {
   -1  7777           for (var i = 1; i < arguments.length; i++) {
   -1  7778             args[i - 1] = arguments[i];
 6901  7779           }
 6902    -1           return data;
 6903    -1         } ],
 6904    -1         timeout: 0,
 6905    -1         xsrfCookieName: 'XSRF-TOKEN',
 6906    -1         xsrfHeaderName: 'X-XSRF-TOKEN',
 6907    -1         maxContentLength: -1,
 6908    -1         validateStatus: function validateStatus(status) {
 6909    -1           return status >= 200 && status < 300;
 6910  7780         }
   -1  7781         queue.push(new Item(fun, args));
   -1  7782         if (queue.length === 1 && !draining) {
   -1  7783           runTimeout(drainQueue);
   -1  7784         }
   -1  7785       };
   -1  7786       function Item(fun, array) {
   -1  7787         this.fun = fun;
   -1  7788         this.array = array;
   -1  7789       }
   -1  7790       Item.prototype.run = function() {
   -1  7791         this.fun.apply(null, this.array);
   -1  7792       };
   -1  7793       process.title = 'browser';
   -1  7794       process.browser = true;
   -1  7795       process.env = {};
   -1  7796       process.argv = [];
   -1  7797       process.version = '';
   -1  7798       process.versions = {};
   -1  7799       function noop() {}
   -1  7800       process.on = noop;
   -1  7801       process.addListener = noop;
   -1  7802       process.once = noop;
   -1  7803       process.off = noop;
   -1  7804       process.removeListener = noop;
   -1  7805       process.removeAllListeners = noop;
   -1  7806       process.emit = noop;
   -1  7807       process.prependListener = noop;
   -1  7808       process.prependOnceListener = noop;
   -1  7809       process.listeners = function(name) {
   -1  7810         return [];
   -1  7811       };
   -1  7812       process.binding = function(name) {
   -1  7813         throw new Error('process.binding is not supported');
   -1  7814       };
   -1  7815       process.cwd = function() {
   -1  7816         return '/';
   -1  7817       };
   -1  7818       process.chdir = function(dir) {
   -1  7819         throw new Error('process.chdir is not supported');
 6911  7820       };
 6912    -1       defaults.headers = {
 6913    -1         common: {
 6914    -1           Accept: 'application/json, text/plain, */*'
   -1  7821       process.umask = function() {
   -1  7822         return 0;
   -1  7823       };
   -1  7824     }, {} ]
   -1  7825   }, {}, [ 1 ]);
   -1  7826   'use strict';
   -1  7827   var utils = axe.utils = {};
   -1  7828   'use strict';
   -1  7829   var helpers = {};
   -1  7830   'use strict';
   -1  7831   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
   -1  7832     return typeof obj;
   -1  7833   } : function(obj) {
   -1  7834     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
   -1  7835   };
   -1  7836   var _extends = Object.assign || function(target) {
   -1  7837     for (var i = 1; i < arguments.length; i++) {
   -1  7838       var source = arguments[i];
   -1  7839       for (var key in source) {
   -1  7840         if (Object.prototype.hasOwnProperty.call(source, key)) {
   -1  7841           target[key] = source[key];
 6915  7842         }
   -1  7843       }
   -1  7844     }
   -1  7845     return target;
   -1  7846   };
   -1  7847   function getDefaultConfiguration(audit) {
   -1  7848     'use strict';
   -1  7849     var config;
   -1  7850     if (audit) {
   -1  7851       config = axe.utils.clone(audit);
   -1  7852       config.commons = audit.commons;
   -1  7853     } else {
   -1  7854       config = {};
   -1  7855     }
   -1  7856     config.reporter = config.reporter || null;
   -1  7857     config.rules = config.rules || [];
   -1  7858     config.checks = config.checks || [];
   -1  7859     config.data = _extends({
   -1  7860       checks: {},
   -1  7861       rules: {}
   -1  7862     }, config.data);
   -1  7863     return config;
   -1  7864   }
   -1  7865   function unpackToObject(collection, audit, method) {
   -1  7866     'use strict';
   -1  7867     var i, l;
   -1  7868     for (i = 0, l = collection.length; i < l; i++) {
   -1  7869       audit[method](collection[i]);
   -1  7870     }
   -1  7871   }
   -1  7872   function Audit(audit) {
   -1  7873     this.brand = 'axe';
   -1  7874     this.application = 'axeAPI';
   -1  7875     this.tagExclude = [ 'experimental' ];
   -1  7876     this.defaultConfig = audit;
   -1  7877     this._init();
   -1  7878     this._defaultLocale = null;
   -1  7879   }
   -1  7880   Audit.prototype._setDefaultLocale = function() {
   -1  7881     if (this._defaultLocale) {
   -1  7882       return;
   -1  7883     }
   -1  7884     var locale = {
   -1  7885       checks: {},
   -1  7886       rules: {}
   -1  7887     };
   -1  7888     var checkIDs = Object.keys(this.data.checks);
   -1  7889     for (var i = 0; i < checkIDs.length; i++) {
   -1  7890       var id = checkIDs[i];
   -1  7891       var check = this.data.checks[id];
   -1  7892       var _check$messages = check.messages, pass = _check$messages.pass, fail = _check$messages.fail, incomplete = _check$messages.incomplete;
   -1  7893       locale.checks[id] = {
   -1  7894         pass: pass,
   -1  7895         fail: fail,
   -1  7896         incomplete: incomplete
 6916  7897       };
 6917    -1       utils.forEach([ 'delete', 'get', 'head' ], function forEachMethodNoData(method) {
 6918    -1         defaults.headers[method] = {};
 6919    -1       });
 6920    -1       utils.forEach([ 'post', 'put', 'patch' ], function forEachMethodWithData(method) {
 6921    -1         defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
 6922    -1       });
 6923    -1       module.exports = defaults;
 6924    -1     }, function(module, exports, __webpack_require__) {
 6925    -1       'use strict';
 6926    -1       var utils = __webpack_require__(2);
 6927    -1       module.exports = function normalizeHeaderName(headers, normalizedName) {
 6928    -1         utils.forEach(headers, function processHeader(value, name) {
 6929    -1           if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
 6930    -1             headers[normalizedName] = value;
 6931    -1             delete headers[name];
 6932    -1           }
 6933    -1         });
   -1  7898     }
   -1  7899     var ruleIDs = Object.keys(this.data.rules);
   -1  7900     for (var _i = 0; _i < ruleIDs.length; _i++) {
   -1  7901       var _id = ruleIDs[_i];
   -1  7902       var rule = this.data.rules[_id];
   -1  7903       var description = rule.description, help = rule.help;
   -1  7904       locale.rules[_id] = {
   -1  7905         description: description,
   -1  7906         help: help
 6934  7907       };
 6935    -1     }, function(module, exports, __webpack_require__) {
 6936    -1       'use strict';
 6937    -1       var utils = __webpack_require__(2);
 6938    -1       var settle = __webpack_require__(9);
 6939    -1       var buildURL = __webpack_require__(12);
 6940    -1       var parseHeaders = __webpack_require__(13);
 6941    -1       var isURLSameOrigin = __webpack_require__(14);
 6942    -1       var createError = __webpack_require__(10);
 6943    -1       var btoa = typeof window !== 'undefined' && window.btoa && window.btoa.bind(window) || __webpack_require__(15);
 6944    -1       module.exports = function xhrAdapter(config) {
 6945    -1         return new Promise(function dispatchXhrRequest(resolve, reject) {
 6946    -1           var requestData = config.data;
 6947    -1           var requestHeaders = config.headers;
 6948    -1           if (utils.isFormData(requestData)) {
 6949    -1             delete requestHeaders['Content-Type'];
 6950    -1           }
 6951    -1           var request = new XMLHttpRequest();
 6952    -1           var loadEvent = 'onreadystatechange';
 6953    -1           var xDomain = false;
 6954    -1           if ('production' !== 'test' && typeof window !== 'undefined' && window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {
 6955    -1             request = new window.XDomainRequest();
 6956    -1             loadEvent = 'onload';
 6957    -1             xDomain = true;
 6958    -1             request.onprogress = function handleProgress() {};
 6959    -1             request.ontimeout = function handleTimeout() {};
 6960    -1           }
 6961    -1           if (config.auth) {
 6962    -1             var username = config.auth.username || '';
 6963    -1             var password = config.auth.password || '';
 6964    -1             requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
 6965    -1           }
 6966    -1           request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);
 6967    -1           request.timeout = config.timeout;
 6968    -1           request[loadEvent] = function handleLoad() {
 6969    -1             if (!request || request.readyState !== 4 && !xDomain) {
 6970    -1               return;
 6971    -1             }
 6972    -1             if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
 6973    -1               return;
 6974    -1             }
 6975    -1             var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
 6976    -1             var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
 6977    -1             var response = {
 6978    -1               data: responseData,
 6979    -1               status: request.status === 1223 ? 204 : request.status,
 6980    -1               statusText: request.status === 1223 ? 'No Content' : request.statusText,
 6981    -1               headers: responseHeaders,
 6982    -1               config: config,
 6983    -1               request: request
 6984    -1             };
 6985    -1             settle(resolve, reject, response);
 6986    -1             request = null;
 6987    -1           };
 6988    -1           request.onerror = function handleError() {
 6989    -1             reject(createError('Network Error', config, null, request));
 6990    -1             request = null;
 6991    -1           };
 6992    -1           request.ontimeout = function handleTimeout() {
 6993    -1             reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request));
 6994    -1             request = null;
 6995    -1           };
 6996    -1           if (utils.isStandardBrowserEnv()) {
 6997    -1             var cookies = __webpack_require__(16);
 6998    -1             var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;
 6999    -1             if (xsrfValue) {
 7000    -1               requestHeaders[config.xsrfHeaderName] = xsrfValue;
 7001    -1             }
 7002    -1           }
 7003    -1           if ('setRequestHeader' in request) {
 7004    -1             utils.forEach(requestHeaders, function setRequestHeader(val, key) {
 7005    -1               if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
 7006    -1                 delete requestHeaders[key];
 7007    -1               } else {
 7008    -1                 request.setRequestHeader(key, val);
 7009    -1               }
 7010    -1             });
 7011    -1           }
 7012    -1           if (config.withCredentials) {
 7013    -1             request.withCredentials = true;
 7014    -1           }
 7015    -1           if (config.responseType) {
 7016    -1             try {
 7017    -1               request.responseType = config.responseType;
 7018    -1             } catch (e) {
 7019    -1               if (config.responseType !== 'json') {
 7020    -1                 throw e;
 7021    -1               }
 7022    -1             }
 7023    -1           }
 7024    -1           if (typeof config.onDownloadProgress === 'function') {
 7025    -1             request.addEventListener('progress', config.onDownloadProgress);
 7026    -1           }
 7027    -1           if (typeof config.onUploadProgress === 'function' && request.upload) {
 7028    -1             request.upload.addEventListener('progress', config.onUploadProgress);
 7029    -1           }
 7030    -1           if (config.cancelToken) {
 7031    -1             config.cancelToken.promise.then(function onCanceled(cancel) {
 7032    -1               if (!request) {
 7033    -1                 return;
 7034    -1               }
 7035    -1               request.abort();
 7036    -1               reject(cancel);
 7037    -1               request = null;
 7038    -1             });
 7039    -1           }
 7040    -1           if (requestData === undefined) {
 7041    -1             requestData = null;
   -1  7908     }
   -1  7909     this._defaultLocale = locale;
   -1  7910   };
   -1  7911   Audit.prototype._resetLocale = function() {
   -1  7912     var defaultLocale = this._defaultLocale;
   -1  7913     if (!defaultLocale) {
   -1  7914       return;
   -1  7915     }
   -1  7916     this.applyLocale(defaultLocale);
   -1  7917   };
   -1  7918   var mergeCheckLocale = function mergeCheckLocale(a, b) {
   -1  7919     var pass = b.pass, fail = b.fail;
   -1  7920     if (typeof pass === 'string') {
   -1  7921       pass = axe.imports.doT.compile(pass);
   -1  7922     }
   -1  7923     if (typeof fail === 'string') {
   -1  7924       fail = axe.imports.doT.compile(fail);
   -1  7925     }
   -1  7926     return _extends({}, a, {
   -1  7927       messages: {
   -1  7928         pass: pass || a.messages.pass,
   -1  7929         fail: fail || a.messages.fail,
   -1  7930         incomplete: _typeof(a.messages.incomplete) === 'object' ? _extends({}, a.messages.incomplete, b.incomplete) : b.incomplete
   -1  7931       }
   -1  7932     });
   -1  7933   };
   -1  7934   var mergeRuleLocale = function mergeRuleLocale(a, b) {
   -1  7935     var help = b.help, description = b.description;
   -1  7936     if (typeof help === 'string') {
   -1  7937       help = axe.imports.doT.compile(help);
   -1  7938     }
   -1  7939     if (typeof description === 'string') {
   -1  7940       description = axe.imports.doT.compile(description);
   -1  7941     }
   -1  7942     return _extends({}, a, {
   -1  7943       help: help || a.help,
   -1  7944       description: description || a.description
   -1  7945     });
   -1  7946   };
   -1  7947   Audit.prototype._applyCheckLocale = function(checks) {
   -1  7948     var keys = Object.keys(checks);
   -1  7949     for (var i = 0; i < keys.length; i++) {
   -1  7950       var id = keys[i];
   -1  7951       if (!this.data.checks[id]) {
   -1  7952         throw new Error('Locale provided for unknown check: "' + id + '"');
   -1  7953       }
   -1  7954       this.data.checks[id] = mergeCheckLocale(this.data.checks[id], checks[id]);
   -1  7955     }
   -1  7956   };
   -1  7957   Audit.prototype._applyRuleLocale = function(rules) {
   -1  7958     var keys = Object.keys(rules);
   -1  7959     for (var i = 0; i < keys.length; i++) {
   -1  7960       var id = keys[i];
   -1  7961       if (!this.data.rules[id]) {
   -1  7962         throw new Error('Locale provided for unknown rule: "' + id + '"');
   -1  7963       }
   -1  7964       this.data.rules[id] = mergeRuleLocale(this.data.rules[id], rules[id]);
   -1  7965     }
   -1  7966   };
   -1  7967   Audit.prototype.applyLocale = function(locale) {
   -1  7968     this._setDefaultLocale();
   -1  7969     if (locale.checks) {
   -1  7970       this._applyCheckLocale(locale.checks);
   -1  7971     }
   -1  7972     if (locale.rules) {
   -1  7973       this._applyRuleLocale(locale.rules);
   -1  7974     }
   -1  7975   };
   -1  7976   Audit.prototype._init = function() {
   -1  7977     var audit = getDefaultConfiguration(this.defaultConfig);
   -1  7978     axe.commons = commons = audit.commons;
   -1  7979     this.reporter = audit.reporter;
   -1  7980     this.commands = {};
   -1  7981     this.rules = [];
   -1  7982     this.checks = {};
   -1  7983     unpackToObject(audit.rules, this, 'addRule');
   -1  7984     unpackToObject(audit.checks, this, 'addCheck');
   -1  7985     this.data = {};
   -1  7986     this.data.checks = audit.data && audit.data.checks || {};
   -1  7987     this.data.rules = audit.data && audit.data.rules || {};
   -1  7988     this.data.failureSummaries = audit.data && audit.data.failureSummaries || {};
   -1  7989     this.data.incompleteFallbackMessage = audit.data && audit.data.incompleteFallbackMessage || '';
   -1  7990     this._constructHelpUrls();
   -1  7991   };
   -1  7992   Audit.prototype.registerCommand = function(command) {
   -1  7993     'use strict';
   -1  7994     this.commands[command.id] = command.callback;
   -1  7995   };
   -1  7996   Audit.prototype.addRule = function(spec) {
   -1  7997     'use strict';
   -1  7998     if (spec.metadata) {
   -1  7999       this.data.rules[spec.id] = spec.metadata;
   -1  8000     }
   -1  8001     var rule = this.getRule(spec.id);
   -1  8002     if (rule) {
   -1  8003       rule.configure(spec);
   -1  8004     } else {
   -1  8005       this.rules.push(new Rule(spec, this));
   -1  8006     }
   -1  8007   };
   -1  8008   Audit.prototype.addCheck = function(spec) {
   -1  8009     'use strict';
   -1  8010     var metadata = spec.metadata;
   -1  8011     if ((typeof metadata === 'undefined' ? 'undefined' : _typeof(metadata)) === 'object') {
   -1  8012       this.data.checks[spec.id] = metadata;
   -1  8013       if (_typeof(metadata.messages) === 'object') {
   -1  8014         Object.keys(metadata.messages).filter(function(prop) {
   -1  8015           return metadata.messages.hasOwnProperty(prop) && typeof metadata.messages[prop] === 'string';
   -1  8016         }).forEach(function(prop) {
   -1  8017           if (metadata.messages[prop].indexOf('function') === 0) {
   -1  8018             metadata.messages[prop] = new Function('return ' + metadata.messages[prop] + ';')();
 7042  8019           }
 7043    -1           request.send(requestData);
 7044  8020         });
 7045    -1       };
 7046    -1     }, function(module, exports, __webpack_require__) {
 7047    -1       'use strict';
 7048    -1       var createError = __webpack_require__(10);
 7049    -1       module.exports = function settle(resolve, reject, response) {
 7050    -1         var validateStatus = response.config.validateStatus;
 7051    -1         if (!response.status || !validateStatus || validateStatus(response.status)) {
 7052    -1           resolve(response);
 7053    -1         } else {
 7054    -1           reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));
 7055    -1         }
 7056    -1       };
 7057    -1     }, function(module, exports, __webpack_require__) {
 7058    -1       'use strict';
 7059    -1       var enhanceError = __webpack_require__(11);
 7060    -1       module.exports = function createError(message, config, code, request, response) {
 7061    -1         var error = new Error(message);
 7062    -1         return enhanceError(error, config, code, request, response);
 7063    -1       };
 7064    -1     }, function(module, exports) {
 7065    -1       'use strict';
 7066    -1       module.exports = function enhanceError(error, config, code, request, response) {
 7067    -1         error.config = config;
 7068    -1         if (code) {
 7069    -1           error.code = code;
 7070    -1         }
 7071    -1         error.request = request;
 7072    -1         error.response = response;
 7073    -1         return error;
 7074    -1       };
 7075    -1     }, function(module, exports, __webpack_require__) {
 7076    -1       'use strict';
 7077    -1       var utils = __webpack_require__(2);
 7078    -1       function encode(val) {
 7079    -1         return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');
 7080  8021       }
 7081    -1       module.exports = function buildURL(url, params, paramsSerializer) {
 7082    -1         if (!params) {
 7083    -1           return url;
 7084    -1         }
 7085    -1         var serializedParams;
 7086    -1         if (paramsSerializer) {
 7087    -1           serializedParams = paramsSerializer(params);
 7088    -1         } else if (utils.isURLSearchParams(params)) {
 7089    -1           serializedParams = params.toString();
 7090    -1         } else {
 7091    -1           var parts = [];
 7092    -1           utils.forEach(params, function serialize(val, key) {
 7093    -1             if (val === null || typeof val === 'undefined') {
 7094    -1               return;
 7095    -1             }
 7096    -1             if (utils.isArray(val)) {
 7097    -1               key = key + '[]';
 7098    -1             } else {
 7099    -1               val = [ val ];
 7100    -1             }
 7101    -1             utils.forEach(val, function parseValue(v) {
 7102    -1               if (utils.isDate(v)) {
 7103    -1                 v = v.toISOString();
 7104    -1               } else if (utils.isObject(v)) {
 7105    -1                 v = JSON.stringify(v);
 7106    -1               }
 7107    -1               parts.push(encode(key) + '=' + encode(v));
 7108    -1             });
   -1  8022     }
   -1  8023     if (this.checks[spec.id]) {
   -1  8024       this.checks[spec.id].configure(spec);
   -1  8025     } else {
   -1  8026       this.checks[spec.id] = new Check(spec);
   -1  8027     }
   -1  8028   };
   -1  8029   function getRulesToRun(rules, context, options) {
   -1  8030     var base = {
   -1  8031       now: [],
   -1  8032       later: []
   -1  8033     };
   -1  8034     var splitRules = rules.reduce(function(out, rule) {
   -1  8035       if (!axe.utils.ruleShouldRun(rule, context, options)) {
   -1  8036         return out;
   -1  8037       }
   -1  8038       if (rule.preload) {
   -1  8039         out.later.push(rule);
   -1  8040         return out;
   -1  8041       }
   -1  8042       out.now.push(rule);
   -1  8043       return out;
   -1  8044     }, base);
   -1  8045     return splitRules;
   -1  8046   }
   -1  8047   function getDefferedRule(rule, context, options) {
   -1  8048     if (options.performanceTimer) {
   -1  8049       axe.utils.performanceTimer.mark('mark_rule_start_' + rule.id);
   -1  8050     }
   -1  8051     return function(resolve, reject) {
   -1  8052       rule.run(context, options, function(ruleResult) {
   -1  8053         resolve(ruleResult);
   -1  8054       }, function(err) {
   -1  8055         if (!options.debug) {
   -1  8056           var errResult = Object.assign(new RuleResult(rule), {
   -1  8057             result: axe.constants.CANTTELL,
   -1  8058             description: 'An error occured while running this rule',
   -1  8059             message: err.message,
   -1  8060             stack: err.stack,
   -1  8061             error: err,
   -1  8062             errorNode: err.errorNode
 7109  8063           });
 7110    -1           serializedParams = parts.join('&');
 7111    -1         }
 7112    -1         if (serializedParams) {
 7113    -1           url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
 7114    -1         }
 7115    -1         return url;
 7116    -1       };
 7117    -1     }, function(module, exports, __webpack_require__) {
 7118    -1       'use strict';
 7119    -1       var utils = __webpack_require__(2);
 7120    -1       var ignoreDuplicateOf = [ 'age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent' ];
 7121    -1       module.exports = function parseHeaders(headers) {
 7122    -1         var parsed = {};
 7123    -1         var key;
 7124    -1         var val;
 7125    -1         var i;
 7126    -1         if (!headers) {
 7127    -1           return parsed;
   -1  8064           resolve(errResult);
   -1  8065         } else {
   -1  8066           reject(err);
 7128  8067         }
 7129    -1         utils.forEach(headers.split('\n'), function parser(line) {
 7130    -1           i = line.indexOf(':');
 7131    -1           key = utils.trim(line.substr(0, i)).toLowerCase();
 7132    -1           val = utils.trim(line.substr(i + 1));
 7133    -1           if (key) {
 7134    -1             if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
 7135    -1               return;
 7136    -1             }
 7137    -1             if (key === 'set-cookie') {
 7138    -1               parsed[key] = (parsed[key] ? parsed[key] : []).concat([ val ]);
 7139    -1             } else {
 7140    -1               parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
 7141    -1             }
 7142    -1           }
   -1  8068       });
   -1  8069     };
   -1  8070   }
   -1  8071   Audit.prototype.run = function(context, options, resolve, reject) {
   -1  8072     'use strict';
   -1  8073     this.normalizeOptions(options);
   -1  8074     axe._selectCache = [];
   -1  8075     var allRulesToRun = getRulesToRun(this.rules, context, options);
   -1  8076     var runNowRules = allRulesToRun.now;
   -1  8077     var runLaterRules = allRulesToRun.later;
   -1  8078     var nowRulesQueue = axe.utils.queue();
   -1  8079     runNowRules.forEach(function(rule) {
   -1  8080       nowRulesQueue.defer(getDefferedRule(rule, context, options));
   -1  8081     });
   -1  8082     var preloaderQueue = axe.utils.queue();
   -1  8083     if (runLaterRules.length) {
   -1  8084       preloaderQueue.defer(function(res, rej) {
   -1  8085         axe.utils.preload(options).then(function(preloadResults) {
   -1  8086           var assets = preloadResults[0];
   -1  8087           res(assets);
   -1  8088         }).catch(function(err) {
   -1  8089           console.warn('Couldn\'t load preload assets: ', err);
   -1  8090           var assets = undefined;
   -1  8091           res(assets);
 7143  8092         });
 7144    -1         return parsed;
 7145    -1       };
 7146    -1     }, function(module, exports, __webpack_require__) {
 7147    -1       'use strict';
 7148    -1       var utils = __webpack_require__(2);
 7149    -1       module.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {
 7150    -1         var msie = /(msie|trident)/i.test(navigator.userAgent);
 7151    -1         var urlParsingNode = document.createElement('a');
 7152    -1         var originURL;
 7153    -1         function resolveURL(url) {
 7154    -1           var href = url;
 7155    -1           if (msie) {
 7156    -1             urlParsingNode.setAttribute('href', href);
 7157    -1             href = urlParsingNode.href;
 7158    -1           }
 7159    -1           urlParsingNode.setAttribute('href', href);
 7160    -1           return {
 7161    -1             href: urlParsingNode.href,
 7162    -1             protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
 7163    -1             host: urlParsingNode.host,
 7164    -1             search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
 7165    -1             hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
 7166    -1             hostname: urlParsingNode.hostname,
 7167    -1             port: urlParsingNode.port,
 7168    -1             pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname
 7169    -1           };
   -1  8093       });
   -1  8094     }
   -1  8095     var queueForNowRulesAndPreloader = axe.utils.queue();
   -1  8096     queueForNowRulesAndPreloader.defer(nowRulesQueue);
   -1  8097     queueForNowRulesAndPreloader.defer(preloaderQueue);
   -1  8098     queueForNowRulesAndPreloader.then(function(nowRulesAndPreloaderResults) {
   -1  8099       var assetsFromQueue = nowRulesAndPreloaderResults.pop();
   -1  8100       if (assetsFromQueue && assetsFromQueue.length) {
   -1  8101         var assets = assetsFromQueue[0];
   -1  8102         if (assets) {
   -1  8103           context = _extends({}, context, assets);
 7170  8104         }
 7171    -1         originURL = resolveURL(window.location.href);
 7172    -1         return function isURLSameOrigin(requestURL) {
 7173    -1           var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;
 7174    -1           return parsed.protocol === originURL.protocol && parsed.host === originURL.host;
 7175    -1         };
 7176    -1       }() : function nonStandardBrowserEnv() {
 7177    -1         return function isURLSameOrigin() {
 7178    -1           return true;
   -1  8105       }
   -1  8106       var nowRulesResults = nowRulesAndPreloaderResults[0];
   -1  8107       if (!runLaterRules.length) {
   -1  8108         axe._selectCache = undefined;
   -1  8109         resolve(nowRulesResults.filter(function(result) {
   -1  8110           return !!result;
   -1  8111         }));
   -1  8112         return;
   -1  8113       }
   -1  8114       var laterRulesQueue = axe.utils.queue();
   -1  8115       runLaterRules.forEach(function(rule) {
   -1  8116         var deferredRule = getDefferedRule(rule, context, options);
   -1  8117         laterRulesQueue.defer(deferredRule);
   -1  8118       });
   -1  8119       laterRulesQueue.then(function(laterRuleResults) {
   -1  8120         axe._selectCache = undefined;
   -1  8121         resolve(nowRulesResults.concat(laterRuleResults).filter(function(result) {
   -1  8122           return !!result;
   -1  8123         }));
   -1  8124       }).catch(reject);
   -1  8125     }).catch(reject);
   -1  8126   };
   -1  8127   Audit.prototype.after = function(results, options) {
   -1  8128     'use strict';
   -1  8129     var rules = this.rules;
   -1  8130     return results.map(function(ruleResult) {
   -1  8131       var rule = axe.utils.findBy(rules, 'id', ruleResult.id);
   -1  8132       if (!rule) {
   -1  8133         throw new Error('Result for unknown rule. You may be running mismatch aXe-core versions');
   -1  8134       }
   -1  8135       return rule.after(ruleResult, options);
   -1  8136     });
   -1  8137   };
   -1  8138   Audit.prototype.getRule = function(ruleId) {
   -1  8139     return this.rules.find(function(rule) {
   -1  8140       return rule.id === ruleId;
   -1  8141     });
   -1  8142   };
   -1  8143   Audit.prototype.normalizeOptions = function(options) {
   -1  8144     'use strict';
   -1  8145     var audit = this;
   -1  8146     if (_typeof(options.runOnly) === 'object') {
   -1  8147       if (Array.isArray(options.runOnly)) {
   -1  8148         options.runOnly = {
   -1  8149           type: 'tag',
   -1  8150           values: options.runOnly
 7179  8151         };
 7180    -1       }();
 7181    -1     }, function(module, exports) {
 7182    -1       'use strict';
 7183    -1       var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
 7184    -1       function E() {
 7185    -1         this.message = 'String contains an invalid character';
 7186  8152       }
 7187    -1       E.prototype = new Error();
 7188    -1       E.prototype.code = 5;
 7189    -1       E.prototype.name = 'InvalidCharacterError';
 7190    -1       function btoa(input) {
 7191    -1         var str = String(input);
 7192    -1         var output = '';
 7193    -1         for (var block, charCode, idx = 0, map = chars; str.charAt(idx | 0) || (map = '=', 
 7194    -1         idx % 1); output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {
 7195    -1           charCode = str.charCodeAt(idx += 3 / 4);
 7196    -1           if (charCode > 255) {
 7197    -1             throw new E();
 7198    -1           }
 7199    -1           block = block << 8 | charCode;
 7200    -1         }
 7201    -1         return output;
   -1  8153       var only = options.runOnly;
   -1  8154       if (only.value && !only.values) {
   -1  8155         only.values = only.value;
   -1  8156         delete only.value;
 7202  8157       }
 7203    -1       module.exports = btoa;
 7204    -1     }, function(module, exports, __webpack_require__) {
 7205    -1       'use strict';
 7206    -1       var utils = __webpack_require__(2);
 7207    -1       module.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {
 7208    -1         return {
 7209    -1           write: function write(name, value, expires, path, domain, secure) {
 7210    -1             var cookie = [];
 7211    -1             cookie.push(name + '=' + encodeURIComponent(value));
 7212    -1             if (utils.isNumber(expires)) {
 7213    -1               cookie.push('expires=' + new Date(expires).toGMTString());
 7214    -1             }
 7215    -1             if (utils.isString(path)) {
 7216    -1               cookie.push('path=' + path);
 7217    -1             }
 7218    -1             if (utils.isString(domain)) {
 7219    -1               cookie.push('domain=' + domain);
 7220    -1             }
 7221    -1             if (secure === true) {
 7222    -1               cookie.push('secure');
 7223    -1             }
 7224    -1             document.cookie = cookie.join('; ');
 7225    -1           },
 7226    -1           read: function read(name) {
 7227    -1             var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
 7228    -1             return match ? decodeURIComponent(match[3]) : null;
 7229    -1           },
 7230    -1           remove: function remove(name) {
 7231    -1             this.write(name, '', Date.now() - 864e5);
 7232    -1           }
 7233    -1         };
 7234    -1       }() : function nonStandardBrowserEnv() {
 7235    -1         return {
 7236    -1           write: function write() {},
 7237    -1           read: function read() {
 7238    -1             return null;
 7239    -1           },
 7240    -1           remove: function remove() {}
 7241    -1         };
 7242    -1       }();
 7243    -1     }, function(module, exports, __webpack_require__) {
 7244    -1       'use strict';
 7245    -1       var utils = __webpack_require__(2);
 7246    -1       function InterceptorManager() {
 7247    -1         this.handlers = [];
   -1  8158       if (!Array.isArray(only.values) || only.values.length === 0) {
   -1  8159         throw new Error('runOnly.values must be a non-empty array');
 7248  8160       }
 7249    -1       InterceptorManager.prototype.use = function use(fulfilled, rejected) {
 7250    -1         this.handlers.push({
 7251    -1           fulfilled: fulfilled,
 7252    -1           rejected: rejected
 7253    -1         });
 7254    -1         return this.handlers.length - 1;
 7255    -1       };
 7256    -1       InterceptorManager.prototype.eject = function eject(id) {
 7257    -1         if (this.handlers[id]) {
 7258    -1           this.handlers[id] = null;
 7259    -1         }
 7260    -1       };
 7261    -1       InterceptorManager.prototype.forEach = function forEach(fn) {
 7262    -1         utils.forEach(this.handlers, function forEachHandler(h) {
 7263    -1           if (h !== null) {
 7264    -1             fn(h);
   -1  8161       if ([ 'rule', 'rules' ].includes(only.type)) {
   -1  8162         only.type = 'rule';
   -1  8163         only.values.forEach(function(ruleId) {
   -1  8164           if (!audit.getRule(ruleId)) {
   -1  8165             throw new Error('unknown rule `' + ruleId + '` in options.runOnly');
 7265  8166           }
 7266  8167         });
 7267    -1       };
 7268    -1       module.exports = InterceptorManager;
 7269    -1     }, function(module, exports, __webpack_require__) {
 7270    -1       'use strict';
 7271    -1       var utils = __webpack_require__(2);
 7272    -1       var transformData = __webpack_require__(19);
 7273    -1       var isCancel = __webpack_require__(20);
 7274    -1       var defaults = __webpack_require__(6);
 7275    -1       var isAbsoluteURL = __webpack_require__(21);
 7276    -1       var combineURLs = __webpack_require__(22);
 7277    -1       function throwIfCancellationRequested(config) {
 7278    -1         if (config.cancelToken) {
 7279    -1           config.cancelToken.throwIfRequested();
   -1  8168       } else if ([ 'tag', 'tags', undefined ].includes(only.type)) {
   -1  8169         only.type = 'tag';
   -1  8170         var unmatchedTags = audit.rules.reduce(function(unmatchedTags, rule) {
   -1  8171           return unmatchedTags.length ? unmatchedTags.filter(function(tag) {
   -1  8172             return !rule.tags.includes(tag);
   -1  8173           }) : unmatchedTags;
   -1  8174         }, only.values);
   -1  8175         if (unmatchedTags.length !== 0) {
   -1  8176           axe.log('Could not find tags `' + unmatchedTags.join('`, `') + '`');
 7280  8177         }
   -1  8178       } else {
   -1  8179         throw new Error('Unknown runOnly type \'' + only.type + '\'');
 7281  8180       }
 7282    -1       module.exports = function dispatchRequest(config) {
 7283    -1         throwIfCancellationRequested(config);
 7284    -1         if (config.baseURL && !isAbsoluteURL(config.url)) {
 7285    -1           config.url = combineURLs(config.baseURL, config.url);
   -1  8181     }
   -1  8182     if (_typeof(options.rules) === 'object') {
   -1  8183       Object.keys(options.rules).forEach(function(ruleId) {
   -1  8184         if (!audit.getRule(ruleId)) {
   -1  8185           throw new Error('unknown rule `' + ruleId + '` in options.rules');
 7286  8186         }
 7287    -1         config.headers = config.headers || {};
 7288    -1         config.data = transformData(config.data, config.headers, config.transformRequest);
 7289    -1         config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers || {});
 7290    -1         utils.forEach([ 'delete', 'get', 'head', 'post', 'put', 'patch', 'common' ], function cleanHeaderConfig(method) {
 7291    -1           delete config.headers[method];
 7292    -1         });
 7293    -1         var adapter = config.adapter || defaults.adapter;
 7294    -1         return adapter(config).then(function onAdapterResolution(response) {
 7295    -1           throwIfCancellationRequested(config);
 7296    -1           response.data = transformData(response.data, response.headers, config.transformResponse);
 7297    -1           return response;
 7298    -1         }, function onAdapterRejection(reason) {
 7299    -1           if (!isCancel(reason)) {
 7300    -1             throwIfCancellationRequested(config);
 7301    -1             if (reason && reason.response) {
 7302    -1               reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);
 7303    -1             }
 7304    -1           }
 7305    -1           return Promise.reject(reason);
 7306    -1         });
 7307    -1       };
 7308    -1     }, function(module, exports, __webpack_require__) {
 7309    -1       'use strict';
 7310    -1       var utils = __webpack_require__(2);
 7311    -1       module.exports = function transformData(data, headers, fns) {
 7312    -1         utils.forEach(fns, function transform(fn) {
 7313    -1           data = fn(data, headers);
 7314    -1         });
 7315    -1         return data;
 7316    -1       };
 7317    -1     }, function(module, exports) {
 7318    -1       'use strict';
 7319    -1       module.exports = function isCancel(value) {
 7320    -1         return !!(value && value.__CANCEL__);
 7321    -1       };
 7322    -1     }, function(module, exports) {
 7323    -1       'use strict';
 7324    -1       module.exports = function isAbsoluteURL(url) {
 7325    -1         return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
 7326    -1       };
 7327    -1     }, function(module, exports) {
 7328    -1       'use strict';
 7329    -1       module.exports = function combineURLs(baseURL, relativeURL) {
 7330    -1         return relativeURL ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL;
 7331    -1       };
 7332    -1     }, function(module, exports) {
 7333    -1       'use strict';
 7334    -1       function Cancel(message) {
 7335    -1         this.message = message;
   -1  8187       });
   -1  8188     }
   -1  8189     return options;
   -1  8190   };
   -1  8191   Audit.prototype.setBranding = function(branding) {
   -1  8192     'use strict';
   -1  8193     var previous = {
   -1  8194       brand: this.brand,
   -1  8195       application: this.application
   -1  8196     };
   -1  8197     if (branding && branding.hasOwnProperty('brand') && branding.brand && typeof branding.brand === 'string') {
   -1  8198       this.brand = branding.brand;
   -1  8199     }
   -1  8200     if (branding && branding.hasOwnProperty('application') && branding.application && typeof branding.application === 'string') {
   -1  8201       this.application = branding.application;
   -1  8202     }
   -1  8203     this._constructHelpUrls(previous);
   -1  8204   };
   -1  8205   function getHelpUrl(_ref, ruleId, version) {
   -1  8206     var brand = _ref.brand, application = _ref.application;
   -1  8207     return axe.constants.helpUrlBase + brand + '/' + (version || axe.version.substring(0, axe.version.lastIndexOf('.'))) + '/' + ruleId + '?application=' + application;
   -1  8208   }
   -1  8209   Audit.prototype._constructHelpUrls = function() {
   -1  8210     var _this = this;
   -1  8211     var previous = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
   -1  8212     var version = (axe.version.match(/^[1-9][0-9]*\.[0-9]+/) || [ 'x.y' ])[0];
   -1  8213     this.rules.forEach(function(rule) {
   -1  8214       if (!_this.data.rules[rule.id]) {
   -1  8215         _this.data.rules[rule.id] = {};
 7336  8216       }
 7337    -1       Cancel.prototype.toString = function toString() {
 7338    -1         return 'Cancel' + (this.message ? ': ' + this.message : '');
 7339    -1       };
 7340    -1       Cancel.prototype.__CANCEL__ = true;
 7341    -1       module.exports = Cancel;
 7342    -1     }, function(module, exports, __webpack_require__) {
 7343    -1       'use strict';
 7344    -1       var Cancel = __webpack_require__(23);
 7345    -1       function CancelToken(executor) {
 7346    -1         if (typeof executor !== 'function') {
 7347    -1           throw new TypeError('executor must be a function.');
 7348    -1         }
 7349    -1         var resolvePromise;
 7350    -1         this.promise = new Promise(function promiseExecutor(resolve) {
 7351    -1           resolvePromise = resolve;
 7352    -1         });
 7353    -1         var token = this;
 7354    -1         executor(function cancel(message) {
 7355    -1           if (token.reason) {
 7356    -1             return;
 7357    -1           }
 7358    -1           token.reason = new Cancel(message);
 7359    -1           resolvePromise(token.reason);
 7360    -1         });
   -1  8217       var metaData = _this.data.rules[rule.id];
   -1  8218       if (typeof metaData.helpUrl !== 'string' || previous && metaData.helpUrl === getHelpUrl(previous, rule.id, version)) {
   -1  8219         metaData.helpUrl = getHelpUrl(_this, rule.id, version);
   -1  8220       }
   -1  8221     });
   -1  8222   };
   -1  8223   Audit.prototype.resetRulesAndChecks = function() {
   -1  8224     'use strict';
   -1  8225     this._init();
   -1  8226     this._resetLocale();
   -1  8227   };
   -1  8228   'use strict';
   -1  8229   function CheckResult(check) {
   -1  8230     'use strict';
   -1  8231     this.id = check.id;
   -1  8232     this.data = null;
   -1  8233     this.relatedNodes = [];
   -1  8234     this.result = null;
   -1  8235   }
   -1  8236   'use strict';
   -1  8237   function createExecutionContext(spec) {
   -1  8238     'use strict';
   -1  8239     if (typeof spec === 'string') {
   -1  8240       return new Function('return ' + spec + ';')();
   -1  8241     }
   -1  8242     return spec;
   -1  8243   }
   -1  8244   function Check(spec) {
   -1  8245     if (spec) {
   -1  8246       this.id = spec.id;
   -1  8247       this.configure(spec);
   -1  8248     }
   -1  8249   }
   -1  8250   Check.prototype.enabled = true;
   -1  8251   Check.prototype.run = function(node, options, context, resolve, reject) {
   -1  8252     'use strict';
   -1  8253     options = options || {};
   -1  8254     var enabled = options.hasOwnProperty('enabled') ? options.enabled : this.enabled, checkOptions = options.options || this.options;
   -1  8255     if (enabled) {
   -1  8256       var checkResult = new CheckResult(this);
   -1  8257       var checkHelper = axe.utils.checkHelper(checkResult, options, resolve, reject);
   -1  8258       var result;
   -1  8259       try {
   -1  8260         result = this.evaluate.call(checkHelper, node.actualNode, checkOptions, node, context);
   -1  8261       } catch (e) {
   -1  8262         if (node && node.actualNode) {
   -1  8263           e.errorNode = new DqElement(node.actualNode).toJSON();
   -1  8264         }
   -1  8265         reject(e);
   -1  8266         return;
 7361  8267       }
 7362    -1       CancelToken.prototype.throwIfRequested = function throwIfRequested() {
 7363    -1         if (this.reason) {
 7364    -1           throw this.reason;
   -1  8268       if (!checkHelper.isAsync) {
   -1  8269         checkResult.result = result;
   -1  8270         resolve(checkResult);
   -1  8271       }
   -1  8272     } else {
   -1  8273       resolve(null);
   -1  8274     }
   -1  8275   };
   -1  8276   Check.prototype.configure = function(spec) {
   -1  8277     var _this = this;
   -1  8278     [ 'options', 'enabled' ].filter(function(prop) {
   -1  8279       return spec.hasOwnProperty(prop);
   -1  8280     }).forEach(function(prop) {
   -1  8281       return _this[prop] = spec[prop];
   -1  8282     });
   -1  8283     [ 'evaluate', 'after' ].filter(function(prop) {
   -1  8284       return spec.hasOwnProperty(prop);
   -1  8285     }).forEach(function(prop) {
   -1  8286       return _this[prop] = createExecutionContext(spec[prop]);
   -1  8287     });
   -1  8288   };
   -1  8289   'use strict';
   -1  8290   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
   -1  8291     return typeof obj;
   -1  8292   } : function(obj) {
   -1  8293     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
   -1  8294   };
   -1  8295   function pushUniqueFrame(collection, frame) {
   -1  8296     'use strict';
   -1  8297     if (axe.utils.isHidden(frame)) {
   -1  8298       return;
   -1  8299     }
   -1  8300     var fr = axe.utils.findBy(collection, 'node', frame);
   -1  8301     if (!fr) {
   -1  8302       collection.push({
   -1  8303         node: frame,
   -1  8304         include: [],
   -1  8305         exclude: []
   -1  8306       });
   -1  8307     }
   -1  8308   }
   -1  8309   function pushUniqueFrameSelector(context, type, selectorArray) {
   -1  8310     'use strict';
   -1  8311     context.frames = context.frames || [];
   -1  8312     var result, frame;
   -1  8313     var frames = document.querySelectorAll(selectorArray.shift());
   -1  8314     frameloop: for (var i = 0, l = frames.length; i < l; i++) {
   -1  8315       frame = frames[i];
   -1  8316       for (var j = 0, l2 = context.frames.length; j < l2; j++) {
   -1  8317         if (context.frames[j].node === frame) {
   -1  8318           context.frames[j][type].push(selectorArray);
   -1  8319           break frameloop;
 7365  8320         }
   -1  8321       }
   -1  8322       result = {
   -1  8323         node: frame,
   -1  8324         include: [],
   -1  8325         exclude: []
 7366  8326       };
 7367    -1       CancelToken.source = function source() {
 7368    -1         var cancel;
 7369    -1         var token = new CancelToken(function executor(c) {
 7370    -1           cancel = c;
 7371    -1         });
   -1  8327       if (selectorArray) {
   -1  8328         result[type].push(selectorArray);
   -1  8329       }
   -1  8330       context.frames.push(result);
   -1  8331     }
   -1  8332   }
   -1  8333   function normalizeContext(context) {
   -1  8334     'use strict';
   -1  8335     if (context && (typeof context === 'undefined' ? 'undefined' : _typeof(context)) === 'object' || context instanceof NodeList) {
   -1  8336       if (context instanceof Node) {
 7372  8337         return {
 7373    -1           token: token,
 7374    -1           cancel: cancel
   -1  8338           include: [ context ],
   -1  8339           exclude: []
 7375  8340         };
 7376    -1       };
 7377    -1       module.exports = CancelToken;
 7378    -1     }, function(module, exports) {
 7379    -1       'use strict';
 7380    -1       module.exports = function spread(callback) {
 7381    -1         return function wrap(arr) {
 7382    -1           return callback.apply(null, arr);
   -1  8341       }
   -1  8342       if (context.hasOwnProperty('include') || context.hasOwnProperty('exclude')) {
   -1  8343         return {
   -1  8344           include: context.include && +context.include.length ? context.include : [ document ],
   -1  8345           exclude: context.exclude || []
 7383  8346         };
 7384    -1       };
 7385    -1     } ]);
 7386    -1   }();
 7387    -1   'use strict';
 7388    -1   axe.imports['doT'] = function(module, exports, define, require, process) {
 7389    -1     var global = {};
 7390    -1     var __old_global__ = global['doT'];
 7391    -1     (function() {
 7392    -1       'use strict';
 7393    -1       var doT = {
 7394    -1         name: 'doT',
 7395    -1         version: '1.1.1',
 7396    -1         templateSettings: {
 7397    -1           evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g,
 7398    -1           interpolate: /\{\{=([\s\S]+?)\}\}/g,
 7399    -1           encode: /\{\{!([\s\S]+?)\}\}/g,
 7400    -1           use: /\{\{#([\s\S]+?)\}\}/g,
 7401    -1           useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
 7402    -1           define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
 7403    -1           defineParams: /^\s*([\w$]+):([\s\S]+)/,
 7404    -1           conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
 7405    -1           iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
 7406    -1           varname: 'it',
 7407    -1           strip: true,
 7408    -1           append: true,
 7409    -1           selfcontained: false,
 7410    -1           doNotSkipEncoded: false
 7411    -1         },
 7412    -1         template: undefined,
 7413    -1         compile: undefined,
 7414    -1         log: true
 7415    -1       }, _globals;
 7416    -1       doT.encodeHTMLSource = function(doNotSkipEncoded) {
 7417    -1         var encodeHTMLRules = {
 7418    -1           '&': '&#38;',
 7419    -1           '<': '&#60;',
 7420    -1           '>': '&#62;',
 7421    -1           '"': '&#34;',
 7422    -1           '\'': '&#39;',
 7423    -1           '/': '&#47;'
 7424    -1         }, matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g;
 7425    -1         return function(code) {
 7426    -1           return code ? code.toString().replace(matchHTML, function(m) {
 7427    -1             return encodeHTMLRules[m] || m;
 7428    -1           }) : '';
   -1  8347       }
   -1  8348       if (context.length === +context.length) {
   -1  8349         return {
   -1  8350           include: context,
   -1  8351           exclude: []
 7429  8352         };
   -1  8353       }
   -1  8354     }
   -1  8355     if (typeof context === 'string') {
   -1  8356       return {
   -1  8357         include: [ context ],
   -1  8358         exclude: []
 7430  8359       };
 7431    -1       _globals = function() {
 7432    -1         return this || {};
 7433    -1       }();
 7434    -1       if (typeof module !== 'undefined' && module.exports) {
 7435    -1         module.exports = doT;
 7436    -1       } else if (typeof define === 'function' && define.amd) {
 7437    -1         define(function() {
 7438    -1           return doT;
   -1  8360     }
   -1  8361     return {
   -1  8362       include: [ document ],
   -1  8363       exclude: []
   -1  8364     };
   -1  8365   }
   -1  8366   function parseSelectorArray(context, type) {
   -1  8367     'use strict';
   -1  8368     var item, result = [], nodeList;
   -1  8369     for (var i = 0, l = context[type].length; i < l; i++) {
   -1  8370       item = context[type][i];
   -1  8371       if (typeof item === 'string') {
   -1  8372         nodeList = Array.from(document.querySelectorAll(item));
   -1  8373         result = result.concat(nodeList.map(function(node) {
   -1  8374           return axe.utils.getNodeFromTree(context.flatTree[0], node);
   -1  8375         }));
   -1  8376         break;
   -1  8377       } else if (item && item.length && !(item instanceof Node)) {
   -1  8378         if (item.length > 1) {
   -1  8379           pushUniqueFrameSelector(context, type, item);
   -1  8380         } else {
   -1  8381           nodeList = Array.from(document.querySelectorAll(item[0]));
   -1  8382           result = result.concat(nodeList.map(function(node) {
   -1  8383             return axe.utils.getNodeFromTree(context.flatTree[0], node);
   -1  8384           }));
   -1  8385         }
   -1  8386       } else if (item instanceof Node) {
   -1  8387         if (item.documentElement instanceof Node) {
   -1  8388           result.push(context.flatTree[0]);
   -1  8389         } else {
   -1  8390           result.push(axe.utils.getNodeFromTree(context.flatTree[0], item));
   -1  8391         }
   -1  8392       }
   -1  8393     }
   -1  8394     return result.filter(function(r) {
   -1  8395       return r;
   -1  8396     });
   -1  8397   }
   -1  8398   function validateContext(context) {
   -1  8399     'use strict';
   -1  8400     if (context.include.length === 0) {
   -1  8401       if (context.frames.length === 0) {
   -1  8402         var env = axe.utils.respondable.isInFrame() ? 'frame' : 'page';
   -1  8403         return new Error('No elements found for include in ' + env + ' Context');
   -1  8404       }
   -1  8405       context.frames.forEach(function(frame, i) {
   -1  8406         if (frame.include.length === 0) {
   -1  8407           return new Error('No elements found for include in Context of frame ' + i);
   -1  8408         }
   -1  8409       });
   -1  8410     }
   -1  8411   }
   -1  8412   function getRootNode(_ref) {
   -1  8413     var include = _ref.include, exclude = _ref.exclude;
   -1  8414     var selectors = Array.from(include).concat(Array.from(exclude));
   -1  8415     var localDocument = selectors.reduce(function(result, item) {
   -1  8416       if (result) {
   -1  8417         return result;
   -1  8418       } else if (item instanceof Element) {
   -1  8419         return item.ownerDocument;
   -1  8420       } else if (item instanceof Document) {
   -1  8421         return item;
   -1  8422       }
   -1  8423     }, null);
   -1  8424     return (localDocument || document).documentElement;
   -1  8425   }
   -1  8426   function Context(spec) {
   -1  8427     'use strict';
   -1  8428     var _this = this;
   -1  8429     this.frames = [];
   -1  8430     this.initiator = spec && typeof spec.initiator === 'boolean' ? spec.initiator : true;
   -1  8431     this.page = false;
   -1  8432     spec = normalizeContext(spec);
   -1  8433     this.flatTree = axe.utils.getFlattenedTree(getRootNode(spec));
   -1  8434     this.exclude = spec.exclude;
   -1  8435     this.include = spec.include;
   -1  8436     this.include = parseSelectorArray(this, 'include');
   -1  8437     this.exclude = parseSelectorArray(this, 'exclude');
   -1  8438     axe.utils.select('frame, iframe', this).forEach(function(frame) {
   -1  8439       if (isNodeInContext(frame, _this)) {
   -1  8440         pushUniqueFrame(_this.frames, frame.actualNode);
   -1  8441       }
   -1  8442     });
   -1  8443     if (this.include.length === 1 && this.include[0].actualNode === document.documentElement) {
   -1  8444       this.page = true;
   -1  8445     }
   -1  8446     var err = validateContext(this);
   -1  8447     if (err instanceof Error) {
   -1  8448       throw err;
   -1  8449     }
   -1  8450     if (!Array.isArray(this.include)) {
   -1  8451       this.include = Array.from(this.include);
   -1  8452     }
   -1  8453     this.include.sort(axe.utils.nodeSorter);
   -1  8454   }
   -1  8455   'use strict';
   -1  8456   function RuleResult(rule) {
   -1  8457     'use strict';
   -1  8458     this.id = rule.id;
   -1  8459     this.result = axe.constants.NA;
   -1  8460     this.pageLevel = rule.pageLevel;
   -1  8461     this.impact = null;
   -1  8462     this.nodes = [];
   -1  8463   }
   -1  8464   'use strict';
   -1  8465   function Rule(spec, parentAudit) {
   -1  8466     'use strict';
   -1  8467     this._audit = parentAudit;
   -1  8468     this.id = spec.id;
   -1  8469     this.selector = spec.selector || '*';
   -1  8470     this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;
   -1  8471     this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;
   -1  8472     this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;
   -1  8473     this.any = spec.any || [];
   -1  8474     this.all = spec.all || [];
   -1  8475     this.none = spec.none || [];
   -1  8476     this.tags = spec.tags || [];
   -1  8477     this.preload = spec.preload ? true : false;
   -1  8478     if (spec.matches) {
   -1  8479       this.matches = createExecutionContext(spec.matches);
   -1  8480     }
   -1  8481   }
   -1  8482   Rule.prototype.matches = function() {
   -1  8483     'use strict';
   -1  8484     return true;
   -1  8485   };
   -1  8486   Rule.prototype.gather = function(context) {
   -1  8487     'use strict';
   -1  8488     var elements = axe.utils.select(this.selector, context);
   -1  8489     if (this.excludeHidden) {
   -1  8490       return elements.filter(function(element) {
   -1  8491         return !axe.utils.isHidden(element.actualNode);
   -1  8492       });
   -1  8493     }
   -1  8494     return elements;
   -1  8495   };
   -1  8496   Rule.prototype.runChecks = function(type, node, options, context, resolve, reject) {
   -1  8497     'use strict';
   -1  8498     var self = this;
   -1  8499     var checkQueue = axe.utils.queue();
   -1  8500     this[type].forEach(function(c) {
   -1  8501       var check = self._audit.checks[c.id || c];
   -1  8502       var option = axe.utils.getCheckOption(check, self.id, options);
   -1  8503       checkQueue.defer(function(res, rej) {
   -1  8504         check.run(node, option, context, res, rej);
   -1  8505       });
   -1  8506     });
   -1  8507     checkQueue.then(function(results) {
   -1  8508       results = results.filter(function(check) {
   -1  8509         return check;
   -1  8510       });
   -1  8511       resolve({
   -1  8512         type: type,
   -1  8513         results: results
   -1  8514       });
   -1  8515     }).catch(reject);
   -1  8516   };
   -1  8517   Rule.prototype.run = function(context, options, resolve, reject) {
   -1  8518     var _this = this;
   -1  8519     var q = axe.utils.queue();
   -1  8520     var ruleResult = new RuleResult(this);
   -1  8521     var markStart = 'mark_rule_start_' + this.id;
   -1  8522     var markEnd = 'mark_rule_end_' + this.id;
   -1  8523     var markChecksStart = 'mark_runchecks_start_' + this.id;
   -1  8524     var markChecksEnd = 'mark_runchecks_end_' + this.id;
   -1  8525     var nodes = void 0;
   -1  8526     try {
   -1  8527       nodes = this.gather(context).filter(function(node) {
   -1  8528         return _this.matches(node.actualNode, node, context);
   -1  8529       });
   -1  8530     } catch (error) {
   -1  8531       reject(new SupportError({
   -1  8532         cause: error,
   -1  8533         ruleId: this.id
   -1  8534       }));
   -1  8535       return;
   -1  8536     }
   -1  8537     if (options.performanceTimer) {
   -1  8538       axe.log('gather (', nodes.length, '):', axe.utils.performanceTimer.timeElapsed() + 'ms');
   -1  8539       axe.utils.performanceTimer.mark(markChecksStart);
   -1  8540     }
   -1  8541     nodes.forEach(function(node) {
   -1  8542       q.defer(function(resolveNode, rejectNode) {
   -1  8543         var checkQueue = axe.utils.queue();
   -1  8544         [ 'any', 'all', 'none' ].forEach(function(type) {
   -1  8545           checkQueue.defer(function(res, rej) {
   -1  8546             _this.runChecks(type, node, options, context, res, rej);
   -1  8547           });
 7439  8548         });
 7440    -1       } else {
 7441    -1         _globals.doT = doT;
 7442    -1       }
 7443    -1       var startend = {
 7444    -1         append: {
 7445    -1           start: '\'+(',
 7446    -1           end: ')+\'',
 7447    -1           startencode: '\'+encodeHTML('
 7448    -1         },
 7449    -1         split: {
 7450    -1           start: '\';out+=(',
 7451    -1           end: ');out+=\'',
 7452    -1           startencode: '\';out+=encodeHTML('
 7453    -1         }
 7454    -1       }, skip = /$^/;
 7455    -1       function resolveDefs(c, block, def) {
 7456    -1         return (typeof block === 'string' ? block : block.toString()).replace(c.define || skip, function(m, code, assign, value) {
 7457    -1           if (code.indexOf('def.') === 0) {
 7458    -1             code = code.substring(4);
 7459    -1           }
 7460    -1           if (!(code in def)) {
 7461    -1             if (assign === ':') {
 7462    -1               if (c.defineParams) {
 7463    -1                 value.replace(c.defineParams, function(m, param, v) {
 7464    -1                   def[code] = {
 7465    -1                     arg: param,
 7466    -1                     text: v
 7467    -1                   };
 7468    -1                 });
 7469    -1               }
 7470    -1               if (!(code in def)) {
 7471    -1                 def[code] = value;
 7472    -1               }
 7473    -1             } else {
 7474    -1               new Function('def', 'def[\'' + code + '\']=' + value)(def);
 7475    -1             }
 7476    -1           }
 7477    -1           return '';
 7478    -1         }).replace(c.use || skip, function(m, code) {
 7479    -1           if (c.useParams) {
 7480    -1             code = code.replace(c.useParams, function(m, s, d, param) {
 7481    -1               if (def[d] && def[d].arg && param) {
 7482    -1                 var rw = (d + ':' + param).replace(/'|\\/g, '_');
 7483    -1                 def.__exp = def.__exp || {};
 7484    -1                 def.__exp[rw] = def[d].text.replace(new RegExp('(^|[^\\w$])' + def[d].arg + '([^\\w$])', 'g'), '$1' + param + '$2');
 7485    -1                 return s + 'def.__exp[\'' + rw + '\']';
   -1  8549         checkQueue.then(function(results) {
   -1  8550           if (results.length) {
   -1  8551             var hasResults = false, result = {};
   -1  8552             results.forEach(function(r) {
   -1  8553               var res = r.results.filter(function(result) {
   -1  8554                 return result;
   -1  8555               });
   -1  8556               result[r.type] = res;
   -1  8557               if (res.length) {
   -1  8558                 hasResults = true;
 7486  8559               }
 7487  8560             });
   -1  8561             if (hasResults) {
   -1  8562               result.node = new axe.utils.DqElement(node.actualNode, options);
   -1  8563               ruleResult.nodes.push(result);
   -1  8564             }
 7488  8565           }
 7489    -1           var v = new Function('def', 'return ' + code)(def);
 7490    -1           return v ? resolveDefs(c, v, def) : v;
   -1  8566           resolveNode();
   -1  8567         }).catch(function(err) {
   -1  8568           return rejectNode(err);
 7491  8569         });
 7492    -1       }
 7493    -1       function unescape(code) {
 7494    -1         return code.replace(/\\('|\\)/g, '$1').replace(/[\r\t\n]/g, ' ');
 7495    -1       }
 7496    -1       doT.template = function(tmpl, c, def) {
 7497    -1         c = c || doT.templateSettings;
 7498    -1         var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv, str = c.use || c.define ? resolveDefs(c, tmpl, def || {}) : tmpl;
 7499    -1         str = ('var out=\'' + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g, ' ').replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g, '') : str).replace(/'|\\/g, '\\$&').replace(c.interpolate || skip, function(m, code) {
 7500    -1           return cse.start + unescape(code) + cse.end;
 7501    -1         }).replace(c.encode || skip, function(m, code) {
 7502    -1           needhtmlencode = true;
 7503    -1           return cse.startencode + unescape(code) + cse.end;
 7504    -1         }).replace(c.conditional || skip, function(m, elsecase, code) {
 7505    -1           return elsecase ? code ? '\';}else if(' + unescape(code) + '){out+=\'' : '\';}else{out+=\'' : code ? '\';if(' + unescape(code) + '){out+=\'' : '\';}out+=\'';
 7506    -1         }).replace(c.iterate || skip, function(m, iterate, vname, iname) {
 7507    -1           if (!iterate) {
 7508    -1             return '\';} } out+=\'';
 7509    -1           }
 7510    -1           sid += 1;
 7511    -1           indv = iname || 'i' + sid;
 7512    -1           iterate = unescape(iterate);
 7513    -1           return '\';var arr' + sid + '=' + iterate + ';if(arr' + sid + '){var ' + vname + ',' + indv + '=-1,l' + sid + '=arr' + sid + '.length-1;while(' + indv + '<l' + sid + '){' + vname + '=arr' + sid + '[' + indv + '+=1];out+=\'';
 7514    -1         }).replace(c.evaluate || skip, function(m, code) {
 7515    -1           return '\';' + unescape(code) + 'out+=\'';
 7516    -1         }) + '\';return out;').replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r').replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, '');
 7517    -1         if (needhtmlencode) {
 7518    -1           if (!c.selfcontained && _globals && !_globals._encodeHTML) {
 7519    -1             _globals._encodeHTML = doT.encodeHTMLSource(c.doNotSkipEncoded);
 7520    -1           }
 7521    -1           str = 'var encodeHTML = typeof _encodeHTML !== \'undefined\' ? _encodeHTML : (' + doT.encodeHTMLSource.toString() + '(' + (c.doNotSkipEncoded || '') + '));' + str;
   -1  8570       });
   -1  8571     });
   -1  8572     q.defer(function(resolve) {
   -1  8573       return setTimeout(resolve, 0);
   -1  8574     });
   -1  8575     if (options.performanceTimer) {
   -1  8576       axe.utils.performanceTimer.mark(markChecksEnd);
   -1  8577       axe.utils.performanceTimer.mark(markEnd);
   -1  8578       axe.utils.performanceTimer.measure('runchecks_' + this.id, markChecksStart, markChecksEnd);
   -1  8579       axe.utils.performanceTimer.measure('rule_' + this.id, markStart, markEnd);
   -1  8580     }
   -1  8581     q.then(function() {
   -1  8582       return resolve(ruleResult);
   -1  8583     }).catch(function(error) {
   -1  8584       return reject(error);
   -1  8585     });
   -1  8586   };
   -1  8587   function findAfterChecks(rule) {
   -1  8588     'use strict';
   -1  8589     return axe.utils.getAllChecks(rule).map(function(c) {
   -1  8590       var check = rule._audit.checks[c.id || c];
   -1  8591       return check && typeof check.after === 'function' ? check : null;
   -1  8592     }).filter(Boolean);
   -1  8593   }
   -1  8594   function findCheckResults(nodes, checkID) {
   -1  8595     'use strict';
   -1  8596     var checkResults = [];
   -1  8597     nodes.forEach(function(nodeResult) {
   -1  8598       var checks = axe.utils.getAllChecks(nodeResult);
   -1  8599       checks.forEach(function(checkResult) {
   -1  8600         if (checkResult.id === checkID) {
   -1  8601           checkResults.push(checkResult);
 7522  8602         }
 7523    -1         try {
 7524    -1           return new Function(c.varname, str);
 7525    -1         } catch (e) {
 7526    -1           if (typeof console !== 'undefined') {
 7527    -1             console.log('Could not create a template function: ' + str);
 7528    -1           }
 7529    -1           throw e;
   -1  8603       });
   -1  8604     });
   -1  8605     return checkResults;
   -1  8606   }
   -1  8607   function filterChecks(checks) {
   -1  8608     'use strict';
   -1  8609     return checks.filter(function(check) {
   -1  8610       return check.filtered !== true;
   -1  8611     });
   -1  8612   }
   -1  8613   function sanitizeNodes(result) {
   -1  8614     'use strict';
   -1  8615     var checkTypes = [ 'any', 'all', 'none' ];
   -1  8616     var nodes = result.nodes.filter(function(detail) {
   -1  8617       var length = 0;
   -1  8618       checkTypes.forEach(function(type) {
   -1  8619         detail[type] = filterChecks(detail[type]);
   -1  8620         length += detail[type].length;
   -1  8621       });
   -1  8622       return length > 0;
   -1  8623     });
   -1  8624     if (result.pageLevel && nodes.length) {
   -1  8625       nodes = [ nodes.reduce(function(a, b) {
   -1  8626         if (a) {
   -1  8627           checkTypes.forEach(function(type) {
   -1  8628             a[type].push.apply(a[type], b[type]);
   -1  8629           });
   -1  8630           return a;
 7530  8631         }
 7531    -1       };
 7532    -1       doT.compile = function(tmpl, def) {
 7533    -1         return doT.template(tmpl, null, def);
 7534    -1       };
 7535    -1     })();
 7536    -1     var lib = global['doT'];
 7537    -1     delete global['doT'];
 7538    -1     if (__old_global__) {
 7539    -1       global['doT'] = __old_global__;
   -1  8632       }) ];
 7540  8633     }
 7541    -1     return lib;
 7542    -1   }();
   -1  8634     return nodes;
   -1  8635   }
   -1  8636   Rule.prototype.after = function(result, options) {
   -1  8637     'use strict';
   -1  8638     var afterChecks = findAfterChecks(this);
   -1  8639     var ruleID = this.id;
   -1  8640     afterChecks.forEach(function(check) {
   -1  8641       var beforeResults = findCheckResults(result.nodes, check.id);
   -1  8642       var option = axe.utils.getCheckOption(check, ruleID, options);
   -1  8643       var afterResults = check.after(beforeResults, option);
   -1  8644       beforeResults.forEach(function(item) {
   -1  8645         if (afterResults.indexOf(item) === -1) {
   -1  8646           item.filtered = true;
   -1  8647         }
   -1  8648       });
   -1  8649     });
   -1  8650     result.nodes = sanitizeNodes(result);
   -1  8651     return result;
   -1  8652   };
   -1  8653   Rule.prototype.configure = function(spec) {
   -1  8654     'use strict';
   -1  8655     if (spec.hasOwnProperty('selector')) {
   -1  8656       this.selector = spec.selector;
   -1  8657     }
   -1  8658     if (spec.hasOwnProperty('excludeHidden')) {
   -1  8659       this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;
   -1  8660     }
   -1  8661     if (spec.hasOwnProperty('enabled')) {
   -1  8662       this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;
   -1  8663     }
   -1  8664     if (spec.hasOwnProperty('pageLevel')) {
   -1  8665       this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;
   -1  8666     }
   -1  8667     if (spec.hasOwnProperty('any')) {
   -1  8668       this.any = spec.any;
   -1  8669     }
   -1  8670     if (spec.hasOwnProperty('all')) {
   -1  8671       this.all = spec.all;
   -1  8672     }
   -1  8673     if (spec.hasOwnProperty('none')) {
   -1  8674       this.none = spec.none;
   -1  8675     }
   -1  8676     if (spec.hasOwnProperty('tags')) {
   -1  8677       this.tags = spec.tags;
   -1  8678     }
   -1  8679     if (spec.hasOwnProperty('matches')) {
   -1  8680       if (typeof spec.matches === 'string') {
   -1  8681         this.matches = new Function('return ' + spec.matches + ';')();
   -1  8682       } else {
   -1  8683         this.matches = spec.matches;
   -1  8684       }
   -1  8685     }
   -1  8686   };
   -1  8687   'use strict';
   -1  8688   (function(axe) {
   -1  8689     var definitions = [ {
   -1  8690       name: 'NA',
   -1  8691       value: 'inapplicable',
   -1  8692       priority: 0,
   -1  8693       group: 'inapplicable'
   -1  8694     }, {
   -1  8695       name: 'PASS',
   -1  8696       value: 'passed',
   -1  8697       priority: 1,
   -1  8698       group: 'passes'
   -1  8699     }, {
   -1  8700       name: 'CANTTELL',
   -1  8701       value: 'cantTell',
   -1  8702       priority: 2,
   -1  8703       group: 'incomplete'
   -1  8704     }, {
   -1  8705       name: 'FAIL',
   -1  8706       value: 'failed',
   -1  8707       priority: 3,
   -1  8708       group: 'violations'
   -1  8709     } ];
   -1  8710     var constants = {
   -1  8711       helpUrlBase: 'https://dequeuniversity.com/rules/',
   -1  8712       results: [],
   -1  8713       resultGroups: [],
   -1  8714       resultGroupMap: {},
   -1  8715       impact: Object.freeze([ 'minor', 'moderate', 'serious', 'critical' ]),
   -1  8716       preloadAssets: Object.freeze([ 'cssom' ]),
   -1  8717       preloadAssetsTimeout: 1e4
   -1  8718     };
   -1  8719     definitions.forEach(function(definition) {
   -1  8720       var name = definition.name;
   -1  8721       var value = definition.value;
   -1  8722       var priority = definition.priority;
   -1  8723       var group = definition.group;
   -1  8724       constants[name] = value;
   -1  8725       constants[name + '_PRIO'] = priority;
   -1  8726       constants[name + '_GROUP'] = group;
   -1  8727       constants.results[priority] = value;
   -1  8728       constants.resultGroups[priority] = group;
   -1  8729       constants.resultGroupMap[value] = group;
   -1  8730     });
   -1  8731     Object.freeze(constants.results);
   -1  8732     Object.freeze(constants.resultGroups);
   -1  8733     Object.freeze(constants.resultGroupMap);
   -1  8734     Object.freeze(constants);
   -1  8735     Object.defineProperty(axe, 'constants', {
   -1  8736       value: constants,
   -1  8737       enumerable: true,
   -1  8738       configurable: false,
   -1  8739       writable: false
   -1  8740     });
   -1  8741   })(axe);
 7543  8742   'use strict';
 7544  8743   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
 7545  8744     return typeof obj;
@@ -7962,6 +9161,30 @@ module.exports = {
 7962  9161     }).join('\n\n');
 7963  9162   };
 7964  9163   'use strict';
   -1  9164   helpers.getEnvironmentData = function getEnvironmentData() {
   -1  9165     var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
   -1  9166     var _win$screen = win.screen, screen = _win$screen === undefined ? {} : _win$screen, _win$navigator = win.navigator, navigator = _win$navigator === undefined ? {} : _win$navigator, _win$location = win.location, location = _win$location === undefined ? {} : _win$location, innerHeight = win.innerHeight, innerWidth = win.innerWidth;
   -1  9167     var orientation = screen.msOrientation || screen.orientation || screen.mozOrientation || {};
   -1  9168     return {
   -1  9169       testEngine: {
   -1  9170         name: 'axe-core',
   -1  9171         version: axe.version
   -1  9172       },
   -1  9173       testRunner: {
   -1  9174         name: axe._audit.brand
   -1  9175       },
   -1  9176       testEnvironment: {
   -1  9177         userAgent: navigator.userAgent,
   -1  9178         windowWidth: innerWidth,
   -1  9179         windowHeight: innerHeight,
   -1  9180         orientationAngle: orientation.angle,
   -1  9181         orientationType: orientation.type
   -1  9182       },
   -1  9183       timestamp: new Date().toISOString(),
   -1  9184       url: location.href
   -1  9185     };
   -1  9186   };
   -1  9187   'use strict';
 7965  9188   helpers.incompleteFallbackMessage = function incompleteFallbackMessage() {
 7966  9189     'use strict';
 7967  9190     return axe._audit.data.incompleteFallbackMessage();
@@ -8002,8 +9225,6 @@ module.exports = {
 8002  9225   var resultKeys = axe.constants.resultGroups;
 8003  9226   helpers.processAggregate = function(results, options) {
 8004  9227     var resultObject = axe.utils.aggregateResult(results);
 8005    -1     resultObject.timestamp = new Date().toISOString();
 8006    -1     resultObject.url = window.location.href;
 8007  9228     resultKeys.forEach(function(key) {
 8008  9229       if (options.resultTypes && !options.resultTypes.includes(key)) {
 8009  9230         (resultObject[key] || []).forEach(function(ruleResult) {
@@ -8045,6 +9266,17 @@ module.exports = {
 8045  9266     return resultObject;
 8046  9267   };
 8047  9268   'use strict';
   -1  9269   var _extends = Object.assign || function(target) {
   -1  9270     for (var i = 1; i < arguments.length; i++) {
   -1  9271       var source = arguments[i];
   -1  9272       for (var key in source) {
   -1  9273         if (Object.prototype.hasOwnProperty.call(source, key)) {
   -1  9274           target[key] = source[key];
   -1  9275         }
   -1  9276       }
   -1  9277     }
   -1  9278     return target;
   -1  9279   };
 8048  9280   axe.addReporter('na', function(results, options, callback) {
 8049  9281     'use strict';
 8050  9282     if (typeof options === 'function') {
@@ -8052,16 +9284,26 @@ module.exports = {
 8052  9284       options = {};
 8053  9285     }
 8054  9286     var out = helpers.processAggregate(results, options);
 8055    -1     callback({
   -1  9287     callback(_extends({}, helpers.getEnvironmentData(), {
   -1  9288       toolOptions: options,
 8056  9289       violations: out.violations,
 8057  9290       passes: out.passes,
 8058  9291       incomplete: out.incomplete,
 8059    -1       inapplicable: out.inapplicable,
 8060    -1       timestamp: out.timestamp,
 8061    -1       url: out.url
 8062    -1     });
   -1  9292       inapplicable: out.inapplicable
   -1  9293     }));
 8063  9294   });
 8064  9295   'use strict';
   -1  9296   var _extends = Object.assign || function(target) {
   -1  9297     for (var i = 1; i < arguments.length; i++) {
   -1  9298       var source = arguments[i];
   -1  9299       for (var key in source) {
   -1  9300         if (Object.prototype.hasOwnProperty.call(source, key)) {
   -1  9301           target[key] = source[key];
   -1  9302         }
   -1  9303       }
   -1  9304     }
   -1  9305     return target;
   -1  9306   };
 8065  9307   axe.addReporter('no-passes', function(results, options, callback) {
 8066  9308     'use strict';
 8067  9309     if (typeof options === 'function') {
@@ -8070,11 +9312,10 @@ module.exports = {
 8070  9312     }
 8071  9313     options.resultTypes = [ 'violations' ];
 8072  9314     var out = helpers.processAggregate(results, options);
 8073    -1     callback({
 8074    -1       violations: out.violations,
 8075    -1       timestamp: out.timestamp,
 8076    -1       url: out.url
 8077    -1     });
   -1  9315     callback(_extends({}, helpers.getEnvironmentData(), {
   -1  9316       toolOptions: options,
   -1  9317       violations: out.violations
   -1  9318     }));
 8078  9319   });
 8079  9320   'use strict';
 8080  9321   axe.addReporter('raw', function(results, options, callback) {
@@ -8086,6 +9327,17 @@ module.exports = {
 8086  9327     callback(results);
 8087  9328   });
 8088  9329   'use strict';
   -1  9330   var _extends = Object.assign || function(target) {
   -1  9331     for (var i = 1; i < arguments.length; i++) {
   -1  9332       var source = arguments[i];
   -1  9333       for (var key in source) {
   -1  9334         if (Object.prototype.hasOwnProperty.call(source, key)) {
   -1  9335           target[key] = source[key];
   -1  9336         }
   -1  9337       }
   -1  9338     }
   -1  9339     return target;
   -1  9340   };
 8089  9341   axe.addReporter('v1', function(results, options, callback) {
 8090  9342     'use strict';
 8091  9343     if (typeof options === 'function') {
@@ -8098,16 +9350,26 @@ module.exports = {
 8098  9350         nodeResult.failureSummary = helpers.failureSummary(nodeResult);
 8099  9351       });
 8100  9352     });
 8101    -1     callback({
   -1  9353     callback(_extends({}, helpers.getEnvironmentData(), {
   -1  9354       toolOptions: options,
 8102  9355       violations: out.violations,
 8103  9356       passes: out.passes,
 8104  9357       incomplete: out.incomplete,
 8105    -1       inapplicable: out.inapplicable,
 8106    -1       timestamp: out.timestamp,
 8107    -1       url: out.url
 8108    -1     });
   -1  9358       inapplicable: out.inapplicable
   -1  9359     }));
 8109  9360   });
 8110  9361   'use strict';
   -1  9362   var _extends = Object.assign || function(target) {
   -1  9363     for (var i = 1; i < arguments.length; i++) {
   -1  9364       var source = arguments[i];
   -1  9365       for (var key in source) {
   -1  9366         if (Object.prototype.hasOwnProperty.call(source, key)) {
   -1  9367           target[key] = source[key];
   -1  9368         }
   -1  9369       }
   -1  9370     }
   -1  9371     return target;
   -1  9372   };
 8111  9373   axe.addReporter('v2', function(results, options, callback) {
 8112  9374     'use strict';
 8113  9375     if (typeof options === 'function') {
@@ -8115,14 +9377,13 @@ module.exports = {
 8115  9377       options = {};
 8116  9378     }
 8117  9379     var out = helpers.processAggregate(results, options);
 8118    -1     callback({
   -1  9380     callback(_extends({}, helpers.getEnvironmentData(), {
   -1  9381       toolOptions: options,
 8119  9382       violations: out.violations,
 8120  9383       passes: out.passes,
 8121  9384       incomplete: out.incomplete,
 8122    -1       inapplicable: out.inapplicable,
 8123    -1       timestamp: out.timestamp,
 8124    -1       url: out.url
 8125    -1     });
   -1  9385       inapplicable: out.inapplicable
   -1  9386     }));
 8126  9387   }, true);
 8127  9388   'use strict';
 8128  9389   axe.utils.aggregate = function(map, values, initial) {
@@ -8426,577 +9687,21 @@ module.exports = {
 8426  9687       if (node.shadowId === otherNode.shadowId) {
 8427  9688         return true;
 8428  9689       }
 8429    -1       return !!node.children.find(function(child) {
 8430    -1         return containsShadowChild(child, otherNode);
 8431    -1       });
 8432    -1     }
 8433    -1     if (node.shadowId || otherNode.shadowId) {
 8434    -1       return containsShadowChild(node, otherNode);
 8435    -1     }
 8436    -1     if (typeof node.actualNode.contains === 'function') {
 8437    -1       return node.actualNode.contains(otherNode.actualNode);
 8438    -1     }
 8439    -1     return !!(node.actualNode.compareDocumentPosition(otherNode.actualNode) & 16);
 8440    -1   };
 8441    -1   'use strict';
 8442    -1   (function(axe) {
 8443    -1     function CssSelectorParser() {
 8444    -1       this.pseudos = {};
 8445    -1       this.attrEqualityMods = {};
 8446    -1       this.ruleNestingOperators = {};
 8447    -1       this.substitutesEnabled = false;
 8448    -1     }
 8449    -1     CssSelectorParser.prototype.registerSelectorPseudos = function(name) {
 8450    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8451    -1         name = arguments[j];
 8452    -1         this.pseudos[name] = 'selector';
 8453    -1       }
 8454    -1       return this;
 8455    -1     };
 8456    -1     CssSelectorParser.prototype.unregisterSelectorPseudos = function(name) {
 8457    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8458    -1         name = arguments[j];
 8459    -1         delete this.pseudos[name];
 8460    -1       }
 8461    -1       return this;
 8462    -1     };
 8463    -1     CssSelectorParser.prototype.registerNumericPseudos = function(name) {
 8464    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8465    -1         name = arguments[j];
 8466    -1         this.pseudos[name] = 'numeric';
 8467    -1       }
 8468    -1       return this;
 8469    -1     };
 8470    -1     CssSelectorParser.prototype.unregisterNumericPseudos = function(name) {
 8471    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8472    -1         name = arguments[j];
 8473    -1         delete this.pseudos[name];
 8474    -1       }
 8475    -1       return this;
 8476    -1     };
 8477    -1     CssSelectorParser.prototype.registerNestingOperators = function(operator) {
 8478    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8479    -1         operator = arguments[j];
 8480    -1         this.ruleNestingOperators[operator] = true;
 8481    -1       }
 8482    -1       return this;
 8483    -1     };
 8484    -1     CssSelectorParser.prototype.unregisterNestingOperators = function(operator) {
 8485    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8486    -1         operator = arguments[j];
 8487    -1         delete this.ruleNestingOperators[operator];
 8488    -1       }
 8489    -1       return this;
 8490    -1     };
 8491    -1     CssSelectorParser.prototype.registerAttrEqualityMods = function(mod) {
 8492    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8493    -1         mod = arguments[j];
 8494    -1         this.attrEqualityMods[mod] = true;
 8495    -1       }
 8496    -1       return this;
 8497    -1     };
 8498    -1     CssSelectorParser.prototype.unregisterAttrEqualityMods = function(mod) {
 8499    -1       for (var j = 0, len = arguments.length; j < len; j++) {
 8500    -1         mod = arguments[j];
 8501    -1         delete this.attrEqualityMods[mod];
 8502    -1       }
 8503    -1       return this;
 8504    -1     };
 8505    -1     CssSelectorParser.prototype.enableSubstitutes = function() {
 8506    -1       this.substitutesEnabled = true;
 8507    -1       return this;
 8508    -1     };
 8509    -1     CssSelectorParser.prototype.disableSubstitutes = function() {
 8510    -1       this.substitutesEnabled = false;
 8511    -1       return this;
 8512    -1     };
 8513    -1     function isIdentStart(c) {
 8514    -1       return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c === '-' || c === '_';
 8515    -1     }
 8516    -1     function isIdent(c) {
 8517    -1       return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c === '-' || c === '_';
 8518    -1     }
 8519    -1     function isHex(c) {
 8520    -1       return c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' || c >= '0' && c <= '9';
 8521    -1     }
 8522    -1     function isDecimal(c) {
 8523    -1       return c >= '0' && c <= '9';
 8524    -1     }
 8525    -1     function isAttrMatchOperator(chr) {
 8526    -1       return chr === '=' || chr === '^' || chr === '$' || chr === '*' || chr === '~';
 8527    -1     }
 8528    -1     var identSpecialChars = {
 8529    -1       '!': true,
 8530    -1       '"': true,
 8531    -1       '#': true,
 8532    -1       $: true,
 8533    -1       '%': true,
 8534    -1       '&': true,
 8535    -1       '\'': true,
 8536    -1       '(': true,
 8537    -1       ')': true,
 8538    -1       '*': true,
 8539    -1       '+': true,
 8540    -1       ',': true,
 8541    -1       '.': true,
 8542    -1       '/': true,
 8543    -1       ';': true,
 8544    -1       '<': true,
 8545    -1       '=': true,
 8546    -1       '>': true,
 8547    -1       '?': true,
 8548    -1       '@': true,
 8549    -1       '[': true,
 8550    -1       '\\': true,
 8551    -1       ']': true,
 8552    -1       '^': true,
 8553    -1       '`': true,
 8554    -1       '{': true,
 8555    -1       '|': true,
 8556    -1       '}': true,
 8557    -1       '~': true
 8558    -1     };
 8559    -1     var strReplacementsRev = {
 8560    -1       '\n': '\\n',
 8561    -1       '\r': '\\r',
 8562    -1       '\t': '\\t',
 8563    -1       '\f': '\\f',
 8564    -1       '\v': '\\v'
 8565    -1     };
 8566    -1     var singleQuoteEscapeChars = {
 8567    -1       n: '\n',
 8568    -1       r: '\r',
 8569    -1       t: '\t',
 8570    -1       f: '\f',
 8571    -1       '\\': '\\',
 8572    -1       '\'': '\''
 8573    -1     };
 8574    -1     var doubleQuotesEscapeChars = {
 8575    -1       n: '\n',
 8576    -1       r: '\r',
 8577    -1       t: '\t',
 8578    -1       f: '\f',
 8579    -1       '\\': '\\',
 8580    -1       '"': '"'
 8581    -1     };
 8582    -1     function ParseContext(str, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {
 8583    -1       var chr, getIdent, getStr, l, skipWhitespace;
 8584    -1       l = str.length;
 8585    -1       chr = null;
 8586    -1       getStr = function getStr(quote, escapeTable) {
 8587    -1         var esc, hex, result;
 8588    -1         result = '';
 8589    -1         pos++;
 8590    -1         chr = str.charAt(pos);
 8591    -1         while (pos < l) {
 8592    -1           if (chr === quote) {
 8593    -1             pos++;
 8594    -1             return result;
 8595    -1           } else if (chr === '\\') {
 8596    -1             pos++;
 8597    -1             chr = str.charAt(pos);
 8598    -1             if (chr === quote) {
 8599    -1               result += quote;
 8600    -1             } else if (esc = escapeTable[chr]) {
 8601    -1               result += esc;
 8602    -1             } else if (isHex(chr)) {
 8603    -1               hex = chr;
 8604    -1               pos++;
 8605    -1               chr = str.charAt(pos);
 8606    -1               while (isHex(chr)) {
 8607    -1                 hex += chr;
 8608    -1                 pos++;
 8609    -1                 chr = str.charAt(pos);
 8610    -1               }
 8611    -1               if (chr === ' ') {
 8612    -1                 pos++;
 8613    -1                 chr = str.charAt(pos);
 8614    -1               }
 8615    -1               result += String.fromCharCode(parseInt(hex, 16));
 8616    -1               continue;
 8617    -1             } else {
 8618    -1               result += chr;
 8619    -1             }
 8620    -1           } else {
 8621    -1             result += chr;
 8622    -1           }
 8623    -1           pos++;
 8624    -1           chr = str.charAt(pos);
 8625    -1         }
 8626    -1         return result;
 8627    -1       };
 8628    -1       getIdent = function getIdent() {
 8629    -1         var result = '';
 8630    -1         chr = str.charAt(pos);
 8631    -1         while (pos < l) {
 8632    -1           if (isIdent(chr)) {
 8633    -1             result += chr;
 8634    -1           } else if (chr === '\\') {
 8635    -1             pos++;
 8636    -1             if (pos >= l) {
 8637    -1               throw Error('Expected symbol but end of file reached.');
 8638    -1             }
 8639    -1             chr = str.charAt(pos);
 8640    -1             if (identSpecialChars[chr]) {
 8641    -1               result += chr;
 8642    -1             } else if (isHex(chr)) {
 8643    -1               var hex = chr;
 8644    -1               pos++;
 8645    -1               chr = str.charAt(pos);
 8646    -1               while (isHex(chr)) {
 8647    -1                 hex += chr;
 8648    -1                 pos++;
 8649    -1                 chr = str.charAt(pos);
 8650    -1               }
 8651    -1               if (chr === ' ') {
 8652    -1                 pos++;
 8653    -1                 chr = str.charAt(pos);
 8654    -1               }
 8655    -1               result += String.fromCharCode(parseInt(hex, 16));
 8656    -1               continue;
 8657    -1             } else {
 8658    -1               result += chr;
 8659    -1             }
 8660    -1           } else {
 8661    -1             return result;
 8662    -1           }
 8663    -1           pos++;
 8664    -1           chr = str.charAt(pos);
 8665    -1         }
 8666    -1         return result;
 8667    -1       };
 8668    -1       skipWhitespace = function skipWhitespace() {
 8669    -1         chr = str.charAt(pos);
 8670    -1         var result = false;
 8671    -1         while (chr === ' ' || chr === '\t' || chr === '\n' || chr === '\r' || chr === '\f') {
 8672    -1           result = true;
 8673    -1           pos++;
 8674    -1           chr = str.charAt(pos);
 8675    -1         }
 8676    -1         return result;
 8677    -1       };
 8678    -1       this.parse = function() {
 8679    -1         var res = this.parseSelector();
 8680    -1         if (pos < l) {
 8681    -1           throw Error('Rule expected but "' + str.charAt(pos) + '" found.');
 8682    -1         }
 8683    -1         return res;
 8684    -1       };
 8685    -1       this.parseSelector = function() {
 8686    -1         var res;
 8687    -1         var selector = res = this.parseSingleSelector();
 8688    -1         chr = str.charAt(pos);
 8689    -1         while (chr === ',') {
 8690    -1           pos++;
 8691    -1           skipWhitespace();
 8692    -1           if (res.type !== 'selectors') {
 8693    -1             res = {
 8694    -1               type: 'selectors',
 8695    -1               selectors: [ selector ]
 8696    -1             };
 8697    -1           }
 8698    -1           selector = this.parseSingleSelector();
 8699    -1           if (!selector) {
 8700    -1             throw Error('Rule expected after ",".');
 8701    -1           }
 8702    -1           res.selectors.push(selector);
 8703    -1         }
 8704    -1         return res;
 8705    -1       };
 8706    -1       this.parseSingleSelector = function() {
 8707    -1         skipWhitespace();
 8708    -1         var selector = {
 8709    -1           type: 'ruleSet'
 8710    -1         };
 8711    -1         var rule = this.parseRule();
 8712    -1         if (!rule) {
 8713    -1           return null;
 8714    -1         }
 8715    -1         var currentRule = selector;
 8716    -1         while (rule) {
 8717    -1           rule.type = 'rule';
 8718    -1           currentRule.rule = rule;
 8719    -1           currentRule = rule;
 8720    -1           skipWhitespace();
 8721    -1           chr = str.charAt(pos);
 8722    -1           if (pos >= l || chr === ',' || chr === ')') {
 8723    -1             break;
 8724    -1           }
 8725    -1           if (ruleNestingOperators[chr]) {
 8726    -1             var op = chr;
 8727    -1             pos++;
 8728    -1             skipWhitespace();
 8729    -1             rule = this.parseRule();
 8730    -1             if (!rule) {
 8731    -1               throw Error('Rule expected after "' + op + '".');
 8732    -1             }
 8733    -1             rule.nestingOperator = op;
 8734    -1           } else {
 8735    -1             rule = this.parseRule();
 8736    -1             if (rule) {
 8737    -1               rule.nestingOperator = null;
 8738    -1             }
 8739    -1           }
 8740    -1         }
 8741    -1         return selector;
 8742    -1       };
 8743    -1       this.parseRule = function() {
 8744    -1         var rule = null;
 8745    -1         while (pos < l) {
 8746    -1           chr = str.charAt(pos);
 8747    -1           if (chr === '*') {
 8748    -1             pos++;
 8749    -1             (rule = rule || {}).tagName = '*';
 8750    -1           } else if (isIdentStart(chr) || chr === '\\') {
 8751    -1             (rule = rule || {}).tagName = getIdent();
 8752    -1           } else if (chr === '.') {
 8753    -1             pos++;
 8754    -1             rule = rule || {};
 8755    -1             (rule.classNames = rule.classNames || []).push(getIdent());
 8756    -1           } else if (chr === '#') {
 8757    -1             pos++;
 8758    -1             (rule = rule || {}).id = getIdent();
 8759    -1           } else if (chr === '[') {
 8760    -1             pos++;
 8761    -1             skipWhitespace();
 8762    -1             var attr = {
 8763    -1               name: getIdent()
 8764    -1             };
 8765    -1             skipWhitespace();
 8766    -1             if (chr === ']') {
 8767    -1               pos++;
 8768    -1             } else {
 8769    -1               var operator = '';
 8770    -1               if (attrEqualityMods[chr]) {
 8771    -1                 operator = chr;
 8772    -1                 pos++;
 8773    -1                 chr = str.charAt(pos);
 8774    -1               }
 8775    -1               if (pos >= l) {
 8776    -1                 throw Error('Expected "=" but end of file reached.');
 8777    -1               }
 8778    -1               if (chr !== '=') {
 8779    -1                 throw Error('Expected "=" but "' + chr + '" found.');
 8780    -1               }
 8781    -1               attr.operator = operator + '=';
 8782    -1               pos++;
 8783    -1               skipWhitespace();
 8784    -1               var attrValue = '';
 8785    -1               attr.valueType = 'string';
 8786    -1               if (chr === '"') {
 8787    -1                 attrValue = getStr('"', doubleQuotesEscapeChars);
 8788    -1               } else if (chr === '\'') {
 8789    -1                 attrValue = getStr('\'', singleQuoteEscapeChars);
 8790    -1               } else if (substitutesEnabled && chr === '$') {
 8791    -1                 pos++;
 8792    -1                 attrValue = getIdent();
 8793    -1                 attr.valueType = 'substitute';
 8794    -1               } else {
 8795    -1                 while (pos < l) {
 8796    -1                   if (chr === ']') {
 8797    -1                     break;
 8798    -1                   }
 8799    -1                   attrValue += chr;
 8800    -1                   pos++;
 8801    -1                   chr = str.charAt(pos);
 8802    -1                 }
 8803    -1                 attrValue = attrValue.trim();
 8804    -1               }
 8805    -1               skipWhitespace();
 8806    -1               if (pos >= l) {
 8807    -1                 throw Error('Expected "]" but end of file reached.');
 8808    -1               }
 8809    -1               if (chr !== ']') {
 8810    -1                 throw Error('Expected "]" but "' + chr + '" found.');
 8811    -1               }
 8812    -1               pos++;
 8813    -1               attr.value = attrValue;
 8814    -1             }
 8815    -1             rule = rule || {};
 8816    -1             (rule.attrs = rule.attrs || []).push(attr);
 8817    -1           } else if (chr === ':') {
 8818    -1             pos++;
 8819    -1             var pseudoName = getIdent();
 8820    -1             var pseudo = {
 8821    -1               name: pseudoName
 8822    -1             };
 8823    -1             if (chr === '(') {
 8824    -1               pos++;
 8825    -1               var value = '';
 8826    -1               skipWhitespace();
 8827    -1               if (pseudos[pseudoName] === 'selector') {
 8828    -1                 pseudo.valueType = 'selector';
 8829    -1                 value = this.parseSelector();
 8830    -1               } else {
 8831    -1                 pseudo.valueType = pseudos[pseudoName] || 'string';
 8832    -1                 if (chr === '"') {
 8833    -1                   value = getStr('"', doubleQuotesEscapeChars);
 8834    -1                 } else if (chr === '\'') {
 8835    -1                   value = getStr('\'', singleQuoteEscapeChars);
 8836    -1                 } else if (substitutesEnabled && chr === '$') {
 8837    -1                   pos++;
 8838    -1                   value = getIdent();
 8839    -1                   pseudo.valueType = 'substitute';
 8840    -1                 } else {
 8841    -1                   while (pos < l) {
 8842    -1                     if (chr === ')') {
 8843    -1                       break;
 8844    -1                     }
 8845    -1                     value += chr;
 8846    -1                     pos++;
 8847    -1                     chr = str.charAt(pos);
 8848    -1                   }
 8849    -1                   value = value.trim();
 8850    -1                 }
 8851    -1                 skipWhitespace();
 8852    -1               }
 8853    -1               if (pos >= l) {
 8854    -1                 throw Error('Expected ")" but end of file reached.');
 8855    -1               }
 8856    -1               if (chr !== ')') {
 8857    -1                 throw Error('Expected ")" but "' + chr + '" found.');
 8858    -1               }
 8859    -1               pos++;
 8860    -1               pseudo.value = value;
 8861    -1             }
 8862    -1             rule = rule || {};
 8863    -1             (rule.pseudos = rule.pseudos || []).push(pseudo);
 8864    -1           } else {
 8865    -1             break;
 8866    -1           }
 8867    -1         }
 8868    -1         return rule;
 8869    -1       };
 8870    -1       return this;
 8871    -1     }
 8872    -1     CssSelectorParser.prototype.parse = function(str) {
 8873    -1       var context = new ParseContext(str, 0, this.pseudos, this.attrEqualityMods, this.ruleNestingOperators, this.substitutesEnabled);
 8874    -1       return context.parse();
 8875    -1     };
 8876    -1     CssSelectorParser.prototype.escapeIdentifier = function(s) {
 8877    -1       var result = '';
 8878    -1       var i = 0;
 8879    -1       var len = s.length;
 8880    -1       while (i < len) {
 8881    -1         var chr = s.charAt(i);
 8882    -1         if (identSpecialChars[chr]) {
 8883    -1           result += '\\' + chr;
 8884    -1         } else {
 8885    -1           if (!(chr === '_' || chr === '-' || chr >= 'A' && chr <= 'Z' || chr >= 'a' && chr <= 'z' || i !== 0 && chr >= '0' && chr <= '9')) {
 8886    -1             var charCode = chr.charCodeAt(0);
 8887    -1             if ((charCode & 63488) === 55296) {
 8888    -1               var extraCharCode = s.charCodeAt(i++);
 8889    -1               if ((charCode & 64512) !== 55296 || (extraCharCode & 64512) !== 56320) {
 8890    -1                 throw Error('UCS-2(decode): illegal sequence');
 8891    -1               }
 8892    -1               charCode = ((charCode & 1023) << 10) + (extraCharCode & 1023) + 65536;
 8893    -1             }
 8894    -1             result += '\\' + charCode.toString(16) + ' ';
 8895    -1           } else {
 8896    -1             result += chr;
 8897    -1           }
 8898    -1         }
 8899    -1         i++;
 8900    -1       }
 8901    -1       return result;
 8902    -1     };
 8903    -1     CssSelectorParser.prototype.escapeStr = function(s) {
 8904    -1       var result = '';
 8905    -1       var i = 0;
 8906    -1       var len = s.length;
 8907    -1       var chr, replacement;
 8908    -1       while (i < len) {
 8909    -1         chr = s.charAt(i);
 8910    -1         if (chr === '"') {
 8911    -1           chr = '\\"';
 8912    -1         } else if (chr === '\\') {
 8913    -1           chr = '\\\\';
 8914    -1         } else if (replacement = strReplacementsRev[chr]) {
 8915    -1           chr = replacement;
 8916    -1         }
 8917    -1         result += chr;
 8918    -1         i++;
 8919    -1       }
 8920    -1       return '"' + result + '"';
 8921    -1     };
 8922    -1     CssSelectorParser.prototype.render = function(path) {
 8923    -1       return this._renderEntity(path).trim();
 8924    -1     };
 8925    -1     CssSelectorParser.prototype._renderEntity = function(entity) {
 8926    -1       var currentEntity, parts, res;
 8927    -1       res = '';
 8928    -1       switch (entity.type) {
 8929    -1        case 'ruleSet':
 8930    -1         currentEntity = entity.rule;
 8931    -1         parts = [];
 8932    -1         while (currentEntity) {
 8933    -1           if (currentEntity.nestingOperator) {
 8934    -1             parts.push(currentEntity.nestingOperator);
 8935    -1           }
 8936    -1           parts.push(this._renderEntity(currentEntity));
 8937    -1           currentEntity = currentEntity.rule;
 8938    -1         }
 8939    -1         res = parts.join(' ');
 8940    -1         break;
 8941    -1 
 8942    -1        case 'selectors':
 8943    -1         res = entity.selectors.map(this._renderEntity, this).join(', ');
 8944    -1         break;
 8945    -1 
 8946    -1        case 'rule':
 8947    -1         if (entity.tagName) {
 8948    -1           if (entity.tagName === '*') {
 8949    -1             res = '*';
 8950    -1           } else {
 8951    -1             res = this.escapeIdentifier(entity.tagName);
 8952    -1           }
 8953    -1         }
 8954    -1         if (entity.id) {
 8955    -1           res += '#' + this.escapeIdentifier(entity.id);
 8956    -1         }
 8957    -1         if (entity.classNames) {
 8958    -1           res += entity.classNames.map(function(cn) {
 8959    -1             return '.' + this.escapeIdentifier(cn);
 8960    -1           }, this).join('');
 8961    -1         }
 8962    -1         if (entity.attrs) {
 8963    -1           res += entity.attrs.map(function(attr) {
 8964    -1             if (attr.operator) {
 8965    -1               if (attr.valueType === 'substitute') {
 8966    -1                 return '[' + this.escapeIdentifier(attr.name) + attr.operator + '$' + attr.value + ']';
 8967    -1               } else {
 8968    -1                 return '[' + this.escapeIdentifier(attr.name) + attr.operator + this.escapeStr(attr.value) + ']';
 8969    -1               }
 8970    -1             } else {
 8971    -1               return '[' + this.escapeIdentifier(attr.name) + ']';
 8972    -1             }
 8973    -1           }, this).join('');
 8974    -1         }
 8975    -1         if (entity.pseudos) {
 8976    -1           res += entity.pseudos.map(function(pseudo) {
 8977    -1             if (pseudo.valueType) {
 8978    -1               if (pseudo.valueType === 'selector') {
 8979    -1                 return ':' + this.escapeIdentifier(pseudo.name) + '(' + this._renderEntity(pseudo.value) + ')';
 8980    -1               } else if (pseudo.valueType === 'substitute') {
 8981    -1                 return ':' + this.escapeIdentifier(pseudo.name) + '($' + pseudo.value + ')';
 8982    -1               } else if (pseudo.valueType === 'numeric') {
 8983    -1                 return ':' + this.escapeIdentifier(pseudo.name) + '(' + pseudo.value + ')';
 8984    -1               } else {
 8985    -1                 return ':' + this.escapeIdentifier(pseudo.name) + '(' + this.escapeIdentifier(pseudo.value) + ')';
 8986    -1               }
 8987    -1             } else {
 8988    -1               return ':' + this.escapeIdentifier(pseudo.name);
 8989    -1             }
 8990    -1           }, this).join('');
 8991    -1         }
 8992    -1         break;
 8993    -1 
 8994    -1        default:
 8995    -1         throw Error('Unknown entity type: "' + entity.type(+'".'));
 8996    -1       }
 8997    -1       return res;
 8998    -1     };
 8999    -1     var parser = new CssSelectorParser();
   -1  9690       return !!node.children.find(function(child) {
   -1  9691         return containsShadowChild(child, otherNode);
   -1  9692       });
   -1  9693     }
   -1  9694     if (node.shadowId || otherNode.shadowId) {
   -1  9695       return containsShadowChild(node, otherNode);
   -1  9696     }
   -1  9697     if (typeof node.actualNode.contains === 'function') {
   -1  9698       return node.actualNode.contains(otherNode.actualNode);
   -1  9699     }
   -1  9700     return !!(node.actualNode.compareDocumentPosition(otherNode.actualNode) & 16);
   -1  9701   };
   -1  9702   'use strict';
   -1  9703   (function(axe) {
   -1  9704     var parser = new axe.imports.CssSelectorParser();
 9000  9705     parser.registerNestingOperators('>');
 9001  9706     axe.utils.cssParser = parser;
 9002  9707   })(axe);
@@ -9142,10 +9847,23 @@ module.exports = {
 9142  9847     utils: {}
 9143  9848   };
 9144  9849   function virtualDOMfromNode(node, shadowId) {
   -1  9850     var vNodeCache = {};
 9145  9851     return {
 9146  9852       shadowId: shadowId,
 9147  9853       children: [],
 9148    -1       actualNode: node
   -1  9854       actualNode: node,
   -1  9855       get isFocusable() {
   -1  9856         if (!vNodeCache._isFocusable) {
   -1  9857           vNodeCache._isFocusable = axe.commons.dom.isFocusable(node);
   -1  9858         }
   -1  9859         return vNodeCache._isFocusable;
   -1  9860       },
   -1  9861       get tabbableElements() {
   -1  9862         if (!vNodeCache._tabbableElements) {
   -1  9863           vNodeCache._tabbableElements = axe.commons.dom.getTabbableElements(this);
   -1  9864         }
   -1  9865         return vNodeCache._tabbableElements;
   -1  9866       }
 9149  9867     };
 9150  9868   }
 9151  9869   function getSlotChildren(node) {
@@ -9212,14 +9930,13 @@ module.exports = {
 9212  9930       return vNode;
 9213  9931     }
 9214  9932     vNode.children.forEach(function(candidate) {
 9215    -1       var retVal;
   -1  9933       if (found) {
   -1  9934         return;
   -1  9935       }
 9216  9936       if (candidate.actualNode === node) {
 9217  9937         found = candidate;
 9218  9938       } else {
 9219    -1         retVal = axe.utils.getNodeFromTree(candidate, node);
 9220    -1         if (retVal) {
 9221    -1           found = retVal;
 9222    -1         }
   -1  9939         found = axe.utils.getNodeFromTree(candidate, node);
 9223  9940       }
 9224  9941     });
 9225  9942     return found;
@@ -9231,6 +9948,13 @@ module.exports = {
 9231  9948     return result.concat(object.any || []).concat(object.all || []).concat(object.none || []);
 9232  9949   };
 9233  9950   'use strict';
   -1  9951   axe.utils.getBaseLang = function getBaseLang(lang) {
   -1  9952     if (!lang) {
   -1  9953       return '';
   -1  9954     }
   -1  9955     return lang.trim().split('-')[0].toLowerCase();
   -1  9956   };
   -1  9957   'use strict';
 9234  9958   axe.utils.getCheckOption = function(check, ruleID, options) {
 9235  9959     var ruleCheckOption = ((options.rules && options.rules[ruleID] || {}).checks || {})[check.id];
 9236  9960     var checkOption = (options.checks || {})[check.id];
@@ -9408,12 +10132,12 @@ module.exports = {
 9408 10132       if (friendly) {
 9409 10133         var value = encodeURI(friendly);
 9410 10134         if (value) {
 9411    -1           atnv = escapeSelector(at.name) + '$="' + value + '"';
   -1 10135           atnv = escapeSelector(at.name) + '$="' + escapeSelector(value) + '"';
 9412 10136         } else {
 9413 10137           return;
 9414 10138         }
 9415 10139       } else {
 9416    -1         atnv = escapeSelector(at.name) + '="' + node.getAttribute(name) + '"';
   -1 10140         atnv = escapeSelector(at.name) + '="' + escapeSelector(node.getAttribute(name)) + '"';
 9417 10141       }
 9418 10142     } else {
 9419 10143       atnv = escapeSelector(name) + '="' + escapeSelector(at.value) + '"';
@@ -9753,6 +10477,12 @@ module.exports = {
 9753 10477     return axe.utils.isHidden(parent, true);
 9754 10478   };
 9755 10479   'use strict';
   -1 10480   var htmlTags = [ 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'math', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'script', 'section', 'select', 'slot', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'svg', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr' ];
   -1 10481   axe.utils.isHtmlElement = function isHtmlElement(node) {
   -1 10482     var tagName = node.nodeName.toLowerCase();
   -1 10483     return htmlTags.includes(tagName) && node.namespaceURI !== 'http://www.w3.org/2000/svg';
   -1 10484   };
   -1 10485   'use strict';
 9756 10486   var possibleShadowRoots = [ 'article', 'aside', 'blockquote', 'body', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span' ];
 9757 10487   axe.utils.isShadowRoot = function isShadowRoot(node) {
 9758 10488     var nodeName = node.nodeName.toLowerCase();
@@ -9847,15 +10577,17 @@ module.exports = {
 9847 10577     return result;
 9848 10578   };
 9849 10579   'use strict';
 9850    -1   axe.utils.nodeSorter = function nodeSorter(a, b) {
 9851    -1     'use strict';
 9852    -1     if (a.actualNode === b.actualNode) {
   -1 10580   axe.utils.nodeSorter = function nodeSorter(nodeA, nodeB) {
   -1 10581     nodeA = nodeA.actualNode || nodeA;
   -1 10582     nodeB = nodeB.actualNode || nodeB;
   -1 10583     if (nodeA === nodeB) {
 9853 10584       return 0;
 9854 10585     }
 9855    -1     if (a.actualNode.compareDocumentPosition(b.actualNode) & 4) {
   -1 10586     if (nodeA.compareDocumentPosition(nodeB) & 4) {
 9856 10587       return -1;
   -1 10588     } else {
   -1 10589       return 1;
 9857 10590     }
 9858    -1     return 1;
 9859 10591   };
 9860 10592   'use strict';
 9861 10593   utils.performanceTimer = function() {
@@ -10133,100 +10865,36 @@ module.exports = {
10133 10865     };
10134 10866   }
10135 10867   'use strict';
10136    -1   function loadCssom(_ref, timeout, convertTextToStylesheetFn) {
10137    -1     var root = _ref.root, shadowId = _ref.shadowId;
10138    -1     function getExternalStylesheet(_ref2) {
10139    -1       var resolve = _ref2.resolve, reject = _ref2.reject, url = _ref2.url;
10140    -1       axe.imports.axios({
10141    -1         method: 'get',
10142    -1         url: url,
10143    -1         timeout: timeout
10144    -1       }).then(function(_ref3) {
10145    -1         var data = _ref3.data;
10146    -1         var sheet = convertTextToStylesheetFn({
10147    -1           data: data,
10148    -1           isExternal: true,
10149    -1           shadowId: shadowId,
10150    -1           root: root
10151    -1         });
10152    -1         resolve(sheet);
10153    -1       }).catch(reject);
   -1 10868   function _toConsumableArray(arr) {
   -1 10869     if (Array.isArray(arr)) {
   -1 10870       for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
   -1 10871         arr2[i] = arr[i];
   -1 10872       }
   -1 10873       return arr2;
   -1 10874     } else {
   -1 10875       return Array.from(arr);
10154 10876     }
   -1 10877   }
   -1 10878   axe.utils.preloadCssom = function preloadCssom(_ref) {
   -1 10879     var timeout = _ref.timeout, _ref$treeRoot = _ref.treeRoot, treeRoot = _ref$treeRoot === undefined ? axe._tree[0] : _ref$treeRoot;
   -1 10880     var rootNodes = getAllRootNodesInTree(treeRoot);
10155 10881     var q = axe.utils.queue();
10156    -1     var rootStyleSheets = root.styleSheets ? Array.from(root.styleSheets) : null;
10157    -1     if (!rootStyleSheets) {
   -1 10882     if (!rootNodes.length) {
10158 10883       return q;
10159 10884     }
10160    -1     var sheetHrefs = [];
10161    -1     var sheets = rootStyleSheets.filter(function(sheet) {
10162    -1       var sheetAlreadyExists = false;
10163    -1       if (sheet.href) {
10164    -1         if (!sheetHrefs.includes(sheet.href)) {
10165    -1           sheetHrefs.push(sheet.href);
10166    -1         } else {
10167    -1           sheetAlreadyExists = true;
10168    -1         }
10169    -1       }
10170    -1       var isPrintMedia = Array.from(sheet.media).includes('print');
10171    -1       return !isPrintMedia && !sheetAlreadyExists;
   -1 10885     var dynamicDoc = document.implementation.createHTMLDocument();
   -1 10886     var convertDataToStylesheet = getStyleSheetFactory(dynamicDoc);
   -1 10887     q.defer(function(resolve, reject) {
   -1 10888       getCssomForAllRootNodes(rootNodes, convertDataToStylesheet, timeout).then(function(assets) {
   -1 10889         var cssom = processCssomAssets(assets);
   -1 10890         resolve(cssom);
   -1 10891       }).catch(reject);
10172 10892     });
10173    -1     sheets.forEach(function(sheet) {
10174    -1       try {
10175    -1         var cssRules = sheet.cssRules;
10176    -1         var rules = Array.from(cssRules);
10177    -1         var importRules = rules.filter(function(r) {
10178    -1           return r.href;
10179    -1         });
10180    -1         if (!importRules.length) {
10181    -1           q.defer(function(resolve) {
10182    -1             return resolve({
10183    -1               sheet: sheet,
10184    -1               isExternal: false,
10185    -1               shadowId: shadowId,
10186    -1               root: root
10187    -1             });
10188    -1           });
10189    -1           return;
10190    -1         }
10191    -1         importRules.forEach(function(rule) {
10192    -1           q.defer(function(resolve, reject) {
10193    -1             getExternalStylesheet({
10194    -1               resolve: resolve,
10195    -1               reject: reject,
10196    -1               url: rule.href
10197    -1             });
10198    -1           });
10199    -1         });
10200    -1         var inlineRules = rules.filter(function(rule) {
10201    -1           return !rule.href;
10202    -1         });
10203    -1         var inlineRulesCssText = inlineRules.reduce(function(out, rule) {
10204    -1           out.push(rule.cssText);
10205    -1           return out;
10206    -1         }, []).join();
10207    -1         q.defer(function(resolve) {
10208    -1           return resolve(convertTextToStylesheetFn({
10209    -1             data: inlineRulesCssText,
10210    -1             shadowId: shadowId,
10211    -1             root: root,
10212    -1             isExternal: false
10213    -1           }));
10214    -1         });
10215    -1       } catch (e) {
10216    -1         q.defer(function(resolve, reject) {
10217    -1           getExternalStylesheet({
10218    -1             resolve: resolve,
10219    -1             reject: reject,
10220    -1             url: sheet.href
10221    -1           });
10222    -1         });
10223    -1       }
10224    -1     }, []);
10225 10893     return q;
10226    -1   }
10227    -1   function getAllRootsInTree(tree) {
   -1 10894   };
   -1 10895   function getAllRootNodesInTree(tree) {
10228 10896     var ids = [];
10229    -1     var documents = axe.utils.querySelectorAllFilter(tree, '*', function(node) {
   -1 10897     var rootNodes = axe.utils.querySelectorAllFilter(tree, '*', function(node) {
10230 10898       if (ids.includes(node.shadowId)) {
10231 10899         return false;
10232 10900       }
@@ -10235,46 +10903,220 @@ module.exports = {
10235 10903     }).map(function(node) {
10236 10904       return {
10237 10905         shadowId: node.shadowId,
10238    -1         root: axe.utils.getRootNode(node.actualNode)
   -1 10906         rootNode: axe.utils.getRootNode(node.actualNode)
10239 10907       };
10240 10908     });
10241    -1     return documents;
   -1 10909     return axe.utils.uniqueArray(rootNodes, []);
10242 10910   }
10243    -1   axe.utils.preloadCssom = function preloadCssom(_ref4) {
10244    -1     var timeout = _ref4.timeout, _ref4$treeRoot = _ref4.treeRoot, treeRoot = _ref4$treeRoot === undefined ? axe._tree[0] : _ref4$treeRoot;
10245    -1     var roots = axe.utils.uniqueArray(getAllRootsInTree(treeRoot), []);
10246    -1     var q = axe.utils.queue();
10247    -1     if (!roots.length) {
10248    -1       return q;
10249    -1     }
10250    -1     var dynamicDoc = document.implementation.createHTMLDocument();
10251    -1     function convertTextToStylesheet(_ref5) {
10252    -1       var data = _ref5.data, isExternal = _ref5.isExternal, shadowId = _ref5.shadowId, root = _ref5.root;
   -1 10911   var getStyleSheetFactory = function getStyleSheetFactory(dynamicDoc) {
   -1 10912     return function(_ref2) {
   -1 10913       var data = _ref2.data, isExternal = _ref2.isExternal, shadowId = _ref2.shadowId, root = _ref2.root, priority = _ref2.priority, _ref2$isLink = _ref2.isLink, isLink = _ref2$isLink === undefined ? false : _ref2$isLink;
10253 10914       var style = dynamicDoc.createElement('style');
10254    -1       style.type = 'text/css';
10255    -1       style.appendChild(dynamicDoc.createTextNode(data));
   -1 10915       if (isLink) {
   -1 10916         var text = dynamicDoc.createTextNode('@import "' + data.href + '"');
   -1 10917         style.appendChild(text);
   -1 10918       } else {
   -1 10919         style.appendChild(dynamicDoc.createTextNode(data));
   -1 10920       }
10256 10921       dynamicDoc.head.appendChild(style);
10257 10922       return {
10258 10923         sheet: style.sheet,
10259 10924         isExternal: isExternal,
10260 10925         shadowId: shadowId,
10261    -1         root: root
   -1 10926         root: root,
   -1 10927         priority: priority
10262 10928       };
   -1 10929     };
   -1 10930   };
   -1 10931   function getCssomForAllRootNodes(rootNodes, convertDataToStylesheet, timeout) {
   -1 10932     var q = axe.utils.queue();
   -1 10933     rootNodes.forEach(function(_ref3, index) {
   -1 10934       var rootNode = _ref3.rootNode, shadowId = _ref3.shadowId;
   -1 10935       return q.defer(function(resolve, reject) {
   -1 10936         return loadCssom({
   -1 10937           rootNode: rootNode,
   -1 10938           shadowId: shadowId,
   -1 10939           timeout: timeout,
   -1 10940           convertDataToStylesheet: convertDataToStylesheet,
   -1 10941           rootIndex: index + 1
   -1 10942         }).then(resolve).catch(reject);
   -1 10943       });
   -1 10944     });
   -1 10945     return q;
   -1 10946   }
   -1 10947   function processCssomAssets(nestedAssets) {
   -1 10948     var result = [];
   -1 10949     nestedAssets.forEach(function(item) {
   -1 10950       if (Array.isArray(item)) {
   -1 10951         result.push.apply(result, _toConsumableArray(processCssomAssets(item)));
   -1 10952       } else {
   -1 10953         result.push(item);
   -1 10954       }
   -1 10955     });
   -1 10956     return result;
   -1 10957   }
   -1 10958   function loadCssom(options) {
   -1 10959     var rootIndex = options.rootIndex;
   -1 10960     var q = axe.utils.queue();
   -1 10961     var sheets = getStylesheetsOfRootNode(options);
   -1 10962     if (!sheets) {
   -1 10963       return q;
10263 10964     }
10264    -1     q.defer(function(resolve, reject) {
10265    -1       roots.reduce(function(out, root) {
10266    -1         out.defer(function(resolve, reject) {
10267    -1           loadCssom(root, timeout, convertTextToStylesheet).then(resolve).catch(reject);
   -1 10965     sheets.forEach(function(sheet, sheetIndex) {
   -1 10966       var priority = [ rootIndex, sheetIndex ];
   -1 10967       try {
   -1 10968         var deferredQ = parseNonCrossOriginStylesheet(sheet, options, priority);
   -1 10969         q.defer(deferredQ);
   -1 10970       } catch (e) {
   -1 10971         var _deferredQ = parseCrossOriginStylesheet(sheet.href, options, priority);
   -1 10972         q.defer(_deferredQ);
   -1 10973       }
   -1 10974     });
   -1 10975     return q;
   -1 10976   }
   -1 10977   function parseNonCrossOriginStylesheet(sheet, options, priority) {
   -1 10978     var q = axe.utils.queue();
   -1 10979     var cssRules = sheet.cssRules;
   -1 10980     var rules = Array.from(cssRules);
   -1 10981     if (!rules) {
   -1 10982       return q;
   -1 10983     }
   -1 10984     var cssImportRules = rules.filter(function(r) {
   -1 10985       return r.type === 3;
   -1 10986     });
   -1 10987     if (!cssImportRules.length) {
   -1 10988       q.defer(function(resolve) {
   -1 10989         return resolve({
   -1 10990           isExternal: false,
   -1 10991           priority: priority,
   -1 10992           root: options.rootNode,
   -1 10993           shadowId: options.shadowId,
   -1 10994           sheet: sheet
10268 10995         });
10269    -1         return out;
10270    -1       }, axe.utils.queue()).then(function(assets) {
10271    -1         resolve(assets.reduce(function(out, cssomSheets) {
10272    -1           return out.concat(cssomSheets);
10273    -1         }, []));
   -1 10996       });
   -1 10997       return q;
   -1 10998     }
   -1 10999     cssImportRules.forEach(function(importRule, cssRuleIndex) {
   -1 11000       return q.defer(function(resolve, reject) {
   -1 11001         var importUrl = importRule.href;
   -1 11002         var newPriority = [].concat(_toConsumableArray(priority), [ cssRuleIndex ]);
   -1 11003         var axiosOptions = {
   -1 11004           method: 'get',
   -1 11005           url: importUrl,
   -1 11006           timeout: options.timeout
   -1 11007         };
   -1 11008         axe.imports.axios(axiosOptions).then(function(_ref4) {
   -1 11009           var data = _ref4.data;
   -1 11010           return resolve(options.convertDataToStylesheet({
   -1 11011             data: data,
   -1 11012             isExternal: true,
   -1 11013             priority: newPriority,
   -1 11014             root: options.rootNode,
   -1 11015             shadowId: options.shadowId
   -1 11016           }));
   -1 11017         }).catch(reject);
   -1 11018       });
   -1 11019     });
   -1 11020     var nonImportCSSRules = rules.filter(function(r) {
   -1 11021       return r.type !== 3;
   -1 11022     });
   -1 11023     if (!nonImportCSSRules.length) {
   -1 11024       return q;
   -1 11025     }
   -1 11026     q.defer(function(resolve) {
   -1 11027       return resolve(options.convertDataToStylesheet({
   -1 11028         data: nonImportCSSRules.map(function(rule) {
   -1 11029           return rule.cssText;
   -1 11030         }).join(),
   -1 11031         isExternal: false,
   -1 11032         priority: priority,
   -1 11033         root: options.rootNode,
   -1 11034         shadowId: options.shadowId
   -1 11035       }));
   -1 11036     });
   -1 11037     return q;
   -1 11038   }
   -1 11039   function parseCrossOriginStylesheet(url, options, priority) {
   -1 11040     var q = axe.utils.queue();
   -1 11041     if (!url) {
   -1 11042       return q;
   -1 11043     }
   -1 11044     var axiosOptions = {
   -1 11045       method: 'get',
   -1 11046       url: url,
   -1 11047       timeout: options.timeout
   -1 11048     };
   -1 11049     q.defer(function(resolve, reject) {
   -1 11050       axe.imports.axios(axiosOptions).then(function(_ref5) {
   -1 11051         var data = _ref5.data;
   -1 11052         return resolve(options.convertDataToStylesheet({
   -1 11053           data: data,
   -1 11054           isExternal: true,
   -1 11055           priority: priority,
   -1 11056           root: options.rootNode,
   -1 11057           shadowId: options.shadowId
   -1 11058         }));
10274 11059       }).catch(reject);
10275 11060     });
10276 11061     return q;
10277    -1   };
   -1 11062   }
   -1 11063   function getStylesheetsOfRootNode(options) {
   -1 11064     var rootNode = options.rootNode, shadowId = options.shadowId;
   -1 11065     var sheets = void 0;
   -1 11066     if (rootNode.nodeType === 11 && shadowId) {
   -1 11067       sheets = getStylesheetsFromDocumentFragment(options);
   -1 11068     } else {
   -1 11069       sheets = getStylesheetsFromDocument(rootNode);
   -1 11070     }
   -1 11071     return filterStylesheetsWithSameHref(sheets);
   -1 11072   }
   -1 11073   function getStylesheetsFromDocumentFragment(options) {
   -1 11074     var rootNode = options.rootNode, convertDataToStylesheet = options.convertDataToStylesheet;
   -1 11075     return Array.from(rootNode.children).filter(filerStyleAndLinkAttributesInDocumentFragment).reduce(function(out, node) {
   -1 11076       var nodeName = node.nodeName.toUpperCase();
   -1 11077       var data = nodeName === 'STYLE' ? node.textContent : node;
   -1 11078       var isLink = nodeName === 'LINK';
   -1 11079       var stylesheet = convertDataToStylesheet({
   -1 11080         data: data,
   -1 11081         isLink: isLink,
   -1 11082         root: rootNode
   -1 11083       });
   -1 11084       out.push(stylesheet.sheet);
   -1 11085       return out;
   -1 11086     }, []);
   -1 11087   }
   -1 11088   function getStylesheetsFromDocument(rootNode) {
   -1 11089     return Array.from(rootNode.styleSheets).filter(function(sheet) {
   -1 11090       return filterMediaIsPrint(sheet.media.mediaText);
   -1 11091     });
   -1 11092   }
   -1 11093   function filerStyleAndLinkAttributesInDocumentFragment(node) {
   -1 11094     var nodeName = node.nodeName.toUpperCase();
   -1 11095     var linkHref = node.getAttribute('href');
   -1 11096     var linkRel = node.getAttribute('rel');
   -1 11097     var isLink = nodeName === 'LINK' && linkHref && linkRel && node.rel.toUpperCase().includes('STYLESHEET');
   -1 11098     var isStyle = nodeName === 'STYLE';
   -1 11099     return isStyle || isLink && filterMediaIsPrint(node.media);
   -1 11100   }
   -1 11101   function filterMediaIsPrint(media) {
   -1 11102     if (!media) {
   -1 11103       return true;
   -1 11104     }
   -1 11105     return !media.toUpperCase().includes('PRINT');
   -1 11106   }
   -1 11107   function filterStylesheetsWithSameHref(sheets) {
   -1 11108     var hrefs = [];
   -1 11109     return sheets.filter(function(sheet) {
   -1 11110       if (!sheet.href) {
   -1 11111         return true;
   -1 11112       }
   -1 11113       if (hrefs.includes(sheet.href)) {
   -1 11114         return false;
   -1 11115       }
   -1 11116       hrefs.push(sheet.href);
   -1 11117       return true;
   -1 11118     });
   -1 11119   }
10278 11120   'use strict';
10279 11121   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
10280 11122     return typeof obj;
@@ -10298,8 +11140,8 @@ module.exports = {
10298 11140     return (typeof preload === 'undefined' ? 'undefined' : _typeof(preload)) === 'object' && Array.isArray(preload.assets);
10299 11141   }
10300 11142   axe.utils.shouldPreload = function shouldPreload(options) {
10301    -1     if (!options || !options.preload) {
10302    -1       return false;
   -1 11143     if (!options || options.preload === undefined || options.preload === null) {
   -1 11144       return true;
10303 11145     }
10304 11146     if (typeof options.preload === 'boolean') {
10305 11147       return options.preload;
@@ -10311,6 +11153,9 @@ module.exports = {
10311 11153       assets: axe.constants.preloadAssets,
10312 11154       timeout: axe.constants.preloadAssetsTimeout
10313 11155     };
   -1 11156     if (!options.preload) {
   -1 11157       return config;
   -1 11158     }
10314 11159     if (typeof options.preload === 'boolean') {
10315 11160       return config;
10316 11161     }
@@ -11061,6 +11906,11 @@ module.exports = {
11061 11906     });
11062 11907   };
11063 11908   'use strict';
   -1 11909   axe.utils.tokenList = function(str) {
   -1 11910     'use strict';
   -1 11911     return str.trim().replace(/\s{2,}/g, ' ').split(' ');
   -1 11912   };
   -1 11913   'use strict';
11064 11914   var uuid;
11065 11915   (function(_global) {
11066 11916     var _rng;
@@ -11176,11 +12026,43 @@ module.exports = {
11176 12026     uuid.BufferClass = BufferClass;
11177 12027   })(window);
11178 12028   'use strict';
   -1 12029   axe.utils.validInputTypes = function validInputTypes() {
   -1 12030     'use strict';
   -1 12031     return [ 'hidden', 'text', 'search', 'tel', 'url', 'email', 'password', 'date', 'month', 'week', 'time', 'datetime-local', 'number', 'range', 'color', 'checkbox', 'radio', 'file', 'submit', 'image', 'reset', 'button' ];
   -1 12032   };
   -1 12033   'use strict';
   -1 12034   var langs = [ 'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'in', 'io', 'is', 'it', 'iu', 'iw', 'ja', 'ji', 'jv', 'jw', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu', 'aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag', 'aah', 'aai', 'aak', 'aal', 'aam', 'aan', 'aao', 'aap', 'aaq', 'aas', 'aat', 'aau', 'aav', 'aaw', 'aax', 'aaz', 'aba', 'abb', 'abc', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz', 'aca', 'acb', 'acd', 'ace', 'acf', 'ach', 'aci', 'ack', 'acl', 'acm', 'acn', 'acp', 'acq', 'acr', 'acs', 'act', 'acu', 'acv', 'acw', 'acx', 'acy', 'acz', 'ada', 'adb', 'add', 'ade', 'adf', 'adg', 'adh', 'adi', 'adj', 'adl', 'adn', 'ado', 'adp', 'adq', 'adr', 'ads', 'adt', 'adu', 'adw', 'adx', 'ady', 'adz', 'aea', 'aeb', 'aec', 'aed', 'aee', 'aek', 'ael', 'aem', 'aen', 'aeq', 'aer', 'aes', 'aeu', 'aew', 'aey', 'aez', 'afa', 'afb', 'afd', 'afe', 'afg', 'afh', 'afi', 'afk', 'afn', 'afo', 'afp', 'afs', 'aft', 'afu', 'afz', 'aga', 'agb', 'agc', 'agd', 'age', 'agf', 'agg', 'agh', 'agi', 'agj', 'agk', 'agl', 'agm', 'agn', 'ago', 'agp', 'agq', 'agr', 'ags', 'agt', 'agu', 'agv', 'agw', 'agx', 'agy', 'agz', 'aha', 'ahb', 'ahg', 'ahh', 'ahi', 'ahk', 'ahl', 'ahm', 'ahn', 'aho', 'ahp', 'ahr', 'ahs', 'aht', 'aia', 'aib', 'aic', 'aid', 'aie', 'aif', 'aig', 'aih', 'aii', 'aij', 'aik', 'ail', 'aim', 'ain', 'aio', 'aip', 'aiq', 'air', 'ais', 'ait', 'aiw', 'aix', 'aiy', 'aja', 'ajg', 'aji', 'ajn', 'ajp', 'ajt', 'aju', 'ajw', 'ajz', 'akb', 'akc', 'akd', 'ake', 'akf', 'akg', 'akh', 'aki', 'akj', 'akk', 'akl', 'akm', 'ako', 'akp', 'akq', 'akr', 'aks', 'akt', 'aku', 'akv', 'akw', 'akx', 'aky', 'akz', 'ala', 'alc', 'ald', 'ale', 'alf', 'alg', 'alh', 'ali', 'alj', 'alk', 'all', 'alm', 'aln', 'alo', 'alp', 'alq', 'alr', 'als', 'alt', 'alu', 'alv', 'alw', 'alx', 'aly', 'alz', 'ama', 'amb', 'amc', 'ame', 'amf', 'amg', 'ami', 'amj', 'amk', 'aml', 'amm', 'amn', 'amo', 'amp', 'amq', 'amr', 'ams', 'amt', 'amu', 'amv', 'amw', 'amx', 'amy', 'amz', 'ana', 'anb', 'anc', 'and', 'ane', 'anf', 'ang', 'anh', 'ani', 'anj', 'ank', 'anl', 'anm', 'ann', 'ano', 'anp', 'anq', 'anr', 'ans', 'ant', 'anu', 'anv', 'anw', 'anx', 'any', 'anz', 'aoa', 'aob', 'aoc', 'aod', 'aoe', 'aof', 'aog', 'aoh', 'aoi', 'aoj', 'aok', 'aol', 'aom', 'aon', 'aor', 'aos', 'aot', 'aou', 'aox', 'aoz', 'apa', 'apb', 'apc', 'apd', 'ape', 'apf', 'apg', 'aph', 'api', 'apj', 'apk', 'apl', 'apm', 'apn', 'apo', 'app', 'apq', 'apr', 'aps', 'apt', 'apu', 'apv', 'apw', 'apx', 'apy', 'apz', 'aqa', 'aqc', 'aqd', 'aqg', 'aql', 'aqm', 'aqn', 'aqp', 'aqr', 'aqt', 'aqz', 'arb', 'arc', 'ard', 'are', 'arh', 'ari', 'arj', 'ark', 'arl', 'arn', 'aro', 'arp', 'arq', 'arr', 'ars', 'art', 'aru', 'arv', 'arw', 'arx', 'ary', 'arz', 'asa', 'asb', 'asc', 'asd', 'ase', 'asf', 'asg', 'ash', 'asi', 'asj', 'ask', 'asl', 'asn', 'aso', 'asp', 'asq', 'asr', 'ass', 'ast', 'asu', 'asv', 'asw', 'asx', 'asy', 'asz', 'ata', 'atb', 'atc', 'atd', 'ate', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz', 'aua', 'aub', 'auc', 'aud', 'aue', 'auf', 'aug', 'auh', 'aui', 'auj', 'auk', 'aul', 'aum', 'aun', 'auo', 'aup', 'auq', 'aur', 'aus', 'aut', 'auu', 'auw', 'aux', 'auy', 'auz', 'avb', 'avd', 'avi', 'avk', 'avl', 'avm', 'avn', 'avo', 'avs', 'avt', 'avu', 'avv', 'awa', 'awb', 'awc', 'awd', 'awe', 'awg', 'awh', 'awi', 'awk', 'awm', 'awn', 'awo', 'awr', 'aws', 'awt', 'awu', 'awv', 'aww', 'awx', 'awy', 'axb', 'axe', 'axg', 'axk', 'axl', 'axm', 'axx', 'aya', 'ayb', 'ayc', 'ayd', 'aye', 'ayg', 'ayh', 'ayi', 'ayk', 'ayl', 'ayn', 'ayo', 'ayp', 'ayq', 'ayr', 'ays', 'ayt', 'ayu', 'ayx', 'ayy', 'ayz', 'aza', 'azb', 'azc', 'azd', 'azg', 'azj', 'azm', 'azn', 'azo', 'azt', 'azz', 'baa', 'bab', 'bac', 'bad', 'bae', 'baf', 'bag', 'bah', 'bai', 'baj', 'bal', 'ban', 'bao', 'bap', 'bar', 'bas', 'bat', 'bau', 'bav', 'baw', 'bax', 'bay', 'baz', 'bba', 'bbb', 'bbc', 'bbd', 'bbe', 'bbf', 'bbg', 'bbh', 'bbi', 'bbj', 'bbk', 'bbl', 'bbm', 'bbn', 'bbo', 'bbp', 'bbq', 'bbr', 'bbs', 'bbt', 'bbu', 'bbv', 'bbw', 'bbx', 'bby', 'bbz', 'bca', 'bcb', 'bcc', 'bcd', 'bce', 'bcf', 'bcg', 'bch', 'bci', 'bcj', 'bck', 'bcl', 'bcm', 'bcn', 'bco', 'bcp', 'bcq', 'bcr', 'bcs', 'bct', 'bcu', 'bcv', 'bcw', 'bcy', 'bcz', 'bda', 'bdb', 'bdc', 'bdd', 'bde', 'bdf', 'bdg', 'bdh', 'bdi', 'bdj', 'bdk', 'bdl', 'bdm', 'bdn', 'bdo', 'bdp', 'bdq', 'bdr', 'bds', 'bdt', 'bdu', 'bdv', 'bdw', 'bdx', 'bdy', 'bdz', 'bea', 'beb', 'bec', 'bed', 'bee', 'bef', 'beg', 'beh', 'bei', 'bej', 'bek', 'bem', 'beo', 'bep', 'beq', 'ber', 'bes', 'bet', 'beu', 'bev', 'bew', 'bex', 'bey', 'bez', 'bfa', 'bfb', 'bfc', 'bfd', 'bfe', 'bff', 'bfg', 'bfh', 'bfi', 'bfj', 'bfk', 'bfl', 'bfm', 'bfn', 'bfo', 'bfp', 'bfq', 'bfr', 'bfs', 'bft', 'bfu', 'bfw', 'bfx', 'bfy', 'bfz', 'bga', 'bgb', 'bgc', 'bgd', 'bge', 'bgf', 'bgg', 'bgi', 'bgj', 'bgk', 'bgl', 'bgm', 'bgn', 'bgo', 'bgp', 'bgq', 'bgr', 'bgs', 'bgt', 'bgu', 'bgv', 'bgw', 'bgx', 'bgy', 'bgz', 'bha', 'bhb', 'bhc', 'bhd', 'bhe', 'bhf', 'bhg', 'bhh', 'bhi', 'bhj', 'bhk', 'bhl', 'bhm', 'bhn', 'bho', 'bhp', 'bhq', 'bhr', 'bhs', 'bht', 'bhu', 'bhv', 'bhw', 'bhx', 'bhy', 'bhz', 'bia', 'bib', 'bic', 'bid', 'bie', 'bif', 'big', 'bij', 'bik', 'bil', 'bim', 'bin', 'bio', 'bip', 'biq', 'bir', 'bit', 'biu', 'biv', 'biw', 'bix', 'biy', 'biz', 'bja', 'bjb', 'bjc', 'bjd', 'bje', 'bjf', 'bjg', 'bjh', 'bji', 'bjj', 'bjk', 'bjl', 'bjm', 'bjn', 'bjo', 'bjp', 'bjq', 'bjr', 'bjs', 'bjt', 'bju', 'bjv', 'bjw', 'bjx', 'bjy', 'bjz', 'bka', 'bkb', 'bkc', 'bkd', 'bkf', 'bkg', 'bkh', 'bki', 'bkj', 'bkk', 'bkl', 'bkm', 'bkn', 'bko', 'bkp', 'bkq', 'bkr', 'bks', 'bkt', 'bku', 'bkv', 'bkw', 'bkx', 'bky', 'bkz', 'bla', 'blb', 'blc', 'bld', 'ble', 'blf', 'blg', 'blh', 'bli', 'blj', 'blk', 'bll', 'blm', 'bln', 'blo', 'blp', 'blq', 'blr', 'bls', 'blt', 'blv', 'blw', 'blx', 'bly', 'blz', 'bma', 'bmb', 'bmc', 'bmd', 'bme', 'bmf', 'bmg', 'bmh', 'bmi', 'bmj', 'bmk', 'bml', 'bmm', 'bmn', 'bmo', 'bmp', 'bmq', 'bmr', 'bms', 'bmt', 'bmu', 'bmv', 'bmw', 'bmx', 'bmy', 'bmz', 'bna', 'bnb', 'bnc', 'bnd', 'bne', 'bnf', 'bng', 'bni', 'bnj', 'bnk', 'bnl', 'bnm', 'bnn', 'bno', 'bnp', 'bnq', 'bnr', 'bns', 'bnt', 'bnu', 'bnv', 'bnw', 'bnx', 'bny', 'bnz', 'boa', 'bob', 'boe', 'bof', 'bog', 'boh', 'boi', 'boj', 'bok', 'bol', 'bom', 'bon', 'boo', 'bop', 'boq', 'bor', 'bot', 'bou', 'bov', 'bow', 'box', 'boy', 'boz', 'bpa', 'bpb', 'bpd', 'bpg', 'bph', 'bpi', 'bpj', 'bpk', 'bpl', 'bpm', 'bpn', 'bpo', 'bpp', 'bpq', 'bpr', 'bps', 'bpt', 'bpu', 'bpv', 'bpw', 'bpx', 'bpy', 'bpz', 'bqa', 'bqb', 'bqc', 'bqd', 'bqf', 'bqg', 'bqh', 'bqi', 'bqj', 'bqk', 'bql', 'bqm', 'bqn', 'bqo', 'bqp', 'bqq', 'bqr', 'bqs', 'bqt', 'bqu', 'bqv', 'bqw', 'bqx', 'bqy', 'bqz', 'bra', 'brb', 'brc', 'brd', 'brf', 'brg', 'brh', 'bri', 'brj', 'brk', 'brl', 'brm', 'brn', 'bro', 'brp', 'brq', 'brr', 'brs', 'brt', 'bru', 'brv', 'brw', 'brx', 'bry', 'brz', 'bsa', 'bsb', 'bsc', 'bse', 'bsf', 'bsg', 'bsh', 'bsi', 'bsj', 'bsk', 'bsl', 'bsm', 'bsn', 'bso', 'bsp', 'bsq', 'bsr', 'bss', 'bst', 'bsu', 'bsv', 'bsw', 'bsx', 'bsy', 'bta', 'btb', 'btc', 'btd', 'bte', 'btf', 'btg', 'bth', 'bti', 'btj', 'btk', 'btl', 'btm', 'btn', 'bto', 'btp', 'btq', 'btr', 'bts', 'btt', 'btu', 'btv', 'btw', 'btx', 'bty', 'btz', 'bua', 'bub', 'buc', 'bud', 'bue', 'buf', 'bug', 'buh', 'bui', 'buj', 'buk', 'bum', 'bun', 'buo', 'bup', 'buq', 'bus', 'but', 'buu', 'buv', 'buw', 'bux', 'buy', 'buz', 'bva', 'bvb', 'bvc', 'bvd', 'bve', 'bvf', 'bvg', 'bvh', 'bvi', 'bvj', 'bvk', 'bvl', 'bvm', 'bvn', 'bvo', 'bvp', 'bvq', 'bvr', 'bvt', 'bvu', 'bvv', 'bvw', 'bvx', 'bvy', 'bvz', 'bwa', 'bwb', 'bwc', 'bwd', 'bwe', 'bwf', 'bwg', 'bwh', 'bwi', 'bwj', 'bwk', 'bwl', 'bwm', 'bwn', 'bwo', 'bwp', 'bwq', 'bwr', 'bws', 'bwt', 'bwu', 'bww', 'bwx', 'bwy', 'bwz', 'bxa', 'bxb', 'bxc', 'bxd', 'bxe', 'bxf', 'bxg', 'bxh', 'bxi', 'bxj', 'bxk', 'bxl', 'bxm', 'bxn', 'bxo', 'bxp', 'bxq', 'bxr', 'bxs', 'bxu', 'bxv', 'bxw', 'bxx', 'bxz', 'bya', 'byb', 'byc', 'byd', 'bye', 'byf', 'byg', 'byh', 'byi', 'byj', 'byk', 'byl', 'bym', 'byn', 'byo', 'byp', 'byq', 'byr', 'bys', 'byt', 'byv', 'byw', 'byx', 'byy', 'byz', 'bza', 'bzb', 'bzc', 'bzd', 'bze', 'bzf', 'bzg', 'bzh', 'bzi', 'bzj', 'bzk', 'bzl', 'bzm', 'bzn', 'bzo', 'bzp', 'bzq', 'bzr', 'bzs', 'bzt', 'bzu', 'bzv', 'bzw', 'bzx', 'bzy', 'bzz', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'can', 'cao', 'cap', 'caq', 'car', 'cas', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cba', 'cbb', 'cbc', 'cbd', 'cbe', 'cbg', 'cbh', 'cbi', 'cbj', 'cbk', 'cbl', 'cbn', 'cbo', 'cbq', 'cbr', 'cbs', 'cbt', 'cbu', 'cbv', 'cbw', 'cby', 'cca', 'ccc', 'ccd', 'cce', 'ccg', 'cch', 'ccj', 'ccl', 'ccm', 'ccn', 'cco', 'ccp', 'ccq', 'ccr', 'ccs', 'cda', 'cdc', 'cdd', 'cde', 'cdf', 'cdg', 'cdh', 'cdi', 'cdj', 'cdm', 'cdn', 'cdo', 'cdr', 'cds', 'cdy', 'cdz', 'cea', 'ceb', 'ceg', 'cek', 'cel', 'cen', 'cet', 'cfa', 'cfd', 'cfg', 'cfm', 'cga', 'cgc', 'cgg', 'cgk', 'chb', 'chc', 'chd', 'chf', 'chg', 'chh', 'chj', 'chk', 'chl', 'chm', 'chn', 'cho', 'chp', 'chq', 'chr', 'cht', 'chw', 'chx', 'chy', 'chz', 'cia', 'cib', 'cic', 'cid', 'cie', 'cih', 'cik', 'cim', 'cin', 'cip', 'cir', 'ciw', 'ciy', 'cja', 'cje', 'cjh', 'cji', 'cjk', 'cjm', 'cjn', 'cjo', 'cjp', 'cjr', 'cjs', 'cjv', 'cjy', 'cka', 'ckb', 'ckh', 'ckl', 'ckn', 'cko', 'ckq', 'ckr', 'cks', 'ckt', 'cku', 'ckv', 'ckx', 'cky', 'ckz', 'cla', 'clc', 'cld', 'cle', 'clh', 'cli', 'clj', 'clk', 'cll', 'clm', 'clo', 'clt', 'clu', 'clw', 'cly', 'cma', 'cmc', 'cme', 'cmg', 'cmi', 'cmk', 'cml', 'cmm', 'cmn', 'cmo', 'cmr', 'cms', 'cmt', 'cna', 'cnb', 'cnc', 'cng', 'cnh', 'cni', 'cnk', 'cnl', 'cno', 'cnr', 'cns', 'cnt', 'cnu', 'cnw', 'cnx', 'coa', 'cob', 'coc', 'cod', 'coe', 'cof', 'cog', 'coh', 'coj', 'cok', 'col', 'com', 'con', 'coo', 'cop', 'coq', 'cot', 'cou', 'cov', 'cow', 'cox', 'coy', 'coz', 'cpa', 'cpb', 'cpc', 'cpe', 'cpf', 'cpg', 'cpi', 'cpn', 'cpo', 'cpp', 'cps', 'cpu', 'cpx', 'cpy', 'cqd', 'cqu', 'cra', 'crb', 'crc', 'crd', 'crf', 'crg', 'crh', 'cri', 'crj', 'crk', 'crl', 'crm', 'crn', 'cro', 'crp', 'crq', 'crr', 'crs', 'crt', 'crv', 'crw', 'crx', 'cry', 'crz', 'csa', 'csb', 'csc', 'csd', 'cse', 'csf', 'csg', 'csh', 'csi', 'csj', 'csk', 'csl', 'csm', 'csn', 'cso', 'csq', 'csr', 'css', 'cst', 'csu', 'csv', 'csw', 'csy', 'csz', 'cta', 'ctc', 'ctd', 'cte', 'ctg', 'cth', 'ctl', 'ctm', 'ctn', 'cto', 'ctp', 'cts', 'ctt', 'ctu', 'ctz', 'cua', 'cub', 'cuc', 'cug', 'cuh', 'cui', 'cuj', 'cuk', 'cul', 'cum', 'cuo', 'cup', 'cuq', 'cur', 'cus', 'cut', 'cuu', 'cuv', 'cuw', 'cux', 'cuy', 'cvg', 'cvn', 'cwa', 'cwb', 'cwd', 'cwe', 'cwg', 'cwt', 'cya', 'cyb', 'cyo', 'czh', 'czk', 'czn', 'czo', 'czt', 'daa', 'dac', 'dad', 'dae', 'daf', 'dag', 'dah', 'dai', 'daj', 'dak', 'dal', 'dam', 'dao', 'dap', 'daq', 'dar', 'das', 'dau', 'dav', 'daw', 'dax', 'day', 'daz', 'dba', 'dbb', 'dbd', 'dbe', 'dbf', 'dbg', 'dbi', 'dbj', 'dbl', 'dbm', 'dbn', 'dbo', 'dbp', 'dbq', 'dbr', 'dbt', 'dbu', 'dbv', 'dbw', 'dby', 'dcc', 'dcr', 'dda', 'ddd', 'dde', 'ddg', 'ddi', 'ddj', 'ddn', 'ddo', 'ddr', 'dds', 'ddw', 'dec', 'ded', 'dee', 'def', 'deg', 'deh', 'dei', 'dek', 'del', 'dem', 'den', 'dep', 'deq', 'der', 'des', 'dev', 'dez', 'dga', 'dgb', 'dgc', 'dgd', 'dge', 'dgg', 'dgh', 'dgi', 'dgk', 'dgl', 'dgn', 'dgo', 'dgr', 'dgs', 'dgt', 'dgu', 'dgw', 'dgx', 'dgz', 'dha', 'dhd', 'dhg', 'dhi', 'dhl', 'dhm', 'dhn', 'dho', 'dhr', 'dhs', 'dhu', 'dhv', 'dhw', 'dhx', 'dia', 'dib', 'dic', 'did', 'dif', 'dig', 'dih', 'dii', 'dij', 'dik', 'dil', 'dim', 'din', 'dio', 'dip', 'diq', 'dir', 'dis', 'dit', 'diu', 'diw', 'dix', 'diy', 'diz', 'dja', 'djb', 'djc', 'djd', 'dje', 'djf', 'dji', 'djj', 'djk', 'djl', 'djm', 'djn', 'djo', 'djr', 'dju', 'djw', 'dka', 'dkk', 'dkl', 'dkr', 'dks', 'dkx', 'dlg', 'dlk', 'dlm', 'dln', 'dma', 'dmb', 'dmc', 'dmd', 'dme', 'dmg', 'dmk', 'dml', 'dmm', 'dmn', 'dmo', 'dmr', 'dms', 'dmu', 'dmv', 'dmw', 'dmx', 'dmy', 'dna', 'dnd', 'dne', 'dng', 'dni', 'dnj', 'dnk', 'dnn', 'dnr', 'dnt', 'dnu', 'dnv', 'dnw', 'dny', 'doa', 'dob', 'doc', 'doe', 'dof', 'doh', 'doi', 'dok', 'dol', 'don', 'doo', 'dop', 'doq', 'dor', 'dos', 'dot', 'dov', 'dow', 'dox', 'doy', 'doz', 'dpp', 'dra', 'drb', 'drc', 'drd', 'dre', 'drg', 'drh', 'dri', 'drl', 'drn', 'dro', 'drq', 'drr', 'drs', 'drt', 'dru', 'drw', 'dry', 'dsb', 'dse', 'dsh', 'dsi', 'dsl', 'dsn', 'dso', 'dsq', 'dta', 'dtb', 'dtd', 'dth', 'dti', 'dtk', 'dtm', 'dtn', 'dto', 'dtp', 'dtr', 'dts', 'dtt', 'dtu', 'dty', 'dua', 'dub', 'duc', 'dud', 'due', 'duf', 'dug', 'duh', 'dui', 'duj', 'duk', 'dul', 'dum', 'dun', 'duo', 'dup', 'duq', 'dur', 'dus', 'duu', 'duv', 'duw', 'dux', 'duy', 'duz', 'dva', 'dwa', 'dwl', 'dwr', 'dws', 'dwu', 'dww', 'dwy', 'dya', 'dyb', 'dyd', 'dyg', 'dyi', 'dym', 'dyn', 'dyo', 'dyu', 'dyy', 'dza', 'dzd', 'dze', 'dzg', 'dzl', 'dzn', 'eaa', 'ebg', 'ebk', 'ebo', 'ebr', 'ebu', 'ecr', 'ecs', 'ecy', 'eee', 'efa', 'efe', 'efi', 'ega', 'egl', 'ego', 'egx', 'egy', 'ehu', 'eip', 'eit', 'eiv', 'eja', 'eka', 'ekc', 'eke', 'ekg', 'eki', 'ekk', 'ekl', 'ekm', 'eko', 'ekp', 'ekr', 'eky', 'ele', 'elh', 'eli', 'elk', 'elm', 'elo', 'elp', 'elu', 'elx', 'ema', 'emb', 'eme', 'emg', 'emi', 'emk', 'emm', 'emn', 'emo', 'emp', 'ems', 'emu', 'emw', 'emx', 'emy', 'ena', 'enb', 'enc', 'end', 'enf', 'enh', 'enl', 'enm', 'enn', 'eno', 'enq', 'enr', 'enu', 'env', 'enw', 'enx', 'eot', 'epi', 'era', 'erg', 'erh', 'eri', 'erk', 'ero', 'err', 'ers', 'ert', 'erw', 'ese', 'esg', 'esh', 'esi', 'esk', 'esl', 'esm', 'esn', 'eso', 'esq', 'ess', 'esu', 'esx', 'esy', 'etb', 'etc', 'eth', 'etn', 'eto', 'etr', 'ets', 'ett', 'etu', 'etx', 'etz', 'euq', 'eve', 'evh', 'evn', 'ewo', 'ext', 'eya', 'eyo', 'eza', 'eze', 'faa', 'fab', 'fad', 'faf', 'fag', 'fah', 'fai', 'faj', 'fak', 'fal', 'fam', 'fan', 'fap', 'far', 'fat', 'fau', 'fax', 'fay', 'faz', 'fbl', 'fcs', 'fer', 'ffi', 'ffm', 'fgr', 'fia', 'fie', 'fil', 'fip', 'fir', 'fit', 'fiu', 'fiw', 'fkk', 'fkv', 'fla', 'flh', 'fli', 'fll', 'fln', 'flr', 'fly', 'fmp', 'fmu', 'fnb', 'fng', 'fni', 'fod', 'foi', 'fom', 'fon', 'for', 'fos', 'fox', 'fpe', 'fqs', 'frc', 'frd', 'frk', 'frm', 'fro', 'frp', 'frq', 'frr', 'frs', 'frt', 'fse', 'fsl', 'fss', 'fub', 'fuc', 'fud', 'fue', 'fuf', 'fuh', 'fui', 'fuj', 'fum', 'fun', 'fuq', 'fur', 'fut', 'fuu', 'fuv', 'fuy', 'fvr', 'fwa', 'fwe', 'gaa', 'gab', 'gac', 'gad', 'gae', 'gaf', 'gag', 'gah', 'gai', 'gaj', 'gak', 'gal', 'gam', 'gan', 'gao', 'gap', 'gaq', 'gar', 'gas', 'gat', 'gau', 'gav', 'gaw', 'gax', 'gay', 'gaz', 'gba', 'gbb', 'gbc', 'gbd', 'gbe', 'gbf', 'gbg', 'gbh', 'gbi', 'gbj', 'gbk', 'gbl', 'gbm', 'gbn', 'gbo', 'gbp', 'gbq', 'gbr', 'gbs', 'gbu', 'gbv', 'gbw', 'gbx', 'gby', 'gbz', 'gcc', 'gcd', 'gce', 'gcf', 'gcl', 'gcn', 'gcr', 'gct', 'gda', 'gdb', 'gdc', 'gdd', 'gde', 'gdf', 'gdg', 'gdh', 'gdi', 'gdj', 'gdk', 'gdl', 'gdm', 'gdn', 'gdo', 'gdq', 'gdr', 'gds', 'gdt', 'gdu', 'gdx', 'gea', 'geb', 'gec', 'ged', 'geg', 'geh', 'gei', 'gej', 'gek', 'gel', 'gem', 'geq', 'ges', 'gev', 'gew', 'gex', 'gey', 'gez', 'gfk', 'gft', 'gfx', 'gga', 'ggb', 'ggd', 'gge', 'ggg', 'ggk', 'ggl', 'ggn', 'ggo', 'ggr', 'ggt', 'ggu', 'ggw', 'gha', 'ghc', 'ghe', 'ghh', 'ghk', 'ghl', 'ghn', 'gho', 'ghr', 'ghs', 'ght', 'gia', 'gib', 'gic', 'gid', 'gie', 'gig', 'gih', 'gil', 'gim', 'gin', 'gio', 'gip', 'giq', 'gir', 'gis', 'git', 'giu', 'giw', 'gix', 'giy', 'giz', 'gji', 'gjk', 'gjm', 'gjn', 'gjr', 'gju', 'gka', 'gkd', 'gke', 'gkn', 'gko', 'gkp', 'gku', 'glc', 'gld', 'glh', 'gli', 'glj', 'glk', 'gll', 'glo', 'glr', 'glu', 'glw', 'gly', 'gma', 'gmb', 'gmd', 'gme', 'gmg', 'gmh', 'gml', 'gmm', 'gmn', 'gmq', 'gmu', 'gmv', 'gmw', 'gmx', 'gmy', 'gmz', 'gna', 'gnb', 'gnc', 'gnd', 'gne', 'gng', 'gnh', 'gni', 'gnj', 'gnk', 'gnl', 'gnm', 'gnn', 'gno', 'gnq', 'gnr', 'gnt', 'gnu', 'gnw', 'gnz', 'goa', 'gob', 'goc', 'god', 'goe', 'gof', 'gog', 'goh', 'goi', 'goj', 'gok', 'gol', 'gom', 'gon', 'goo', 'gop', 'goq', 'gor', 'gos', 'got', 'gou', 'gow', 'gox', 'goy', 'goz', 'gpa', 'gpe', 'gpn', 'gqa', 'gqi', 'gqn', 'gqr', 'gqu', 'gra', 'grb', 'grc', 'grd', 'grg', 'grh', 'gri', 'grj', 'grk', 'grm', 'gro', 'grq', 'grr', 'grs', 'grt', 'gru', 'grv', 'grw', 'grx', 'gry', 'grz', 'gse', 'gsg', 'gsl', 'gsm', 'gsn', 'gso', 'gsp', 'gss', 'gsw', 'gta', 'gti', 'gtu', 'gua', 'gub', 'guc', 'gud', 'gue', 'guf', 'gug', 'guh', 'gui', 'guk', 'gul', 'gum', 'gun', 'guo', 'gup', 'guq', 'gur', 'gus', 'gut', 'guu', 'guv', 'guw', 'gux', 'guz', 'gva', 'gvc', 'gve', 'gvf', 'gvj', 'gvl', 'gvm', 'gvn', 'gvo', 'gvp', 'gvr', 'gvs', 'gvy', 'gwa', 'gwb', 'gwc', 'gwd', 'gwe', 'gwf', 'gwg', 'gwi', 'gwj', 'gwm', 'gwn', 'gwr', 'gwt', 'gwu', 'gww', 'gwx', 'gxx', 'gya', 'gyb', 'gyd', 'gye', 'gyf', 'gyg', 'gyi', 'gyl', 'gym', 'gyn', 'gyo', 'gyr', 'gyy', 'gza', 'gzi', 'gzn', 'haa', 'hab', 'hac', 'had', 'hae', 'haf', 'hag', 'hah', 'hai', 'haj', 'hak', 'hal', 'ham', 'han', 'hao', 'hap', 'haq', 'har', 'has', 'hav', 'haw', 'hax', 'hay', 'haz', 'hba', 'hbb', 'hbn', 'hbo', 'hbu', 'hca', 'hch', 'hdn', 'hds', 'hdy', 'hea', 'hed', 'heg', 'heh', 'hei', 'hem', 'hgm', 'hgw', 'hhi', 'hhr', 'hhy', 'hia', 'hib', 'hid', 'hif', 'hig', 'hih', 'hii', 'hij', 'hik', 'hil', 'him', 'hio', 'hir', 'hit', 'hiw', 'hix', 'hji', 'hka', 'hke', 'hkk', 'hkn', 'hks', 'hla', 'hlb', 'hld', 'hle', 'hlt', 'hlu', 'hma', 'hmb', 'hmc', 'hmd', 'hme', 'hmf', 'hmg', 'hmh', 'hmi', 'hmj', 'hmk', 'hml', 'hmm', 'hmn', 'hmp', 'hmq', 'hmr', 'hms', 'hmt', 'hmu', 'hmv', 'hmw', 'hmx', 'hmy', 'hmz', 'hna', 'hnd', 'hne', 'hnh', 'hni', 'hnj', 'hnn', 'hno', 'hns', 'hnu', 'hoa', 'hob', 'hoc', 'hod', 'hoe', 'hoh', 'hoi', 'hoj', 'hok', 'hol', 'hom', 'hoo', 'hop', 'hor', 'hos', 'hot', 'hov', 'how', 'hoy', 'hoz', 'hpo', 'hps', 'hra', 'hrc', 'hre', 'hrk', 'hrm', 'hro', 'hrp', 'hrr', 'hrt', 'hru', 'hrw', 'hrx', 'hrz', 'hsb', 'hsh', 'hsl', 'hsn', 'hss', 'hti', 'hto', 'hts', 'htu', 'htx', 'hub', 'huc', 'hud', 'hue', 'huf', 'hug', 'huh', 'hui', 'huj', 'huk', 'hul', 'hum', 'huo', 'hup', 'huq', 'hur', 'hus', 'hut', 'huu', 'huv', 'huw', 'hux', 'huy', 'huz', 'hvc', 'hve', 'hvk', 'hvn', 'hvv', 'hwa', 'hwc', 'hwo', 'hya', 'hyw', 'hyx', 'iai', 'ian', 'iap', 'iar', 'iba', 'ibb', 'ibd', 'ibe', 'ibg', 'ibh', 'ibi', 'ibl', 'ibm', 'ibn', 'ibr', 'ibu', 'iby', 'ica', 'ich', 'icl', 'icr', 'ida', 'idb', 'idc', 'idd', 'ide', 'idi', 'idr', 'ids', 'idt', 'idu', 'ifa', 'ifb', 'ife', 'iff', 'ifk', 'ifm', 'ifu', 'ify', 'igb', 'ige', 'igg', 'igl', 'igm', 'ign', 'igo', 'igs', 'igw', 'ihb', 'ihi', 'ihp', 'ihw', 'iin', 'iir', 'ijc', 'ije', 'ijj', 'ijn', 'ijo', 'ijs', 'ike', 'iki', 'ikk', 'ikl', 'iko', 'ikp', 'ikr', 'iks', 'ikt', 'ikv', 'ikw', 'ikx', 'ikz', 'ila', 'ilb', 'ilg', 'ili', 'ilk', 'ill', 'ilm', 'ilo', 'ilp', 'ils', 'ilu', 'ilv', 'ilw', 'ima', 'ime', 'imi', 'iml', 'imn', 'imo', 'imr', 'ims', 'imy', 'inb', 'inc', 'ine', 'ing', 'inh', 'inj', 'inl', 'inm', 'inn', 'ino', 'inp', 'ins', 'int', 'inz', 'ior', 'iou', 'iow', 'ipi', 'ipo', 'iqu', 'iqw', 'ira', 'ire', 'irh', 'iri', 'irk', 'irn', 'iro', 'irr', 'iru', 'irx', 'iry', 'isa', 'isc', 'isd', 'ise', 'isg', 'ish', 'isi', 'isk', 'ism', 'isn', 'iso', 'isr', 'ist', 'isu', 'itb', 'itc', 'itd', 'ite', 'iti', 'itk', 'itl', 'itm', 'ito', 'itr', 'its', 'itt', 'itv', 'itw', 'itx', 'ity', 'itz', 'ium', 'ivb', 'ivv', 'iwk', 'iwm', 'iwo', 'iws', 'ixc', 'ixl', 'iya', 'iyo', 'iyx', 'izh', 'izi', 'izr', 'izz', 'jaa', 'jab', 'jac', 'jad', 'jae', 'jaf', 'jah', 'jaj', 'jak', 'jal', 'jam', 'jan', 'jao', 'jaq', 'jar', 'jas', 'jat', 'jau', 'jax', 'jay', 'jaz', 'jbe', 'jbi', 'jbj', 'jbk', 'jbn', 'jbo', 'jbr', 'jbt', 'jbu', 'jbw', 'jcs', 'jct', 'jda', 'jdg', 'jdt', 'jeb', 'jee', 'jeg', 'jeh', 'jei', 'jek', 'jel', 'jen', 'jer', 'jet', 'jeu', 'jgb', 'jge', 'jgk', 'jgo', 'jhi', 'jhs', 'jia', 'jib', 'jic', 'jid', 'jie', 'jig', 'jih', 'jii', 'jil', 'jim', 'jio', 'jiq', 'jit', 'jiu', 'jiv', 'jiy', 'jje', 'jjr', 'jka', 'jkm', 'jko', 'jkp', 'jkr', 'jku', 'jle', 'jls', 'jma', 'jmb', 'jmc', 'jmd', 'jmi', 'jml', 'jmn', 'jmr', 'jms', 'jmw', 'jmx', 'jna', 'jnd', 'jng', 'jni', 'jnj', 'jnl', 'jns', 'job', 'jod', 'jog', 'jor', 'jos', 'jow', 'jpa', 'jpr', 'jpx', 'jqr', 'jra', 'jrb', 'jrr', 'jrt', 'jru', 'jsl', 'jua', 'jub', 'juc', 'jud', 'juh', 'jui', 'juk', 'jul', 'jum', 'jun', 'juo', 'jup', 'jur', 'jus', 'jut', 'juu', 'juw', 'juy', 'jvd', 'jvn', 'jwi', 'jya', 'jye', 'jyy', 'kaa', 'kab', 'kac', 'kad', 'kae', 'kaf', 'kag', 'kah', 'kai', 'kaj', 'kak', 'kam', 'kao', 'kap', 'kaq', 'kar', 'kav', 'kaw', 'kax', 'kay', 'kba', 'kbb', 'kbc', 'kbd', 'kbe', 'kbf', 'kbg', 'kbh', 'kbi', 'kbj', 'kbk', 'kbl', 'kbm', 'kbn', 'kbo', 'kbp', 'kbq', 'kbr', 'kbs', 'kbt', 'kbu', 'kbv', 'kbw', 'kbx', 'kby', 'kbz', 'kca', 'kcb', 'kcc', 'kcd', 'kce', 'kcf', 'kcg', 'kch', 'kci', 'kcj', 'kck', 'kcl', 'kcm', 'kcn', 'kco', 'kcp', 'kcq', 'kcr', 'kcs', 'kct', 'kcu', 'kcv', 'kcw', 'kcx', 'kcy', 'kcz', 'kda', 'kdc', 'kdd', 'kde', 'kdf', 'kdg', 'kdh', 'kdi', 'kdj', 'kdk', 'kdl', 'kdm', 'kdn', 'kdo', 'kdp', 'kdq', 'kdr', 'kdt', 'kdu', 'kdv', 'kdw', 'kdx', 'kdy', 'kdz', 'kea', 'keb', 'kec', 'ked', 'kee', 'kef', 'keg', 'keh', 'kei', 'kej', 'kek', 'kel', 'kem', 'ken', 'keo', 'kep', 'keq', 'ker', 'kes', 'ket', 'keu', 'kev', 'kew', 'kex', 'key', 'kez', 'kfa', 'kfb', 'kfc', 'kfd', 'kfe', 'kff', 'kfg', 'kfh', 'kfi', 'kfj', 'kfk', 'kfl', 'kfm', 'kfn', 'kfo', 'kfp', 'kfq', 'kfr', 'kfs', 'kft', 'kfu', 'kfv', 'kfw', 'kfx', 'kfy', 'kfz', 'kga', 'kgb', 'kgc', 'kgd', 'kge', 'kgf', 'kgg', 'kgh', 'kgi', 'kgj', 'kgk', 'kgl', 'kgm', 'kgn', 'kgo', 'kgp', 'kgq', 'kgr', 'kgs', 'kgt', 'kgu', 'kgv', 'kgw', 'kgx', 'kgy', 'kha', 'khb', 'khc', 'khd', 'khe', 'khf', 'khg', 'khh', 'khi', 'khj', 'khk', 'khl', 'khn', 'kho', 'khp', 'khq', 'khr', 'khs', 'kht', 'khu', 'khv', 'khw', 'khx', 'khy', 'khz', 'kia', 'kib', 'kic', 'kid', 'kie', 'kif', 'kig', 'kih', 'kii', 'kij', 'kil', 'kim', 'kio', 'kip', 'kiq', 'kis', 'kit', 'kiu', 'kiv', 'kiw', 'kix', 'kiy', 'kiz', 'kja', 'kjb', 'kjc', 'kjd', 'kje', 'kjf', 'kjg', 'kjh', 'kji', 'kjj', 'kjk', 'kjl', 'kjm', 'kjn', 'kjo', 'kjp', 'kjq', 'kjr', 'kjs', 'kjt', 'kju', 'kjv', 'kjx', 'kjy', 'kjz', 'kka', 'kkb', 'kkc', 'kkd', 'kke', 'kkf', 'kkg', 'kkh', 'kki', 'kkj', 'kkk', 'kkl', 'kkm', 'kkn', 'kko', 'kkp', 'kkq', 'kkr', 'kks', 'kkt', 'kku', 'kkv', 'kkw', 'kkx', 'kky', 'kkz', 'kla', 'klb', 'klc', 'kld', 'kle', 'klf', 'klg', 'klh', 'kli', 'klj', 'klk', 'kll', 'klm', 'kln', 'klo', 'klp', 'klq', 'klr', 'kls', 'klt', 'klu', 'klv', 'klw', 'klx', 'kly', 'klz', 'kma', 'kmb', 'kmc', 'kmd', 'kme', 'kmf', 'kmg', 'kmh', 'kmi', 'kmj', 'kmk', 'kml', 'kmm', 'kmn', 'kmo', 'kmp', 'kmq', 'kmr', 'kms', 'kmt', 'kmu', 'kmv', 'kmw', 'kmx', 'kmy', 'kmz', 'kna', 'knb', 'knc', 'knd', 'kne', 'knf', 'kng', 'kni', 'knj', 'knk', 'knl', 'knm', 'knn', 'kno', 'knp', 'knq', 'knr', 'kns', 'knt', 'knu', 'knv', 'knw', 'knx', 'kny', 'knz', 'koa', 'koc', 'kod', 'koe', 'kof', 'kog', 'koh', 'koi', 'koj', 'kok', 'kol', 'koo', 'kop', 'koq', 'kos', 'kot', 'kou', 'kov', 'kow', 'kox', 'koy', 'koz', 'kpa', 'kpb', 'kpc', 'kpd', 'kpe', 'kpf', 'kpg', 'kph', 'kpi', 'kpj', 'kpk', 'kpl', 'kpm', 'kpn', 'kpo', 'kpp', 'kpq', 'kpr', 'kps', 'kpt', 'kpu', 'kpv', 'kpw', 'kpx', 'kpy', 'kpz', 'kqa', 'kqb', 'kqc', 'kqd', 'kqe', 'kqf', 'kqg', 'kqh', 'kqi', 'kqj', 'kqk', 'kql', 'kqm', 'kqn', 'kqo', 'kqp', 'kqq', 'kqr', 'kqs', 'kqt', 'kqu', 'kqv', 'kqw', 'kqx', 'kqy', 'kqz', 'kra', 'krb', 'krc', 'krd', 'kre', 'krf', 'krh', 'kri', 'krj', 'krk', 'krl', 'krm', 'krn', 'kro', 'krp', 'krr', 'krs', 'krt', 'kru', 'krv', 'krw', 'krx', 'kry', 'krz', 'ksa', 'ksb', 'ksc', 'ksd', 'kse', 'ksf', 'ksg', 'ksh', 'ksi', 'ksj', 'ksk', 'ksl', 'ksm', 'ksn', 'kso', 'ksp', 'ksq', 'ksr', 'kss', 'kst', 'ksu', 'ksv', 'ksw', 'ksx', 'ksy', 'ksz', 'kta', 'ktb', 'ktc', 'ktd', 'kte', 'ktf', 'ktg', 'kth', 'kti', 'ktj', 'ktk', 'ktl', 'ktm', 'ktn', 'kto', 'ktp', 'ktq', 'ktr', 'kts', 'ktt', 'ktu', 'ktv', 'ktw', 'ktx', 'kty', 'ktz', 'kub', 'kuc', 'kud', 'kue', 'kuf', 'kug', 'kuh', 'kui', 'kuj', 'kuk', 'kul', 'kum', 'kun', 'kuo', 'kup', 'kuq', 'kus', 'kut', 'kuu', 'kuv', 'kuw', 'kux', 'kuy', 'kuz', 'kva', 'kvb', 'kvc', 'kvd', 'kve', 'kvf', 'kvg', 'kvh', 'kvi', 'kvj', 'kvk', 'kvl', 'kvm', 'kvn', 'kvo', 'kvp', 'kvq', 'kvr', 'kvs', 'kvt', 'kvu', 'kvv', 'kvw', 'kvx', 'kvy', 'kvz', 'kwa', 'kwb', 'kwc', 'kwd', 'kwe', 'kwf', 'kwg', 'kwh', 'kwi', 'kwj', 'kwk', 'kwl', 'kwm', 'kwn', 'kwo', 'kwp', 'kwq', 'kwr', 'kws', 'kwt', 'kwu', 'kwv', 'kww', 'kwx', 'kwy', 'kwz', 'kxa', 'kxb', 'kxc', 'kxd', 'kxe', 'kxf', 'kxh', 'kxi', 'kxj', 'kxk', 'kxl', 'kxm', 'kxn', 'kxo', 'kxp', 'kxq', 'kxr', 'kxs', 'kxt', 'kxu', 'kxv', 'kxw', 'kxx', 'kxy', 'kxz', 'kya', 'kyb', 'kyc', 'kyd', 'kye', 'kyf', 'kyg', 'kyh', 'kyi', 'kyj', 'kyk', 'kyl', 'kym', 'kyn', 'kyo', 'kyp', 'kyq', 'kyr', 'kys', 'kyt', 'kyu', 'kyv', 'kyw', 'kyx', 'kyy', 'kyz', 'kza', 'kzb', 'kzc', 'kzd', 'kze', 'kzf', 'kzg', 'kzh', 'kzi', 'kzj', 'kzk', 'kzl', 'kzm', 'kzn', 'kzo', 'kzp', 'kzq', 'kzr', 'kzs', 'kzt', 'kzu', 'kzv', 'kzw', 'kzx', 'kzy', 'kzz', 'laa', 'lab', 'lac', 'lad', 'lae', 'laf', 'lag', 'lah', 'lai', 'laj', 'lak', 'lal', 'lam', 'lan', 'lap', 'laq', 'lar', 'las', 'lau', 'law', 'lax', 'lay', 'laz', 'lba', 'lbb', 'lbc', 'lbe', 'lbf', 'lbg', 'lbi', 'lbj', 'lbk', 'lbl', 'lbm', 'lbn', 'lbo', 'lbq', 'lbr', 'lbs', 'lbt', 'lbu', 'lbv', 'lbw', 'lbx', 'lby', 'lbz', 'lcc', 'lcd', 'lce', 'lcf', 'lch', 'lcl', 'lcm', 'lcp', 'lcq', 'lcs', 'lda', 'ldb', 'ldd', 'ldg', 'ldh', 'ldi', 'ldj', 'ldk', 'ldl', 'ldm', 'ldn', 'ldo', 'ldp', 'ldq', 'lea', 'leb', 'lec', 'led', 'lee', 'lef', 'leg', 'leh', 'lei', 'lej', 'lek', 'lel', 'lem', 'len', 'leo', 'lep', 'leq', 'ler', 'les', 'let', 'leu', 'lev', 'lew', 'lex', 'ley', 'lez', 'lfa', 'lfn', 'lga', 'lgb', 'lgg', 'lgh', 'lgi', 'lgk', 'lgl', 'lgm', 'lgn', 'lgq', 'lgr', 'lgt', 'lgu', 'lgz', 'lha', 'lhh', 'lhi', 'lhl', 'lhm', 'lhn', 'lhp', 'lhs', 'lht', 'lhu', 'lia', 'lib', 'lic', 'lid', 'lie', 'lif', 'lig', 'lih', 'lii', 'lij', 'lik', 'lil', 'lio', 'lip', 'liq', 'lir', 'lis', 'liu', 'liv', 'liw', 'lix', 'liy', 'liz', 'lja', 'lje', 'lji', 'ljl', 'ljp', 'ljw', 'ljx', 'lka', 'lkb', 'lkc', 'lkd', 'lke', 'lkh', 'lki', 'lkj', 'lkl', 'lkm', 'lkn', 'lko', 'lkr', 'lks', 'lkt', 'lku', 'lky', 'lla', 'llb', 'llc', 'lld', 'lle', 'llf', 'llg', 'llh', 'lli', 'llj', 'llk', 'lll', 'llm', 'lln', 'llo', 'llp', 'llq', 'lls', 'llu', 'llx', 'lma', 'lmb', 'lmc', 'lmd', 'lme', 'lmf', 'lmg', 'lmh', 'lmi', 'lmj', 'lmk', 'lml', 'lmm', 'lmn', 'lmo', 'lmp', 'lmq', 'lmr', 'lmu', 'lmv', 'lmw', 'lmx', 'lmy', 'lmz', 'lna', 'lnb', 'lnd', 'lng', 'lnh', 'lni', 'lnj', 'lnl', 'lnm', 'lnn', 'lno', 'lns', 'lnu', 'lnw', 'lnz', 'loa', 'lob', 'loc', 'loe', 'lof', 'log', 'loh', 'loi', 'loj', 'lok', 'lol', 'lom', 'lon', 'loo', 'lop', 'loq', 'lor', 'los', 'lot', 'lou', 'lov', 'low', 'lox', 'loy', 'loz', 'lpa', 'lpe', 'lpn', 'lpo', 'lpx', 'lra', 'lrc', 'lre', 'lrg', 'lri', 'lrk', 'lrl', 'lrm', 'lrn', 'lro', 'lrr', 'lrt', 'lrv', 'lrz', 'lsa', 'lsd', 'lse', 'lsg', 'lsh', 'lsi', 'lsl', 'lsm', 'lso', 'lsp', 'lsr', 'lss', 'lst', 'lsy', 'ltc', 'ltg', 'lth', 'lti', 'ltn', 'lto', 'lts', 'ltu', 'lua', 'luc', 'lud', 'lue', 'luf', 'lui', 'luj', 'luk', 'lul', 'lum', 'lun', 'luo', 'lup', 'luq', 'lur', 'lus', 'lut', 'luu', 'luv', 'luw', 'luy', 'luz', 'lva', 'lvk', 'lvs', 'lvu', 'lwa', 'lwe', 'lwg', 'lwh', 'lwl', 'lwm', 'lwo', 'lws', 'lwt', 'lwu', 'lww', 'lya', 'lyg', 'lyn', 'lzh', 'lzl', 'lzn', 'lzz', 'maa', 'mab', 'mad', 'mae', 'maf', 'mag', 'mai', 'maj', 'mak', 'mam', 'man', 'map', 'maq', 'mas', 'mat', 'mau', 'mav', 'maw', 'max', 'maz', 'mba', 'mbb', 'mbc', 'mbd', 'mbe', 'mbf', 'mbh', 'mbi', 'mbj', 'mbk', 'mbl', 'mbm', 'mbn', 'mbo', 'mbp', 'mbq', 'mbr', 'mbs', 'mbt', 'mbu', 'mbv', 'mbw', 'mbx', 'mby', 'mbz', 'mca', 'mcb', 'mcc', 'mcd', 'mce', 'mcf', 'mcg', 'mch', 'mci', 'mcj', 'mck', 'mcl', 'mcm', 'mcn', 'mco', 'mcp', 'mcq', 'mcr', 'mcs', 'mct', 'mcu', 'mcv', 'mcw', 'mcx', 'mcy', 'mcz', 'mda', 'mdb', 'mdc', 'mdd', 'mde', 'mdf', 'mdg', 'mdh', 'mdi', 'mdj', 'mdk', 'mdl', 'mdm', 'mdn', 'mdp', 'mdq', 'mdr', 'mds', 'mdt', 'mdu', 'mdv', 'mdw', 'mdx', 'mdy', 'mdz', 'mea', 'meb', 'mec', 'med', 'mee', 'mef', 'meg', 'meh', 'mei', 'mej', 'mek', 'mel', 'mem', 'men', 'meo', 'mep', 'meq', 'mer', 'mes', 'met', 'meu', 'mev', 'mew', 'mey', 'mez', 'mfa', 'mfb', 'mfc', 'mfd', 'mfe', 'mff', 'mfg', 'mfh', 'mfi', 'mfj', 'mfk', 'mfl', 'mfm', 'mfn', 'mfo', 'mfp', 'mfq', 'mfr', 'mfs', 'mft', 'mfu', 'mfv', 'mfw', 'mfx', 'mfy', 'mfz', 'mga', 'mgb', 'mgc', 'mgd', 'mge', 'mgf', 'mgg', 'mgh', 'mgi', 'mgj', 'mgk', 'mgl', 'mgm', 'mgn', 'mgo', 'mgp', 'mgq', 'mgr', 'mgs', 'mgt', 'mgu', 'mgv', 'mgw', 'mgx', 'mgy', 'mgz', 'mha', 'mhb', 'mhc', 'mhd', 'mhe', 'mhf', 'mhg', 'mhh', 'mhi', 'mhj', 'mhk', 'mhl', 'mhm', 'mhn', 'mho', 'mhp', 'mhq', 'mhr', 'mhs', 'mht', 'mhu', 'mhw', 'mhx', 'mhy', 'mhz', 'mia', 'mib', 'mic', 'mid', 'mie', 'mif', 'mig', 'mih', 'mii', 'mij', 'mik', 'mil', 'mim', 'min', 'mio', 'mip', 'miq', 'mir', 'mis', 'mit', 'miu', 'miw', 'mix', 'miy', 'miz', 'mja', 'mjb', 'mjc', 'mjd', 'mje', 'mjg', 'mjh', 'mji', 'mjj', 'mjk', 'mjl', 'mjm', 'mjn', 'mjo', 'mjp', 'mjq', 'mjr', 'mjs', 'mjt', 'mju', 'mjv', 'mjw', 'mjx', 'mjy', 'mjz', 'mka', 'mkb', 'mkc', 'mke', 'mkf', 'mkg', 'mkh', 'mki', 'mkj', 'mkk', 'mkl', 'mkm', 'mkn', 'mko', 'mkp', 'mkq', 'mkr', 'mks', 'mkt', 'mku', 'mkv', 'mkw', 'mkx', 'mky', 'mkz', 'mla', 'mlb', 'mlc', 'mld', 'mle', 'mlf', 'mlh', 'mli', 'mlj', 'mlk', 'mll', 'mlm', 'mln', 'mlo', 'mlp', 'mlq', 'mlr', 'mls', 'mlu', 'mlv', 'mlw', 'mlx', 'mlz', 'mma', 'mmb', 'mmc', 'mmd', 'mme', 'mmf', 'mmg', 'mmh', 'mmi', 'mmj', 'mmk', 'mml', 'mmm', 'mmn', 'mmo', 'mmp', 'mmq', 'mmr', 'mmt', 'mmu', 'mmv', 'mmw', 'mmx', 'mmy', 'mmz', 'mna', 'mnb', 'mnc', 'mnd', 'mne', 'mnf', 'mng', 'mnh', 'mni', 'mnj', 'mnk', 'mnl', 'mnm', 'mnn', 'mno', 'mnp', 'mnq', 'mnr', 'mns', 'mnt', 'mnu', 'mnv', 'mnw', 'mnx', 'mny', 'mnz', 'moa', 'moc', 'mod', 'moe', 'mof', 'mog', 'moh', 'moi', 'moj', 'mok', 'mom', 'moo', 'mop', 'moq', 'mor', 'mos', 'mot', 'mou', 'mov', 'mow', 'mox', 'moy', 'moz', 'mpa', 'mpb', 'mpc', 'mpd', 'mpe', 'mpg', 'mph', 'mpi', 'mpj', 'mpk', 'mpl', 'mpm', 'mpn', 'mpo', 'mpp', 'mpq', 'mpr', 'mps', 'mpt', 'mpu', 'mpv', 'mpw', 'mpx', 'mpy', 'mpz', 'mqa', 'mqb', 'mqc', 'mqe', 'mqf', 'mqg', 'mqh', 'mqi', 'mqj', 'mqk', 'mql', 'mqm', 'mqn', 'mqo', 'mqp', 'mqq', 'mqr', 'mqs', 'mqt', 'mqu', 'mqv', 'mqw', 'mqx', 'mqy', 'mqz', 'mra', 'mrb', 'mrc', 'mrd', 'mre', 'mrf', 'mrg', 'mrh', 'mrj', 'mrk', 'mrl', 'mrm', 'mrn', 'mro', 'mrp', 'mrq', 'mrr', 'mrs', 'mrt', 'mru', 'mrv', 'mrw', 'mrx', 'mry', 'mrz', 'msb', 'msc', 'msd', 'mse', 'msf', 'msg', 'msh', 'msi', 'msj', 'msk', 'msl', 'msm', 'msn', 'mso', 'msp', 'msq', 'msr', 'mss', 'mst', 'msu', 'msv', 'msw', 'msx', 'msy', 'msz', 'mta', 'mtb', 'mtc', 'mtd', 'mte', 'mtf', 'mtg', 'mth', 'mti', 'mtj', 'mtk', 'mtl', 'mtm', 'mtn', 'mto', 'mtp', 'mtq', 'mtr', 'mts', 'mtt', 'mtu', 'mtv', 'mtw', 'mtx', 'mty', 'mua', 'mub', 'muc', 'mud', 'mue', 'mug', 'muh', 'mui', 'muj', 'muk', 'mul', 'mum', 'mun', 'muo', 'mup', 'muq', 'mur', 'mus', 'mut', 'muu', 'muv', 'mux', 'muy', 'muz', 'mva', 'mvb', 'mvd', 'mve', 'mvf', 'mvg', 'mvh', 'mvi', 'mvk', 'mvl', 'mvm', 'mvn', 'mvo', 'mvp', 'mvq', 'mvr', 'mvs', 'mvt', 'mvu', 'mvv', 'mvw', 'mvx', 'mvy', 'mvz', 'mwa', 'mwb', 'mwc', 'mwd', 'mwe', 'mwf', 'mwg', 'mwh', 'mwi', 'mwj', 'mwk', 'mwl', 'mwm', 'mwn', 'mwo', 'mwp', 'mwq', 'mwr', 'mws', 'mwt', 'mwu', 'mwv', 'mww', 'mwx', 'mwy', 'mwz', 'mxa', 'mxb', 'mxc', 'mxd', 'mxe', 'mxf', 'mxg', 'mxh', 'mxi', 'mxj', 'mxk', 'mxl', 'mxm', 'mxn', 'mxo', 'mxp', 'mxq', 'mxr', 'mxs', 'mxt', 'mxu', 'mxv', 'mxw', 'mxx', 'mxy', 'mxz', 'myb', 'myc', 'myd', 'mye', 'myf', 'myg', 'myh', 'myi', 'myj', 'myk', 'myl', 'mym', 'myn', 'myo', 'myp', 'myq', 'myr', 'mys', 'myt', 'myu', 'myv', 'myw', 'myx', 'myy', 'myz', 'mza', 'mzb', 'mzc', 'mzd', 'mze', 'mzg', 'mzh', 'mzi', 'mzj', 'mzk', 'mzl', 'mzm', 'mzn', 'mzo', 'mzp', 'mzq', 'mzr', 'mzs', 'mzt', 'mzu', 'mzv', 'mzw', 'mzx', 'mzy', 'mzz', 'naa', 'nab', 'nac', 'nad', 'nae', 'naf', 'nag', 'nah', 'nai', 'naj', 'nak', 'nal', 'nam', 'nan', 'nao', 'nap', 'naq', 'nar', 'nas', 'nat', 'naw', 'nax', 'nay', 'naz', 'nba', 'nbb', 'nbc', 'nbd', 'nbe', 'nbf', 'nbg', 'nbh', 'nbi', 'nbj', 'nbk', 'nbm', 'nbn', 'nbo', 'nbp', 'nbq', 'nbr', 'nbs', 'nbt', 'nbu', 'nbv', 'nbw', 'nbx', 'nby', 'nca', 'ncb', 'ncc', 'ncd', 'nce', 'ncf', 'ncg', 'nch', 'nci', 'ncj', 'nck', 'ncl', 'ncm', 'ncn', 'nco', 'ncp', 'ncq', 'ncr', 'ncs', 'nct', 'ncu', 'ncx', 'ncz', 'nda', 'ndb', 'ndc', 'ndd', 'ndf', 'ndg', 'ndh', 'ndi', 'ndj', 'ndk', 'ndl', 'ndm', 'ndn', 'ndp', 'ndq', 'ndr', 'nds', 'ndt', 'ndu', 'ndv', 'ndw', 'ndx', 'ndy', 'ndz', 'nea', 'neb', 'nec', 'ned', 'nee', 'nef', 'neg', 'neh', 'nei', 'nej', 'nek', 'nem', 'nen', 'neo', 'neq', 'ner', 'nes', 'net', 'neu', 'nev', 'new', 'nex', 'ney', 'nez', 'nfa', 'nfd', 'nfl', 'nfr', 'nfu', 'nga', 'ngb', 'ngc', 'ngd', 'nge', 'ngf', 'ngg', 'ngh', 'ngi', 'ngj', 'ngk', 'ngl', 'ngm', 'ngn', 'ngo', 'ngp', 'ngq', 'ngr', 'ngs', 'ngt', 'ngu', 'ngv', 'ngw', 'ngx', 'ngy', 'ngz', 'nha', 'nhb', 'nhc', 'nhd', 'nhe', 'nhf', 'nhg', 'nhh', 'nhi', 'nhk', 'nhm', 'nhn', 'nho', 'nhp', 'nhq', 'nhr', 'nht', 'nhu', 'nhv', 'nhw', 'nhx', 'nhy', 'nhz', 'nia', 'nib', 'nic', 'nid', 'nie', 'nif', 'nig', 'nih', 'nii', 'nij', 'nik', 'nil', 'nim', 'nin', 'nio', 'niq', 'nir', 'nis', 'nit', 'niu', 'niv', 'niw', 'nix', 'niy', 'niz', 'nja', 'njb', 'njd', 'njh', 'nji', 'njj', 'njl', 'njm', 'njn', 'njo', 'njr', 'njs', 'njt', 'nju', 'njx', 'njy', 'njz', 'nka', 'nkb', 'nkc', 'nkd', 'nke', 'nkf', 'nkg', 'nkh', 'nki', 'nkj', 'nkk', 'nkm', 'nkn', 'nko', 'nkp', 'nkq', 'nkr', 'nks', 'nkt', 'nku', 'nkv', 'nkw', 'nkx', 'nkz', 'nla', 'nlc', 'nle', 'nlg', 'nli', 'nlj', 'nlk', 'nll', 'nlm', 'nln', 'nlo', 'nlq', 'nlr', 'nlu', 'nlv', 'nlw', 'nlx', 'nly', 'nlz', 'nma', 'nmb', 'nmc', 'nmd', 'nme', 'nmf', 'nmg', 'nmh', 'nmi', 'nmj', 'nmk', 'nml', 'nmm', 'nmn', 'nmo', 'nmp', 'nmq', 'nmr', 'nms', 'nmt', 'nmu', 'nmv', 'nmw', 'nmx', 'nmy', 'nmz', 'nna', 'nnb', 'nnc', 'nnd', 'nne', 'nnf', 'nng', 'nnh', 'nni', 'nnj', 'nnk', 'nnl', 'nnm', 'nnn', 'nnp', 'nnq', 'nnr', 'nns', 'nnt', 'nnu', 'nnv', 'nnw', 'nnx', 'nny', 'nnz', 'noa', 'noc', 'nod', 'noe', 'nof', 'nog', 'noh', 'noi', 'noj', 'nok', 'nol', 'nom', 'non', 'noo', 'nop', 'noq', 'nos', 'not', 'nou', 'nov', 'now', 'noy', 'noz', 'npa', 'npb', 'npg', 'nph', 'npi', 'npl', 'npn', 'npo', 'nps', 'npu', 'npx', 'npy', 'nqg', 'nqk', 'nql', 'nqm', 'nqn', 'nqo', 'nqq', 'nqy', 'nra', 'nrb', 'nrc', 'nre', 'nrf', 'nrg', 'nri', 'nrk', 'nrl', 'nrm', 'nrn', 'nrp', 'nrr', 'nrt', 'nru', 'nrx', 'nrz', 'nsa', 'nsc', 'nsd', 'nse', 'nsf', 'nsg', 'nsh', 'nsi', 'nsk', 'nsl', 'nsm', 'nsn', 'nso', 'nsp', 'nsq', 'nsr', 'nss', 'nst', 'nsu', 'nsv', 'nsw', 'nsx', 'nsy', 'nsz', 'ntd', 'nte', 'ntg', 'nti', 'ntj', 'ntk', 'ntm', 'nto', 'ntp', 'ntr', 'nts', 'ntu', 'ntw', 'ntx', 'nty', 'ntz', 'nua', 'nub', 'nuc', 'nud', 'nue', 'nuf', 'nug', 'nuh', 'nui', 'nuj', 'nuk', 'nul', 'num', 'nun', 'nuo', 'nup', 'nuq', 'nur', 'nus', 'nut', 'nuu', 'nuv', 'nuw', 'nux', 'nuy', 'nuz', 'nvh', 'nvm', 'nvo', 'nwa', 'nwb', 'nwc', 'nwe', 'nwg', 'nwi', 'nwm', 'nwo', 'nwr', 'nwx', 'nwy', 'nxa', 'nxd', 'nxe', 'nxg', 'nxi', 'nxk', 'nxl', 'nxm', 'nxn', 'nxo', 'nxq', 'nxr', 'nxu', 'nxx', 'nyb', 'nyc', 'nyd', 'nye', 'nyf', 'nyg', 'nyh', 'nyi', 'nyj', 'nyk', 'nyl', 'nym', 'nyn', 'nyo', 'nyp', 'nyq', 'nyr', 'nys', 'nyt', 'nyu', 'nyv', 'nyw', 'nyx', 'nyy', 'nza', 'nzb', 'nzd', 'nzi', 'nzk', 'nzm', 'nzs', 'nzu', 'nzy', 'nzz', 'oaa', 'oac', 'oar', 'oav', 'obi', 'obk', 'obl', 'obm', 'obo', 'obr', 'obt', 'obu', 'oca', 'och', 'oco', 'ocu', 'oda', 'odk', 'odt', 'odu', 'ofo', 'ofs', 'ofu', 'ogb', 'ogc', 'oge', 'ogg', 'ogo', 'ogu', 'oht', 'ohu', 'oia', 'oin', 'ojb', 'ojc', 'ojg', 'ojp', 'ojs', 'ojv', 'ojw', 'oka', 'okb', 'okd', 'oke', 'okg', 'okh', 'oki', 'okj', 'okk', 'okl', 'okm', 'okn', 'oko', 'okr', 'oks', 'oku', 'okv', 'okx', 'ola', 'old', 'ole', 'olk', 'olm', 'olo', 'olr', 'olt', 'olu', 'oma', 'omb', 'omc', 'ome', 'omg', 'omi', 'omk', 'oml', 'omn', 'omo', 'omp', 'omq', 'omr', 'omt', 'omu', 'omv', 'omw', 'omx', 'ona', 'onb', 'one', 'ong', 'oni', 'onj', 'onk', 'onn', 'ono', 'onp', 'onr', 'ons', 'ont', 'onu', 'onw', 'onx', 'ood', 'oog', 'oon', 'oor', 'oos', 'opa', 'opk', 'opm', 'opo', 'opt', 'opy', 'ora', 'orc', 'ore', 'org', 'orh', 'orn', 'oro', 'orr', 'ors', 'ort', 'oru', 'orv', 'orw', 'orx', 'ory', 'orz', 'osa', 'osc', 'osi', 'oso', 'osp', 'ost', 'osu', 'osx', 'ota', 'otb', 'otd', 'ote', 'oti', 'otk', 'otl', 'otm', 'otn', 'oto', 'otq', 'otr', 'ots', 'ott', 'otu', 'otw', 'otx', 'oty', 'otz', 'oua', 'oub', 'oue', 'oui', 'oum', 'oun', 'ovd', 'owi', 'owl', 'oyb', 'oyd', 'oym', 'oyy', 'ozm', 'paa', 'pab', 'pac', 'pad', 'pae', 'paf', 'pag', 'pah', 'pai', 'pak', 'pal', 'pam', 'pao', 'pap', 'paq', 'par', 'pas', 'pat', 'pau', 'pav', 'paw', 'pax', 'pay', 'paz', 'pbb', 'pbc', 'pbe', 'pbf', 'pbg', 'pbh', 'pbi', 'pbl', 'pbm', 'pbn', 'pbo', 'pbp', 'pbr', 'pbs', 'pbt', 'pbu', 'pbv', 'pby', 'pbz', 'pca', 'pcb', 'pcc', 'pcd', 'pce', 'pcf', 'pcg', 'pch', 'pci', 'pcj', 'pck', 'pcl', 'pcm', 'pcn', 'pcp', 'pcr', 'pcw', 'pda', 'pdc', 'pdi', 'pdn', 'pdo', 'pdt', 'pdu', 'pea', 'peb', 'ped', 'pee', 'pef', 'peg', 'peh', 'pei', 'pej', 'pek', 'pel', 'pem', 'peo', 'pep', 'peq', 'pes', 'pev', 'pex', 'pey', 'pez', 'pfa', 'pfe', 'pfl', 'pga', 'pgd', 'pgg', 'pgi', 'pgk', 'pgl', 'pgn', 'pgs', 'pgu', 'pgy', 'pgz', 'pha', 'phd', 'phg', 'phh', 'phi', 'phk', 'phl', 'phm', 'phn', 'pho', 'phq', 'phr', 'pht', 'phu', 'phv', 'phw', 'pia', 'pib', 'pic', 'pid', 'pie', 'pif', 'pig', 'pih', 'pii', 'pij', 'pil', 'pim', 'pin', 'pio', 'pip', 'pir', 'pis', 'pit', 'piu', 'piv', 'piw', 'pix', 'piy', 'piz', 'pjt', 'pka', 'pkb', 'pkc', 'pkg', 'pkh', 'pkn', 'pko', 'pkp', 'pkr', 'pks', 'pkt', 'pku', 'pla', 'plb', 'plc', 'pld', 'ple', 'plf', 'plg', 'plh', 'plj', 'plk', 'pll', 'pln', 'plo', 'plp', 'plq', 'plr', 'pls', 'plt', 'plu', 'plv', 'plw', 'ply', 'plz', 'pma', 'pmb', 'pmc', 'pmd', 'pme', 'pmf', 'pmh', 'pmi', 'pmj', 'pmk', 'pml', 'pmm', 'pmn', 'pmo', 'pmq', 'pmr', 'pms', 'pmt', 'pmu', 'pmw', 'pmx', 'pmy', 'pmz', 'pna', 'pnb', 'pnc', 'pne', 'png', 'pnh', 'pni', 'pnj', 'pnk', 'pnl', 'pnm', 'pnn', 'pno', 'pnp', 'pnq', 'pnr', 'pns', 'pnt', 'pnu', 'pnv', 'pnw', 'pnx', 'pny', 'pnz', 'poc', 'pod', 'poe', 'pof', 'pog', 'poh', 'poi', 'pok', 'pom', 'pon', 'poo', 'pop', 'poq', 'pos', 'pot', 'pov', 'pow', 'pox', 'poy', 'poz', 'ppa', 'ppe', 'ppi', 'ppk', 'ppl', 'ppm', 'ppn', 'ppo', 'ppp', 'ppq', 'ppr', 'pps', 'ppt', 'ppu', 'pqa', 'pqe', 'pqm', 'pqw', 'pra', 'prb', 'prc', 'prd', 'pre', 'prf', 'prg', 'prh', 'pri', 'prk', 'prl', 'prm', 'prn', 'pro', 'prp', 'prq', 'prr', 'prs', 'prt', 'pru', 'prw', 'prx', 'pry', 'prz', 'psa', 'psc', 'psd', 'pse', 'psg', 'psh', 'psi', 'psl', 'psm', 'psn', 'pso', 'psp', 'psq', 'psr', 'pss', 'pst', 'psu', 'psw', 'psy', 'pta', 'pth', 'pti', 'ptn', 'pto', 'ptp', 'ptq', 'ptr', 'ptt', 'ptu', 'ptv', 'ptw', 'pty', 'pua', 'pub', 'puc', 'pud', 'pue', 'puf', 'pug', 'pui', 'puj', 'puk', 'pum', 'puo', 'pup', 'puq', 'pur', 'put', 'puu', 'puw', 'pux', 'puy', 'puz', 'pwa', 'pwb', 'pwg', 'pwi', 'pwm', 'pwn', 'pwo', 'pwr', 'pww', 'pxm', 'pye', 'pym', 'pyn', 'pys', 'pyu', 'pyx', 'pyy', 'pzn', 'qaa..qtz', 'qua', 'qub', 'quc', 'qud', 'quf', 'qug', 'quh', 'qui', 'quk', 'qul', 'qum', 'qun', 'qup', 'quq', 'qur', 'qus', 'quv', 'quw', 'qux', 'quy', 'quz', 'qva', 'qvc', 'qve', 'qvh', 'qvi', 'qvj', 'qvl', 'qvm', 'qvn', 'qvo', 'qvp', 'qvs', 'qvw', 'qvy', 'qvz', 'qwa', 'qwc', 'qwe', 'qwh', 'qwm', 'qws', 'qwt', 'qxa', 'qxc', 'qxh', 'qxl', 'qxn', 'qxo', 'qxp', 'qxq', 'qxr', 'qxs', 'qxt', 'qxu', 'qxw', 'qya', 'qyp', 'raa', 'rab', 'rac', 'rad', 'raf', 'rag', 'rah', 'rai', 'raj', 'rak', 'ral', 'ram', 'ran', 'rao', 'rap', 'raq', 'rar', 'ras', 'rat', 'rau', 'rav', 'raw', 'rax', 'ray', 'raz', 'rbb', 'rbk', 'rbl', 'rbp', 'rcf', 'rdb', 'rea', 'reb', 'ree', 'reg', 'rei', 'rej', 'rel', 'rem', 'ren', 'rer', 'res', 'ret', 'rey', 'rga', 'rge', 'rgk', 'rgn', 'rgr', 'rgs', 'rgu', 'rhg', 'rhp', 'ria', 'rie', 'rif', 'ril', 'rim', 'rin', 'rir', 'rit', 'riu', 'rjg', 'rji', 'rjs', 'rka', 'rkb', 'rkh', 'rki', 'rkm', 'rkt', 'rkw', 'rma', 'rmb', 'rmc', 'rmd', 'rme', 'rmf', 'rmg', 'rmh', 'rmi', 'rmk', 'rml', 'rmm', 'rmn', 'rmo', 'rmp', 'rmq', 'rmr', 'rms', 'rmt', 'rmu', 'rmv', 'rmw', 'rmx', 'rmy', 'rmz', 'rna', 'rnd', 'rng', 'rnl', 'rnn', 'rnp', 'rnr', 'rnw', 'roa', 'rob', 'roc', 'rod', 'roe', 'rof', 'rog', 'rol', 'rom', 'roo', 'rop', 'ror', 'rou', 'row', 'rpn', 'rpt', 'rri', 'rro', 'rrt', 'rsb', 'rsi', 'rsl', 'rsm', 'rtc', 'rth', 'rtm', 'rts', 'rtw', 'rub', 'ruc', 'rue', 'ruf', 'rug', 'ruh', 'rui', 'ruk', 'ruo', 'rup', 'ruq', 'rut', 'ruu', 'ruy', 'ruz', 'rwa', 'rwk', 'rwm', 'rwo', 'rwr', 'rxd', 'rxw', 'ryn', 'rys', 'ryu', 'rzh', 'saa', 'sab', 'sac', 'sad', 'sae', 'saf', 'sah', 'sai', 'saj', 'sak', 'sal', 'sam', 'sao', 'sap', 'saq', 'sar', 'sas', 'sat', 'sau', 'sav', 'saw', 'sax', 'say', 'saz', 'sba', 'sbb', 'sbc', 'sbd', 'sbe', 'sbf', 'sbg', 'sbh', 'sbi', 'sbj', 'sbk', 'sbl', 'sbm', 'sbn', 'sbo', 'sbp', 'sbq', 'sbr', 'sbs', 'sbt', 'sbu', 'sbv', 'sbw', 'sbx', 'sby', 'sbz', 'sca', 'scb', 'sce', 'scf', 'scg', 'sch', 'sci', 'sck', 'scl', 'scn', 'sco', 'scp', 'scq', 'scs', 'sct', 'scu', 'scv', 'scw', 'scx', 'sda', 'sdb', 'sdc', 'sde', 'sdf', 'sdg', 'sdh', 'sdj', 'sdk', 'sdl', 'sdm', 'sdn', 'sdo', 'sdp', 'sdr', 'sds', 'sdt', 'sdu', 'sdv', 'sdx', 'sdz', 'sea', 'seb', 'sec', 'sed', 'see', 'sef', 'seg', 'seh', 'sei', 'sej', 'sek', 'sel', 'sem', 'sen', 'seo', 'sep', 'seq', 'ser', 'ses', 'set', 'seu', 'sev', 'sew', 'sey', 'sez', 'sfb', 'sfe', 'sfm', 'sfs', 'sfw', 'sga', 'sgb', 'sgc', 'sgd', 'sge', 'sgg', 'sgh', 'sgi', 'sgj', 'sgk', 'sgl', 'sgm', 'sgn', 'sgo', 'sgp', 'sgr', 'sgs', 'sgt', 'sgu', 'sgw', 'sgx', 'sgy', 'sgz', 'sha', 'shb', 'shc', 'shd', 'she', 'shg', 'shh', 'shi', 'shj', 'shk', 'shl', 'shm', 'shn', 'sho', 'shp', 'shq', 'shr', 'shs', 'sht', 'shu', 'shv', 'shw', 'shx', 'shy', 'shz', 'sia', 'sib', 'sid', 'sie', 'sif', 'sig', 'sih', 'sii', 'sij', 'sik', 'sil', 'sim', 'sio', 'sip', 'siq', 'sir', 'sis', 'sit', 'siu', 'siv', 'siw', 'six', 'siy', 'siz', 'sja', 'sjb', 'sjd', 'sje', 'sjg', 'sjk', 'sjl', 'sjm', 'sjn', 'sjo', 'sjp', 'sjr', 'sjs', 'sjt', 'sju', 'sjw', 'ska', 'skb', 'skc', 'skd', 'ske', 'skf', 'skg', 'skh', 'ski', 'skj', 'skk', 'skm', 'skn', 'sko', 'skp', 'skq', 'skr', 'sks', 'skt', 'sku', 'skv', 'skw', 'skx', 'sky', 'skz', 'sla', 'slc', 'sld', 'sle', 'slf', 'slg', 'slh', 'sli', 'slj', 'sll', 'slm', 'sln', 'slp', 'slq', 'slr', 'sls', 'slt', 'slu', 'slw', 'slx', 'sly', 'slz', 'sma', 'smb', 'smc', 'smd', 'smf', 'smg', 'smh', 'smi', 'smj', 'smk', 'sml', 'smm', 'smn', 'smp', 'smq', 'smr', 'sms', 'smt', 'smu', 'smv', 'smw', 'smx', 'smy', 'smz', 'snb', 'snc', 'sne', 'snf', 'sng', 'snh', 'sni', 'snj', 'snk', 'snl', 'snm', 'snn', 'sno', 'snp', 'snq', 'snr', 'sns', 'snu', 'snv', 'snw', 'snx', 'sny', 'snz', 'soa', 'sob', 'soc', 'sod', 'soe', 'sog', 'soh', 'soi', 'soj', 'sok', 'sol', 'son', 'soo', 'sop', 'soq', 'sor', 'sos', 'sou', 'sov', 'sow', 'sox', 'soy', 'soz', 'spb', 'spc', 'spd', 'spe', 'spg', 'spi', 'spk', 'spl', 'spm', 'spn', 'spo', 'spp', 'spq', 'spr', 'sps', 'spt', 'spu', 'spv', 'spx', 'spy', 'sqa', 'sqh', 'sqj', 'sqk', 'sqm', 'sqn', 'sqo', 'sqq', 'sqr', 'sqs', 'sqt', 'squ', 'sra', 'srb', 'src', 'sre', 'srf', 'srg', 'srh', 'sri', 'srk', 'srl', 'srm', 'srn', 'sro', 'srq', 'srr', 'srs', 'srt', 'sru', 'srv', 'srw', 'srx', 'sry', 'srz', 'ssa', 'ssb', 'ssc', 'ssd', 'sse', 'ssf', 'ssg', 'ssh', 'ssi', 'ssj', 'ssk', 'ssl', 'ssm', 'ssn', 'sso', 'ssp', 'ssq', 'ssr', 'sss', 'sst', 'ssu', 'ssv', 'ssx', 'ssy', 'ssz', 'sta', 'stb', 'std', 'ste', 'stf', 'stg', 'sth', 'sti', 'stj', 'stk', 'stl', 'stm', 'stn', 'sto', 'stp', 'stq', 'str', 'sts', 'stt', 'stu', 'stv', 'stw', 'sty', 'sua', 'sub', 'suc', 'sue', 'sug', 'sui', 'suj', 'suk', 'sul', 'sum', 'suq', 'sur', 'sus', 'sut', 'suv', 'suw', 'sux', 'suy', 'suz', 'sva', 'svb', 'svc', 'sve', 'svk', 'svm', 'svr', 'svs', 'svx', 'swb', 'swc', 'swf', 'swg', 'swh', 'swi', 'swj', 'swk', 'swl', 'swm', 'swn', 'swo', 'swp', 'swq', 'swr', 'sws', 'swt', 'swu', 'swv', 'sww', 'swx', 'swy', 'sxb', 'sxc', 'sxe', 'sxg', 'sxk', 'sxl', 'sxm', 'sxn', 'sxo', 'sxr', 'sxs', 'sxu', 'sxw', 'sya', 'syb', 'syc', 'syd', 'syi', 'syk', 'syl', 'sym', 'syn', 'syo', 'syr', 'sys', 'syw', 'syx', 'syy', 'sza', 'szb', 'szc', 'szd', 'sze', 'szg', 'szl', 'szn', 'szp', 'szs', 'szv', 'szw', 'taa', 'tab', 'tac', 'tad', 'tae', 'taf', 'tag', 'tai', 'taj', 'tak', 'tal', 'tan', 'tao', 'tap', 'taq', 'tar', 'tas', 'tau', 'tav', 'taw', 'tax', 'tay', 'taz', 'tba', 'tbb', 'tbc', 'tbd', 'tbe', 'tbf', 'tbg', 'tbh', 'tbi', 'tbj', 'tbk', 'tbl', 'tbm', 'tbn', 'tbo', 'tbp', 'tbq', 'tbr', 'tbs', 'tbt', 'tbu', 'tbv', 'tbw', 'tbx', 'tby', 'tbz', 'tca', 'tcb', 'tcc', 'tcd', 'tce', 'tcf', 'tcg', 'tch', 'tci', 'tck', 'tcl', 'tcm', 'tcn', 'tco', 'tcp', 'tcq', 'tcs', 'tct', 'tcu', 'tcw', 'tcx', 'tcy', 'tcz', 'tda', 'tdb', 'tdc', 'tdd', 'tde', 'tdf', 'tdg', 'tdh', 'tdi', 'tdj', 'tdk', 'tdl', 'tdm', 'tdn', 'tdo', 'tdq', 'tdr', 'tds', 'tdt', 'tdu', 'tdv', 'tdx', 'tdy', 'tea', 'teb', 'tec', 'ted', 'tee', 'tef', 'teg', 'teh', 'tei', 'tek', 'tem', 'ten', 'teo', 'tep', 'teq', 'ter', 'tes', 'tet', 'teu', 'tev', 'tew', 'tex', 'tey', 'tez', 'tfi', 'tfn', 'tfo', 'tfr', 'tft', 'tga', 'tgb', 'tgc', 'tgd', 'tge', 'tgf', 'tgg', 'tgh', 'tgi', 'tgj', 'tgn', 'tgo', 'tgp', 'tgq', 'tgr', 'tgs', 'tgt', 'tgu', 'tgv', 'tgw', 'tgx', 'tgy', 'tgz', 'thc', 'thd', 'the', 'thf', 'thh', 'thi', 'thk', 'thl', 'thm', 'thn', 'thp', 'thq', 'thr', 'ths', 'tht', 'thu', 'thv', 'thw', 'thx', 'thy', 'thz', 'tia', 'tic', 'tid', 'tie', 'tif', 'tig', 'tih', 'tii', 'tij', 'tik', 'til', 'tim', 'tin', 'tio', 'tip', 'tiq', 'tis', 'tit', 'tiu', 'tiv', 'tiw', 'tix', 'tiy', 'tiz', 'tja', 'tjg', 'tji', 'tjl', 'tjm', 'tjn', 'tjo', 'tjs', 'tju', 'tjw', 'tka', 'tkb', 'tkd', 'tke', 'tkf', 'tkg', 'tkk', 'tkl', 'tkm', 'tkn', 'tkp', 'tkq', 'tkr', 'tks', 'tkt', 'tku', 'tkv', 'tkw', 'tkx', 'tkz', 'tla', 'tlb', 'tlc', 'tld', 'tlf', 'tlg', 'tlh', 'tli', 'tlj', 'tlk', 'tll', 'tlm', 'tln', 'tlo', 'tlp', 'tlq', 'tlr', 'tls', 'tlt', 'tlu', 'tlv', 'tlw', 'tlx', 'tly', 'tma', 'tmb', 'tmc', 'tmd', 'tme', 'tmf', 'tmg', 'tmh', 'tmi', 'tmj', 'tmk', 'tml', 'tmm', 'tmn', 'tmo', 'tmp', 'tmq', 'tmr', 'tms', 'tmt', 'tmu', 'tmv', 'tmw', 'tmy', 'tmz', 'tna', 'tnb', 'tnc', 'tnd', 'tne', 'tnf', 'tng', 'tnh', 'tni', 'tnk', 'tnl', 'tnm', 'tnn', 'tno', 'tnp', 'tnq', 'tnr', 'tns', 'tnt', 'tnu', 'tnv', 'tnw', 'tnx', 'tny', 'tnz', 'tob', 'toc', 'tod', 'toe', 'tof', 'tog', 'toh', 'toi', 'toj', 'tol', 'tom', 'too', 'top', 'toq', 'tor', 'tos', 'tou', 'tov', 'tow', 'tox', 'toy', 'toz', 'tpa', 'tpc', 'tpe', 'tpf', 'tpg', 'tpi', 'tpj', 'tpk', 'tpl', 'tpm', 'tpn', 'tpo', 'tpp', 'tpq', 'tpr', 'tpt', 'tpu', 'tpv', 'tpw', 'tpx', 'tpy', 'tpz', 'tqb', 'tql', 'tqm', 'tqn', 'tqo', 'tqp', 'tqq', 'tqr', 'tqt', 'tqu', 'tqw', 'tra', 'trb', 'trc', 'trd', 'tre', 'trf', 'trg', 'trh', 'tri', 'trj', 'trk', 'trl', 'trm', 'trn', 'tro', 'trp', 'trq', 'trr', 'trs', 'trt', 'tru', 'trv', 'trw', 'trx', 'try', 'trz', 'tsa', 'tsb', 'tsc', 'tsd', 'tse', 'tsf', 'tsg', 'tsh', 'tsi', 'tsj', 'tsk', 'tsl', 'tsm', 'tsp', 'tsq', 'tsr', 'tss', 'tst', 'tsu', 'tsv', 'tsw', 'tsx', 'tsy', 'tsz', 'tta', 'ttb', 'ttc', 'ttd', 'tte', 'ttf', 'ttg', 'tth', 'tti', 'ttj', 'ttk', 'ttl', 'ttm', 'ttn', 'tto', 'ttp', 'ttq', 'ttr', 'tts', 'ttt', 'ttu', 'ttv', 'ttw', 'tty', 'ttz', 'tua', 'tub', 'tuc', 'tud', 'tue', 'tuf', 'tug', 'tuh', 'tui', 'tuj', 'tul', 'tum', 'tun', 'tuo', 'tup', 'tuq', 'tus', 'tut', 'tuu', 'tuv', 'tuw', 'tux', 'tuy', 'tuz', 'tva', 'tvd', 'tve', 'tvk', 'tvl', 'tvm', 'tvn', 'tvo', 'tvs', 'tvt', 'tvu', 'tvw', 'tvy', 'twa', 'twb', 'twc', 'twd', 'twe', 'twf', 'twg', 'twh', 'twl', 'twm', 'twn', 'two', 'twp', 'twq', 'twr', 'twt', 'twu', 'tww', 'twx', 'twy', 'txa', 'txb', 'txc', 'txe', 'txg', 'txh', 'txi', 'txj', 'txm', 'txn', 'txo', 'txq', 'txr', 'txs', 'txt', 'txu', 'txx', 'txy', 'tya', 'tye', 'tyh', 'tyi', 'tyj', 'tyl', 'tyn', 'typ', 'tyr', 'tys', 'tyt', 'tyu', 'tyv', 'tyx', 'tyz', 'tza', 'tzh', 'tzj', 'tzl', 'tzm', 'tzn', 'tzo', 'tzx', 'uam', 'uan', 'uar', 'uba', 'ubi', 'ubl', 'ubr', 'ubu', 'uby', 'uda', 'ude', 'udg', 'udi', 'udj', 'udl', 'udm', 'udu', 'ues', 'ufi', 'uga', 'ugb', 'uge', 'ugn', 'ugo', 'ugy', 'uha', 'uhn', 'uis', 'uiv', 'uji', 'uka', 'ukg', 'ukh', 'ukk', 'ukl', 'ukp', 'ukq', 'uks', 'uku', 'ukw', 'uky', 'ula', 'ulb', 'ulc', 'ule', 'ulf', 'uli', 'ulk', 'ull', 'ulm', 'uln', 'ulu', 'ulw', 'uma', 'umb', 'umc', 'umd', 'umg', 'umi', 'umm', 'umn', 'umo', 'ump', 'umr', 'ums', 'umu', 'una', 'und', 'une', 'ung', 'unk', 'unm', 'unn', 'unp', 'unr', 'unu', 'unx', 'unz', 'uok', 'upi', 'upv', 'ura', 'urb', 'urc', 'ure', 'urf', 'urg', 'urh', 'uri', 'urj', 'urk', 'url', 'urm', 'urn', 'uro', 'urp', 'urr', 'urt', 'uru', 'urv', 'urw', 'urx', 'ury', 'urz', 'usa', 'ush', 'usi', 'usk', 'usp', 'usu', 'uta', 'ute', 'utp', 'utr', 'utu', 'uum', 'uun', 'uur', 'uuu', 'uve', 'uvh', 'uvl', 'uwa', 'uya', 'uzn', 'uzs', 'vaa', 'vae', 'vaf', 'vag', 'vah', 'vai', 'vaj', 'val', 'vam', 'van', 'vao', 'vap', 'var', 'vas', 'vau', 'vav', 'vay', 'vbb', 'vbk', 'vec', 'ved', 'vel', 'vem', 'veo', 'vep', 'ver', 'vgr', 'vgt', 'vic', 'vid', 'vif', 'vig', 'vil', 'vin', 'vis', 'vit', 'viv', 'vka', 'vki', 'vkj', 'vkk', 'vkl', 'vkm', 'vko', 'vkp', 'vkt', 'vku', 'vlp', 'vls', 'vma', 'vmb', 'vmc', 'vmd', 'vme', 'vmf', 'vmg', 'vmh', 'vmi', 'vmj', 'vmk', 'vml', 'vmm', 'vmp', 'vmq', 'vmr', 'vms', 'vmu', 'vmv', 'vmw', 'vmx', 'vmy', 'vmz', 'vnk', 'vnm', 'vnp', 'vor', 'vot', 'vra', 'vro', 'vrs', 'vrt', 'vsi', 'vsl', 'vsv', 'vto', 'vum', 'vun', 'vut', 'vwa', 'waa', 'wab', 'wac', 'wad', 'wae', 'waf', 'wag', 'wah', 'wai', 'waj', 'wak', 'wal', 'wam', 'wan', 'wao', 'wap', 'waq', 'war', 'was', 'wat', 'wau', 'wav', 'waw', 'wax', 'way', 'waz', 'wba', 'wbb', 'wbe', 'wbf', 'wbh', 'wbi', 'wbj', 'wbk', 'wbl', 'wbm', 'wbp', 'wbq', 'wbr', 'wbs', 'wbt', 'wbv', 'wbw', 'wca', 'wci', 'wdd', 'wdg', 'wdj', 'wdk', 'wdu', 'wdy', 'wea', 'wec', 'wed', 'weg', 'weh', 'wei', 'wem', 'wen', 'weo', 'wep', 'wer', 'wes', 'wet', 'weu', 'wew', 'wfg', 'wga', 'wgb', 'wgg', 'wgi', 'wgo', 'wgu', 'wgw', 'wgy', 'wha', 'whg', 'whk', 'whu', 'wib', 'wic', 'wie', 'wif', 'wig', 'wih', 'wii', 'wij', 'wik', 'wil', 'wim', 'win', 'wir', 'wit', 'wiu', 'wiv', 'wiw', 'wiy', 'wja', 'wji', 'wka', 'wkb', 'wkd', 'wkl', 'wku', 'wkw', 'wky', 'wla', 'wlc', 'wle', 'wlg', 'wli', 'wlk', 'wll', 'wlm', 'wlo', 'wlr', 'wls', 'wlu', 'wlv', 'wlw', 'wlx', 'wly', 'wma', 'wmb', 'wmc', 'wmd', 'wme', 'wmh', 'wmi', 'wmm', 'wmn', 'wmo', 'wms', 'wmt', 'wmw', 'wmx', 'wnb', 'wnc', 'wnd', 'wne', 'wng', 'wni', 'wnk', 'wnm', 'wnn', 'wno', 'wnp', 'wnu', 'wnw', 'wny', 'woa', 'wob', 'woc', 'wod', 'woe', 'wof', 'wog', 'woi', 'wok', 'wom', 'won', 'woo', 'wor', 'wos', 'wow', 'woy', 'wpc', 'wra', 'wrb', 'wrd', 'wrg', 'wrh', 'wri', 'wrk', 'wrl', 'wrm', 'wrn', 'wro', 'wrp', 'wrr', 'wrs', 'wru', 'wrv', 'wrw', 'wrx', 'wry', 'wrz', 'wsa', 'wsg', 'wsi', 'wsk', 'wsr', 'wss', 'wsu', 'wsv', 'wtf', 'wth', 'wti', 'wtk', 'wtm', 'wtw', 'wua', 'wub', 'wud', 'wuh', 'wul', 'wum', 'wun', 'wur', 'wut', 'wuu', 'wuv', 'wux', 'wuy', 'wwa', 'wwb', 'wwo', 'wwr', 'www', 'wxa', 'wxw', 'wya', 'wyb', 'wyi', 'wym', 'wyr', 'wyy', 'xaa', 'xab', 'xac', 'xad', 'xae', 'xag', 'xai', 'xaj', 'xak', 'xal', 'xam', 'xan', 'xao', 'xap', 'xaq', 'xar', 'xas', 'xat', 'xau', 'xav', 'xaw', 'xay', 'xba', 'xbb', 'xbc', 'xbd', 'xbe', 'xbg', 'xbi', 'xbj', 'xbm', 'xbn', 'xbo', 'xbp', 'xbr', 'xbw', 'xbx', 'xby', 'xcb', 'xcc', 'xce', 'xcg', 'xch', 'xcl', 'xcm', 'xcn', 'xco', 'xcr', 'xct', 'xcu', 'xcv', 'xcw', 'xcy', 'xda', 'xdc', 'xdk', 'xdm', 'xdo', 'xdy', 'xeb', 'xed', 'xeg', 'xel', 'xem', 'xep', 'xer', 'xes', 'xet', 'xeu', 'xfa', 'xga', 'xgb', 'xgd', 'xgf', 'xgg', 'xgi', 'xgl', 'xgm', 'xgn', 'xgr', 'xgu', 'xgw', 'xha', 'xhc', 'xhd', 'xhe', 'xhr', 'xht', 'xhu', 'xhv', 'xia', 'xib', 'xii', 'xil', 'xin', 'xip', 'xir', 'xis', 'xiv', 'xiy', 'xjb', 'xjt', 'xka', 'xkb', 'xkc', 'xkd', 'xke', 'xkf', 'xkg', 'xkh', 'xki', 'xkj', 'xkk', 'xkl', 'xkn', 'xko', 'xkp', 'xkq', 'xkr', 'xks', 'xkt', 'xku', 'xkv', 'xkw', 'xkx', 'xky', 'xkz', 'xla', 'xlb', 'xlc', 'xld', 'xle', 'xlg', 'xli', 'xln', 'xlo', 'xlp', 'xls', 'xlu', 'xly', 'xma', 'xmb', 'xmc', 'xmd', 'xme', 'xmf', 'xmg', 'xmh', 'xmj', 'xmk', 'xml', 'xmm', 'xmn', 'xmo', 'xmp', 'xmq', 'xmr', 'xms', 'xmt', 'xmu', 'xmv', 'xmw', 'xmx', 'xmy', 'xmz', 'xna', 'xnb', 'xnd', 'xng', 'xnh', 'xni', 'xnk', 'xnn', 'xno', 'xnr', 'xns', 'xnt', 'xnu', 'xny', 'xnz', 'xoc', 'xod', 'xog', 'xoi', 'xok', 'xom', 'xon', 'xoo', 'xop', 'xor', 'xow', 'xpa', 'xpc', 'xpe', 'xpg', 'xpi', 'xpj', 'xpk', 'xpm', 'xpn', 'xpo', 'xpp', 'xpq', 'xpr', 'xps', 'xpt', 'xpu', 'xpy', 'xqa', 'xqt', 'xra', 'xrb', 'xrd', 'xre', 'xrg', 'xri', 'xrm', 'xrn', 'xrq', 'xrr', 'xrt', 'xru', 'xrw', 'xsa', 'xsb', 'xsc', 'xsd', 'xse', 'xsh', 'xsi', 'xsj', 'xsl', 'xsm', 'xsn', 'xso', 'xsp', 'xsq', 'xsr', 'xss', 'xsu', 'xsv', 'xsy', 'xta', 'xtb', 'xtc', 'xtd', 'xte', 'xtg', 'xth', 'xti', 'xtj', 'xtl', 'xtm', 'xtn', 'xto', 'xtp', 'xtq', 'xtr', 'xts', 'xtt', 'xtu', 'xtv', 'xtw', 'xty', 'xtz', 'xua', 'xub', 'xud', 'xug', 'xuj', 'xul', 'xum', 'xun', 'xuo', 'xup', 'xur', 'xut', 'xuu', 'xve', 'xvi', 'xvn', 'xvo', 'xvs', 'xwa', 'xwc', 'xwd', 'xwe', 'xwg', 'xwj', 'xwk', 'xwl', 'xwo', 'xwr', 'xwt', 'xww', 'xxb', 'xxk', 'xxm', 'xxr', 'xxt', 'xya', 'xyb', 'xyj', 'xyk', 'xyl', 'xyt', 'xyy', 'xzh', 'xzm', 'xzp', 'yaa', 'yab', 'yac', 'yad', 'yae', 'yaf', 'yag', 'yah', 'yai', 'yaj', 'yak', 'yal', 'yam', 'yan', 'yao', 'yap', 'yaq', 'yar', 'yas', 'yat', 'yau', 'yav', 'yaw', 'yax', 'yay', 'yaz', 'yba', 'ybb', 'ybd', 'ybe', 'ybh', 'ybi', 'ybj', 'ybk', 'ybl', 'ybm', 'ybn', 'ybo', 'ybx', 'yby', 'ych', 'ycl', 'ycn', 'ycp', 'yda', 'ydd', 'yde', 'ydg', 'ydk', 'yds', 'yea', 'yec', 'yee', 'yei', 'yej', 'yel', 'yen', 'yer', 'yes', 'yet', 'yeu', 'yev', 'yey', 'yga', 'ygi', 'ygl', 'ygm', 'ygp', 'ygr', 'ygs', 'ygu', 'ygw', 'yha', 'yhd', 'yhl', 'yhs', 'yia', 'yif', 'yig', 'yih', 'yii', 'yij', 'yik', 'yil', 'yim', 'yin', 'yip', 'yiq', 'yir', 'yis', 'yit', 'yiu', 'yiv', 'yix', 'yiy', 'yiz', 'yka', 'ykg', 'yki', 'ykk', 'ykl', 'ykm', 'ykn', 'yko', 'ykr', 'ykt', 'yku', 'yky', 'yla', 'ylb', 'yle', 'ylg', 'yli', 'yll', 'ylm', 'yln', 'ylo', 'ylr', 'ylu', 'yly', 'yma', 'ymb', 'ymc', 'ymd', 'yme', 'ymg', 'ymh', 'ymi', 'ymk', 'yml', 'ymm', 'ymn', 'ymo', 'ymp', 'ymq', 'ymr', 'yms', 'ymt', 'ymx', 'ymz', 'yna', 'ynd', 'yne', 'yng', 'ynh', 'ynk', 'ynl', 'ynn', 'yno', 'ynq', 'yns', 'ynu', 'yob', 'yog', 'yoi', 'yok', 'yol', 'yom', 'yon', 'yos', 'yot', 'yox', 'yoy', 'ypa', 'ypb', 'ypg', 'yph', 'ypk', 'ypm', 'ypn', 'ypo', 'ypp', 'ypz', 'yra', 'yrb', 'yre', 'yri', 'yrk', 'yrl', 'yrm', 'yrn', 'yro', 'yrs', 'yrw', 'yry', 'ysc', 'ysd', 'ysg', 'ysl', 'ysn', 'yso', 'ysp', 'ysr', 'yss', 'ysy', 'yta', 'ytl', 'ytp', 'ytw', 'yty', 'yua', 'yub', 'yuc', 'yud', 'yue', 'yuf', 'yug', 'yui', 'yuj', 'yuk', 'yul', 'yum', 'yun', 'yup', 'yuq', 'yur', 'yut', 'yuu', 'yuw', 'yux', 'yuy', 'yuz', 'yva', 'yvt', 'ywa', 'ywg', 'ywl', 'ywn', 'ywq', 'ywr', 'ywt', 'ywu', 'yww', 'yxa', 'yxg', 'yxl', 'yxm', 'yxu', 'yxy', 'yyr', 'yyu', 'yyz', 'yzg', 'yzk', 'zaa', 'zab', 'zac', 'zad', 'zae', 'zaf', 'zag', 'zah', 'zai', 'zaj', 'zak', 'zal', 'zam', 'zao', 'zap', 'zaq', 'zar', 'zas', 'zat', 'zau', 'zav', 'zaw', 'zax', 'zay', 'zaz', 'zbc', 'zbe', 'zbl', 'zbt', 'zbw', 'zca', 'zch', 'zdj', 'zea', 'zeg', 'zeh', 'zen', 'zga', 'zgb', 'zgh', 'zgm', 'zgn', 'zgr', 'zhb', 'zhd', 'zhi', 'zhn', 'zhw', 'zhx', 'zia', 'zib', 'zik', 'zil', 'zim', 'zin', 'zir', 'ziw', 'ziz', 'zka', 'zkb', 'zkd', 'zkg', 'zkh', 'zkk', 'zkn', 'zko', 'zkp', 'zkr', 'zkt', 'zku', 'zkv', 'zkz', 'zle', 'zlj', 'zlm', 'zln', 'zlq', 'zls', 'zlw', 'zma', 'zmb', 'zmc', 'zmd', 'zme', 'zmf', 'zmg', 'zmh', 'zmi', 'zmj', 'zmk', 'zml', 'zmm', 'zmn', 'zmo', 'zmp', 'zmq', 'zmr', 'zms', 'zmt', 'zmu', 'zmv', 'zmw', 'zmx', 'zmy', 'zmz', 'zna', 'znd', 'zne', 'zng', 'znk', 'zns', 'zoc', 'zoh', 'zom', 'zoo', 'zoq', 'zor', 'zos', 'zpa', 'zpb', 'zpc', 'zpd', 'zpe', 'zpf', 'zpg', 'zph', 'zpi', 'zpj', 'zpk', 'zpl', 'zpm', 'zpn', 'zpo', 'zpp', 'zpq', 'zpr', 'zps', 'zpt', 'zpu', 'zpv', 'zpw', 'zpx', 'zpy', 'zpz', 'zqe', 'zra', 'zrg', 'zrn', 'zro', 'zrp', 'zrs', 'zsa', 'zsk', 'zsl', 'zsm', 'zsr', 'zsu', 'zte', 'ztg', 'ztl', 'ztm', 'ztn', 'ztp', 'ztq', 'zts', 'ztt', 'ztu', 'ztx', 'zty', 'zua', 'zuh', 'zum', 'zun', 'zuy', 'zwa', 'zxx', 'zyb', 'zyg', 'zyj', 'zyn', 'zyp', 'zza', 'zzj' ];
   -1 12035   axe.utils.validLangs = function() {
   -1 12036     'use strict';
   -1 12037     return langs;
   -1 12038   };
   -1 12039   'use strict';
   -1 12040   var _extends = Object.assign || function(target) {
   -1 12041     for (var i = 1; i < arguments.length; i++) {
   -1 12042       var source = arguments[i];
   -1 12043       for (var key in source) {
   -1 12044         if (Object.prototype.hasOwnProperty.call(source, key)) {
   -1 12045           target[key] = source[key];
   -1 12046         }
   -1 12047       }
   -1 12048     }
   -1 12049     return target;
   -1 12050   };
11179 12051   var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) {
11180 12052     return typeof obj;
11181 12053   } : function(obj) {
11182 12054     return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
11183 12055   };
   -1 12056   function _toConsumableArray(arr) {
   -1 12057     if (Array.isArray(arr)) {
   -1 12058       for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
   -1 12059         arr2[i] = arr[i];
   -1 12060       }
   -1 12061       return arr2;
   -1 12062     } else {
   -1 12063       return Array.from(arr);
   -1 12064     }
   -1 12065   }
11184 12066   axe._load({
11185 12067     data: {
11186 12068       rules: {
@@ -11208,6 +12090,10 @@ module.exports = {
11208 12090           description: 'Ensures aria-hidden=\'true\' is not present on the document body.',
11209 12091           help: 'aria-hidden=\'true\' must not be present on the document body'
11210 12092         },
   -1 12093         'aria-hidden-focus': {
   -1 12094           description: 'Ensures aria-hidden elements do not contain focusable elements',
   -1 12095           help: 'ARIA hidden element must not contain focusable elements'
   -1 12096         },
11211 12097         'aria-required-attr': {
11212 12098           description: 'Ensures elements with ARIA roles have all required ARIA attributes',
11213 12099           help: 'Required ARIA attributes must be provided'
@@ -11296,6 +12182,10 @@ module.exports = {
11296 12182           description: 'Ensures elements in the focus order have an appropriate role',
11297 12183           help: 'Elements in the focus order need a role appropriate for interactive content'
11298 12184         },
   -1 12185         'form-field-multiple-labels': {
   -1 12186           description: 'Ensures form field does not have multiple label elements',
   -1 12187           help: 'Form field must not have multiple label elements'
   -1 12188         },
11299 12189         'frame-tested': {
11300 12190           description: 'Ensures <iframe> and <frame> elements contain the axe-core script',
11301 12191           help: 'Frames must be tested with axe-core'
@@ -11340,6 +12230,10 @@ module.exports = {
11340 12230           description: 'Ensures <input type="image"> elements have alternate text',
11341 12231           help: 'Image buttons must have alternate text'
11342 12232         },
   -1 12233         'label-content-name-mismatch': {
   -1 12234           description: 'Ensures that elements labelled through their content must have their visible text as part of their accessible name',
   -1 12235           help: 'Elements must have their visible text as part of their accessible name'
   -1 12236         },
11343 12237         'label-title-only': {
11344 12238           description: 'Ensures that every form element is not solely labeled using the title or aria-describedby attributes',
11345 12239           help: 'Form elements should have a visible label'
@@ -11352,6 +12246,10 @@ module.exports = {
11352 12246           description: 'Ensures the banner landmark is at top level',
11353 12247           help: 'Banner landmark must not be contained in another landmark'
11354 12248         },
   -1 12249         'landmark-complementary-is-top-level': {
   -1 12250           description: 'Ensures the complementary landmark or aside is at top level',
   -1 12251           help: 'Aside must not be contained in another landmark'
   -1 12252         },
11355 12253         'landmark-contentinfo-is-top-level': {
11356 12254           description: 'Ensures the contentinfo landmark is at top level',
11357 12255           help: 'Contentinfo landmark must not be contained in another landmark'
@@ -11361,16 +12259,16 @@ module.exports = {
11361 12259           help: 'Main landmark must not be contained in another landmark'
11362 12260         },
11363 12261         'landmark-no-duplicate-banner': {
11364    -1           description: 'Ensures the page has at most one banner landmark',
11365    -1           help: 'Page must not have more than one banner landmark'
   -1 12262           description: 'Ensures the document has at most one banner landmark',
   -1 12263           help: 'Document must not have more than one banner landmark'
11366 12264         },
11367 12265         'landmark-no-duplicate-contentinfo': {
11368    -1           description: 'Ensures the page has at most one contentinfo landmark',
11369    -1           help: 'Page must not have more than one contentinfo landmark'
   -1 12266           description: 'Ensures the document has at most one contentinfo landmark',
   -1 12267           help: 'Document must not have more than one contentinfo landmark'
11370 12268         },
11371 12269         'landmark-one-main': {
11372    -1           description: 'Ensures the page has only one main landmark and each iframe in the page has at most one main landmark',
11373    -1           help: 'Page must have one main landmark'
   -1 12270           description: 'Ensures the document has only one main landmark and each iframe in the page has at most one main landmark',
   -1 12271           help: 'Document must have one main landmark'
11374 12272         },
11375 12273         'layout-table': {
11376 12274           description: 'Ensures presentational <table> elements do not use <th>, <caption> elements or the summary attribute',
@@ -11564,6 +12462,27 @@ module.exports = {
11564 12462             }
11565 12463           }
11566 12464         },
   -1 12465         'aria-unsupported-attr': {
   -1 12466           impact: 'critical',
   -1 12467           messages: {
   -1 12468             pass: function anonymous(it) {
   -1 12469               var out = 'ARIA attribute is supported';
   -1 12470               return out;
   -1 12471             },
   -1 12472             fail: function anonymous(it) {
   -1 12473               var out = 'ARIA attribute is not widely supported in screen readers and assistive technologies: ';
   -1 12474               var arr1 = it.data;
   -1 12475               if (arr1) {
   -1 12476                 var value, i1 = -1, l1 = arr1.length - 1;
   -1 12477                 while (i1 < l1) {
   -1 12478                   value = arr1[i1 += 1];
   -1 12479                   out += ' ' + value;
   -1 12480                 }
   -1 12481               }
   -1 12482               return out;
   -1 12483             }
   -1 12484           }
   -1 12485         },
11567 12486         'aria-allowed-role': {
11568 12487           impact: 'minor',
11569 12488           messages: {
@@ -11572,7 +12491,11 @@ module.exports = {
11572 12491               return out;
11573 12492             },
11574 12493             fail: function anonymous(it) {
11575    -1               var out = 'role' + (it.data && it.data.length > 1 ? 's' : '') + ' ' + it.data.join(', ') + ' ' + (it.data && it.data.length > 1 ? 'are' : ' is') + ' not allowed for given element';
   -1 12494               var out = 'ARIA role' + (it.data && it.data.length > 1 ? 's' : '') + ' ' + it.data.join(', ') + ' ' + (it.data && it.data.length > 1 ? 'are' : ' is') + ' not allowed for given element';
   -1 12495               return out;
   -1 12496             },
   -1 12497             incomplete: function anonymous(it) {
   -1 12498               var out = 'ARIA role' + (it.data && it.data.length > 1 ? 's' : '') + ' ' + it.data.join(', ') + ' must be removed when the element is made visible, as ' + (it.data && it.data.length > 1 ? 'they are' : 'it is') + ' not allowed for the element';
11576 12499               return out;
11577 12500             }
11578 12501           }
@@ -11603,6 +12526,32 @@ module.exports = {
11603 12526             }
11604 12527           }
11605 12528         },
   -1 12529         'focusable-disabled': {
   -1 12530           impact: 'serious',
   -1 12531           messages: {
   -1 12532             pass: function anonymous(it) {
   -1 12533               var out = 'No focusable elements contained within element';
   -1 12534               return out;
   -1 12535             },
   -1 12536             fail: function anonymous(it) {
   -1 12537               var out = 'Focusable content should be disabled or be removed from the DOM';
   -1 12538               return out;
   -1 12539             }
   -1 12540           }
   -1 12541         },
   -1 12542         'focusable-not-tabbable': {
   -1 12543           impact: 'serious',
   -1 12544           messages: {
   -1 12545             pass: function anonymous(it) {
   -1 12546               var out = 'No focusable elements contained within element';
   -1 12547               return out;
   -1 12548             },
   -1 12549             fail: function anonymous(it) {
   -1 12550               var out = 'Focusable content should have tabindex=\'-1\' or be removed from the DOM';
   -1 12551               return out;
   -1 12552             }
   -1 12553           }
   -1 12554         },
11606 12555         'aria-required-attr': {
11607 12556           impact: 'critical',
11608 12557           messages: {
@@ -11712,7 +12661,15 @@ module.exports = {
11712 12661               return out;
11713 12662             },
11714 12663             fail: function anonymous(it) {
11715    -1               var out = 'The role used is not widely supported in assistive technologies';
   -1 12664               var out = 'The role used is not widely supported in screen readers and assistive technologies: ';
   -1 12665               var arr1 = it.data;
   -1 12666               if (arr1) {
   -1 12667                 var value, i1 = -1, l1 = arr1.length - 1;
   -1 12668                 while (i1 < l1) {
   -1 12669                   value = arr1[i1 += 1];
   -1 12670                   out += ' ' + value;
   -1 12671                 }
   -1 12672               }
11716 12673               return out;
11717 12674             }
11718 12675           }
@@ -11959,11 +12916,21 @@ module.exports = {
11959 12916           impact: 'critical',
11960 12917           messages: {
11961 12918             pass: function anonymous(it) {
11962    -1               var out = 'All elements with the name "' + it.data.name + '" reference the same element with aria-labelledby';
   -1 12919               var out = 'Elements with the name "' + it.data.name + '" have both a shared label, and a unique label, referenced through aria-labelledby';
11963 12920               return out;
11964 12921             },
11965 12922             fail: function anonymous(it) {
11966    -1               var out = 'All elements with the name "' + it.data.name + '" do not reference the same element with aria-labelledby';
   -1 12923               var out = '';
   -1 12924               var code = it.data && it.data.failureCode;
   -1 12925               out += 'Elements with the name "' + it.data.name + '" do not all have ';
   -1 12926               if (code === 'no-shared-label') {
   -1 12927                 out += 'a shared label';
   -1 12928               } else if (code === 'no-unique-label') {
   -1 12929                 out += 'a unique label';
   -1 12930               } else {
   -1 12931                 out += 'both a shared label, and a unique label';
   -1 12932               }
   -1 12933               out += ', referenced through aria-labelledby';
11967 12934               return out;
11968 12935             }
11969 12936           }
@@ -12031,6 +12998,10 @@ module.exports = {
12031 12998             fail: function anonymous(it) {
12032 12999               var out = 'CSS Orientation lock is applied, and makes display inoperable';
12033 13000               return out;
   -1 13001             },
   -1 13002             incomplete: function anonymous(it) {
   -1 13003               var out = 'CSS Orientation lock cannot be determined';
   -1 13004               return out;
12034 13005             }
12035 13006           }
12036 13007         },
@@ -12164,6 +13135,19 @@ module.exports = {
12164 13135             }
12165 13136           }
12166 13137         },
   -1 13138         'multiple-label': {
   -1 13139           impact: 'moderate',
   -1 13140           messages: {
   -1 13141             pass: function anonymous(it) {
   -1 13142               var out = 'Form field does not have multiple label elements';
   -1 13143               return out;
   -1 13144             },
   -1 13145             fail: function anonymous(it) {
   -1 13146               var out = 'Multiple label elements is not widely supported in assistive technologies';
   -1 13147               return out;
   -1 13148             }
   -1 13149           }
   -1 13150         },
12167 13151         'frame-tested': {
12168 13152           impact: 'critical',
12169 13153           messages: {
@@ -12258,20 +13242,33 @@ module.exports = {
12258 13242               return out;
12259 13243             },
12260 13244             fail: function anonymous(it) {
12261    -1               var out = 'Lang and xml:lang attributes do not have the same base language';
   -1 13245               var out = 'Lang and xml:lang attributes do not have the same base language';
   -1 13246               return out;
   -1 13247             }
   -1 13248           }
   -1 13249         },
   -1 13250         'has-alt': {
   -1 13251           impact: 'critical',
   -1 13252           messages: {
   -1 13253             pass: function anonymous(it) {
   -1 13254               var out = 'Element has an alt attribute';
   -1 13255               return out;
   -1 13256             },
   -1 13257             fail: function anonymous(it) {
   -1 13258               var out = 'Element does not have an alt attribute';
12262 13259               return out;
12263 13260             }
12264 13261           }
12265 13262         },
12266    -1         'has-alt': {
   -1 13263         'alt-space-value': {
12267 13264           impact: 'critical',
12268 13265           messages: {
12269 13266             pass: function anonymous(it) {
12270    -1               var out = 'Element has an alt attribute';
   -1 13267               var out = 'Element has a valid alt attribute value';
12271 13268               return out;
12272 13269             },
12273 13270             fail: function anonymous(it) {
12274    -1               var out = 'Element does not have an alt attribute';
   -1 13271               var out = 'Element has an alt attribute containing only a space character, which is not ignored by all screen readers';
12275 13272               return out;
12276 13273             }
12277 13274           }
@@ -12289,6 +13286,19 @@ module.exports = {
12289 13286             }
12290 13287           }
12291 13288         },
   -1 13289         'label-content-name-mismatch': {
   -1 13290           impact: 'serious',
   -1 13291           messages: {
   -1 13292             pass: function anonymous(it) {
   -1 13293               var out = 'Element contains visible text as part of it\'s accessible name';
   -1 13294               return out;
   -1 13295             },
   -1 13296             fail: function anonymous(it) {
   -1 13297               var out = 'Text inside the element is not included in the accessible name';
   -1 13298               return out;
   -1 13299             }
   -1 13300           }
   -1 13301         },
12292 13302         'title-only': {
12293 13303           impact: 'serious',
12294 13304           messages: {
@@ -12341,19 +13351,6 @@ module.exports = {
12341 13351             }
12342 13352           }
12343 13353         },
12344    -1         'multiple-label': {
12345    -1           impact: 'serious',
12346    -1           messages: {
12347    -1             pass: function anonymous(it) {
12348    -1               var out = 'Form element does not have multiple <label> elements';
12349    -1               return out;
12350    -1             },
12351    -1             fail: function anonymous(it) {
12352    -1               var out = 'Form element has multiple <label> elements';
12353    -1               return out;
12354    -1             }
12355    -1           }
12356    -1         },
12357 13354         'hidden-explicit-label': {
12358 13355           impact: 'critical',
12359 13356           messages: {
@@ -12384,7 +13381,7 @@ module.exports = {
12384 13381           impact: 'moderate',
12385 13382           messages: {
12386 13383             pass: function anonymous(it) {
12387    -1               var out = 'Document has no more than one banner landmark';
   -1 13384               var out = 'Document does not have more than one banner landmark';
12388 13385               return out;
12389 13386             },
12390 13387             fail: function anonymous(it) {
@@ -12397,11 +13394,11 @@ module.exports = {
12397 13394           impact: 'moderate',
12398 13395           messages: {
12399 13396             pass: function anonymous(it) {
12400    -1               var out = 'Page does not have more than one contentinfo landmark';
   -1 13397               var out = 'Document does not have more than one contentinfo landmark';
12401 13398               return out;
12402 13399             },
12403 13400             fail: function anonymous(it) {
12404    -1               var out = 'Page has more than one contentinfo landmark';
   -1 13401               var out = 'Document has more than one contentinfo landmark';
12405 13402               return out;
12406 13403             }
12407 13404           }
@@ -12410,11 +13407,11 @@ module.exports = {
12410 13407           impact: 'moderate',
12411 13408           messages: {
12412 13409             pass: function anonymous(it) {
12413    -1               var out = 'Page has at least one main landmark';
   -1 13410               var out = 'Document has at least one main landmark';
12414 13411               return out;
12415 13412             },
12416 13413             fail: function anonymous(it) {
12417    -1               var out = 'Page does not have a main landmark';
   -1 13414               var out = 'Document does not have a main landmark';
12418 13415               return out;
12419 13416             }
12420 13417           }
@@ -12423,11 +13420,11 @@ module.exports = {
12423 13420           impact: 'moderate',
12424 13421           messages: {
12425 13422             pass: function anonymous(it) {
12426    -1               var out = 'Page does not have more than one main landmark';
   -1 13423               var out = 'Document does not have more than one main landmark';
12427 13424               return out;
12428 13425             },
12429 13426             fail: function anonymous(it) {
12430    -1               var out = 'Page has more than one main landmark';
   -1 13427               var out = 'Document has more than one main landmark';
12431 13428               return out;
12432 13429             }
12433 13430           }
@@ -12801,20 +13798,13 @@ module.exports = {
12801 13798       none: []
12802 13799     }, {
12803 13800       id: 'aria-allowed-attr',
12804    -1       matches: function matches(node, virtualNode) {
12805    -1         var role = node.getAttribute('role');
12806    -1         if (!role) {
12807    -1           role = axe.commons.aria.implicitRole(node);
12808    -1         }
12809    -1         var allowed = axe.commons.aria.allowedAttr(role);
12810    -1         if (role && allowed) {
12811    -1           var aria = /^aria-/;
12812    -1           if (node.hasAttributes()) {
12813    -1             var attrs = node.attributes;
12814    -1             for (var i = 0, l = attrs.length; i < l; i++) {
12815    -1               if (aria.test(attrs[i].name)) {
12816    -1                 return true;
12817    -1               }
   -1 13801       matches: function matches(node, virtualNode, context) {
   -1 13802         var aria = /^aria-/;
   -1 13803         if (node.hasAttributes()) {
   -1 13804           var attrs = node.attributes;
   -1 13805           for (var i = 0, l = attrs.length; i < l; i++) {
   -1 13806             if (aria.test(attrs[i].name)) {
   -1 13807               return true;
12818 13808             }
12819 13809           }
12820 13810         }
@@ -12823,12 +13813,12 @@ module.exports = {
12823 13813       tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],
12824 13814       all: [],
12825 13815       any: [ 'aria-allowed-attr' ],
12826    -1       none: []
   -1 13816       none: [ 'aria-unsupported-attr' ]
12827 13817     }, {
12828 13818       id: 'aria-allowed-role',
12829 13819       excludeHidden: false,
12830 13820       selector: '[role]',
12831    -1       matches: function matches(node, virtualNode) {
   -1 13821       matches: function matches(node, virtualNode, context) {
12832 13822         return axe.commons.aria.getRole(node, {
12833 13823           noImplicit: true,
12834 13824           dpub: true,
@@ -12848,7 +13838,7 @@ module.exports = {
12848 13838     }, {
12849 13839       id: 'aria-dpub-role-fallback',
12850 13840       selector: '[role]',
12851    -1       matches: function matches(node, virtualNode) {
   -1 13841       matches: function matches(node, virtualNode, context) {
12852 13842         var role = node.getAttribute('role');
12853 13843         return [ 'doc-backlink', 'doc-biblioentry', 'doc-biblioref', 'doc-cover', 'doc-endnote', 'doc-glossref', 'doc-noteref' ].includes(role);
12854 13844       },
@@ -12865,6 +13855,27 @@ module.exports = {
12865 13855       any: [ 'aria-hidden-body' ],
12866 13856       none: []
12867 13857     }, {
   -1 13858       id: 'aria-hidden-focus',
   -1 13859       selector: '[aria-hidden="true"]',
   -1 13860       matches: function matches(node, virtualNode, context) {
   -1 13861         var getComposedParent = axe.commons.dom.getComposedParent;
   -1 13862         function shouldMatchElement(el) {
   -1 13863           if (!el) {
   -1 13864             return true;
   -1 13865           }
   -1 13866           if (el.getAttribute('aria-hidden') === 'true') {
   -1 13867             return false;
   -1 13868           }
   -1 13869           return shouldMatchElement(getComposedParent(el));
   -1 13870         }
   -1 13871         return shouldMatchElement(getComposedParent(node));
   -1 13872       },
   -1 13873       excludeHidden: false,
   -1 13874       tags: [ 'cat.name-role-value', 'wcag2a', 'wcag412' ],
   -1 13875       all: [ 'focusable-disabled', 'focusable-not-tabbable' ],
   -1 13876       any: [],
   -1 13877       none: []
   -1 13878     }, {
12868 13879       id: 'aria-required-attr',
12869 13880       selector: '[role]',
12870 13881       tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],
@@ -12899,7 +13910,7 @@ module.exports = {
12899 13910       none: [ 'invalidrole', 'abstractrole', 'unsupportedrole' ]
12900 13911     }, {
12901 13912       id: 'aria-valid-attr-value',
12902    -1       matches: function matches(node, virtualNode) {
   -1 13913       matches: function matches(node, virtualNode, context) {
12903 13914         var aria = /^aria-/;
12904 13915         if (node.hasAttributes()) {
12905 13916           var attrs = node.attributes;
@@ -12920,7 +13931,7 @@ module.exports = {
12920 13931       none: []
12921 13932     }, {
12922 13933       id: 'aria-valid-attr',
12923    -1       matches: function matches(node, virtualNode) {
   -1 13934       matches: function matches(node, virtualNode, context) {
12924 13935         var aria = /^aria-/;
12925 13936         if (node.hasAttributes()) {
12926 13937           var attrs = node.attributes;
@@ -12950,7 +13961,7 @@ module.exports = {
12950 13961       none: [ 'caption' ]
12951 13962     }, {
12952 13963       id: 'autocomplete-valid',
12953    -1       matches: function matches(node, virtualNode) {
   -1 13964       matches: function matches(node, virtualNode, context) {
12954 13965         var _axe$commons = axe.commons, text = _axe$commons.text, aria = _axe$commons.aria, dom = _axe$commons.dom;
12955 13966         var autocomplete = node.getAttribute('autocomplete');
12956 13967         if (!autocomplete || text.sanitize(autocomplete) === '') {
@@ -13004,7 +14015,7 @@ module.exports = {
13004 14015       id: 'bypass',
13005 14016       selector: 'html',
13006 14017       pageLevel: true,
13007    -1       matches: function matches(node, virtualNode) {
   -1 14018       matches: function matches(node, virtualNode, context) {
13008 14019         return !!node.querySelector('a[href]');
13009 14020       },
13010 14021       tags: [ 'cat.keyboard', 'wcag2a', 'wcag241', 'section508', 'section508.22.o' ],
@@ -13020,7 +14031,7 @@ module.exports = {
13020 14031       none: []
13021 14032     }, {
13022 14033       id: 'color-contrast',
13023    -1       matches: function matches(node, virtualNode) {
   -1 14034       matches: function matches(node, virtualNode, context) {
13024 14035         var nodeName = node.nodeName.toUpperCase(), nodeType = node.type;
13025 14036         if (node.getAttribute('aria-disabled') === 'true' || axe.commons.dom.findUpVirtual(virtualNode, '[aria-disabled="true"]')) {
13026 14037           return false;
@@ -13062,7 +14073,7 @@ module.exports = {
13062 14073           }
13063 14074         }
13064 14075         if (node.getAttribute('id')) {
13065    -1           var id = axe.commons.utils.escapeSelector(node.getAttribute('id'));
   -1 14076           var id = axe.utils.escapeSelector(node.getAttribute('id'));
13066 14077           var _doc = axe.commons.dom.getRootNode(node);
13067 14078           var candidate = _doc.querySelector('[aria-labelledby~=' + id + ']');
13068 14079           if (candidate && candidate.disabled) {
@@ -13099,7 +14110,7 @@ module.exports = {
13099 14110     }, {
13100 14111       id: 'css-orientation-lock',
13101 14112       selector: 'html',
13102    -1       tags: [ 'cat.structure', 'wcag262', 'wcag21aa', 'experimental' ],
   -1 14113       tags: [ 'cat.structure', 'wcag134', 'wcag21aa', 'experimental' ],
13103 14114       all: [ 'css-orientation-lock' ],
13104 14115       any: [],
13105 14116       none: [],
@@ -13107,7 +14118,7 @@ module.exports = {
13107 14118     }, {
13108 14119       id: 'definition-list',
13109 14120       selector: 'dl',
13110    -1       matches: function matches(node, virtualNode) {
   -1 14121       matches: function matches(node, virtualNode, context) {
13111 14122         return !node.getAttribute('role');
13112 14123       },
13113 14124       tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],
@@ -13117,7 +14128,7 @@ module.exports = {
13117 14128     }, {
13118 14129       id: 'dlitem',
13119 14130       selector: 'dd, dt',
13120    -1       matches: function matches(node, virtualNode) {
   -1 14131       matches: function matches(node, virtualNode, context) {
13121 14132         return !node.getAttribute('role');
13122 14133       },
13123 14134       tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],
@@ -13127,7 +14138,7 @@ module.exports = {
13127 14138     }, {
13128 14139       id: 'document-title',
13129 14140       selector: 'html',
13130    -1       matches: function matches(node, virtualNode) {
   -1 14141       matches: function matches(node, virtualNode, context) {
13131 14142         return node.ownerDocument.defaultView.self === node.ownerDocument.defaultView.top;
13132 14143       },
13133 14144       tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag242' ],
@@ -13137,7 +14148,7 @@ module.exports = {
13137 14148     }, {
13138 14149       id: 'duplicate-id-active',
13139 14150       selector: '[id]',
13140    -1       matches: function matches(node, virtualNode) {
   -1 14151       matches: function matches(node, virtualNode, context) {
13141 14152         var _axe$commons2 = axe.commons, dom = _axe$commons2.dom, aria = _axe$commons2.aria;
13142 14153         var id = node.getAttribute('id').trim();
13143 14154         var idSelector = '*[id="' + axe.utils.escapeSelector(id) + '"]';
@@ -13152,7 +14163,7 @@ module.exports = {
13152 14163     }, {
13153 14164       id: 'duplicate-id-aria',
13154 14165       selector: '[id]',
13155    -1       matches: function matches(node, virtualNode) {
   -1 14166       matches: function matches(node, virtualNode, context) {
13156 14167         return axe.commons.aria.isAccessibleRef(node);
13157 14168       },
13158 14169       excludeHidden: false,
@@ -13163,7 +14174,7 @@ module.exports = {
13163 14174     }, {
13164 14175       id: 'duplicate-id',
13165 14176       selector: '[id]',
13166    -1       matches: function matches(node, virtualNode) {
   -1 14177       matches: function matches(node, virtualNode, context) {
13167 14178         var _axe$commons3 = axe.commons, dom = _axe$commons3.dom, aria = _axe$commons3.aria;
13168 14179         var id = node.getAttribute('id').trim();
13169 14180         var idSelector = '*[id="' + axe.utils.escapeSelector(id) + '"]';
@@ -13180,7 +14191,7 @@ module.exports = {
13180 14191     }, {
13181 14192       id: 'empty-heading',
13182 14193       selector: 'h1, h2, h3, h4, h5, h6, [role="heading"]',
13183    -1       matches: function matches(node, virtualNode) {
   -1 14194       matches: function matches(node, virtualNode, context) {
13184 14195         var explicitRoles = void 0;
13185 14196         if (node.hasAttribute('role')) {
13186 14197           explicitRoles = node.getAttribute('role').split(/\s+/i).filter(axe.commons.aria.isValidRole);
@@ -13198,7 +14209,7 @@ module.exports = {
13198 14209     }, {
13199 14210       id: 'focus-order-semantics',
13200 14211       selector: 'div, h1, h2, h3, h4, h5, h6, [role=heading], p, span',
13201    -1       matches: function matches(node, virtualNode) {
   -1 14212       matches: function matches(node, virtualNode, context) {
13202 14213         return axe.commons.dom.insertedIntoFocusOrder(node);
13203 14214       },
13204 14215       tags: [ 'cat.keyboard', 'best-practice', 'experimental' ],
@@ -13212,9 +14223,23 @@ module.exports = {
13212 14223       } ],
13213 14224       none: []
13214 14225     }, {
   -1 14226       id: 'form-field-multiple-labels',
   -1 14227       selector: 'input, select, textarea',
   -1 14228       matches: function matches(node, virtualNode, context) {
   -1 14229         if (node.nodeName.toLowerCase() !== 'input' || node.hasAttribute('type') === false) {
   -1 14230           return true;
   -1 14231         }
   -1 14232         var type = node.getAttribute('type').toLowerCase();
   -1 14233         return [ 'hidden', 'image', 'button', 'submit', 'reset' ].includes(type) === false;
   -1 14234       },
   -1 14235       tags: [ 'cat.forms', 'wcag2a', 'wcag332' ],
   -1 14236       all: [],
   -1 14237       any: [],
   -1 14238       none: [ 'multiple-label' ]
   -1 14239     }, {
13215 14240       id: 'frame-tested',
13216 14241       selector: 'frame, iframe',
13217    -1       tags: [ 'cat.structure', 'review-item' ],
   -1 14242       tags: [ 'cat.structure', 'review-item', 'best-practice' ],
13218 14243       all: [ {
13219 14244         options: {
13220 14245           isViolation: false
@@ -13226,7 +14251,7 @@ module.exports = {
13226 14251     }, {
13227 14252       id: 'frame-title-unique',
13228 14253       selector: 'frame[title], iframe[title]',
13229    -1       matches: function matches(node, virtualNode) {
   -1 14254       matches: function matches(node, virtualNode, context) {
13230 14255         var title = node.getAttribute('title');
13231 14256         return !!(title ? axe.commons.text.sanitize(title).trim() : '');
13232 14257       },
@@ -13244,7 +14269,7 @@ module.exports = {
13244 14269     }, {
13245 14270       id: 'heading-order',
13246 14271       selector: 'h1, h2, h3, h4, h5, h6, [role=heading]',
13247    -1       matches: function matches(node, virtualNode) {
   -1 14272       matches: function matches(node, virtualNode, context) {
13248 14273         var explicitRoles = void 0;
13249 14274         if (node.hasAttribute('role')) {
13250 14275           explicitRoles = node.getAttribute('role').split(/\s+/i).filter(axe.commons.aria.isValidRole);
@@ -13263,7 +14288,7 @@ module.exports = {
13263 14288       id: 'hidden-content',
13264 14289       selector: '*',
13265 14290       excludeHidden: false,
13266    -1       tags: [ 'cat.structure', 'experimental', 'review-item' ],
   -1 14291       tags: [ 'cat.structure', 'experimental', 'review-item', 'best-practice' ],
13267 14292       all: [],
13268 14293       any: [ 'hidden-content' ],
13269 14294       none: []
@@ -13276,7 +14301,7 @@ module.exports = {
13276 14301       none: []
13277 14302     }, {
13278 14303       id: 'html-lang-valid',
13279    -1       selector: 'html[lang]',
   -1 14304       selector: 'html[lang], html[xml\\:lang]',
13280 14305       tags: [ 'cat.language', 'wcag2a', 'wcag311' ],
13281 14306       all: [],
13282 14307       any: [],
@@ -13284,8 +14309,8 @@ module.exports = {
13284 14309     }, {
13285 14310       id: 'html-xml-lang-mismatch',
13286 14311       selector: 'html[lang][xml\\:lang]',
13287    -1       matches: function matches(node, virtualNode) {
13288    -1         var getBaseLang = axe.commons.utils.getBaseLang;
   -1 14312       matches: function matches(node, virtualNode, context) {
   -1 14313         var getBaseLang = axe.utils.getBaseLang;
13289 14314         var primaryLangValue = getBaseLang(node.getAttribute('lang'));
13290 14315         var primaryXmlLangValue = getBaseLang(node.getAttribute('xml:lang'));
13291 14316         return axe.utils.validLangs().includes(primaryLangValue) && axe.utils.validLangs().includes(primaryXmlLangValue);
@@ -13300,7 +14325,7 @@ module.exports = {
13300 14325       tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a' ],
13301 14326       all: [],
13302 14327       any: [ 'has-alt', 'aria-label', 'aria-labelledby', 'non-empty-title', 'role-presentation', 'role-none' ],
13303    -1       none: []
   -1 14328       none: [ 'alt-space-value' ]
13304 14329     }, {
13305 14330       id: 'image-redundant-alt',
13306 14331       selector: 'button, [role="button"], a[href], p, li, td, th',
@@ -13316,9 +14341,37 @@ module.exports = {
13316 14341       any: [ 'non-empty-alt', 'aria-label', 'aria-labelledby', 'non-empty-title' ],
13317 14342       none: []
13318 14343     }, {
   -1 14344       id: 'label-content-name-mismatch',
   -1 14345       matches: function matches(node, virtualNode, context) {
   -1 14346         var _axe$commons4 = axe.commons, aria = _axe$commons4.aria, text = _axe$commons4.text;
   -1 14347         var role = aria.getRole(node);
   -1 14348         if (!role) {
   -1 14349           return false;
   -1 14350         }
   -1 14351         var isWidgetType = aria.lookupTable.rolesOfType.widget.includes(role);
   -1 14352         if (!isWidgetType) {
   -1 14353           return false;
   -1 14354         }
   -1 14355         var rolesWithNameFromContents = aria.getRolesWithNameFromContents();
   -1 14356         if (!rolesWithNameFromContents.includes(role)) {
   -1 14357           return false;
   -1 14358         }
   -1 14359         if (!text.sanitize(aria.arialabelText(node)) && !text.sanitize(aria.arialabelledbyText(node))) {
   -1 14360           return false;
   -1 14361         }
   -1 14362         if (!text.sanitize(text.visibleVirtual(virtualNode))) {
   -1 14363           return false;
   -1 14364         }
   -1 14365         return true;
   -1 14366       },
   -1 14367       tags: [ 'wcag21a', 'wcag253', 'experimental' ],
   -1 14368       all: [],
   -1 14369       any: [ 'label-content-name-mismatch' ],
   -1 14370       none: []
   -1 14371     }, {
13319 14372       id: 'label-title-only',
13320 14373       selector: 'input, select, textarea',
13321    -1       matches: function matches(node, virtualNode) {
   -1 14374       matches: function matches(node, virtualNode, context) {
13322 14375         if (node.nodeName.toLowerCase() !== 'input' || node.hasAttribute('type') === false) {
13323 14376           return true;
13324 14377         }
@@ -13332,7 +14385,7 @@ module.exports = {
13332 14385     }, {
13333 14386       id: 'label',
13334 14387       selector: 'input, select, textarea',
13335    -1       matches: function matches(node, virtualNode) {
   -1 14388       matches: function matches(node, virtualNode, context) {
13336 14389         if (node.nodeName.toLowerCase() !== 'input' || node.hasAttribute('type') === false) {
13337 14390           return true;
13338 14391         }
@@ -13342,11 +14395,11 @@ module.exports = {
13342 14395       tags: [ 'cat.forms', 'wcag2a', 'wcag332', 'wcag131', 'section508', 'section508.22.n' ],
13343 14396       all: [],
13344 14397       any: [ 'aria-label', 'aria-labelledby', 'implicit-label', 'explicit-label', 'non-empty-title' ],
13345    -1       none: [ 'help-same-as-label', 'multiple-label', 'hidden-explicit-label' ]
   -1 14398       none: [ 'help-same-as-label', 'hidden-explicit-label' ]
13346 14399     }, {
13347 14400       id: 'landmark-banner-is-top-level',
13348 14401       selector: 'header:not([role]), [role=banner]',
13349    -1       matches: function matches(node, virtualNode) {
   -1 14402       matches: function matches(node, virtualNode, context) {
13350 14403         var nativeScopeFilter = 'article, aside, main, nav, section';
13351 14404         return node.hasAttribute('role') || !axe.commons.dom.findUpVirtual(virtualNode, nativeScopeFilter);
13352 14405       },
@@ -13355,9 +14408,16 @@ module.exports = {
13355 14408       any: [ 'landmark-is-top-level' ],
13356 14409       none: []
13357 14410     }, {
   -1 14411       id: 'landmark-complementary-is-top-level',
   -1 14412       selector: 'aside:not([role]), [role=complementary]',
   -1 14413       tags: [ 'cat.semantics', 'best-practice' ],
   -1 14414       all: [],
   -1 14415       any: [ 'landmark-is-top-level' ],
   -1 14416       none: []
   -1 14417     }, {
13358 14418       id: 'landmark-contentinfo-is-top-level',
13359 14419       selector: 'footer:not([role]), [role=contentinfo]',
13360    -1       matches: function matches(node, virtualNode) {
   -1 14420       matches: function matches(node, virtualNode, context) {
13361 14421         var nativeScopeFilter = 'article, aside, main, nav, section';
13362 14422         return node.hasAttribute('role') || !axe.commons.dom.findUpVirtual(virtualNode, nativeScopeFilter);
13363 14423       },
@@ -13418,7 +14478,7 @@ module.exports = {
13418 14478     }, {
13419 14479       id: 'layout-table',
13420 14480       selector: 'table',
13421    -1       matches: function matches(node, virtualNode) {
   -1 14481       matches: function matches(node, virtualNode, context) {
13422 14482         var role = (node.getAttribute('role') || '').toLowerCase();
13423 14483         return !((role === 'presentation' || role === 'none') && !axe.commons.dom.isFocusable(node)) && !axe.commons.table.isDataTable(node);
13424 14484       },
@@ -13429,7 +14489,7 @@ module.exports = {
13429 14489     }, {
13430 14490       id: 'link-in-text-block',
13431 14491       selector: 'a[href], [role=link]',
13432    -1       matches: function matches(node, virtualNode) {
   -1 14492       matches: function matches(node, virtualNode, context) {
13433 14493         var text = axe.commons.text.sanitize(node.textContent);
13434 14494         var role = node.getAttribute('role');
13435 14495         if (role && role !== 'link') {
@@ -13451,7 +14511,7 @@ module.exports = {
13451 14511     }, {
13452 14512       id: 'link-name',
13453 14513       selector: 'a[href], [role=link][href]',
13454    -1       matches: function matches(node, virtualNode) {
   -1 14514       matches: function matches(node, virtualNode, context) {
13455 14515         return node.getAttribute('role') !== 'button';
13456 14516       },
13457 14517       tags: [ 'cat.name-role-value', 'wcag2a', 'wcag412', 'wcag244', 'section508', 'section508.22.a' ],
@@ -13461,7 +14521,7 @@ module.exports = {
13461 14521     }, {
13462 14522       id: 'list',
13463 14523       selector: 'ul, ol',
13464    -1       matches: function matches(node, virtualNode) {
   -1 14524       matches: function matches(node, virtualNode, context) {
13465 14525         return !node.getAttribute('role');
13466 14526       },
13467 14527       tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],
@@ -13471,7 +14531,7 @@ module.exports = {
13471 14531     }, {
13472 14532       id: 'listitem',
13473 14533       selector: 'li',
13474    -1       matches: function matches(node, virtualNode) {
   -1 14534       matches: function matches(node, virtualNode, context) {
13475 14535         return !node.getAttribute('role');
13476 14536       },
13477 14537       tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],
@@ -13526,12 +14586,12 @@ module.exports = {
13526 14586       selector: 'object',
13527 14587       tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a' ],
13528 14588       all: [],
13529    -1       any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', 'non-empty-title' ],
   -1 14589       any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', 'non-empty-title', 'role-presentation', 'role-none' ],
13530 14590       none: []
13531 14591     }, {
13532 14592       id: 'p-as-heading',
13533 14593       selector: 'p',
13534    -1       matches: function matches(node, virtualNode) {
   -1 14594       matches: function matches(node, virtualNode, context) {
13535 14595         var children = Array.from(node.parentNode.childNodes);
13536 14596         var nodeText = node.textContent.trim();
13537 14597         var isSentence = /[.!?:;](?![.!?:;])/g;
@@ -13607,7 +14667,7 @@ module.exports = {
13607 14667     }, {
13608 14668       id: 'skip-link',
13609 14669       selector: 'a[href]',
13610    -1       matches: function matches(node, virtualNode) {
   -1 14670       matches: function matches(node, virtualNode, context) {
13611 14671         return /^#[^/!]/.test(node.getAttribute('href'));
13612 14672       },
13613 14673       tags: [ 'cat.keyboard', 'best-practice' ],
@@ -13631,7 +14691,7 @@ module.exports = {
13631 14691     }, {
13632 14692       id: 'table-fake-caption',
13633 14693       selector: 'table',
13634    -1       matches: function matches(node, virtualNode) {
   -1 14694       matches: function matches(node, virtualNode, context) {
13635 14695         return axe.commons.table.isDataTable(node);
13636 14696       },
13637 14697       tags: [ 'cat.tables', 'experimental', 'wcag2a', 'wcag131', 'section508', 'section508.22.g' ],
@@ -13641,7 +14701,7 @@ module.exports = {
13641 14701     }, {
13642 14702       id: 'td-has-header',
13643 14703       selector: 'table',
13644    -1       matches: function matches(node, virtualNode) {
   -1 14704       matches: function matches(node, virtualNode, context) {
13645 14705         if (axe.commons.table.isDataTable(node)) {
13646 14706           var tableArray = axe.commons.table.toArray(node);
13647 14707           return tableArray.length >= 3 && tableArray[0].length >= 3 && tableArray[1].length >= 3 && tableArray[2].length >= 3;
@@ -13662,7 +14722,7 @@ module.exports = {
13662 14722     }, {
13663 14723       id: 'th-has-data-cells',
13664 14724       selector: 'table',
13665    -1       matches: function matches(node, virtualNode) {
   -1 14725       matches: function matches(node, virtualNode, context) {
13666 14726         return axe.commons.table.isDataTable(node);
13667 14727       },
13668 14728       tags: [ 'cat.tables', 'wcag2a', 'wcag131', 'section508', 'section508.22.g' ],
@@ -13672,7 +14732,7 @@ module.exports = {
13672 14732     }, {
13673 14733       id: 'valid-lang',
13674 14734       selector: '[lang], [xml\\:lang]',
13675    -1       matches: function matches(node, virtualNode) {
   -1 14735       matches: function matches(node, virtualNode, context) {
13676 14736         return node.nodeName.toLowerCase() !== 'html';
13677 14737       },
13678 14738       tags: [ 'cat.language', 'wcag2aa', 'wcag312' ],
@@ -13732,6 +14792,7 @@ module.exports = {
13732 14792     }, {
13733 14793       id: 'aria-allowed-role',
13734 14794       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 14795         var dom = axe.commons.dom;
13735 14796         var _ref = options || {}, _ref$allowImplicit = _ref.allowImplicit, allowImplicit = _ref$allowImplicit === undefined ? true : _ref$allowImplicit, _ref$ignoredTags = _ref.ignoredTags, ignoredTags = _ref$ignoredTags === undefined ? [] : _ref$ignoredTags;
13736 14797         var tagName = node.nodeName.toUpperCase();
13737 14798         if (ignoredTags.map(function(t) {
@@ -13742,6 +14803,9 @@ module.exports = {
13742 14803         var unallowedRoles = axe.commons.aria.getElementUnallowedRoles(node, allowImplicit);
13743 14804         if (unallowedRoles.length) {
13744 14805           this.data(unallowedRoles);
   -1 14806           if (!dom.isVisible(node, true)) {
   -1 14807             return undefined;
   -1 14808           }
13745 14809           return false;
13746 14810         }
13747 14811         return true;
@@ -13758,17 +14822,22 @@ module.exports = {
13758 14822     }, {
13759 14823       id: 'aria-errormessage',
13760 14824       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 14825         var _axe$commons5 = axe.commons, aria = _axe$commons5.aria, dom = _axe$commons5.dom;
13761 14826         options = Array.isArray(options) ? options : [];
13762    -1         var attr = node.getAttribute('aria-errormessage'), hasAttr = node.hasAttribute('aria-errormessage');
13763    -1         var doc = axe.commons.dom.getRootNode(node);
13764    -1         function validateAttrValue() {
   -1 14827         var attr = node.getAttribute('aria-errormessage');
   -1 14828         var hasAttr = node.hasAttribute('aria-errormessage');
   -1 14829         var doc = dom.getRootNode(node);
   -1 14830         function validateAttrValue(attr) {
   -1 14831           if (attr.trim() === '') {
   -1 14832             return aria.lookupTable.attributes['aria-errormessage'].allowEmpty;
   -1 14833           }
13765 14834           var idref = attr && doc.getElementById(attr);
13766 14835           if (idref) {
13767 14836             return idref.getAttribute('role') === 'alert' || idref.getAttribute('aria-live') === 'assertive' || axe.utils.tokenList(node.getAttribute('aria-describedby') || '').indexOf(attr) > -1;
13768 14837           }
13769 14838         }
13770 14839         if (options.indexOf(attr) === -1 && hasAttr) {
13771    -1           if (!validateAttrValue()) {
   -1 14840           if (!validateAttrValue(attr)) {
13772 14841             this.data(axe.utils.tokenList(attr));
13773 14842             return false;
13774 14843           }
@@ -13833,7 +14902,7 @@ module.exports = {
13833 14902       evaluate: function evaluate(node, options, virtualNode, context) {
13834 14903         var requiredOwned = axe.commons.aria.requiredOwned;
13835 14904         var implicitNodes = axe.commons.aria.implicitNodes;
13836    -1         var matchesSelector = axe.commons.utils.matchesSelector;
   -1 14905         var matchesSelector = axe.utils.matchesSelector;
13837 14906         var idrefs = axe.commons.dom.idrefs;
13838 14907         var reviewEmpty = options && Array.isArray(options.reviewEmpty) ? options.reviewEmpty : [];
13839 14908         function owns(node, virtualTree, role, ariaOwned) {
@@ -13877,7 +14946,7 @@ module.exports = {
13877 14946           if (role === 'combobox') {
13878 14947             var textboxIndex = missing.indexOf('textbox');
13879 14948             var textTypeInputs = [ 'text', 'search', 'email', 'url', 'tel' ];
13880    -1             if (textboxIndex >= 0 && node.tagName === 'INPUT' && textTypeInputs.includes(node.type)) {
   -1 14949             if (textboxIndex >= 0 && node.nodeName.toUpperCase() === 'INPUT' && textTypeInputs.includes(node.type)) {
13881 14950               missing.splice(textboxIndex, 1);
13882 14951             }
13883 14952             var listboxIndex = missing.indexOf('listbox');
@@ -13950,7 +15019,7 @@ module.exports = {
13950 15019           var owners = [], o = null;
13951 15020           while (element) {
13952 15021             if (element.getAttribute('id')) {
13953    -1               var id = axe.commons.utils.escapeSelector(element.getAttribute('id'));
   -1 15022               var id = axe.utils.escapeSelector(element.getAttribute('id'));
13954 15023               var doc = axe.commons.dom.getRootNode(element);
13955 15024               o = doc.querySelector('[aria-owns~=' + id + ']');
13956 15025               if (o) {
@@ -13978,11 +15047,43 @@ module.exports = {
13978 15047         return false;
13979 15048       }
13980 15049     }, {
13981    -1       id: 'unsupportedrole',
   -1 15050       id: 'aria-unsupported-attr',
13982 15051       evaluate: function evaluate(node, options, virtualNode, context) {
13983    -1         return !axe.commons.aria.isValidRole(node.getAttribute('role'), {
13984    -1           flagUnsupported: true
   -1 15052         var nodeName = node.nodeName.toUpperCase();
   -1 15053         var lookupTable = axe.commons.aria.lookupTable;
   -1 15054         var role = axe.commons.aria.getRole(node);
   -1 15055         var unsupportedAttrs = Array.from(node.attributes).filter(function(_ref2) {
   -1 15056           var name = _ref2.name;
   -1 15057           var attribute = lookupTable.attributes[name];
   -1 15058           if (!axe.commons.aria.validateAttr(name)) {
   -1 15059             return false;
   -1 15060           }
   -1 15061           var unsupported = attribute.unsupported;
   -1 15062           if ((typeof unsupported === 'undefined' ? 'undefined' : _typeof(unsupported)) !== 'object') {
   -1 15063             return !!unsupported;
   -1 15064           }
   -1 15065           var isException = axe.commons.matches(node, unsupported.exceptions);
   -1 15066           if (!Object.keys(lookupTable.evaluateRoleForElement).includes(nodeName)) {
   -1 15067             return !isException;
   -1 15068           }
   -1 15069           return !lookupTable.evaluateRoleForElement[nodeName]({
   -1 15070             node: node,
   -1 15071             role: role,
   -1 15072             out: isException
   -1 15073           });
   -1 15074         }).map(function(candidate) {
   -1 15075           return candidate.name.toString();
13985 15076         });
   -1 15077         if (unsupportedAttrs.length) {
   -1 15078           this.data(unsupportedAttrs);
   -1 15079           return true;
   -1 15080         }
   -1 15081         return false;
   -1 15082       }
   -1 15083     }, {
   -1 15084       id: 'unsupportedrole',
   -1 15085       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 15086         return axe.commons.aria.isUnsupportedRole(axe.commons.aria.getRole(node));
13986 15087       }
13987 15088     }, {
13988 15089       id: 'aria-valid-attr-value',
@@ -14047,8 +15148,8 @@ module.exports = {
14047 15148           search: false
14048 15149         };
14049 15150         function validScrollableTagName(node) {
14050    -1           var tagName = node.tagName.toUpperCase();
14051    -1           return VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS[tagName] || false;
   -1 15151           var nodeName = node.nodeName.toUpperCase();
   -1 15152           return VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS[nodeName] || false;
14052 15153         }
14053 15154         function validScrollableRole(node) {
14054 15155           var role = node.getAttribute('role');
@@ -14066,7 +15167,7 @@ module.exports = {
14066 15167     }, {
14067 15168       id: 'color-contrast',
14068 15169       evaluate: function evaluate(node, options, virtualNode, context) {
14069    -1         var _axe$commons4 = axe.commons, dom = _axe$commons4.dom, color = _axe$commons4.color, text = _axe$commons4.text;
   -1 15170         var _axe$commons6 = axe.commons, dom = _axe$commons6.dom, color = _axe$commons6.color, text = _axe$commons6.text;
14070 15171         if (!dom.isVisible(node, false)) {
14071 15172           return true;
14072 15173         }
@@ -14115,7 +15216,7 @@ module.exports = {
14115 15216     }, {
14116 15217       id: 'link-in-text-block',
14117 15218       evaluate: function evaluate(node, options, virtualNode, context) {
14118    -1         var _axe$commons5 = axe.commons, color = _axe$commons5.color, dom = _axe$commons5.dom;
   -1 15219         var _axe$commons7 = axe.commons, color = _axe$commons7.color, dom = _axe$commons7.dom;
14119 15220         function getContrast(color1, color2) {
14120 15221           var c1lum = color1.getRelativeLuminance();
14121 15222           var c2lum = color2.getRelativeLuminance();
@@ -14185,7 +15286,7 @@ module.exports = {
14185 15286           bday: [ 'text', 'search', 'date' ],
14186 15287           email: [ 'text', 'search', 'email' ],
14187 15288           'cc-exp': [ 'text', 'search', 'month' ],
14188    -1           'street-address': [],
   -1 15289           'street-address': [ 'text' ],
14189 15290           tel: [ 'text', 'search', 'tel' ],
14190 15291           'cc-exp-month': number,
14191 15292           'cc-exp-year': number,
@@ -14216,10 +15317,12 @@ module.exports = {
14216 15317           return true;
14217 15318         }
14218 15319         var allowedTypes = allowedTypesMap[purposeTerm];
   -1 15320         var type = node.hasAttribute('type') ? axe.commons.text.sanitize(node.getAttribute('type')).toLowerCase() : 'text';
   -1 15321         type = axe.utils.validInputTypes().includes(type) ? type : 'text';
14219 15322         if (typeof allowedTypes === 'undefined') {
14220    -1           return node.type === 'text';
   -1 15323           return type === 'text';
14221 15324         }
14222    -1         return allowedTypes.includes(node.type);
   -1 15325         return allowedTypes.includes(type);
14223 15326       }
14224 15327     }, {
14225 15328       id: 'autocomplete-valid',
@@ -14232,7 +15335,7 @@ module.exports = {
14232 15335       evaluate: function evaluate(node, options, virtualNode, context) {
14233 15336         var failureCode, self = this;
14234 15337         function getUnrelatedElements(parent, name) {
14235    -1           return axe.commons.utils.toArray(parent.querySelectorAll('select,textarea,button,input:not([name="' + name + '"]):not([type="hidden"])'));
   -1 15338           return axe.utils.toArray(parent.querySelectorAll('select,textarea,button,input:not([name="' + name + '"]):not([type="hidden"])'));
14236 15339         }
14237 15340         function checkFieldset(group, name) {
14238 15341           var firstNode = group.firstElementChild;
@@ -14273,14 +15376,14 @@ module.exports = {
14273 15376           return true;
14274 15377         }
14275 15378         function spliceCurrentNode(nodes, current) {
14276    -1           return axe.commons.utils.toArray(nodes).filter(function(candidate) {
   -1 15379           return axe.utils.toArray(nodes).filter(function(candidate) {
14277 15380             return candidate !== current;
14278 15381           });
14279 15382         }
14280 15383         function runCheck(virtualNode) {
14281    -1           var name = axe.commons.utils.escapeSelector(virtualNode.actualNode.name);
   -1 15384           var name = axe.utils.escapeSelector(virtualNode.actualNode.name);
14282 15385           var root = axe.commons.dom.getRootNode(virtualNode.actualNode);
14283    -1           var matchingNodes = root.querySelectorAll('input[type="' + axe.commons.utils.escapeSelector(virtualNode.actualNode.type) + '"][name="' + name + '"]');
   -1 15386           var matchingNodes = root.querySelectorAll('input[type="' + axe.utils.escapeSelector(virtualNode.actualNode.type) + '"][name="' + name + '"]');
14284 15387           if (matchingNodes.length < 2) {
14285 15388             return true;
14286 15389           }
@@ -14334,26 +15437,57 @@ module.exports = {
14334 15437     }, {
14335 15438       id: 'group-labelledby',
14336 15439       evaluate: function evaluate(node, options, virtualNode, context) {
14337    -1         this.data({
14338    -1           name: node.getAttribute('name'),
14339    -1           type: node.getAttribute('type')
14340    -1         });
14341    -1         var doc = axe.commons.dom.getRootNode(node);
14342    -1         var matchingNodes = doc.querySelectorAll('input[type="' + axe.commons.utils.escapeSelector(node.type) + '"][name="' + axe.commons.utils.escapeSelector(node.name) + '"]');
   -1 15440         var _axe$commons8 = axe.commons, dom = _axe$commons8.dom, text = _axe$commons8.text;
   -1 15441         var type = axe.utils.escapeSelector(node.type);
   -1 15442         var name = axe.utils.escapeSelector(node.name);
   -1 15443         var doc = dom.getRootNode(node);
   -1 15444         var data = {
   -1 15445           name: node.name,
   -1 15446           type: node.type
   -1 15447         };
   -1 15448         var matchingNodes = Array.from(doc.querySelectorAll('input[type="' + type + '"][name="' + name + '"]'));
14343 15449         if (matchingNodes.length <= 1) {
   -1 15450           this.data(data);
14344 15451           return true;
14345 15452         }
14346    -1         return [].map.call(matchingNodes, function(m) {
14347    -1           var l = m.getAttribute('aria-labelledby');
14348    -1           return l ? l.split(/\s+/) : [];
14349    -1         }).reduce(function(prev, curr) {
14350    -1           return prev.filter(function(n) {
14351    -1             return curr.includes(n);
   -1 15453         var sharedLabels = dom.idrefs(node, 'aria-labelledby').filter(function(label) {
   -1 15454           return !!label;
   -1 15455         });
   -1 15456         var uniqueLabels = sharedLabels.slice();
   -1 15457         matchingNodes.forEach(function(groupItem) {
   -1 15458           if (groupItem === node) {
   -1 15459             return;
   -1 15460           }
   -1 15461           var labels = dom.idrefs(groupItem, 'aria-labelledby').filter(function(newLabel) {
   -1 15462             return newLabel;
14352 15463           });
14353    -1         }).filter(function(n) {
14354    -1           var labelNode = doc.getElementById(n);
14355    -1           return labelNode && axe.commons.text.accessibleText(labelNode, true);
14356    -1         }).length !== 0;
   -1 15464           sharedLabels = sharedLabels.filter(function(sharedLabel) {
   -1 15465             return labels.includes(sharedLabel);
   -1 15466           });
   -1 15467           uniqueLabels = uniqueLabels.filter(function(uniqueLabel) {
   -1 15468             return !labels.includes(uniqueLabel);
   -1 15469           });
   -1 15470         });
   -1 15471         var accessibleTextOptions = {
   -1 15472           inLabelledByContext: true
   -1 15473         };
   -1 15474         uniqueLabels = uniqueLabels.filter(function(labelNode) {
   -1 15475           return text.accessibleText(labelNode, accessibleTextOptions);
   -1 15476         });
   -1 15477         sharedLabels = sharedLabels.filter(function(labelNode) {
   -1 15478           return text.accessibleText(labelNode, accessibleTextOptions);
   -1 15479         });
   -1 15480         if (uniqueLabels.length > 0 && sharedLabels.length > 0) {
   -1 15481           this.data(data);
   -1 15482           return true;
   -1 15483         }
   -1 15484         if (uniqueLabels.length > 0 && sharedLabels.length === 0) {
   -1 15485           data.failureCode = 'no-shared-label';
   -1 15486         } else if (uniqueLabels.length === 0 && sharedLabels.length > 0) {
   -1 15487           data.failureCode = 'no-unique-label';
   -1 15488         }
   -1 15489         this.data(data);
   -1 15490         return false;
14357 15491       },
14358 15492       after: function after(results, options) {
14359 15493         var seen = {};
@@ -14398,6 +15532,25 @@ module.exports = {
14398 15532         });
14399 15533       }
14400 15534     }, {
   -1 15535       id: 'focusable-disabled',
   -1 15536       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 15537         var elementsThatCanBeDisabled = [ 'BUTTON', 'FIELDSET', 'INPUT', 'SELECT', 'TEXTAREA' ];
   -1 15538         var tabbableElements = virtualNode.tabbableElements;
   -1 15539         if (!tabbableElements || !tabbableElements.length) {
   -1 15540           return true;
   -1 15541         }
   -1 15542         var relatedNodes = tabbableElements.reduce(function(out, _ref3) {
   -1 15543           var el = _ref3.actualNode;
   -1 15544           var nodeName = el.nodeName.toUpperCase();
   -1 15545           if (elementsThatCanBeDisabled.includes(nodeName)) {
   -1 15546             out.push(el);
   -1 15547           }
   -1 15548           return out;
   -1 15549         }, []);
   -1 15550         this.relatedNodes(relatedNodes);
   -1 15551         return relatedNodes.length === 0;
   -1 15552       }
   -1 15553     }, {
14401 15554       id: 'focusable-no-name',
14402 15555       evaluate: function evaluate(node, options, virtualNode, context) {
14403 15556         var tabIndex = node.getAttribute('tabindex'), inFocusOrder = axe.commons.dom.isFocusable(node) && tabIndex > -1;
@@ -14407,6 +15560,25 @@ module.exports = {
14407 15560         return !axe.commons.text.accessibleTextVirtual(virtualNode);
14408 15561       }
14409 15562     }, {
   -1 15563       id: 'focusable-not-tabbable',
   -1 15564       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 15565         var elementsThatCanBeDisabled = [ 'BUTTON', 'FIELDSET', 'INPUT', 'SELECT', 'TEXTAREA' ];
   -1 15566         var tabbableElements = virtualNode.tabbableElements;
   -1 15567         if (!tabbableElements || !tabbableElements.length) {
   -1 15568           return true;
   -1 15569         }
   -1 15570         var relatedNodes = tabbableElements.reduce(function(out, _ref4) {
   -1 15571           var el = _ref4.actualNode;
   -1 15572           var nodeName = el.nodeName.toUpperCase();
   -1 15573           if (!elementsThatCanBeDisabled.includes(nodeName)) {
   -1 15574             out.push(el);
   -1 15575           }
   -1 15576           return out;
   -1 15577         }, []);
   -1 15578         this.relatedNodes(relatedNodes);
   -1 15579         return relatedNodes.length === 0;
   -1 15580       }
   -1 15581     }, {
14410 15582       id: 'landmark-is-top-level',
14411 15583       evaluate: function evaluate(node, options, virtualNode, context) {
14412 15584         var landmarks = axe.commons.aria.getRolesByType('landmark');
@@ -14416,7 +15588,7 @@ module.exports = {
14416 15588         });
14417 15589         while (parent) {
14418 15590           var role = parent.getAttribute('role');
14419    -1           if (!role && parent.tagName.toLowerCase() !== 'form') {
   -1 15591           if (!role && parent.nodeName.toUpperCase() !== 'FORM') {
14420 15592             role = axe.commons.aria.implicitRole(parent);
14421 15593           }
14422 15594           if (role && landmarks.includes(role)) {
@@ -14546,14 +15718,20 @@ module.exports = {
14546 15718         return node.tabIndex <= 0;
14547 15719       }
14548 15720     }, {
   -1 15721       id: 'alt-space-value',
   -1 15722       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 15723         var validAttrValue = /^\s+$/.test(node.getAttribute('alt'));
   -1 15724         return node.hasAttribute('alt') && validAttrValue;
   -1 15725       }
   -1 15726     }, {
14549 15727       id: 'duplicate-img-label',
14550 15728       evaluate: function evaluate(node, options, virtualNode, context) {
14551 15729         var text = axe.commons.text.visibleVirtual(virtualNode, true).toLowerCase();
14552 15730         if (text === '') {
14553 15731           return false;
14554 15732         }
14555    -1         var images = axe.utils.querySelectorAll(virtualNode, 'img').filter(function(_ref2) {
14556    -1           var actualNode = _ref2.actualNode;
   -1 15733         var images = axe.utils.querySelectorAll(virtualNode, 'img').filter(function(_ref5) {
   -1 15734           var actualNode = _ref5.actualNode;
14557 15735           return axe.commons.dom.isVisible(actualNode) && ![ 'none', 'presentation' ].includes(actualNode.getAttribute('role'));
14558 15736         });
14559 15737         return images.some(function(img) {
@@ -14565,7 +15743,7 @@ module.exports = {
14565 15743       evaluate: function evaluate(node, options, virtualNode, context) {
14566 15744         if (node.getAttribute('id')) {
14567 15745           var root = axe.commons.dom.getRootNode(node);
14568    -1           var id = axe.commons.utils.escapeSelector(node.getAttribute('id'));
   -1 15746           var id = axe.utils.escapeSelector(node.getAttribute('id'));
14569 15747           var label = root.querySelector('label[for="' + id + '"]');
14570 15748           if (label) {
14571 15749             if (!axe.commons.dom.isVisible(label)) {
@@ -14601,10 +15779,12 @@ module.exports = {
14601 15779       evaluate: function evaluate(node, options, virtualNode, context) {
14602 15780         if (node.getAttribute('id')) {
14603 15781           var root = axe.commons.dom.getRootNode(node);
14604    -1           var id = axe.commons.utils.escapeSelector(node.getAttribute('id'));
   -1 15782           var id = axe.utils.escapeSelector(node.getAttribute('id'));
14605 15783           var label = root.querySelector('label[for="' + id + '"]');
14606    -1           if (label && !axe.commons.dom.isVisible(label)) {
14607    -1             return true;
   -1 15784           if (label && !axe.commons.dom.isVisible(label, true)) {
   -1 15785             var name = axe.commons.text.accessibleTextVirtual(virtualNode).trim();
   -1 15786             var isNameEmpty = name === '';
   -1 15787             return isNameEmpty;
14608 15788           }
14609 15789         }
14610 15790         return false;
@@ -14612,16 +15792,52 @@ module.exports = {
14612 15792     }, {
14613 15793       id: 'implicit-label',
14614 15794       evaluate: function evaluate(node, options, virtualNode, context) {
14615    -1         var label = axe.commons.dom.findUpVirtual(virtualNode, 'label');
   -1 15795         var _axe$commons9 = axe.commons, dom = _axe$commons9.dom, text = _axe$commons9.text;
   -1 15796         var label = dom.findUpVirtual(virtualNode, 'label');
14616 15797         if (label) {
14617    -1           return !!axe.commons.text.accessibleTextVirtual(label);
   -1 15798           return !!text.accessibleText(label, {
   -1 15799             inControlContext: true
   -1 15800           });
14618 15801         }
14619 15802         return false;
14620 15803       }
14621 15804     }, {
   -1 15805       id: 'label-content-name-mismatch',
   -1 15806       evaluate: function evaluate(node, options, virtualNode, context) {
   -1 15807         var text = axe.commons.text;
   -1 15808         var accText = text.accessibleText(node).toLowerCase();
   -1 15809         if (text.isHumanInterpretable(accText) < 1) {
   -1 15810           return undefined;
   -1 15811         }
   -1 15812         var visibleText = text.sanitize(text.visibleVirtual(virtualNode)).toLowerCase();
   -1 15813         if (text.isHumanInterpretable(visibleText) < 1) {
   -1 15814           if (isStringContained(visibleText, accText)) {
   -1 15815             return true;
   -1 15816           }
   -1 15817           return undefined;
   -1 15818         }
   -1 15819         return isStringContained(visibleText, accText);
   -1 15820         function isStringContained(compare, compareWith) {
   -1 15821           var curatedCompareWith = curateString(compareWith);
   -1 15822           var curatedCompare = curateString(compare);
   -1 15823           if (!curatedCompareWith || !curatedCompare) {
   -1 15824             return false;
   -1 15825           }
   -1 15826           return curatedCompareWith.includes(curatedCompare);
   -1 15827         }
   -1 15828         function curateString(str) {
   -1 15829           var noUnicodeStr = text.removeUnicode(str, {
   -1 15830             emoji: true,
   -1 15831             nonBmp: true,
   -1 15832             punctuations: true
   -1 15833           });
   -1 15834           return text.sanitize(noUnicodeStr);
   -1 15835         }
   -1 15836       }
   -1 15837     }, {
14622 15838       id: 'multiple-label',
14623 15839       evaluate: function evaluate(node, options, virtualNode, context) {
14624    -1         var id = axe.commons.utils.escapeSelector(node.getAttribute('id'));
   -1 15840         var id = axe.utils.escapeSelector(node.getAttribute('id'));
14625 15841         var labels = Array.from(document.querySelectorAll('label[for="' + id + '"]'));
14626 15842         var parent = node.parentNode;
14627 15843         if (labels.length) {
@@ -14632,7 +15848,7 @@ module.exports = {
14632 15848           });
14633 15849         }
14634 15850         while (parent) {
14635    -1           if (parent.tagName === 'LABEL' && labels.indexOf(parent) === -1) {
   -1 15851           if (parent.nodeName.toUpperCase() === 'LABEL' && labels.indexOf(parent) === -1) {
14636 15852             labels.push(parent);
14637 15853           }
14638 15854           parent = parent.parentNode;
@@ -14655,13 +15871,13 @@ module.exports = {
14655 15871       id: 'valid-lang',
14656 15872       evaluate: function evaluate(node, options, virtualNode, context) {
14657 15873         var langs, invalid;
14658    -1         langs = (options ? options : axe.commons.utils.validLangs()).map(axe.commons.utils.getBaseLang);
   -1 15874         langs = (options ? options : axe.utils.validLangs()).map(axe.utils.getBaseLang);
14659 15875         invalid = [ 'lang', 'xml:lang' ].reduce(function(invalid, langAttr) {
14660 15876           var langVal = node.getAttribute(langAttr);
14661 15877           if (typeof langVal !== 'string') {
14662 15878             return invalid;
14663 15879           }
14664    -1           var baselangVal = axe.commons.utils.getBaseLang(langVal);
   -1 15880           var baselangVal = axe.utils.getBaseLang(langVal);
14665 15881           if (baselangVal !== '' && langs.indexOf(baselangVal) === -1) {
14666 15882             invalid.push(langAttr + '="' + node.getAttribute(langAttr) + '"');
14667 15883           }
@@ -14676,7 +15892,7 @@ module.exports = {
14676 15892     }, {
14677 15893       id: 'xml-lang-mismatch',
14678 15894       evaluate: function evaluate(node, options, virtualNode, context) {
14679    -1         var getBaseLang = axe.commons.utils.getBaseLang;
   -1 15895         var getBaseLang = axe.utils.getBaseLang;
14680 15896         var primaryLangValue = getBaseLang(node.getAttribute('lang'));
14681 15897         var primaryXmlLangValue = getBaseLang(node.getAttribute('xml:lang'));
14682 15898         return primaryLangValue === primaryXmlLangValue;
@@ -14686,27 +15902,25 @@ module.exports = {
14686 15902       evaluate: function evaluate(node, options, virtualNode, context) {
14687 15903         var parent = axe.commons.dom.getComposedParent(node);
14688 15904         var parentTagName = parent.nodeName.toUpperCase();
   -1 15905         var parentRole = axe.commons.aria.getRole(parent, {
   -1 15906           noImplicit: true
   -1 15907         });
   -1 15908         if (parentTagName === 'DIV' && [ 'presentation', 'none', null ].includes(parentRole)) {
   -1 15909           parent = axe.commons.dom.getComposedParent(parent);
   -1 15910           parentTagName = parent.nodeName.toUpperCase();
   -1 15911           parentRole = axe.commons.aria.getRole(parent, {
   -1 15912             noImplicit: true
   -1 15913           });
   -1 15914         }
14689 15915         if (parentTagName !== 'DL') {
14690 15916           return false;
14691 15917         }
14692    -1         var parentRole = (parent.getAttribute('role') || '').toLowerCase();
14693    -1         if (!parentRole || !axe.commons.aria.isValidRole(parentRole)) {
14694    -1           return true;
14695    -1         }
14696    -1         if (parentRole === 'list') {
   -1 15918         if (!parentRole || parentRole === 'list') {
14697 15919           return true;
14698 15920         }
14699 15921         return false;
14700 15922       }
14701 15923     }, {
14702    -1       id: 'has-listitem',
14703    -1       evaluate: function evaluate(node, options, virtualNode, context) {
14704    -1         return virtualNode.children.every(function(_ref3) {
14705    -1           var actualNode = _ref3.actualNode;
14706    -1           return actualNode.nodeName.toUpperCase() !== 'LI';
14707    -1         });
14708    -1       }
14709    -1     }, {
14710 15924       id: 'listitem',
14711 15925       evaluate: function evaluate(node, options, virtualNode, context) {
14712 15926         var parent = axe.commons.dom.getComposedParent(node);
@@ -14726,7 +15940,7 @@ module.exports = {
14726 15940     }, {
14727 15941       id: 'only-dlitems',
14728 15942       evaluate: function evaluate(node, options, virtualNode, context) {
14729    -1         var _axe$commons6 = axe.commons, dom = _axe$commons6.dom, aria = _axe$commons6.aria;
   -1 15943         var _axe$commons10 = axe.commons, dom = _axe$commons10.dom, aria = _axe$commons10.aria;
14730 15944         var ALLOWED_ROLES = [ 'definition', 'term', 'list' ];
14731 15945         var base = {
14732 15946           badNodes: [],
@@ -14778,8 +15992,8 @@ module.exports = {
14778 15992           hasListItem: false,
14779 15993           liItemsWithRole: 0
14780 15994         };
14781    -1         var out = virtualNode.children.reduce(function(out, _ref4) {
14782    -1           var actualNode = _ref4.actualNode;
   -1 15995         var out = virtualNode.children.reduce(function(out, _ref6) {
   -1 15996           var actualNode = _ref6.actualNode;
14783 15997           var tagName = actualNode.nodeName.toUpperCase();
14784 15998           if (actualNode.nodeType === 1 && dom.isVisible(actualNode, true, false)) {
14785 15999             var role = (actualNode.getAttribute('role') || '').toLowerCase();
@@ -14802,8 +16016,8 @@ module.exports = {
14802 16016           }
14803 16017           return out;
14804 16018         }, base);
14805    -1         var virtualNodeChildrenOfTypeLi = virtualNode.children.filter(function(_ref5) {
14806    -1           var actualNode = _ref5.actualNode;
   -1 16019         var virtualNodeChildrenOfTypeLi = virtualNode.children.filter(function(_ref7) {
   -1 16020           var actualNode = _ref7.actualNode;
14807 16021           return actualNode.nodeName.toUpperCase() === 'LI';
14808 16022         });
14809 16023         var allLiItemsHaveRole = out.liItemsWithRole > 0 && virtualNodeChildrenOfTypeLi.length === out.liItemsWithRole;
@@ -14839,8 +16053,8 @@ module.exports = {
14839 16053       id: 'caption',
14840 16054       evaluate: function evaluate(node, options, virtualNode, context) {
14841 16055         var tracks = axe.utils.querySelectorAll(virtualNode, 'track');
14842    -1         var hasCaptions = tracks.some(function(_ref6) {
14843    -1           var actualNode = _ref6.actualNode;
   -1 16056         var hasCaptions = tracks.some(function(_ref8) {
   -1 16057           var actualNode = _ref8.actualNode;
14844 16058           return (actualNode.getAttribute('kind') || '').toLowerCase() === 'captions';
14845 16059         });
14846 16060         return hasCaptions ? false : undefined;
@@ -14849,8 +16063,8 @@ module.exports = {
14849 16063       id: 'description',
14850 16064       evaluate: function evaluate(node, options, virtualNode, context) {
14851 16065         var tracks = axe.utils.querySelectorAll(virtualNode, 'track');
14852    -1         var hasDescriptions = tracks.some(function(_ref7) {
14853    -1           var actualNode = _ref7.actualNode;
   -1 16066         var hasDescriptions = tracks.some(function(_ref9) {
   -1 16067           var actualNode = _ref9.actualNode;
14854 16068           return (actualNode.getAttribute('kind') || '').toLowerCase() === 'descriptions';
14855 16069         });
14856 16070         return hasDescriptions ? false : undefined;
@@ -14882,12 +16096,12 @@ module.exports = {
14882 16096     }, {
14883 16097       id: 'css-orientation-lock',
14884 16098       evaluate: function evaluate(node, options, virtualNode, context) {
14885    -1         var _ref8 = context || {}, _ref8$cssom = _ref8.cssom, cssom = _ref8$cssom === undefined ? undefined : _ref8$cssom;
   -1 16099         var _ref10 = context || {}, _ref10$cssom = _ref10.cssom, cssom = _ref10$cssom === undefined ? undefined : _ref10$cssom;
14886 16100         if (!cssom || !cssom.length) {
14887 16101           return undefined;
14888 16102         }
14889    -1         var rulesGroupByDocumentFragment = cssom.reduce(function(out, _ref9) {
14890    -1           var sheet = _ref9.sheet, root = _ref9.root, shadowId = _ref9.shadowId;
   -1 16103         var rulesGroupByDocumentFragment = cssom.reduce(function(out, _ref11) {
   -1 16104           var sheet = _ref11.sheet, root = _ref11.root, shadowId = _ref11.shadowId;
14891 16105           var key = shadowId ? shadowId : 'topDocument';
14892 16106           if (!out[key]) {
14893 16107             out[key] = {
@@ -15026,7 +16240,7 @@ module.exports = {
15026 16240           this.data(parseInt(ariaHeadingLevel, 10));
15027 16241           return true;
15028 16242         }
15029    -1         var headingLevel = node.tagName.match(/H(\d)/);
   -1 16243         var headingLevel = node.nodeName.toUpperCase().match(/H(\d)/);
15030 16244         if (headingLevel) {
15031 16245           this.data(parseInt(headingLevel[1], 10));
15032 16246           return true;
@@ -15158,7 +16372,7 @@ module.exports = {
15158 16372     }, {
15159 16373       id: 'region',
15160 16374       evaluate: function evaluate(node, options, virtualNode, context) {
15161    -1         var _axe$commons7 = axe.commons, dom = _axe$commons7.dom, aria = _axe$commons7.aria;
   -1 16375         var _axe$commons11 = axe.commons, dom = _axe$commons11.dom, aria = _axe$commons11.aria;
15162 16376         function getSkiplink(virtualNode) {
15163 16377           var firstLink = axe.utils.querySelectorAll(virtualNode, 'a[href]')[0];
15164 16378           if (firstLink && axe.commons.dom.getElementByReference(firstLink.actualNode, 'href')) {
@@ -15189,7 +16403,7 @@ module.exports = {
15189 16403           }
15190 16404           return implicitLandmarks.some(function(implicitSelector) {
15191 16405             var matches = axe.utils.matchesSelector(node, implicitSelector);
15192    -1             if (node.tagName.toLowerCase() === 'form') {
   -1 16406             if (node.nodeName.toUpperCase() === 'FORM') {
15193 16407               var titleAttr = node.getAttribute('title');
15194 16408               var title = titleAttr && titleAttr.trim() !== '' ? axe.commons.text.sanitize(titleAttr) : null;
15195 16409               return matches && (!!aria.labelVirtual(virtualNode) || !!title);
@@ -15204,8 +16418,8 @@ module.exports = {
15204 16418           } else if (dom.hasContent(node, true)) {
15205 16419             return [ node ];
15206 16420           } else {
15207    -1             return virtualNode.children.filter(function(_ref10) {
15208    -1               var actualNode = _ref10.actualNode;
   -1 16421             return virtualNode.children.filter(function(_ref12) {
   -1 16422               var actualNode = _ref12.actualNode;
15209 16423               return actualNode.nodeType === 1;
15210 16424             }).map(findRegionlessElms).reduce(function(a, b) {
15211 16425               return a.concat(b);
@@ -15253,7 +16467,7 @@ module.exports = {
15253 16467           return true;
15254 16468         }
15255 16469         var root = axe.commons.dom.getRootNode(node);
15256    -1         var matchingNodes = Array.from(root.querySelectorAll('[id="' + axe.commons.utils.escapeSelector(id) + '"]')).filter(function(foundNode) {
   -1 16470         var matchingNodes = Array.from(root.querySelectorAll('[id="' + axe.utils.escapeSelector(id) + '"]')).filter(function(foundNode) {
15257 16471           return foundNode !== node;
15258 16472         });
15259 16473         if (matchingNodes.length) {
@@ -15280,7 +16494,7 @@ module.exports = {
15280 16494           return true;
15281 16495         }
15282 16496         var root = axe.commons.dom.getRootNode(node);
15283    -1         var matchingNodes = Array.from(root.querySelectorAll('[id="' + axe.commons.utils.escapeSelector(id) + '"]')).filter(function(foundNode) {
   -1 16497         var matchingNodes = Array.from(root.querySelectorAll('[id="' + axe.utils.escapeSelector(id) + '"]')).filter(function(foundNode) {
15284 16498           return foundNode !== node;
15285 16499         });
15286 16500         if (matchingNodes.length) {
@@ -15307,7 +16521,7 @@ module.exports = {
15307 16521           return true;
15308 16522         }
15309 16523         var root = axe.commons.dom.getRootNode(node);
15310    -1         var matchingNodes = Array.from(root.querySelectorAll('[id="' + axe.commons.utils.escapeSelector(id) + '"]')).filter(function(foundNode) {
   -1 16524         var matchingNodes = Array.from(root.querySelectorAll('[id="' + axe.utils.escapeSelector(id) + '"]')).filter(function(foundNode) {
15311 16525           return foundNode !== node;
15312 16526         });
15313 16527         if (matchingNodes.length) {
@@ -15329,16 +16543,14 @@ module.exports = {
15329 16543     }, {
15330 16544       id: 'aria-label',
15331 16545       evaluate: function evaluate(node, options, virtualNode, context) {
15332    -1         var label = node.getAttribute('aria-label');
15333    -1         return !!(label ? axe.commons.text.sanitize(label).trim() : '');
   -1 16546         var _axe$commons12 = axe.commons, text = _axe$commons12.text, aria = _axe$commons12.aria;
   -1 16547         return !!text.sanitize(aria.arialabelText(node));
15334 16548       }
15335 16549     }, {
15336 16550       id: 'aria-labelledby',
15337 16551       evaluate: function evaluate(node, options, virtualNode, context) {
15338    -1         var getIdRefs = axe.commons.dom.idrefs;
15339    -1         return getIdRefs(node, 'aria-labelledby').some(function(elm) {
15340    -1           return elm && axe.commons.text.accessibleText(elm, true);
15341    -1         });
   -1 16552         var _axe$commons13 = axe.commons, text = _axe$commons13.text, aria = _axe$commons13.aria;
   -1 16553         return !!text.sanitize(aria.arialabelledbyText(node));
15342 16554       }
15343 16555     }, {
15344 16556       id: 'button-has-visible-text',
@@ -15402,8 +16614,8 @@ module.exports = {
15402 16614     }, {
15403 16615       id: 'non-empty-title',
15404 16616       evaluate: function evaluate(node, options, virtualNode, context) {
15405    -1         var title = node.getAttribute('title');
15406    -1         return !!(title ? axe.commons.text.sanitize(title).trim() : '');
   -1 16617         var text = axe.commons.text;
   -1 16618         return !!text.sanitize(text.titleText(node));
15407 16619       }
15408 16620     }, {
15409 16621       id: 'non-empty-value',
@@ -15601,7 +16813,7 @@ module.exports = {
15601 16813       id: 'hidden-content',
15602 16814       evaluate: function evaluate(node, options, virtualNode, context) {
15603 16815         var whitelist = [ 'SCRIPT', 'HEAD', 'TITLE', 'NOSCRIPT', 'STYLE', 'TEMPLATE' ];
15604    -1         if (!whitelist.includes(node.tagName.toUpperCase()) && axe.commons.dom.hasContentVirtual(virtualNode)) {
   -1 16816         if (!whitelist.includes(node.nodeName.toUpperCase()) && axe.commons.dom.hasContentVirtual(virtualNode)) {
15605 16817           var styles = window.getComputedStyle(node);
15606 16818           if (styles.getPropertyValue('display') === 'none') {
15607 16819             return undefined;
@@ -15618,228 +16830,256 @@ module.exports = {
15618 16830     } ],
15619 16831     commons: function() {
15620 16832       var commons = {};
15621    -1       var aria = commons.aria = {}, lookupTable = aria.lookupTable = {};
   -1 16833       var aria = commons.aria = {};
   -1 16834       var lookupTable = aria.lookupTable = {};
   -1 16835       var isNull = function isNull(value) {
   -1 16836         return value === null;
   -1 16837       };
   -1 16838       var isNotNull = function isNotNull(value) {
   -1 16839         return value !== null;
   -1 16840       };
15622 16841       lookupTable.attributes = {
15623 16842         'aria-activedescendant': {
15624    -1           type: 'idref'
   -1 16843           type: 'idref',
   -1 16844           allowEmpty: true,
   -1 16845           unsupported: false
15625 16846         },
15626 16847         'aria-atomic': {
15627 16848           type: 'boolean',
15628    -1           values: [ 'true', 'false' ]
   -1 16849           values: [ 'true', 'false' ],
   -1 16850           unsupported: false
15629 16851         },
15630 16852         'aria-autocomplete': {
15631 16853           type: 'nmtoken',
15632    -1           values: [ 'inline', 'list', 'both', 'none' ]
   -1 16854           values: [ 'inline', 'list', 'both', 'none' ],
   -1 16855           unsupported: false
15633 16856         },
15634 16857         'aria-busy': {
15635 16858           type: 'boolean',
15636    -1           values: [ 'true', 'false' ]
   -1 16859           values: [ 'true', 'false' ],
   -1 16860           unsupported: false
15637 16861         },
15638 16862         'aria-checked': {
15639 16863           type: 'nmtoken',
15640    -1           values: [ 'true', 'false', 'mixed', 'undefined' ]
   -1 16864           values: [ 'true', 'false', 'mixed', 'undefined' ],
   -1 16865           unsupported: false
15641 16866         },
15642 16867         'aria-colcount': {
15643    -1           type: 'int'
   -1 16868           type: 'int',
   -1 16869           unsupported: false
15644 16870         },
15645 16871         'aria-colindex': {
15646    -1           type: 'int'
   -1 16872           type: 'int',
   -1 16873           unsupported: false
15647 16874         },
15648 16875         'aria-colspan': {
15649    -1           type: 'int'
   -1 16876           type: 'int',
   -1 16877           unsupported: false
15650 16878         },
15651 16879         'aria-controls': {
15652    -1           type: 'idrefs'
   -1 16880           type: 'idrefs',
   -1 16881           allowEmpty: true,
   -1 16882           unsupported: false
15653 16883         },
15654 16884         'aria-current': {
15655 16885           type: 'nmtoken',
15656    -1           values: [ 'page', 'step', 'location', 'date', 'time', 'true', 'false' ]
   -1 16886           allowEmpty: true,
   -1 16887           values: [ 'page', 'step', 'location', 'date', 'time', 'true', 'false' ],
   -1 16888           unsupported: false
15657 16889         },
15658 16890         'aria-describedby': {
15659    -1           type: 'idrefs'
   -1 16891           type: 'idrefs',
   -1 16892           allowEmpty: true,
   -1 16893           unsupported: false
   -1 16894         },
   -1 16895         'aria-describedat': {
   -1 16896           unsupported: true,
   -1 16897           unstandardized: true
   -1 16898         },
   -1 16899         'aria-details': {
   -1 16900           unsupported: true
15660 16901         },
15661 16902         'aria-disabled': {
15662 16903           type: 'boolean',
15663    -1           values: [ 'true', 'false' ]
   -1 16904           values: [ 'true', 'false' ],
   -1 16905           unsupported: false
15664 16906         },
15665 16907         'aria-dropeffect': {
15666 16908           type: 'nmtokens',
15667    -1           values: [ 'copy', 'move', 'reference', 'execute', 'popup', 'none' ]
   -1 16909           values: [ 'copy', 'move', 'reference', 'execute', 'popup', 'none' ],
   -1 16910           unsupported: false
15668 16911         },
15669 16912         'aria-errormessage': {
15670    -1           type: 'idref'
   -1 16913           type: 'idref',
   -1 16914           allowEmpty: true,
   -1 16915           unsupported: false
15671 16916         },
15672 16917         'aria-expanded': {
15673 16918           type: 'nmtoken',
15674    -1           values: [ 'true', 'false', 'undefined' ]
   -1 16919           values: [ 'true', 'false', 'undefined' ],
   -1 16920           unsupported: false
15675 16921         },
15676 16922         'aria-flowto': {
15677    -1           type: 'idrefs'
   -1 16923           type: 'idrefs',
   -1 16924           allowEmpty: true,
   -1 16925           unsupported: false
15678 16926         },
15679 16927         'aria-grabbed': {
15680 16928           type: 'nmtoken',
15681    -1           values: [ 'true', 'false', 'undefined' ]
   -1 16929           values: [ 'true', 'false', 'undefined' ],
   -1 16930           unsupported: false
15682 16931         },
15683 16932         'aria-haspopup': {
15684 16933           type: 'nmtoken',
15685    -1           values: [ 'true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog' ]
   -1 16934           allowEmpty: true,
   -1 16935           values: [ 'true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog' ],
   -1 16936           unsupported: false
15686 16937         },
15687 16938         'aria-hidden': {
15688 16939           type: 'boolean',
15689    -1           values: [ 'true', 'false' ]
   -1 16940           values: [ 'true', 'false' ],
   -1 16941           unsupported: false
15690 16942         },
15691 16943         'aria-invalid': {
15692 16944           type: 'nmtoken',
15693    -1           values: [ 'true', 'false', 'spelling', 'grammar' ]
   -1 16945           allowEmpty: true,
   -1 16946           values: [ 'true', 'false', 'spelling', 'grammar' ],
   -1 16947           unsupported: false
15694 16948         },
15695 16949         'aria-keyshortcuts': {
15696    -1           type: 'string'
   -1 16950           type: 'string',
   -1 16951           allowEmpty: true,
   -1 16952           unsupported: false
15697 16953         },
15698 16954         'aria-label': {
15699    -1           type: 'string'
   -1 16955           type: 'string',
   -1 16956           allowEmpty: true,
   -1 16957           unsupported: false
15700 16958         },
15701 16959         'aria-labelledby': {
15702    -1           type: 'idrefs'
   -1 16960           type: 'idrefs',
   -1 16961           allowEmpty: true,
   -1 16962           unsupported: false
15703 16963         },
15704 16964         'aria-level': {
15705    -1           type: 'int'
   -1 16965           type: 'int',
   -1 16966           unsupported: false
15706 16967         },
15707 16968         'aria-live': {
15708 16969           type: 'nmtoken',
15709    -1           values: [ 'off', 'polite', 'assertive' ]
   -1 16970           values: [ 'off', 'polite', 'assertive' ],
   -1 16971           unsupported: false
15710 16972         },
15711 16973         'aria-modal': {
15712 16974           type: 'boolean',
15713    -1           values: [ 'true', 'false' ]
   -1 16975           values: [ 'true', 'false' ],
   -1 16976           unsupported: false
15714 16977         },
15715 16978         'aria-multiline': {
15716 16979           type: 'boolean',
15717    -1           values: [ 'true', 'false' ]
   -1 16980           values: [ 'true', 'false' ],
   -1 16981           unsupported: false
15718 16982         },
15719 16983         'aria-multiselectable': {
15720 16984           type: 'boolean',
15721    -1           values: [ 'true', 'false' ]
   -1 16985           values: [ 'true', 'false' ],
   -1 16986           unsupported: false
15722 16987         },
15723 16988         'aria-orientation': {
15724 16989           type: 'nmtoken',
15725    -1           values: [ 'horizontal', 'vertical' ]
   -1 16990           values: [ 'horizontal', 'vertical' ],
   -1 16991           unsupported: false
15726 16992         },
15727 16993         'aria-owns': {
15728    -1           type: 'idrefs'
   -1 16994           type: 'idrefs',
   -1 16995           allowEmpty: true,
   -1 16996           unsupported: false
15729 16997         },
15730 16998         'aria-placeholder': {
15731    -1           type: 'string'
   -1 16999           type: 'string',
   -1 17000           allowEmpty: true,
   -1 17001           unsupported: false
15732 17002         },
15733 17003         'aria-posinset': {
15734    -1           type: 'int'
   -1 17004           type: 'int',
   -1 17005           unsupported: false
15735 17006         },
15736 17007         'aria-pressed': {
15737 17008           type: 'nmtoken',
15738    -1           values: [ 'true', 'false', 'mixed', 'undefined' ]
   -1 17009           values: [ 'true', 'false', 'mixed', 'undefined' ],
   -1 17010           unsupported: false
15739 17011         },
15740 17012         'aria-readonly': {
15741 17013           type: 'boolean',
15742    -1           values: [ 'true', 'false' ]
   -1 17014           values: [ 'true', 'false' ],
   -1 17015           unsupported: false
15743 17016         },
15744 17017         'aria-relevant': {
15745 17018           type: 'nmtokens',
15746    -1           values: [ 'additions', 'removals', 'text', 'all' ]
   -1 17019           values: [ 'additions', 'removals', 'text', 'all' ],
   -1 17020           unsupported: false
15747 17021         },
15748 17022         'aria-required': {
15749 17023           type: 'boolean',
15750    -1           values: [ 'true', 'false' ]
   -1 17024           values: [ 'true', 'false' ],
   -1 17025           unsupported: false
   -1 17026         },
   -1 17027         'aria-roledescription': {
   -1 17028           type: 'string',
   -1 17029           allowEmpty: true,
   -1 17030           unsupported: {
   -1 17031             exceptions: [ 'button', {
   -1 17032               nodeName: 'input',
   -1 17033               properties: {
   -1 17034                 type: [ 'button', 'checkbox', 'image', 'radio', 'reset', 'submit' ]
   -1 17035               }
   -1 17036             }, 'img', 'select', 'summary' ]
   -1 17037           }
15751 17038         },
15752 17039         'aria-rowcount': {
15753    -1           type: 'int'
   -1 17040           type: 'int',
   -1 17041           unsupported: false
15754 17042         },
15755 17043         'aria-rowindex': {
15756    -1           type: 'int'
   -1 17044           type: 'int',
   -1 17045           unsupported: false
15757 17046         },
15758 17047         'aria-rowspan': {
15759    -1           type: 'int'
   -1 17048           type: 'int',
   -1 17049           unsupported: false
15760 17050         },
15761 17051         'aria-selected': {
15762 17052           type: 'nmtoken',
15763    -1           values: [ 'true', 'false', 'undefined' ]
   -1 17053           values: [ 'true', 'false', 'undefined' ],
   -1 17054           unsupported: false
15764 17055         },
15765 17056         'aria-setsize': {
15766    -1           type: 'int'
   -1 17057           type: 'int',
   -1 17058           unsupported: false
15767 17059         },
15768 17060         'aria-sort': {
15769 17061           type: 'nmtoken',
15770    -1           values: [ 'ascending', 'descending', 'other', 'none' ]
   -1 17062           values: [ 'ascending', 'descending', 'other', 'none' ],
   -1 17063           unsupported: false
15771 17064         },
15772 17065         'aria-valuemax': {
15773    -1           type: 'decimal'
15774    -1         },
15775    -1         'aria-valuemin': {
15776    -1           type: 'decimal'
15777    -1         },
15778    -1         'aria-valuenow': {
15779    -1           type: 'decimal'
15780    -1         },
15781    -1         'aria-valuetext': {
15782    -1           type: 'string'
15783    -1         }
15784    -1       };
15785    -1       lookupTable.globalAttributes = [ 'aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant' ];
15786    -1       var elementConditions = {
15787    -1         CANNOT_HAVE_LIST_ATTRIBUTE: function CANNOT_HAVE_LIST_ATTRIBUTE(node) {
15788    -1           var nodeAttrs = Array.from(node.attributes).map(function(a) {
15789    -1             return a.name.toUpperCase();
15790    -1           });
15791    -1           if (nodeAttrs.includes('LIST')) {
15792    -1             return false;
15793    -1           }
15794    -1           return true;
15795    -1         },
15796    -1         CANNOT_HAVE_HREF_ATTRIBUTE: function CANNOT_HAVE_HREF_ATTRIBUTE(node) {
15797    -1           var nodeAttrs = Array.from(node.attributes).map(function(a) {
15798    -1             return a.name.toUpperCase();
15799    -1           });
15800    -1           if (nodeAttrs.includes('HREF')) {
15801    -1             return false;
15802    -1           }
15803    -1           return true;
15804    -1         },
15805    -1         MUST_HAVE_HREF_ATTRIBUTE: function MUST_HAVE_HREF_ATTRIBUTE(node) {
15806    -1           if (!node.href) {
15807    -1             return false;
15808    -1           }
15809    -1           return true;
   -1 17066           type: 'decimal',
   -1 17067           unsupported: false
15810 17068         },
15811    -1         MUST_HAVE_SIZE_ATTRIBUTE_WITH_VALUE_GREATER_THAN_1: function MUST_HAVE_SIZE_ATTRIBUTE_WITH_VALUE_GREATER_THAN_1(node) {
15812    -1           var attr = 'SIZE';
15813    -1           var nodeAttrs = Array.from(node.attributes).map(function(a) {
15814    -1             return a.name.toUpperCase();
15815    -1           });
15816    -1           if (!nodeAttrs.includes(attr)) {
15817    -1             return false;
15818    -1           }
15819    -1           return Number(node.getAttribute(attr)) > 1;
   -1 17069         'aria-valuemin': {
   -1 17070           type: 'decimal',
   -1 17071           unsupported: false
15820 17072         },
15821    -1         MUST_HAVE_ALT_ATTRIBUTE: function MUST_HAVE_ALT_ATTRIBUTE(node) {
15822    -1           var attr = 'ALT';
15823    -1           var nodeAttrs = Array.from(node.attributes).map(function(a) {
15824    -1             return a.name.toUpperCase();
15825    -1           });
15826    -1           if (!nodeAttrs.includes(attr)) {
15827    -1             return false;
15828    -1           }
15829    -1           return true;
   -1 17073         'aria-valuenow': {
   -1 17074           type: 'decimal',
   -1 17075           unsupported: false
15830 17076         },
15831    -1         MUST_HAVE_ALT_ATTRIBUTE_WITH_VALUE: function MUST_HAVE_ALT_ATTRIBUTE_WITH_VALUE(node) {
15832    -1           var attr = 'ALT';
15833    -1           var nodeAttrs = Array.from(node.attributes).map(function(a) {
15834    -1             return a.name.toUpperCase();
15835    -1           });
15836    -1           if (!nodeAttrs.includes(attr)) {
15837    -1             return false;
15838    -1           }
15839    -1           var attrValue = node.getAttribute(attr);
15840    -1           return attrValue && attrValue.length > 0;
   -1 17077         'aria-valuetext': {
   -1 17078           type: 'string',
   -1 17079           unsupported: false
15841 17080         }
15842 17081       };
   -1 17082       lookupTable.globalAttributes = [ 'aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription' ];
15843 17083       lookupTable.role = {
15844 17084         alert: {
15845 17085           type: 'widget',
@@ -15850,7 +17090,7 @@ module.exports = {
15850 17090           nameFrom: [ 'author' ],
15851 17091           context: null,
15852 17092           unsupported: false,
15853    -1           allowedElements: [ 'SECTION' ]
   -1 17093           allowedElements: [ 'section' ]
15854 17094         },
15855 17095         alertdialog: {
15856 17096           type: 'widget',
@@ -15861,7 +17101,7 @@ module.exports = {
15861 17101           nameFrom: [ 'author' ],
15862 17102           context: null,
15863 17103           unsupported: false,
15864    -1           allowedElements: [ 'DIALOG', 'SECTION' ]
   -1 17104           allowedElements: [ 'dialog', 'section' ]
15865 17105         },
15866 17106         application: {
15867 17107           type: 'landmark',
@@ -15872,7 +17112,7 @@ module.exports = {
15872 17112           nameFrom: [ 'author' ],
15873 17113           context: null,
15874 17114           unsupported: false,
15875    -1           allowedElements: [ 'ARTICLE', 'AUDIO', 'EMBED', 'IFRAME', 'OBJECT', 'SECTION', 'SVG', 'VIDEO' ]
   -1 17115           allowedElements: [ 'article', 'audio', 'embed', 'iframe', 'object', 'section', 'svg', 'video' ]
15876 17116         },
15877 17117         article: {
15878 17118           type: 'structure',
@@ -15895,7 +17135,7 @@ module.exports = {
15895 17135           context: null,
15896 17136           implicit: [ 'header' ],
15897 17137           unsupported: false,
15898    -1           allowedElements: [ 'SECTION' ]
   -1 17138           allowedElements: [ 'section' ]
15899 17139         },
15900 17140         button: {
15901 17141           type: 'widget',
@@ -15908,8 +17148,10 @@ module.exports = {
15908 17148           implicit: [ 'button', 'input[type="button"]', 'input[type="image"]', 'input[type="reset"]', 'input[type="submit"]', 'summary' ],
15909 17149           unsupported: false,
15910 17150           allowedElements: [ {
15911    -1             tagName: 'A',
15912    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 17151             nodeName: 'a',
   -1 17152             attributes: {
   -1 17153               href: isNotNull
   -1 17154             }
15913 17155           } ]
15914 17156         },
15915 17157         cell: {
@@ -15933,7 +17175,7 @@ module.exports = {
15933 17175           context: null,
15934 17176           implicit: [ 'input[type="checkbox"]' ],
15935 17177           unsupported: false,
15936    -1           allowedElements: [ 'BUTTON' ]
   -1 17178           allowedElements: [ 'button' ]
15937 17179         },
15938 17180         columnheader: {
15939 17181           type: 'structure',
@@ -15959,9 +17201,9 @@ module.exports = {
15959 17201           context: null,
15960 17202           unsupported: false,
15961 17203           allowedElements: [ {
15962    -1             tagName: 'INPUT',
15963    -1             attributes: {
15964    -1               TYPE: 'TEXT'
   -1 17204             nodeName: 'input',
   -1 17205             properties: {
   -1 17206               type: 'text'
15965 17207             }
15966 17208           } ]
15967 17209         },
@@ -15980,7 +17222,7 @@ module.exports = {
15980 17222           context: null,
15981 17223           implicit: [ 'aside' ],
15982 17224           unsupported: false,
15983    -1           allowedElements: [ 'SECTION' ]
   -1 17225           allowedElements: [ 'section' ]
15984 17226         },
15985 17227         composite: {
15986 17228           nameFrom: [ 'author' ],
@@ -15997,7 +17239,7 @@ module.exports = {
15997 17239           context: null,
15998 17240           implicit: [ 'footer' ],
15999 17241           unsupported: false,
16000    -1           allowedElements: [ 'SECTION' ]
   -1 17242           allowedElements: [ 'section' ]
16001 17243         },
16002 17244         definition: {
16003 17245           type: 'structure',
@@ -16020,7 +17262,7 @@ module.exports = {
16020 17262           context: null,
16021 17263           implicit: [ 'dialog' ],
16022 17264           unsupported: false,
16023    -1           allowedElements: [ 'SECTION' ]
   -1 17265           allowedElements: [ 'section' ]
16024 17266         },
16025 17267         directory: {
16026 17268           type: 'structure',
@@ -16031,7 +17273,7 @@ module.exports = {
16031 17273           nameFrom: [ 'author', 'contents' ],
16032 17274           context: null,
16033 17275           unsupported: false,
16034    -1           allowedElements: [ 'OL', 'UL' ]
   -1 17276           allowedElements: [ 'ol', 'ul' ]
16035 17277         },
16036 17278         document: {
16037 17279           type: 'structure',
@@ -16043,7 +17285,7 @@ module.exports = {
16043 17285           context: null,
16044 17286           implicit: [ 'body' ],
16045 17287           unsupported: false,
16046    -1           allowedElements: [ 'ARTICLE', 'EMBED', 'IFRAME', 'SECTION', 'SVG', 'OBJECT' ]
   -1 17288           allowedElements: [ 'article', 'embed', 'iframe', 'object', 'section', 'svg' ]
16047 17289         },
16048 17290         'doc-abstract': {
16049 17291           type: 'section',
@@ -16054,7 +17296,7 @@ module.exports = {
16054 17296           nameFrom: [ 'author' ],
16055 17297           context: null,
16056 17298           unsupported: false,
16057    -1           allowedElements: [ 'SECTION' ]
   -1 17299           allowedElements: [ 'section' ]
16058 17300         },
16059 17301         'doc-acknowledgments': {
16060 17302           type: 'landmark',
@@ -16065,7 +17307,7 @@ module.exports = {
16065 17307           nameFrom: [ 'author' ],
16066 17308           context: null,
16067 17309           unsupported: false,
16068    -1           allowedElements: [ 'SECTION' ]
   -1 17310           allowedElements: [ 'section' ]
16069 17311         },
16070 17312         'doc-afterword': {
16071 17313           type: 'landmark',
@@ -16076,7 +17318,7 @@ module.exports = {
16076 17318           nameFrom: [ 'author' ],
16077 17319           context: null,
16078 17320           unsupported: false,
16079    -1           allowedElements: [ 'SECTION' ]
   -1 17321           allowedElements: [ 'section' ]
16080 17322         },
16081 17323         'doc-appendix': {
16082 17324           type: 'landmark',
@@ -16087,7 +17329,7 @@ module.exports = {
16087 17329           nameFrom: [ 'author' ],
16088 17330           context: null,
16089 17331           unsupported: false,
16090    -1           allowedElements: [ 'SECTION' ]
   -1 17332           allowedElements: [ 'section' ]
16091 17333         },
16092 17334         'doc-backlink': {
16093 17335           type: 'link',
@@ -16099,8 +17341,10 @@ module.exports = {
16099 17341           context: null,
16100 17342           unsupported: false,
16101 17343           allowedElements: [ {
16102    -1             tagName: 'A',
16103    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 17344             nodeName: 'a',
   -1 17345             attributes: {
   -1 17346               href: isNotNull
   -1 17347             }
16104 17348           } ]
16105 17349         },
16106 17350         'doc-biblioentry': {
@@ -16112,7 +17356,7 @@ module.exports = {
16112 17356           nameFrom: [ 'author' ],
16113 17357           context: [ 'doc-bibliography' ],
16114 17358           unsupported: false,
16115    -1           allowedElements: [ 'LI' ]
   -1 17359           allowedElements: [ 'li' ]
16116 17360         },
16117 17361         'doc-bibliography': {
16118 17362           type: 'landmark',
@@ -16123,7 +17367,7 @@ module.exports = {
16123 17367           nameFrom: [ 'author' ],
16124 17368           context: null,
16125 17369           unsupported: false,
16126    -1           allowedElements: [ 'SECTION' ]
   -1 17370           allowedElements: [ 'section' ]
16127 17371         },
16128 17372         'doc-biblioref': {
16129 17373           type: 'link',
@@ -16135,8 +17379,10 @@ module.exports = {
16135 17379           context: null,
16136 17380           unsupported: false,
16137 17381           allowedElements: [ {
16138    -1             tagName: 'A',
16139    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 17382             nodeName: 'a',
   -1 17383             attributes: {
   -1 17384               href: isNotNull
   -1 17385             }
16140 17386           } ]
16141 17387         },
16142 17388         'doc-chapter': {
@@ -16148,7 +17394,7 @@ module.exports = {
16148 17394           namefrom: [ 'author' ],
16149 17395           context: null,
16150 17396           unsupported: false,
16151    -1           allowedElements: [ 'SECTION' ]
   -1 17397           allowedElements: [ 'section' ]
16152 17398         },
16153 17399         'doc-colophon': {
16154 17400           type: 'section',
@@ -16159,7 +17405,7 @@ module.exports = {
16159 17405           namefrom: [ 'author' ],
16160 17406           context: null,
16161 17407           unsupported: false,
16162    -1           allowedElements: [ 'SECTION' ]
   -1 17408           allowedElements: [ 'section' ]
16163 17409         },
16164 17410         'doc-conclusion': {
16165 17411           type: 'landmark',
@@ -16170,7 +17416,7 @@ module.exports = {
16170 17416           namefrom: [ 'author' ],
16171 17417           context: null,
16172 17418           unsupported: false,
16173    -1           allowedElements: [ 'SECTION' ]
   -1 17419           allowedElements: [ 'section' ]
16174 17420         },
16175 17421         'doc-cover': {
16176 17422           type: 'img',
@@ -16191,7 +17437,7 @@ module.exports = {
16191 17437           namefrom: [ 'author' ],
16192 17438           context: null,
16193 17439           unsupported: false,
16194    -1           allowedElements: [ 'SECTION' ]
   -1 17440           allowedElements: [ 'section' ]
16195 17441         },
16196 17442         'doc-credits': {
16197 17443           type: 'landmark',
@@ -16202,7 +17448,7 @@ module.exports = {
16202 17448           namefrom: [ 'author' ],
16203 17449           context: null,
16204 17450           unsupported: false,
16205    -1           allowedElements: [ 'SECTION' ]
   -1 17451           allowedElements: [ 'section' ]
16206 17452         },
16207 17453         'doc-dedication': {
16208 17454           type: 'section',
@@ -16213,7 +17459,7 @@ module.exports = {
16213 17459           namefrom: [ 'author' ],
16214 17460           context: null,
16215 17461           unsupported: false,
16216    -1           allowedElements: [ 'SECTION' ]
   -1 17462           allowedElements: [ 'section' ]
16217 17463         },
16218 17464         'doc-endnote': {
16219 17465           type: 'listitem',
@@ -16224,7 +17470,7 @@ module.exports = {
16224 17470           namefrom: [ 'author' ],
16225 17471           context: [ 'doc-endnotes' ],
16226 17472           unsupported: false,
16227    -1           allowedElements: [ 'LI' ]
   -1 17473           allowedElements: [ 'li' ]
16228 17474         },
16229 17475         'doc-endnotes': {
16230 17476           type: 'landmark',
@@ -16235,7 +17481,7 @@ module.exports = {
16235 17481           namefrom: [ 'author' ],
16236 17482           context: null,
16237 17483           unsupported: false,
16238    -1           allowedElements: [ 'SECTION' ]
   -1 17484           allowedElements: [ 'section' ]
16239 17485         },
16240 17486         'doc-epigraph': {
16241 17487           type: 'section',
@@ -16256,7 +17502,7 @@ module.exports = {
16256 17502           namefrom: [ 'author' ],
16257 17503           context: null,
16258 17504           unsupported: false,
16259    -1           allowedElements: [ 'SECTION' ]
   -1 17505           allowedElements: [ 'section' ]
16260 17506         },
16261 17507         'doc-errata': {
16262 17508           type: 'landmark',
@@ -16267,7 +17513,7 @@ module.exports = {
16267 17513           namefrom: [ 'author' ],
16268 17514           context: null,
16269 17515           unsupported: false,
16270    -1           allowedElements: [ 'SECTION' ]
   -1 17516           allowedElements: [ 'section' ]
16271 17517         },
16272 17518         'doc-example': {
16273 17519           type: 'section',
@@ -16278,7 +17524,7 @@ module.exports = {
16278 17524           namefrom: [ 'author' ],
16279 17525           context: null,
16280 17526           unsupported: false,
16281    -1           allowedElements: [ 'ASIDE', 'SECTION' ]
   -1 17527           allowedElements: [ 'aside', 'section' ]
16282 17528         },
16283 17529         'doc-footnote': {
16284 17530           type: 'section',
@@ -16289,7 +17535,7 @@ module.exports = {
16289 17535           namefrom: [ 'author' ],
16290 17536           context: null,
16291 17537           unsupported: false,
16292    -1           allowedElements: [ 'ASIDE', 'FOOTER', 'HEADER' ]
   -1 17538           allowedElements: [ 'aside', 'footer', 'header' ]
16293 17539         },
16294 17540         'doc-foreword': {
16295 17541           type: 'landmark',
@@ -16300,7 +17546,7 @@ module.exports = {
16300 17546           namefrom: [ 'author' ],
16301 17547           context: null,
16302 17548           unsupported: false,
16303    -1           allowedElements: [ 'SECTION' ]
   -1 17549           allowedElements: [ 'section' ]
16304 17550         },
16305 17551         'doc-glossary': {
16306 17552           type: 'landmark',
@@ -16311,7 +17557,7 @@ module.exports = {
16311 17557           namefrom: [ 'author' ],
16312 17558           context: null,
16313 17559           unsupported: false,
16314    -1           allowedElements: [ 'DL' ]
   -1 17560           allowedElements: [ 'dl' ]
16315 17561         },
16316 17562         'doc-glossref': {
16317 17563           type: 'link',
@@ -16323,8 +17569,10 @@ module.exports = {
16323 17569           context: null,
16324 17570           unsupported: false,
16325 17571           allowedElements: [ {
16326    -1             tagName: 'A',
16327    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 17572             nodeName: 'a',
   -1 17573             attributes: {
   -1 17574               href: isNotNull
   -1 17575             }
16328 17576           } ]
16329 17577         },
16330 17578         'doc-index': {
@@ -16336,7 +17584,7 @@ module.exports = {
16336 17584           namefrom: [ 'author' ],
16337 17585           context: null,
16338 17586           unsupported: false,
16339    -1           allowedElements: [ 'NAV', 'SECTION' ]
   -1 17587           allowedElements: [ 'nav', 'section' ]
16340 17588         },
16341 17589         'doc-introduction': {
16342 17590           type: 'landmark',
@@ -16347,7 +17595,7 @@ module.exports = {
16347 17595           namefrom: [ 'author' ],
16348 17596           context: null,
16349 17597           unsupported: false,
16350    -1           allowedElements: [ 'SECTION' ]
   -1 17598           allowedElements: [ 'section' ]
16351 17599         },
16352 17600         'doc-noteref': {
16353 17601           type: 'link',
@@ -16359,8 +17607,10 @@ module.exports = {
16359 17607           context: null,
16360 17608           unsupported: false,
16361 17609           allowedElements: [ {
16362    -1             tagName: 'A',
16363    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 17610             nodeName: 'a',
   -1 17611             attributes: {
   -1 17612               href: isNotNull
   -1 17613             }
16364 17614           } ]
16365 17615         },
16366 17616         'doc-notice': {
@@ -16372,7 +17622,7 @@ module.exports = {
16372 17622           namefrom: [ 'author' ],
16373 17623           context: null,
16374 17624           unsupported: false,
16375    -1           allowedElements: [ 'SECTION' ]
   -1 17625           allowedElements: [ 'section' ]
16376 17626         },
16377 17627         'doc-pagebreak': {
16378 17628           type: 'separator',
@@ -16383,7 +17633,7 @@ module.exports = {
16383 17633           namefrom: [ 'author' ],
16384 17634           context: null,
16385 17635           unsupported: false,
16386    -1           allowedElements: [ 'HR' ]
   -1 17636           allowedElements: [ 'hr' ]
16387 17637         },
16388 17638         'doc-pagelist': {
16389 17639           type: 'navigation',
@@ -16394,7 +17644,7 @@ module.exports = {
16394 17644           namefrom: [ 'author' ],
16395 17645           context: null,
16396 17646           unsupported: false,
16397    -1           allowedElements: [ 'NAV', 'SECTION' ]
   -1 17647           allowedElements: [ 'nav', 'section' ]
16398 17648         },
16399 17649         'doc-part': {
16400 17650           type: 'landmark',
@@ -16405,7 +17655,7 @@ module.exports = {
16405 17655           namefrom: [ 'author' ],
16406 17656           context: null,
16407 17657           unsupported: false,
16408    -1           allowedElements: [ 'SECTION' ]
   -1 17658           allowedElements: [ 'section' ]
16409 17659         },
16410 17660         'doc-preface': {
16411 17661           type: 'landmark',
@@ -16416,7 +17666,7 @@ module.exports = {
16416 17666           namefrom: [ 'author' ],
16417 17667           context: null,
16418 17668           unsupported: false,
16419    -1           allowedElements: [ 'SECTION' ]
   -1 17669           allowedElements: [ 'section' ]
16420 17670         },
16421 17671         'doc-prologue': {
16422 17672           type: 'landmark',
@@ -16427,7 +17677,7 @@ module.exports = {
16427 17677           namefrom: [ 'author' ],
16428 17678           context: null,
16429 17679           unsupported: false,
16430    -1           allowedElements: [ 'SECTION' ]
   -1 17680           allowedElements: [ 'section' ]
16431 17681         },
16432 17682         'doc-pullquote': {
16433 17683           type: 'none',
@@ -16438,7 +17688,7 @@ module.exports = {
16438 17688           namefrom: [ 'author' ],
16439 17689           context: null,
16440 17690           unsupported: false,
16441    -1           allowedElements: [ 'ASIDE', 'SECTION' ]
   -1 17691           allowedElements: [ 'aside', 'section' ]
16442 17692         },
16443 17693         'doc-qna': {
16444 17694           type: 'section',
@@ -16449,7 +17699,7 @@ module.exports = {
16449 17699           namefrom: [ 'author' ],
16450 17700           context: null,
16451 17701           unsupported: false,
16452    -1           allowedElements: [ 'SECTION' ]
   -1 17702           allowedElements: [ 'section' ]
16453 17703         },
16454 17704         'doc-subtitle': {
16455 17705           type: 'sectionhead',
@@ -16460,7 +17710,9 @@ module.exports = {
16460 17710           namefrom: [ 'author' ],
16461 17711           context: null,
16462 17712           unsupported: false,
16463    -1           allowedElements: [ 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ]
   -1 17713           allowedElements: {
   -1 17714             nodeName: [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ]
   -1 17715           }
16464 17716         },
16465 17717         'doc-tip': {
16466 17718           type: 'note',
@@ -16471,7 +17723,7 @@ module.exports = {
16471 17723           namefrom: [ 'author' ],
16472 17724           context: null,
16473 17725           unsupported: false,
16474    -1           allowedElements: [ 'ASIDE' ]
   -1 17726           allowedElements: [ 'aside' ]
16475 17727         },
16476 17728         'doc-toc': {
16477 17729           type: 'navigation',
@@ -16482,7 +17734,7 @@ module.exports = {
16482 17734           namefrom: [ 'author' ],
16483 17735           context: null,
16484 17736           unsupported: false,
16485    -1           allowedElements: [ 'NAV', 'SECTION' ]
   -1 17737           allowedElements: [ 'nav', 'section' ]
16486 17738         },
16487 17739         feed: {
16488 17740           type: 'structure',
@@ -16495,7 +17747,7 @@ module.exports = {
16495 17747           nameFrom: [ 'author' ],
16496 17748           context: null,
16497 17749           unsupported: false,
16498    -1           allowedElements: [ 'ARTICLE', 'ASIDE', 'SECTION' ]
   -1 17750           allowedElements: [ 'article', 'aside', 'section' ]
16499 17751         },
16500 17752         figure: {
16501 17753           type: 'structure',
@@ -16546,7 +17798,7 @@ module.exports = {
16546 17798           context: null,
16547 17799           implicit: [ 'details', 'optgroup' ],
16548 17800           unsupported: false,
16549    -1           allowedElements: [ 'DL', 'FIGCAPTION', 'FIELDSET', 'FIGURE', 'FOOTER', 'HEADER', 'OL', 'UL' ]
   -1 17801           allowedElements: [ 'dl', 'figcaption', 'fieldset', 'figure', 'footer', 'header', 'ol', 'ul' ]
16550 17802         },
16551 17803         heading: {
16552 17804           type: 'structure',
@@ -16570,7 +17822,7 @@ module.exports = {
16570 17822           context: null,
16571 17823           implicit: [ 'img' ],
16572 17824           unsupported: false,
16573    -1           allowedElements: [ 'EMBED', 'IFRAME', 'OBJECT', 'SVG' ]
   -1 17825           allowedElements: [ 'embed', 'iframe', 'object', 'svg' ]
16574 17826         },
16575 17827         input: {
16576 17828           nameFrom: [ 'author' ],
@@ -16592,15 +17844,10 @@ module.exports = {
16592 17844           context: null,
16593 17845           implicit: [ 'a[href]' ],
16594 17846           unsupported: false,
16595    -1           allowedElements: [ 'BUTTON', {
16596    -1             tagName: 'INPUT',
16597    -1             attributes: {
16598    -1               TYPE: 'IMAGE'
16599    -1             }
16600    -1           }, {
16601    -1             tagName: 'INPUT',
16602    -1             attributes: {
16603    -1               TYPE: 'IMAGE'
   -1 17847           allowedElements: [ 'button', {
   -1 17848             nodeName: 'input',
   -1 17849             properties: {
   -1 17850               type: [ 'image', 'button' ]
16604 17851             }
16605 17852           } ]
16606 17853         },
@@ -16629,7 +17876,7 @@ module.exports = {
16629 17876           context: null,
16630 17877           implicit: [ 'select' ],
16631 17878           unsupported: false,
16632    -1           allowedElements: [ 'OL', 'UL' ]
   -1 17879           allowedElements: [ 'ol', 'ul' ]
16633 17880         },
16634 17881         listitem: {
16635 17882           type: 'structure',
@@ -16651,7 +17898,7 @@ module.exports = {
16651 17898           nameFrom: [ 'author' ],
16652 17899           context: null,
16653 17900           unsupported: false,
16654    -1           allowedElements: [ 'SECTION' ]
   -1 17901           allowedElements: [ 'section' ]
16655 17902         },
16656 17903         main: {
16657 17904           type: 'landmark',
@@ -16663,7 +17910,7 @@ module.exports = {
16663 17910           context: null,
16664 17911           implicit: [ 'main' ],
16665 17912           unsupported: false,
16666    -1           allowedElements: [ 'ARTICLE', 'SECTION' ]
   -1 17913           allowedElements: [ 'article', 'section' ]
16667 17914         },
16668 17915         marquee: {
16669 17916           type: 'widget',
@@ -16674,7 +17921,7 @@ module.exports = {
16674 17921           nameFrom: [ 'author' ],
16675 17922           context: null,
16676 17923           unsupported: false,
16677    -1           allowedElements: [ 'SECTION' ]
   -1 17924           allowedElements: [ 'section' ]
16678 17925         },
16679 17926         math: {
16680 17927           type: 'structure',
@@ -16699,7 +17946,7 @@ module.exports = {
16699 17946           context: null,
16700 17947           implicit: [ 'menu[type="context"]' ],
16701 17948           unsupported: false,
16702    -1           allowedElements: [ 'OL', 'UL' ]
   -1 17949           allowedElements: [ 'ol', 'ul' ]
16703 17950         },
16704 17951         menubar: {
16705 17952           type: 'composite',
@@ -16710,7 +17957,7 @@ module.exports = {
16710 17957           nameFrom: [ 'author' ],
16711 17958           context: null,
16712 17959           unsupported: false,
16713    -1           allowedElements: [ 'OL', 'UL' ]
   -1 17960           allowedElements: [ 'ol', 'ul' ]
16714 17961         },
16715 17962         menuitem: {
16716 17963           type: 'widget',
@@ -16722,19 +17969,16 @@ module.exports = {
16722 17969           context: [ 'menu', 'menubar' ],
16723 17970           implicit: [ 'menuitem[type="command"]' ],
16724 17971           unsupported: false,
16725    -1           allowedElements: [ 'BUTTON', 'LI', {
16726    -1             tagName: 'INPUT',
16727    -1             attributes: {
16728    -1               TYPE: 'IMAGE'
   -1 17972           allowedElements: [ 'button', 'li', {
   -1 17973             nodeName: 'iput',
   -1 17974             properties: {
   -1 17975               type: [ 'image', 'button' ]
16729 17976             }
16730 17977           }, {
16731    -1             tagName: 'INPUT',
   -1 17978             nodeName: 'a',
16732 17979             attributes: {
16733    -1               TYPE: 'BUTTON'
   -1 17980               href: isNotNull
16734 17981             }
16735    -1           }, {
16736    -1             tagName: 'A',
16737    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
16738 17982           } ]
16739 17983         },
16740 17984         menuitemcheckbox: {
@@ -16747,24 +17991,18 @@ module.exports = {
16747 17991           context: [ 'menu', 'menubar' ],
16748 17992           implicit: [ 'menuitem[type="checkbox"]' ],
16749 17993           unsupported: false,
16750    -1           allowedElements: [ 'BUTTON', 'LI', {
16751    -1             tagName: 'INPUT',
16752    -1             attributes: {
16753    -1               TYPE: 'CHECKBOX'
16754    -1             }
   -1 17994           allowedElements: [ {
   -1 17995             nodeName: [ 'button', 'li' ]
16755 17996           }, {
16756    -1             tagName: 'INPUT',
16757    -1             attributes: {
16758    -1               TYPE: 'IMAGE'
   -1 17997             nodeName: 'input',
   -1 17998             properties: {
   -1 17999               type: [ 'checkbox', 'image', 'button' ]
16759 18000             }
16760 18001           }, {
16761    -1             tagName: 'INPUT',
   -1 18002             nodeName: 'a',
16762 18003             attributes: {
16763    -1               TYPE: 'BUTTON'
   -1 18004               href: isNotNull
16764 18005             }
16765    -1           }, {
16766    -1             tagName: 'A',
16767    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
16768 18006           } ]
16769 18007         },
16770 18008         menuitemradio: {
@@ -16777,19 +18015,18 @@ module.exports = {
16777 18015           context: [ 'menu', 'menubar' ],
16778 18016           implicit: [ 'menuitem[type="radio"]' ],
16779 18017           unsupported: false,
16780    -1           allowedElements: [ 'BUTTON', 'LI', {
16781    -1             tagName: 'INPUT',
16782    -1             attributes: {
16783    -1               TYPE: 'IMAGE'
   -1 18018           allowedElements: [ {
   -1 18019             nodeName: [ 'button', 'li' ]
   -1 18020           }, {
   -1 18021             nodeName: 'input',
   -1 18022             properties: {
   -1 18023               type: [ 'image', 'button', 'radio' ]
16784 18024             }
16785 18025           }, {
16786    -1             tagName: 'INPUT',
   -1 18026             nodeName: 'a',
16787 18027             attributes: {
16788    -1               TYPE: 'BUTTON'
   -1 18028               href: isNotNull
16789 18029             }
16790    -1           }, {
16791    -1             tagName: 'A',
16792    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
16793 18030           } ]
16794 18031         },
16795 18032         navigation: {
@@ -16802,7 +18039,7 @@ module.exports = {
16802 18039           context: null,
16803 18040           implicit: [ 'nav' ],
16804 18041           unsupported: false,
16805    -1           allowedElements: [ 'SECTION' ]
   -1 18042           allowedElements: [ 'section' ]
16806 18043         },
16807 18044         none: {
16808 18045           type: 'structure',
@@ -16811,9 +18048,13 @@ module.exports = {
16811 18048           nameFrom: [ 'author' ],
16812 18049           context: null,
16813 18050           unsupported: false,
16814    -1           allowedElements: [ 'ARTICLE', 'ASIDE', 'DL', 'EMBED', 'FIGCAPTION', 'FIELDSET', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', 'LI', 'SECTION', 'OL', {
16815    -1             tagName: 'IMG',
16816    -1             condition: elementConditions.MUST_HAVE_ALT_ATTRIBUTE
   -1 18051           allowedElements: [ {
   -1 18052             nodeName: [ 'article', 'aside', 'dl', 'embed', 'figcaption', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'ol', 'section', 'ul' ]
   -1 18053           }, {
   -1 18054             nodeName: 'img',
   -1 18055             attributes: {
   -1 18056               alt: isNotNull
   -1 18057             }
16817 18058           } ]
16818 18059         },
16819 18060         note: {
@@ -16825,7 +18066,7 @@ module.exports = {
16825 18066           nameFrom: [ 'author' ],
16826 18067           context: null,
16827 18068           unsupported: false,
16828    -1           allowedElements: [ 'ASIDE' ]
   -1 18069           allowedElements: [ 'aside' ]
16829 18070         },
16830 18071         option: {
16831 18072           type: 'widget',
@@ -16837,19 +18078,18 @@ module.exports = {
16837 18078           context: [ 'listbox' ],
16838 18079           implicit: [ 'option' ],
16839 18080           unsupported: false,
16840    -1           allowedElements: [ 'BUTTON', 'LI', {
16841    -1             tagName: 'INPUT',
16842    -1             attributes: {
16843    -1               TYPE: 'CHECKBOX'
   -1 18081           allowedElements: [ {
   -1 18082             nodeName: [ 'button', 'li' ]
   -1 18083           }, {
   -1 18084             nodeName: 'input',
   -1 18085             properties: {
   -1 18086               type: [ 'checkbox', 'button' ]
16844 18087             }
16845 18088           }, {
16846    -1             tagName: 'INPUT',
   -1 18089             nodeName: 'a',
16847 18090             attributes: {
16848    -1               TYPE: 'BUTTON'
   -1 18091               href: isNotNull
16849 18092             }
16850    -1           }, {
16851    -1             tagName: 'A',
16852    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
16853 18093           } ]
16854 18094         },
16855 18095         presentation: {
@@ -16859,9 +18099,13 @@ module.exports = {
16859 18099           nameFrom: [ 'author' ],
16860 18100           context: null,
16861 18101           unsupported: false,
16862    -1           allowedElements: [ 'ARTICLE', 'ASIDE', 'DL', 'EMBED', 'FIGCAPTION', 'FIELDSET', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', 'HR', 'LI', 'OL', 'SECTION', 'UL', {
16863    -1             tagName: 'IMG',
16864    -1             condition: elementConditions.MUST_HAVE_ALT_ATTRIBUTE
   -1 18102           allowedElements: [ {
   -1 18103             nodeName: [ 'article', 'aside', 'dl', 'embed', 'figcaption', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'ol', 'section', 'ul' ]
   -1 18104           }, {
   -1 18105             nodeName: 'img',
   -1 18106             attributes: {
   -1 18107               alt: isNotNull
   -1 18108             }
16865 18109           } ]
16866 18110         },
16867 18111         progressbar: {
@@ -16886,15 +18130,12 @@ module.exports = {
16886 18130           context: null,
16887 18131           implicit: [ 'input[type="radio"]' ],
16888 18132           unsupported: false,
16889    -1           allowedElements: [ 'BUTTON', 'LI', {
16890    -1             tagName: 'INPUT',
16891    -1             attributes: {
16892    -1               TYPE: 'IMAGE'
16893    -1             }
   -1 18133           allowedElements: [ {
   -1 18134             nodeName: [ 'button', 'li' ]
16894 18135           }, {
16895    -1             tagName: 'INPUT',
16896    -1             attributes: {
16897    -1               TYPE: 'BUTTON'
   -1 18136             nodeName: 'input',
   -1 18137             properties: {
   -1 18138               type: [ 'image', 'button' ]
16898 18139             }
16899 18140           } ]
16900 18141         },
@@ -16909,7 +18150,9 @@ module.exports = {
16909 18150           nameFrom: [ 'author' ],
16910 18151           context: null,
16911 18152           unsupported: false,
16912    -1           allowedElements: [ 'OL', 'UL' ]
   -1 18153           allowedElements: {
   -1 18154             nodeName: [ 'ol', 'ul' ]
   -1 18155           }
16913 18156         },
16914 18157         range: {
16915 18158           nameFrom: [ 'author' ],
@@ -16926,7 +18169,9 @@ module.exports = {
16926 18169           context: null,
16927 18170           implicit: [ 'section[aria-label]', 'section[aria-labelledby]', 'section[title]' ],
16928 18171           unsupported: false,
16929    -1           allowedElements: [ 'ARTICLE', 'ASIDE' ]
   -1 18172           allowedElements: {
   -1 18173             nodeName: [ 'article', 'aside' ]
   -1 18174           }
16930 18175         },
16931 18176         roletype: {
16932 18177           type: 'abstract',
@@ -16989,7 +18234,9 @@ module.exports = {
16989 18234           nameFrom: [ 'author' ],
16990 18235           context: null,
16991 18236           unsupported: false,
16992    -1           allowedElements: [ 'ASIDE', 'FORM', 'SECTION' ]
   -1 18237           allowedElements: {
   -1 18238             nodeName: [ 'aside', 'form', 'section' ]
   -1 18239           }
16993 18240         },
16994 18241         searchbox: {
16995 18242           type: 'widget',
@@ -17001,12 +18248,12 @@ module.exports = {
17001 18248           context: null,
17002 18249           implicit: [ 'input[type="search"]' ],
17003 18250           unsupported: false,
17004    -1           allowedElements: [ {
17005    -1             tagName: 'INPUT',
17006    -1             attributes: {
17007    -1               TYPE: 'TEXT'
   -1 18251           allowedElements: {
   -1 18252             nodeName: 'input',
   -1 18253             properties: {
   -1 18254               type: 'text'
17008 18255             }
17009    -1           } ]
   -1 18256           }
17010 18257         },
17011 18258         section: {
17012 18259           nameFrom: [ 'author', 'contents' ],
@@ -17033,7 +18280,7 @@ module.exports = {
17033 18280           context: null,
17034 18281           implicit: [ 'hr' ],
17035 18282           unsupported: false,
17036    -1           allowedElements: [ 'LI' ]
   -1 18283           allowedElements: [ 'li' ]
17037 18284         },
17038 18285         slider: {
17039 18286           type: 'widget',
@@ -17058,12 +18305,12 @@ module.exports = {
17058 18305           context: null,
17059 18306           implicit: [ 'input[type="number"]' ],
17060 18307           unsupported: false,
17061    -1           allowedElements: [ {
17062    -1             tagName: 'INPUT',
17063    -1             attributes: {
17064    -1               TYPE: 'TEXT'
   -1 18308           allowedElements: {
   -1 18309             nodeName: 'input',
   -1 18310             properties: {
   -1 18311               type: 'text'
17065 18312             }
17066    -1           } ]
   -1 18313           }
17067 18314         },
17068 18315         status: {
17069 18316           type: 'widget',
@@ -17075,7 +18322,7 @@ module.exports = {
17075 18322           context: null,
17076 18323           implicit: [ 'output' ],
17077 18324           unsupported: false,
17078    -1           allowedElements: [ 'SECTION' ]
   -1 18325           allowedElements: [ 'section' ]
17079 18326         },
17080 18327         structure: {
17081 18328           type: 'abstract',
@@ -17091,24 +18338,16 @@ module.exports = {
17091 18338           nameFrom: [ 'author', 'contents' ],
17092 18339           context: null,
17093 18340           unsupported: false,
17094    -1           allowedElements: [ 'BUTTON', {
17095    -1             tagName: 'INPUT',
17096    -1             attributes: {
17097    -1               TYPE: 'CHECKBOX'
   -1 18341           allowedElements: [ 'button', {
   -1 18342             nodeName: 'input',
   -1 18343             properties: {
   -1 18344               type: [ 'checkbox', 'image', 'button' ]
17098 18345             }
17099 18346           }, {
17100    -1             tagName: 'INPUT',
   -1 18347             nodeName: 'a',
17101 18348             attributes: {
17102    -1               TYPE: 'IMAGE'
   -1 18349               href: isNotNull
17103 18350             }
17104    -1           }, {
17105    -1             tagName: 'INPUT',
17106    -1             attributes: {
17107    -1               TYPE: 'BUTTON'
17108    -1             }
17109    -1           }, {
17110    -1             tagName: 'A',
17111    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
17112 18351           } ]
17113 18352         },
17114 18353         tab: {
@@ -17120,14 +18359,18 @@ module.exports = {
17120 18359           nameFrom: [ 'author', 'contents' ],
17121 18360           context: [ 'tablist' ],
17122 18361           unsupported: false,
17123    -1           allowedElements: [ 'BUTTON', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', {
17124    -1             tagName: 'INPUT',
17125    -1             attributes: {
17126    -1               TYPE: 'BUTTON'
   -1 18362           allowedElements: [ {
   -1 18363             nodeName: [ 'button', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li' ]
   -1 18364           }, {
   -1 18365             nodeName: 'input',
   -1 18366             properties: {
   -1 18367               type: 'button'
17127 18368             }
17128 18369           }, {
17129    -1             tagName: 'A',
17130    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 18370             nodeName: 'a',
   -1 18371             attributes: {
   -1 18372               href: isNotNull
   -1 18373             }
17131 18374           } ]
17132 18375         },
17133 18376         table: {
@@ -17154,7 +18397,7 @@ module.exports = {
17154 18397           nameFrom: [ 'author' ],
17155 18398           context: null,
17156 18399           unsupported: false,
17157    -1           allowedElements: [ 'OL', 'UL' ]
   -1 18400           allowedElements: [ 'ol', 'ul' ]
17158 18401         },
17159 18402         tabpanel: {
17160 18403           type: 'widget',
@@ -17165,7 +18408,7 @@ module.exports = {
17165 18408           nameFrom: [ 'author' ],
17166 18409           context: null,
17167 18410           unsupported: false,
17168    -1           allowedElements: [ 'SECTION' ]
   -1 18411           allowedElements: [ 'section' ]
17169 18412         },
17170 18413         term: {
17171 18414           type: 'structure',
@@ -17209,7 +18452,7 @@ module.exports = {
17209 18452           context: null,
17210 18453           implicit: [ 'menu[type="toolbar"]' ],
17211 18454           unsupported: false,
17212    -1           allowedElements: [ 'OL', 'UL' ]
   -1 18455           allowedElements: [ 'ol', 'ul' ]
17213 18456         },
17214 18457         tooltip: {
17215 18458           type: 'widget',
@@ -17232,7 +18475,7 @@ module.exports = {
17232 18475           nameFrom: [ 'author' ],
17233 18476           context: null,
17234 18477           unsupported: false,
17235    -1           allowedElements: [ 'OL', 'UL' ]
   -1 18478           allowedElements: [ 'ol', 'ul' ]
17236 18479         },
17237 18480         treegrid: {
17238 18481           type: 'composite',
@@ -17255,9 +18498,11 @@ module.exports = {
17255 18498           nameFrom: [ 'author', 'contents' ],
17256 18499           context: [ 'group', 'tree' ],
17257 18500           unsupported: false,
17258    -1           allowedElements: [ 'LI', {
17259    -1             tagName: 'A',
17260    -1             condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
   -1 18501           allowedElements: [ 'li', {
   -1 18502             nodeName: 'a',
   -1 18503             attributes: {
   -1 18504               href: isNotNull
   -1 18505             }
17261 18506           } ]
17262 18507         },
17263 18508         widget: {
@@ -17271,136 +18516,62 @@ module.exports = {
17271 18516         }
17272 18517       };
17273 18518       lookupTable.elementsAllowedNoRole = [ {
17274    -1         tagName: 'AREA',
17275    -1         condition: elementConditions.MUST_HAVE_HREF_ATTRIBUTE
17276    -1       }, 'BASE', 'BODY', 'CAPTION', 'COL', 'COLGROUP', 'DATALIST', 'DD', 'DETAILS', 'DT', 'HEAD', 'HTML', {
17277    -1         tagName: 'INPUT',
17278    -1         attributes: {
17279    -1           TYPE: 'COLOR'
17280    -1         }
17281    -1       }, {
17282    -1         tagName: 'INPUT',
17283    -1         attributes: {
17284    -1           TYPE: 'DATE'
17285    -1         }
17286    -1       }, {
17287    -1         tagName: 'INPUT',
17288    -1         attributes: {
17289    -1           TYPE: 'DATETIME'
17290    -1         }
17291    -1       }, {
17292    -1         tagName: 'INPUT',
17293    -1         condition: elementConditions.CANNOT_HAVE_LIST_ATTRIBUTE,
17294    -1         attributes: {
17295    -1           TYPE: 'EMAIL'
17296    -1         }
17297    -1       }, {
17298    -1         tagName: 'INPUT',
17299    -1         attributes: {
17300    -1           TYPE: 'FILE'
17301    -1         }
17302    -1       }, {
17303    -1         tagName: 'INPUT',
17304    -1         attributes: {
17305    -1           TYPE: 'HIDDEN'
17306    -1         }
17307    -1       }, {
17308    -1         tagName: 'INPUT',
17309    -1         attributes: {
17310    -1           TYPE: 'MONTH'
17311    -1         }
17312    -1       }, {
17313    -1         tagName: 'INPUT',
17314    -1         attributes: {
17315    -1           TYPE: 'NUMBER'
17316    -1         }
17317    -1       }, {
17318    -1         tagName: 'INPUT',
17319    -1         attributes: {
17320    -1           TYPE: 'PASSWORD'
17321    -1         }
17322    -1       }, {
17323    -1         tagName: 'INPUT',
17324    -1         attributes: {
17325    -1           TYPE: 'RANGE'
17326    -1         }
   -1 18519         nodeName: [ 'base', 'body', 'caption', 'col', 'colgroup', 'datalist', 'dd', 'details', 'dt', 'head', 'html', 'keygen', 'label', 'legend', 'main', 'map', 'math', 'meta', 'meter', 'noscript', 'optgroup', 'param', 'picture', 'progress', 'script', 'source', 'style', 'template', 'textarea', 'title', 'track' ]
17327 18520       }, {
17328    -1         tagName: 'INPUT',
   -1 18521         nodeName: 'area',
17329 18522         attributes: {
17330    -1           TYPE: 'RESET'
   -1 18523           href: isNotNull
17331 18524         }
17332 18525       }, {
17333    -1         tagName: 'INPUT',
17334    -1         condition: elementConditions.CANNOT_HAVE_LIST_ATTRIBUTE,
17335    -1         attributes: {
17336    -1           TYPE: 'SEARCH'
17337    -1         }
17338    -1       }, {
17339    -1         tagName: 'INPUT',
17340    -1         attributes: {
17341    -1           TYPE: 'SUBMIT'
   -1 18526         nodeName: 'input',
   -1 18527         properties: {
   -1 18528           type: [ 'color', 'data', 'datatime', 'file', 'hidden', 'month', 'number', 'password', 'range', 'reset', 'submit', 'time', 'week' ]
17342 18529         }
17343 18530       }, {
17344    -1         tagName: 'INPUT',
17345    -1         condition: elementConditions.CANNOT_HAVE_LIST_ATTRIBUTE,
   -1 18531         nodeName: 'input',
17346 18532         attributes: {
17347    -1           TYPE: 'TEL'
   -1 18533           list: isNull
   -1 18534         },
   -1 18535         properties: {
   -1 18536           type: [ 'email', 'search', 'tel', 'url' ]
17348 18537         }
17349 18538       }, {
17350    -1         tagName: 'INPUT',
   -1 18539         nodeName: 'link',
17351 18540         attributes: {
17352    -1           TYPE: 'TIME'
   -1 18541           href: isNotNull
17353 18542         }
17354 18543       }, {
17355    -1         tagName: 'INPUT',
17356    -1         condition: elementConditions.CANNOT_HAVE_LIST_ATTRIBUTE,
   -1 18544         nodeName: 'menu',
17357 18545         attributes: {
17358    -1           TYPE: 'URL'
   -1 18546           type: 'context'
17359 18547         }
17360 18548       }, {
17361    -1         tagName: 'INPUT',
17362    -1         attributes: {
17363    -1           TYPE: 'WEEK'
17364    -1         }
17365    -1       }, 'KEYGEN', 'LABEL', 'LEGEND', {
17366    -1         tagName: 'LINK',
17367    -1         attributes: {
17368    -1           TYPE: 'HREF'
17369    -1         }
17370    -1       }, 'MAIN', 'MAP', 'MATH', {
17371    -1         tagName: 'MENU',
   -1 18549         nodeName: 'menuitem',
17372 18550         attributes: {
17373    -1           TYPE: 'CONTEXT'
   -1 18551           type: [ 'command', 'checkbox', 'radio' ]
17374 18552         }
17375 18553       }, {
17376    -1         tagName: 'MENUITEM',
17377    -1         attributes: {
17378    -1           TYPE: 'COMMAND'
   -1 18554         nodeName: 'select',
   -1 18555         condition: function condition(node) {
   -1 18556           return Number(node.getAttribute('size')) > 1;
   -1 18557         },
   -1 18558         properties: {
   -1 18559           multiple: true
17379 18560         }
17380 18561       }, {
17381    -1         tagName: 'MENUITEM',
   -1 18562         nodeName: [ 'clippath', 'cursor', 'defs', 'desc', 'feblend', 'fecolormatrix', 'fecomponenttransfer', 'fecomposite', 'feconvolvematrix', 'fediffuselighting', 'fedisplacementmap', 'fedistantlight', 'fedropshadow', 'feflood', 'fefunca', 'fefuncb', 'fefuncg', 'fefuncr', 'fegaussianblur', 'feimage', 'femerge', 'femergenode', 'femorphology', 'feoffset', 'fepointlight', 'fespecularlighting', 'fespotlight', 'fetile', 'feturbulence', 'filter', 'hatch', 'hatchpath', 'lineargradient', 'marker', 'mask', 'meshgradient', 'meshpatch', 'meshrow', 'metadata', 'mpath', 'pattern', 'radialgradient', 'solidcolor', 'stop', 'switch', 'view' ]
   -1 18563       } ];
   -1 18564       lookupTable.elementsAllowedAnyRole = [ {
   -1 18565         nodeName: 'a',
17382 18566         attributes: {
17383    -1           TYPE: 'CHECKBOX'
   -1 18567           href: isNull
17384 18568         }
17385 18569       }, {
17386    -1         tagName: 'MENUITEM',
17387    -1         attributes: {
17388    -1           TYPE: 'RADIO'
17389    -1         }
17390    -1       }, 'META', 'METER', 'NOSCRIPT', 'OPTGROUP', 'PARAM', 'PICTURE', 'PROGRESS', 'SCRIPT', {
17391    -1         tagName: 'SELECT',
17392    -1         condition: elementConditions.MUST_HAVE_SIZE_ATTRIBUTE_WITH_VALUE_GREATER_THAN_1,
17393    -1         attributes: {
17394    -1           TYPE: 'MULTIPLE'
17395    -1         }
17396    -1       }, 'SOURCE', 'STYLE', 'TEMPLATE', 'TEXTAREA', 'TITLE', 'TRACK', 'CLIPPATH', 'CURSOR', 'DEFS', 'DESC', 'FEBLEND', 'FECOLORMATRIX', 'FECOMPONENTTRANSFER', 'FECOMPOSITE', 'FECONVOLVEMATRIX', 'FEDIFFUSELIGHTING', 'FEDISPLACEMENTMAP', 'FEDISTANTLIGHT', 'FEDROPSHADOW', 'FEFLOOD', 'FEFUNCA', 'FEFUNCB', 'FEFUNCG', 'FEFUNCR', 'FEGAUSSIANBLUR', 'FEIMAGE', 'FEMERGE', 'FEMERGENODE', 'FEMORPHOLOGY', 'FEOFFSET', 'FEPOINTLIGHT', 'FESPECULARLIGHTING', 'FESPOTLIGHT', 'FETILE', 'FETURBULENCE', 'FILTER', 'HATCH', 'HATCHPATH', 'LINEARGRADIENT', 'MARKER', 'MASK', 'MESHGRADIENT', 'MESHPATCH', 'MESHROW', 'METADATA', 'MPATH', 'PATTERN', 'RADIALGRADIENT', 'SOLIDCOLOR', 'STOP', 'SWITCH', 'VIEW' ];
17397    -1       lookupTable.elementsAllowedAnyRole = [ {
17398    -1         tagName: 'A',
17399    -1         condition: elementConditions.CANNOT_HAVE_HREF_ATTRIBUTE
17400    -1       }, 'ABBR', 'ADDRESS', 'CANVAS', 'DIV', 'P', 'PRE', 'BLOCKQUOTE', 'INS', 'DEL', 'OUTPUT', 'SPAN', 'TABLE', 'TBODY', 'THEAD', 'TFOOT', 'TD', 'EM', 'STRONG', 'SMALL', 'S', 'CITE', 'Q', 'DFN', 'ABBR', 'TIME', 'CODE', 'VAR', 'SAMP', 'KBD', 'SUB', 'SUP', 'I', 'B', 'U', 'MARK', 'RUBY', 'RT', 'RP', 'BDI', 'BDO', 'BR', 'WBR', 'TH', 'TR' ];
   -1 18570         nodeName: [ 'abbr', 'address', 'canvas', 'div', 'p', 'pre', 'blockquote', 'ins', 'del', 'output', 'span', 'table', 'tbody', 'thead', 'tfoot', 'td', 'em', 'strong', 'small', 's', 'cite', 'q', 'dfn', 'abbr', 'time', 'code', 'var', 'samp', 'kbd', 'sub', 'sup', 'i', 'b', 'u', 'mark', 'ruby', 'rt', 'rp', 'bdi', 'bdo', 'br', 'wbr', 'th', 'tr' ]
   -1 18571       } ];
17401 18572       lookupTable.evaluateRoleForElement = {
17402    -1         A: function A(_ref11) {
17403    -1           var node = _ref11.node, out = _ref11.out;
   -1 18573         A: function A(_ref13) {
   -1 18574           var node = _ref13.node, out = _ref13.out;
17404 18575           if (node.namespaceURI === 'http://www.w3.org/2000/svg') {
17405 18576             return true;
17406 18577           }
@@ -17409,26 +18580,26 @@ module.exports = {
17409 18580           }
17410 18581           return true;
17411 18582         },
17412    -1         AREA: function AREA(_ref12) {
17413    -1           var node = _ref12.node;
   -1 18583         AREA: function AREA(_ref14) {
   -1 18584           var node = _ref14.node;
17414 18585           return !node.href;
17415 18586         },
17416    -1         BUTTON: function BUTTON(_ref13) {
17417    -1           var node = _ref13.node, role = _ref13.role, out = _ref13.out;
   -1 18587         BUTTON: function BUTTON(_ref15) {
   -1 18588           var node = _ref15.node, role = _ref15.role, out = _ref15.out;
17418 18589           if (node.getAttribute('type') === 'menu') {
17419 18590             return role === 'menuitem';
17420 18591           }
17421 18592           return out;
17422 18593         },
17423    -1         IMG: function IMG(_ref14) {
17424    -1           var node = _ref14.node, out = _ref14.out;
   -1 18594         IMG: function IMG(_ref16) {
   -1 18595           var node = _ref16.node, out = _ref16.out;
17425 18596           if (node.alt) {
17426 18597             return !out;
17427 18598           }
17428 18599           return out;
17429 18600         },
17430    -1         INPUT: function INPUT(_ref15) {
17431    -1           var node = _ref15.node, role = _ref15.role, out = _ref15.out;
   -1 18601         INPUT: function INPUT(_ref17) {
   -1 18602           var node = _ref17.node, role = _ref17.role, out = _ref17.out;
17432 18603           switch (node.type) {
17433 18604            case 'button':
17434 18605            case 'image':
@@ -17450,107 +18621,92 @@ module.exports = {
17450 18621             return false;
17451 18622           }
17452 18623         },
17453    -1         LI: function LI(_ref16) {
17454    -1           var node = _ref16.node, out = _ref16.out;
   -1 18624         LI: function LI(_ref18) {
   -1 18625           var node = _ref18.node, out = _ref18.out;
17455 18626           var hasImplicitListitemRole = axe.utils.matchesSelector(node, 'ol li, ul li');
17456 18627           if (hasImplicitListitemRole) {
17457 18628             return out;
17458 18629           }
17459 18630           return true;
17460 18631         },
17461    -1         LINK: function LINK(_ref17) {
17462    -1           var node = _ref17.node;
17463    -1           return !node.href;
17464    -1         },
17465    -1         MENU: function MENU(_ref18) {
17466    -1           var node = _ref18.node;
   -1 18632         MENU: function MENU(_ref19) {
   -1 18633           var node = _ref19.node;
17467 18634           if (node.getAttribute('type') === 'context') {
17468 18635             return false;
17469 18636           }
17470 18637           return true;
17471 18638         },
17472    -1         OPTION: function OPTION(_ref19) {
17473    -1           var node = _ref19.node;
   -1 18639         OPTION: function OPTION(_ref20) {
   -1 18640           var node = _ref20.node;
17474 18641           var withinOptionList = axe.utils.matchesSelector(node, 'select > option, datalist > option, optgroup > option');
17475 18642           return !withinOptionList;
17476 18643         },
17477    -1         SELECT: function SELECT(_ref20) {
17478    -1           var node = _ref20.node, role = _ref20.role;
   -1 18644         SELECT: function SELECT(_ref21) {
   -1 18645           var node = _ref21.node, role = _ref21.role;
17479 18646           return !node.multiple && node.size <= 1 && role === 'menu';
17480 18647         },
17481    -1         SVG: function SVG(_ref21) {
17482    -1           var node = _ref21.node, out = _ref21.out;
   -1 18648         SVG: function SVG(_ref22) {
   -1 18649           var node = _ref22.node, out = _ref22.out;
17483 18650           if (node.parentNode && node.parentNode.namespaceURI === 'http://www.w3.org/2000/svg') {
17484 18651             return true;
17485 18652           }
17486 18653           return out;
17487 18654         }
17488 18655       };
   -1 18656       lookupTable.rolesOfType = {
   -1 18657         widget: [ 'button', 'checkbox', 'dialog', 'gridcell', 'heading', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'scrollbar', 'slider', 'spinbutton', 'status', 'switch', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'tree', 'treeitem' ]
   -1 18658       };
17489 18659       var color = {};
17490 18660       commons.color = color;
17491 18661       var dom = commons.dom = {};
   -1 18662       function matches(node, definition) {
   -1 18663         return matches.fromDefinition(node, definition);
   -1 18664       }
   -1 18665       commons.matches = matches;
17492 18666       var table = commons.table = {};
17493 18667       var text = commons.text = {
17494 18668         EdgeFormDefaults: {}
17495 18669       };
17496 18670       var utils = commons.utils = axe.utils;
   -1 18671       aria.arialabelText = function arialabelText(node) {
   -1 18672         node = node.actualNode || node;
   -1 18673         if (node.nodeType !== 1) {
   -1 18674           return '';
   -1 18675         }
   -1 18676         return node.getAttribute('aria-label') || '';
   -1 18677       };
   -1 18678       aria.arialabelledbyText = function arialabelledbyText(node) {
   -1 18679         var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
   -1 18680         node = node.actualNode || node;
   -1 18681         if (node.nodeType !== 1 || context.inLabelledByContext || context.inControlContext) {
   -1 18682           return '';
   -1 18683         }
   -1 18684         var refs = dom.idrefs(node, 'aria-labelledby').filter(function(elm) {
   -1 18685           return elm;
   -1 18686         });
   -1 18687         return refs.reduce(function(accessibleName, elm) {
   -1 18688           var accessibleNameAdd = text.accessibleText(elm, _extends({
   -1 18689             inLabelledByContext: true,
   -1 18690             startNode: context.startNode || node
   -1 18691           }, context));
   -1 18692           if (!accessibleName) {
   -1 18693             return accessibleNameAdd;
   -1 18694           } else {
   -1 18695             return accessibleName + ' ' + accessibleNameAdd;
   -1 18696           }
   -1 18697         }, '');
   -1 18698       };
17497 18699       aria.requiredAttr = function(role) {
17498    -1         'use strict';
17499 18700         var roles = aria.lookupTable.role[role], attr = roles && roles.attributes && roles.attributes.required;
17500 18701         return attr || [];
17501 18702       };
17502 18703       aria.allowedAttr = function(role) {
17503    -1         'use strict';
17504 18704         var roles = aria.lookupTable.role[role], attr = roles && roles.attributes && roles.attributes.allowed || [], requiredAttr = roles && roles.attributes && roles.attributes.required || [];
17505 18705         return attr.concat(aria.lookupTable.globalAttributes).concat(requiredAttr);
17506 18706       };
17507    -1       aria.validateAttr = function(att) {
17508    -1         'use strict';
17509    -1         return !!aria.lookupTable.attributes[att];
17510    -1       };
17511    -1       aria.validateAttrValue = function validateAttrValue(node, attr) {
17512    -1         'use strict';
17513    -1         var matches, list, value = node.getAttribute(attr), attrInfo = aria.lookupTable.attributes[attr];
17514    -1         var doc = dom.getRootNode(node);
17515    -1         if (!attrInfo) {
17516    -1           return true;
17517    -1         }
17518    -1         switch (attrInfo.type) {
17519    -1          case 'boolean':
17520    -1          case 'nmtoken':
17521    -1           return typeof value === 'string' && attrInfo.values.includes(value.toLowerCase());
17522    -1 
17523    -1          case 'nmtokens':
17524    -1           list = axe.utils.tokenList(value);
17525    -1           return list.reduce(function(result, token) {
17526    -1             return result && attrInfo.values.includes(token);
17527    -1           }, list.length !== 0);
17528    -1 
17529    -1          case 'idref':
17530    -1           if (value.trim().length === 0) {
17531    -1             return true;
17532    -1           }
17533    -1           return !!(value && doc.getElementById(value));
17534    -1 
17535    -1          case 'idrefs':
17536    -1           if (value.trim().length === 0) {
17537    -1             return true;
17538    -1           }
17539    -1           list = axe.utils.tokenList(value);
17540    -1           return list.some(function(token) {
17541    -1             return doc.getElementById(token);
17542    -1           });
17543    -1 
17544    -1          case 'string':
17545    -1           return true;
17546    -1 
17547    -1          case 'decimal':
17548    -1           matches = value.match(/^[-+]?([0-9]*)\.?([0-9]*)$/);
17549    -1           return !!(matches && (matches[1] || matches[2]));
17550    -1 
17551    -1          case 'int':
17552    -1           return /^[-+]?[0-9]+$/.test(value);
17553    -1         }
   -1 18707       aria.validateAttr = function validateAttr(att) {
   -1 18708         var attrDefinition = aria.lookupTable.attributes[att];
   -1 18709         return !!attrDefinition;
17554 18710       };
17555 18711       function getRoleSegments(node) {
17556 18712         var roles = [];
@@ -17587,14 +18743,29 @@ module.exports = {
17587 18743           if (!allowImplicit && !(role === 'row' && tagName === 'TR' && axe.utils.matchesSelector(node, 'table[role="grid"] > tr'))) {
17588 18744             return true;
17589 18745           }
17590    -1           if (!aria.isAriaRoleAllowedOnElement(node, role)) {
17591    -1             return true;
17592    -1           }
   -1 18746           return !aria.isAriaRoleAllowedOnElement(node, role);
17593 18747         });
17594 18748         return unallowedRoles;
17595 18749       };
   -1 18750       aria.getOwnedVirtual = function getOwned(_ref23) {
   -1 18751         var actualNode = _ref23.actualNode, children = _ref23.children;
   -1 18752         if (!actualNode || !children) {
   -1 18753           throw new Error('getOwnedVirtual requires a virtual node');
   -1 18754         }
   -1 18755         return dom.idrefs(actualNode, 'aria-owns').reduce(function(ownedElms, element) {
   -1 18756           if (element) {
   -1 18757             var virtualNode = axe.utils.getNodeFromTree(axe._tree[0], element);
   -1 18758             ownedElms.push(virtualNode);
   -1 18759           }
   -1 18760           return ownedElms;
   -1 18761         }, children);
   -1 18762       };
17596 18763       aria.getRole = function getRole(node) {
17597    -1         var _ref22 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, noImplicit = _ref22.noImplicit, fallback = _ref22.fallback, abstracts = _ref22.abstracts, dpub = _ref22.dpub;
   -1 18764         var _ref24 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, noImplicit = _ref24.noImplicit, fallback = _ref24.fallback, abstracts = _ref24.abstracts, dpub = _ref24.dpub;
   -1 18765         node = node.actualNode || node;
   -1 18766         if (node.nodeType !== 1) {
   -1 18767           return null;
   -1 18768         }
17598 18769         var roleAttr = (node.getAttribute('role') || '').trim().toLowerCase();
17599 18770         var roleList = fallback ? axe.utils.tokenList(roleAttr) : [ roleAttr ];
17600 18771         var validRoles = roleList.filter(function(role) {
@@ -17651,25 +18822,21 @@ module.exports = {
17651 18822         return typeof refElm !== 'undefined';
17652 18823       };
17653 18824       aria.isAriaRoleAllowedOnElement = function isAriaRoleAllowedOnElement(node, role) {
17654    -1         var tagName = node.nodeName.toUpperCase();
   -1 18825         var nodeName = node.nodeName.toUpperCase();
17655 18826         var lookupTable = axe.commons.aria.lookupTable;
17656    -1         if (aria.validateNodeAndAttributes(node, lookupTable.elementsAllowedNoRole)) {
   -1 18827         if (matches(node, lookupTable.elementsAllowedNoRole)) {
17657 18828           return false;
17658 18829         }
17659    -1         if (aria.validateNodeAndAttributes(node, lookupTable.elementsAllowedAnyRole)) {
   -1 18830         if (matches(node, lookupTable.elementsAllowedAnyRole)) {
17660 18831           return true;
17661 18832         }
17662 18833         var roleValue = lookupTable.role[role];
17663    -1         if (!roleValue) {
17664    -1           return false;
17665    -1         }
17666    -1         if (!(roleValue.allowedElements && Array.isArray(roleValue.allowedElements) && roleValue.allowedElements.length)) {
   -1 18834         if (!roleValue || !roleValue.allowedElements) {
17667 18835           return false;
17668 18836         }
17669    -1         var out = false;
17670    -1         out = aria.validateNodeAndAttributes(node, roleValue.allowedElements);
17671    -1         if (Object.keys(lookupTable.evaluateRoleForElement).includes(tagName)) {
17672    -1           out = lookupTable.evaluateRoleForElement[tagName]({
   -1 18837         var out = matches(node, roleValue.allowedElements);
   -1 18838         if (Object.keys(lookupTable.evaluateRoleForElement).includes(nodeName)) {
   -1 18839           return lookupTable.evaluateRoleForElement[nodeName]({
17673 18840             node: node,
17674 18841             role: role,
17675 18842             out: out
@@ -17677,8 +18844,12 @@ module.exports = {
17677 18844         }
17678 18845         return out;
17679 18846       };
17680    -1       aria.labelVirtual = function(_ref23) {
17681    -1         var actualNode = _ref23.actualNode;
   -1 18847       aria.isUnsupportedRole = function(role) {
   -1 18848         var roleDefinition = aria.lookupTable.role[role];
   -1 18849         return roleDefinition ? roleDefinition.unsupported : false;
   -1 18850       };
   -1 18851       aria.labelVirtual = function(_ref25) {
   -1 18852         var actualNode = _ref25.actualNode;
17682 18853         var ref = void 0, candidate = void 0;
17683 18854         if (actualNode.getAttribute('aria-labelledby')) {
17684 18855           ref = dom.idrefs(actualNode, 'aria-labelledby');
@@ -17703,8 +18874,24 @@ module.exports = {
17703 18874         node = axe.utils.getNodeFromTree(axe._tree[0], node);
17704 18875         return aria.labelVirtual(node);
17705 18876       };
   -1 18877       aria.namedFromContents = function namedFromContents(node) {
   -1 18878         var _ref26 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, strict = _ref26.strict;
   -1 18879         node = node.actualNode || node;
   -1 18880         if (node.nodeType !== 1) {
   -1 18881           return false;
   -1 18882         }
   -1 18883         var role = aria.getRole(node);
   -1 18884         var roleDef = aria.lookupTable.role[role];
   -1 18885         if (roleDef && roleDef.nameFrom.includes('contents') || node.nodeName.toUpperCase() === 'TABLE') {
   -1 18886           return true;
   -1 18887         }
   -1 18888         if (strict) {
   -1 18889           return false;
   -1 18890         }
   -1 18891         return !roleDef || [ 'presentation', 'none' ].includes(role);
   -1 18892       };
17706 18893       aria.isValidRole = function(role) {
17707    -1         var _ref24 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, allowAbstract = _ref24.allowAbstract, _ref24$flagUnsupporte = _ref24.flagUnsupported, flagUnsupported = _ref24$flagUnsupporte === undefined ? false : _ref24$flagUnsupporte;
   -1 18894         var _ref27 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, allowAbstract = _ref27.allowAbstract, _ref27$flagUnsupporte = _ref27.flagUnsupported, flagUnsupported = _ref27$flagUnsupporte === undefined ? false : _ref27$flagUnsupporte;
17708 18895         var roleDefinition = aria.lookupTable.role[role];
17709 18896         var isRoleUnsupported = roleDefinition ? roleDefinition.unsupported : false;
17710 18897         if (!roleDefinition || flagUnsupported && isRoleUnsupported) {
@@ -17802,55 +18989,46 @@ module.exports = {
17802 18989         }
17803 18990         return sortRolesByOptimalAriaContext(availableImplicitRoles, ariaAttributes).shift();
17804 18991       };
17805    -1       aria.validateNodeAndAttributes = function validateNodeAndAttributes(node, constraintsArray) {
17806    -1         var tagName = node.nodeName.toUpperCase();
17807    -1         var stringConstraints = constraintsArray.filter(function(c) {
17808    -1           return typeof c === 'string';
17809    -1         });
17810    -1         if (stringConstraints.includes(tagName)) {
   -1 18992       aria.validateAttrValue = function validateAttrValue(node, attr) {
   -1 18993         'use strict';
   -1 18994         var matches, list, value = node.getAttribute(attr), attrInfo = aria.lookupTable.attributes[attr];
   -1 18995         var doc = dom.getRootNode(node);
   -1 18996         if (!attrInfo) {
17811 18997           return true;
17812 18998         }
17813    -1         var objectConstraints = constraintsArray.filter(function(c) {
17814    -1           return (typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object';
17815    -1         }).filter(function(c) {
17816    -1           return c.tagName === tagName;
17817    -1         });
17818    -1         var nodeAttrs = Array.from(node.attributes).map(function(a) {
17819    -1           return a.name.toUpperCase();
17820    -1         });
17821    -1         var validConstraints = objectConstraints.filter(function(c) {
17822    -1           if (!c.attributes) {
17823    -1             if (c.condition) {
17824    -1               return true;
17825    -1             }
17826    -1             return false;
17827    -1           }
17828    -1           var keys = Object.keys(c.attributes);
17829    -1           if (!keys.length) {
17830    -1             return false;
17831    -1           }
17832    -1           var keepConstraint = false;
17833    -1           keys.forEach(function(k) {
17834    -1             if (!nodeAttrs.includes(k)) {
17835    -1               return;
17836    -1             }
17837    -1             var attrValue = node.getAttribute(k).trim().toUpperCase();
17838    -1             if (attrValue === c.attributes[k]) {
17839    -1               keepConstraint = true;
17840    -1             }
   -1 18999         if (attrInfo.allowEmpty && (!value || value.trim() === '')) {
   -1 19000           return true;
   -1 19001         }
   -1 19002         switch (attrInfo.type) {
   -1 19003          case 'boolean':
   -1 19004          case 'nmtoken':
   -1 19005           return typeof value === 'string' && attrInfo.values.includes(value.toLowerCase());
   -1 19006 
   -1 19007          case 'nmtokens':
   -1 19008           list = axe.utils.tokenList(value);
   -1 19009           return list.reduce(function(result, token) {
   -1 19010             return result && attrInfo.values.includes(token);
   -1 19011           }, list.length !== 0);
   -1 19012 
   -1 19013          case 'idref':
   -1 19014           return !!(value && doc.getElementById(value));
   -1 19015 
   -1 19016          case 'idrefs':
   -1 19017           list = axe.utils.tokenList(value);
   -1 19018           return list.some(function(token) {
   -1 19019             return doc.getElementById(token);
17841 19020           });
17842    -1           return keepConstraint;
17843    -1         });
17844    -1         if (!validConstraints.length) {
17845    -1           return false;
   -1 19021 
   -1 19022          case 'string':
   -1 19023           return value.trim() !== '';
   -1 19024 
   -1 19025          case 'decimal':
   -1 19026           matches = value.match(/^[-+]?([0-9]*)\.?([0-9]*)$/);
   -1 19027           return !!(matches && (matches[1] || matches[2]));
   -1 19028 
   -1 19029          case 'int':
   -1 19030           return /^[-+]?[0-9]+$/.test(value);
17846 19031         }
17847    -1         var out = true;
17848    -1         validConstraints.forEach(function(c) {
17849    -1           if (c.condition && typeof c.condition === 'function') {
17850    -1             out = c.condition(node);
17851    -1           }
17852    -1         });
17853    -1         return out;
17854 19032       };
17855 19033       color.Color = function(red, green, blue, alpha) {
17856 19034         this.red = red;
@@ -18029,7 +19207,7 @@ module.exports = {
18029 19207           INPUT: [ 'LABEL' ]
18030 19208         };
18031 19209         var tagArray = elmStack.map(function(elm) {
18032    -1           return elm.tagName;
   -1 19210           return elm.nodeName;
18033 19211         });
18034 19212         var bgNodes = elmStack;
18035 19213         for (var candidate in elementMap) {
@@ -18043,7 +19221,7 @@ module.exports = {
18043 19221                     bgNodes.splice(tagArray.indexOf(candidate) + 1, 0, ancestorMatch);
18044 19222                   }
18045 19223                 }
18046    -1                 if (elm.tagName === elementMap[candidate][candidateIndex] && tagArray.indexOf(elm.tagName) === -1) {
   -1 19224                 if (elm.nodeName === elementMap[candidate][candidateIndex] && tagArray.indexOf(elm.nodeName) === -1) {
18047 19225                   bgNodes.splice(tagArray.indexOf(candidate) + 1, 0, elm);
18048 19226                 }
18049 19227               }
@@ -18079,25 +19257,29 @@ module.exports = {
18079 19257       };
18080 19258       color.getRectStack = function(elm) {
18081 19259         var boundingCoords = color.getCoords(elm.getBoundingClientRect());
18082    -1         if (boundingCoords) {
18083    -1           var boundingStack = dom.shadowElementsFromPoint(boundingCoords.x, boundingCoords.y);
18084    -1           var rects = Array.from(elm.getClientRects());
18085    -1           if (rects && rects.length > 1) {
18086    -1             var filteredArr = rects.filter(function(rect) {
18087    -1               return rect.width && rect.width > 0;
18088    -1             }).map(function(rect) {
18089    -1               var coords = color.getCoords(rect);
18090    -1               if (coords) {
18091    -1                 return dom.shadowElementsFromPoint(coords.x, coords.y);
18092    -1               }
18093    -1             });
18094    -1             filteredArr.splice(0, 0, boundingStack);
18095    -1             return filteredArr;
18096    -1           } else {
18097    -1             return [ boundingStack ];
   -1 19260         if (!boundingCoords) {
   -1 19261           return null;
   -1 19262         }
   -1 19263         var boundingStack = dom.shadowElementsFromPoint(boundingCoords.x, boundingCoords.y);
   -1 19264         var rects = Array.from(elm.getClientRects());
   -1 19265         if (!rects || rects.length <= 1) {
   -1 19266           return [ boundingStack ];
   -1 19267         }
   -1 19268         var filteredArr = rects.filter(function(rect) {
   -1 19269           return rect.width && rect.width > 0;
   -1 19270         }).map(function(rect) {
   -1 19271           var coords = color.getCoords(rect);
   -1 19272           if (coords) {
   -1 19273             return dom.shadowElementsFromPoint(coords.x, coords.y);
18098 19274           }
   -1 19275         });
   -1 19276         if (filteredArr.some(function(stack) {
   -1 19277           return stack === undefined;
   -1 19278         })) {
   -1 19279           return null;
18099 19280         }
18100    -1         return null;
   -1 19281         filteredArr.splice(0, 0, boundingStack);
   -1 19282         return filteredArr;
18101 19283       };
18102 19284       color.filteredRectStack = function(elm) {
18103 19285         var rectStack = color.getRectStack(elm);
@@ -18144,7 +19326,8 @@ module.exports = {
18144 19326         var bgElms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
18145 19327         var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
18146 19328         if (noScroll !== true) {
18147    -1           var alignToTop = elm.clientHeight - 2 >= window.innerHeight * 2;
   -1 19329           var clientHeight = elm.getBoundingClientRect().height;
   -1 19330           var alignToTop = clientHeight - 2 >= window.innerHeight * 2;
18148 19331           elm.scrollIntoView(alignToTop);
18149 19332         }
18150 19333         var bgColors = [];
@@ -18229,8 +19412,8 @@ module.exports = {
18229 19412         }
18230 19413         return finalElements;
18231 19414       };
18232    -1       dom.findElmsInContext = function(_ref25) {
18233    -1         var context = _ref25.context, value = _ref25.value, attr = _ref25.attr, _ref25$elm = _ref25.elm, elm = _ref25$elm === undefined ? '' : _ref25$elm;
   -1 19415       dom.findElmsInContext = function(_ref28) {
   -1 19416         var context = _ref28.context, value = _ref28.value, attr = _ref28.attr, _ref28$elm = _ref28.elm, elm = _ref28$elm === undefined ? '' : _ref28$elm;
18234 19417         var root = void 0;
18235 19418         var escapedValue = axe.utils.escapeSelector(value);
18236 19419         if (context.nodeType === 9 || context.nodeType === 11) {
@@ -18279,16 +19462,21 @@ module.exports = {
18279 19462       };
18280 19463       dom.getElementByReference = function(node, attr) {
18281 19464         var fragment = node.getAttribute(attr);
18282    -1         if (fragment && fragment.charAt(0) === '#') {
   -1 19465         if (!fragment) {
   -1 19466           return null;
   -1 19467         }
   -1 19468         if (fragment.charAt(0) === '#') {
18283 19469           fragment = decodeURIComponent(fragment.substring(1));
18284    -1           var candidate = document.getElementById(fragment);
18285    -1           if (candidate) {
18286    -1             return candidate;
18287    -1           }
18288    -1           candidate = document.getElementsByName(fragment);
18289    -1           if (candidate.length) {
18290    -1             return candidate[0];
18291    -1           }
   -1 19470         } else if (fragment.substr(0, 2) === '/#') {
   -1 19471           fragment = decodeURIComponent(fragment.substring(2));
   -1 19472         }
   -1 19473         var candidate = document.getElementById(fragment);
   -1 19474         if (candidate) {
   -1 19475           return candidate;
   -1 19476         }
   -1 19477         candidate = document.getElementsByName(fragment);
   -1 19478         if (candidate.length) {
   -1 19479           return candidate[0];
18292 19480         }
18293 19481         return null;
18294 19482       };
@@ -18322,6 +19510,16 @@ module.exports = {
18322 19510           top: element.scrollTop
18323 19511         };
18324 19512       };
   -1 19513       dom.getTabbableElements = function getTabbableElements(virtualNode) {
   -1 19514         var nodeAndDescendents = axe.utils.querySelectorAll(virtualNode, '*');
   -1 19515         var tabbableElements = nodeAndDescendents.filter(function(vNode) {
   -1 19516           var isFocusable = vNode.isFocusable;
   -1 19517           var tabIndex = vNode.actualNode.getAttribute('tabindex');
   -1 19518           tabIndex = tabIndex && !isNaN(parseInt(tabIndex, 10)) ? parseInt(tabIndex) : null;
   -1 19519           return tabIndex ? isFocusable && tabIndex >= 0 : isFocusable;
   -1 19520         });
   -1 19521         return tabbableElements;
   -1 19522       };
18325 19523       dom.getViewportSize = function(win) {
18326 19524         'use strict';
18327 19525         var body, doc = win.document, docElement = doc.documentElement;
@@ -18346,8 +19544,8 @@ module.exports = {
18346 19544       var hiddenTextElms = [ 'HEAD', 'TITLE', 'TEMPLATE', 'SCRIPT', 'STYLE', 'IFRAME', 'OBJECT', 'VIDEO', 'AUDIO', 'NOSCRIPT' ];
18347 19545       function hasChildTextNodes(elm) {
18348 19546         if (!hiddenTextElms.includes(elm.actualNode.nodeName.toUpperCase())) {
18349    -1           return elm.children.some(function(_ref26) {
18350    -1             var actualNode = _ref26.actualNode;
   -1 19547           return elm.children.some(function(_ref29) {
   -1 19548             var actualNode = _ref29.actualNode;
18351 19549             return actualNode.nodeType === 3 && actualNode.nodeValue.trim();
18352 19550           });
18353 19551         }
@@ -18373,7 +19571,7 @@ module.exports = {
18373 19571         return result;
18374 19572       };
18375 19573       function focusDisabled(el) {
18376    -1         return el.disabled || !dom.isVisible(el, true) && el.nodeName.toUpperCase() !== 'AREA';
   -1 19574         return el.disabled || dom.isHiddenWithCSS(el) && el.nodeName.toUpperCase() !== 'AREA';
18377 19575       }
18378 19576       dom.isFocusable = function(el) {
18379 19577         'use strict';
@@ -18415,6 +19613,38 @@ module.exports = {
18415 19613       dom.insertedIntoFocusOrder = function(el) {
18416 19614         return el.tabIndex > -1 && dom.isFocusable(el) && !dom.isNativelyFocusable(el);
18417 19615       };
   -1 19616       dom.isHiddenWithCSS = function isHiddenWithCSS(el, descendentVisibilityValue) {
   -1 19617         if (el.nodeType === 9) {
   -1 19618           return false;
   -1 19619         }
   -1 19620         if (el.nodeType === 11) {
   -1 19621           el = el.host;
   -1 19622         }
   -1 19623         if ([ 'STYLE', 'SCRIPT' ].includes(el.nodeName.toUpperCase())) {
   -1 19624           return false;
   -1 19625         }
   -1 19626         var style = window.getComputedStyle(el, null);
   -1 19627         if (!style) {
   -1 19628           throw new Error('Style does not exist for the given element.');
   -1 19629         }
   -1 19630         var displayValue = style.getPropertyValue('display');
   -1 19631         if (displayValue === 'none') {
   -1 19632           return true;
   -1 19633         }
   -1 19634         var HIDDEN_VISIBILITY_VALUES = [ 'hidden', 'collapse' ];
   -1 19635         var visibilityValue = style.getPropertyValue('visibility');
   -1 19636         if (HIDDEN_VISIBILITY_VALUES.includes(visibilityValue) && !descendentVisibilityValue) {
   -1 19637           return true;
   -1 19638         }
   -1 19639         if (HIDDEN_VISIBILITY_VALUES.includes(visibilityValue) && descendentVisibilityValue && HIDDEN_VISIBILITY_VALUES.includes(descendentVisibilityValue)) {
   -1 19640           return true;
   -1 19641         }
   -1 19642         var parent = dom.getComposedParent(el);
   -1 19643         if (parent && !HIDDEN_VISIBILITY_VALUES.includes(visibilityValue)) {
   -1 19644           return dom.isHiddenWithCSS(parent, visibilityValue);
   -1 19645         }
   -1 19646         return false;
   -1 19647       };
18418 19648       dom.isHTML5 = function(doc) {
18419 19649         var node = doc.doctype;
18420 19650         if (node === null) {
@@ -18544,7 +19774,7 @@ module.exports = {
18544 19774           return false;
18545 19775         }
18546 19776         nodeName = el.nodeName.toUpperCase();
18547    -1         if (style.getPropertyValue('display') === 'none' || nodeName.toUpperCase() === 'STYLE' || nodeName.toUpperCase() === 'SCRIPT' || !screenReader && isClipped(style.getPropertyValue('clip')) || !recursed && (style.getPropertyValue('visibility') === 'hidden' || !screenReader && dom.isOffscreen(el)) || screenReader && el.getAttribute('aria-hidden') === 'true') {
   -1 19777         if (style.getPropertyValue('display') === 'none' || [ 'STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE' ].includes(nodeName) || !screenReader && isClipped(style.getPropertyValue('clip')) || !recursed && (style.getPropertyValue('visibility') === 'hidden' || !screenReader && dom.isOffscreen(el)) || screenReader && el.getAttribute('aria-hidden') === 'true') {
18548 19778           return false;
18549 19779         }
18550 19780         parent = el.assignedSlot ? el.assignedSlot : el.parentNode;
@@ -18559,7 +19789,7 @@ module.exports = {
18559 19789         if (role) {
18560 19790           return visualRoles.indexOf(role) !== -1;
18561 19791         }
18562    -1         switch (element.tagName.toUpperCase()) {
   -1 19792         switch (element.nodeName.toUpperCase()) {
18563 19793          case 'IMG':
18564 19794          case 'IFRAME':
18565 19795          case 'OBJECT':
@@ -18653,6 +19883,80 @@ module.exports = {
18653 19883         }
18654 19884         return true;
18655 19885       };
   -1 19886       matches.attributes = function matchesAttributes(node, matcher) {
   -1 19887         node = node.actualNode || node;
   -1 19888         return matches.fromFunction(function(attrName) {
   -1 19889           return node.getAttribute(attrName);
   -1 19890         }, matcher);
   -1 19891       };
   -1 19892       matches.condition = function(arg, condition) {
   -1 19893         return !!condition(arg);
   -1 19894       };
   -1 19895       var matchers = [ 'nodeName', 'attributes', 'properties', 'condition' ];
   -1 19896       matches.fromDefinition = function matchFromDefinition(node, definition) {
   -1 19897         node = node.actualNode || node;
   -1 19898         if (Array.isArray(definition)) {
   -1 19899           return definition.some(function(definitionItem) {
   -1 19900             return matches(node, definitionItem);
   -1 19901           });
   -1 19902         }
   -1 19903         if (typeof definition === 'string') {
   -1 19904           return axe.utils.matchesSelector(node, definition);
   -1 19905         }
   -1 19906         return Object.keys(definition).every(function(matcherName) {
   -1 19907           if (!matchers.includes(matcherName)) {
   -1 19908             throw new Error('Unknown matcher type "' + matcherName + '"');
   -1 19909           }
   -1 19910           var matchMethod = matches[matcherName];
   -1 19911           var matcher = definition[matcherName];
   -1 19912           return matchMethod(node, matcher);
   -1 19913         });
   -1 19914       };
   -1 19915       matches.fromFunction = function matchFromFunction(getValue, matcher) {
   -1 19916         var matcherType = typeof matcher === 'undefined' ? 'undefined' : _typeof(matcher);
   -1 19917         if (matcherType !== 'object' || Array.isArray(matcher) || matcher instanceof RegExp) {
   -1 19918           throw new Error('Expect matcher to be an object');
   -1 19919         }
   -1 19920         return Object.keys(matcher).every(function(propName) {
   -1 19921           return matches.fromPrimative(getValue(propName), matcher[propName]);
   -1 19922         });
   -1 19923       };
   -1 19924       matches.fromPrimative = function matchFromPrimative(someString, matcher) {
   -1 19925         var matcherType = typeof matcher === 'undefined' ? 'undefined' : _typeof(matcher);
   -1 19926         if (Array.isArray(matcher) && typeof someString !== 'undefined') {
   -1 19927           return matcher.includes(someString);
   -1 19928         }
   -1 19929         if (matcherType === 'function') {
   -1 19930           return !!matcher(someString);
   -1 19931         }
   -1 19932         if (matcher instanceof RegExp) {
   -1 19933           return matcher.test(someString);
   -1 19934         }
   -1 19935         return matcher === someString;
   -1 19936       };
   -1 19937       var isXHTMLGlobal = void 0;
   -1 19938       matches.nodeName = function matchNodeName(node, matcher) {
   -1 19939         var _ref30 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, isXHTML = _ref30.isXHTML;
   -1 19940         node = node.actualNode || node;
   -1 19941         if (typeof isXHTML === 'undefined') {
   -1 19942           if (typeof matcher === 'string') {
   -1 19943             return axe.utils.matchesSelector(node, matcher);
   -1 19944           }
   -1 19945           if (typeof isXHTMLGlobal === 'undefined') {
   -1 19946             isXHTMLGlobal = axe.utils.isXHTML(node.ownerDocument);
   -1 19947           }
   -1 19948           isXHTML = isXHTMLGlobal;
   -1 19949         }
   -1 19950         var nodeName = isXHTML ? node.nodeName : node.nodeName.toLowerCase();
   -1 19951         return matches.fromPrimative(nodeName, matcher);
   -1 19952       };
   -1 19953       matches.properties = function matchesProperties(node, matcher) {
   -1 19954         node = node.actualNode || node;
   -1 19955         var out = matches.fromFunction(function(propName) {
   -1 19956           return node[propName];
   -1 19957         }, matcher);
   -1 19958         return out;
   -1 19959       };
18656 19960       table.getAllCells = function(tableElm) {
18657 19961         var rowIndex, cellIndex, rowLength, cellLength;
18658 19962         var cells = [];
@@ -18720,7 +20024,7 @@ module.exports = {
18720 20024         var headerCol = tableGrid.map(function(col) {
18721 20025           return col[pos.x];
18722 20026         }).reduce(function(headerCol, cell) {
18723    -1           return headerCol && cell.nodeName.toUpperCase() === 'TH';
   -1 20027           return headerCol && cell && cell.nodeName.toUpperCase() === 'TH';
18724 20028         }, true);
18725 20029         if (headerCol) {
18726 20030           return 'row';
@@ -18941,232 +20245,184 @@ module.exports = {
18941 20245           }, tableGrid, callback);
18942 20246         };
18943 20247       })(table);
18944    -1       var defaultButtonValues = {
18945    -1         submit: 'Submit',
18946    -1         reset: 'Reset'
   -1 20248       text.accessibleText = function accessibleText(element, context) {
   -1 20249         var virtualNode = axe.utils.getNodeFromTree(axe._tree[0], element);
   -1 20250         return text.accessibleTextVirtual(virtualNode, context);
18947 20251       };
18948    -1       var inputTypes = [ 'text', 'search', 'tel', 'url', 'email', 'date', 'time', 'number', 'range', 'color' ];
18949    -1       var phrasingElements = [ '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' ];
18950    -1       function findLabel(virtualNode) {
18951    -1         var label = void 0;
18952    -1         if (virtualNode.actualNode.id) {
18953    -1           label = dom.findElmsInContext({
18954    -1             elm: 'label',
18955    -1             attr: 'for',
18956    -1             value: virtualNode.actualNode.id,
18957    -1             context: virtualNode.actualNode
18958    -1           })[0];
   -1 20252       text.accessibleTextVirtual = function accessibleTextVirtual(virtualNode) {
   -1 20253         var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
   -1 20254         var actualNode = virtualNode.actualNode;
   -1 20255         context = prepareContext(virtualNode, context);
   -1 20256         if (shouldIgnoreHidden(virtualNode, context)) {
   -1 20257           return '';
   -1 20258         }
   -1 20259         var computationSteps = [ aria.arialabelledbyText, aria.arialabelText, text.nativeTextAlternative, text.formControlValue, text.subtreeText, textNodeContent, text.titleText ];
   -1 20260         var accName = computationSteps.reduce(function(accName, step) {
   -1 20261           if (accName !== '') {
   -1 20262             return accName;
   -1 20263           }
   -1 20264           return step(virtualNode, context);
   -1 20265         }, '');
   -1 20266         if (context.startNode === virtualNode) {
   -1 20267           accName = text.sanitize(accName);
18959 20268         }
18960    -1         if (!label) {
18961    -1           label = dom.findUpVirtual(virtualNode, 'label');
   -1 20269         if (context.debug) {
   -1 20270           axe.log(accName || '{empty-value}', actualNode, context);
18962 20271         }
18963    -1         return axe.utils.getNodeFromTree(axe._tree[0], label);
18964    -1       }
18965    -1       function isButton(_ref27) {
18966    -1         var actualNode = _ref27.actualNode;
18967    -1         return [ 'button', 'reset', 'submit' ].includes(actualNode.type.toLowerCase());
18968    -1       }
18969    -1       function isInput(_ref28) {
18970    -1         var actualNode = _ref28.actualNode;
18971    -1         var nodeName = actualNode.nodeName.toUpperCase();
18972    -1         return nodeName === 'TEXTAREA' || nodeName === 'SELECT' || nodeName === 'INPUT' && actualNode.type.toLowerCase() !== 'hidden';
   -1 20272         return accName;
   -1 20273       };
   -1 20274       function textNodeContent(_ref31) {
   -1 20275         var actualNode = _ref31.actualNode;
   -1 20276         if (actualNode.nodeType !== 3) {
   -1 20277           return '';
   -1 20278         }
   -1 20279         return actualNode.textContent;
18973 20280       }
18974    -1       function shouldCheckSubtree(_ref29) {
18975    -1         var actualNode = _ref29.actualNode;
18976    -1         return [ 'BUTTON', 'SUMMARY', 'A' ].includes(actualNode.nodeName.toUpperCase());
   -1 20281       function shouldIgnoreHidden(_ref32, context) {
   -1 20282         var actualNode = _ref32.actualNode;
   -1 20283         if (actualNode.nodeType !== 1 || context.includeHidden) {
   -1 20284           return false;
   -1 20285         }
   -1 20286         return !dom.isVisible(actualNode, true);
18977 20287       }
18978    -1       function shouldNeverCheckSubtree(_ref30) {
18979    -1         var actualNode = _ref30.actualNode;
18980    -1         return [ 'TABLE', 'FIGURE', 'SELECT' ].includes(actualNode.nodeName.toUpperCase());
   -1 20288       function prepareContext(virtualNode, context) {
   -1 20289         var actualNode = virtualNode.actualNode;
   -1 20290         if (!context.startNode) {
   -1 20291           context = _extends({
   -1 20292             startNode: virtualNode
   -1 20293           }, context);
   -1 20294         }
   -1 20295         if (actualNode.nodeType === 1 && context.inLabelledByContext && context.includeHidden === undefined) {
   -1 20296           context = _extends({
   -1 20297             includeHidden: !dom.isVisible(actualNode, true)
   -1 20298           }, context);
   -1 20299         }
   -1 20300         return context;
18981 20301       }
18982    -1       function formValueText(_ref31, inLabelledByContext) {
18983    -1         var actualNode = _ref31.actualNode;
18984    -1         var nodeName = actualNode.nodeName.toUpperCase();
18985    -1         if (nodeName === 'INPUT') {
18986    -1           if (!actualNode.hasAttribute('type') || inputTypes.includes(actualNode.type.toLowerCase())) {
18987    -1             return actualNode.value;
18988    -1           }
18989    -1           return '';
   -1 20302       text.accessibleTextVirtual.alreadyProcessed = function alreadyProcessed(virtualnode, context) {
   -1 20303         context.processed = context.processed || [];
   -1 20304         if (context.processed.includes(virtualnode)) {
   -1 20305           return true;
18990 20306         }
18991    -1         if (nodeName === 'SELECT' && inLabelledByContext) {
18992    -1           var opts = actualNode.options;
18993    -1           if (opts && opts.length) {
18994    -1             var returnText = '';
18995    -1             for (var i = 0; i < opts.length; i++) {
18996    -1               if (opts[i].selected) {
18997    -1                 returnText += ' ' + opts[i].text;
18998    -1               }
18999    -1             }
19000    -1             return text.sanitize(returnText);
19001    -1           }
   -1 20307         context.processed.push(virtualnode);
   -1 20308         return false;
   -1 20309       };
   -1 20310       var selectRoles = [ 'combobox', 'listbox' ];
   -1 20311       var rangeRoles = [ 'progressbar', 'scrollbar', 'slider', 'spinbutton' ];
   -1 20312       var controlValueRoles = [ 'textbox' ].concat(selectRoles, rangeRoles);
   -1 20313       text.formControlValueMethods = {
   -1 20314         nativeTextboxValue: nativeTextboxValue,
   -1 20315         nativeSelectValue: nativeSelectValue,
   -1 20316         ariaTextboxValue: ariaTextboxValue,
   -1 20317         ariaListboxValue: ariaListboxValue,
   -1 20318         ariaComboboxValue: ariaComboboxValue,
   -1 20319         ariaRangeValue: ariaRangeValue
   -1 20320       };
   -1 20321       text.formControlValue = function formControlValue(virtualNode) {
   -1 20322         var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
   -1 20323         var actualNode = virtualNode.actualNode;
   -1 20324         var unsupported = text.unsupported.accessibleNameFromFieldValue || [];
   -1 20325         var role = aria.getRole(actualNode);
   -1 20326         if (context.startNode === virtualNode || !controlValueRoles.includes(role) || unsupported.includes(role)) {
19002 20327           return '';
19003 20328         }
19004    -1         if (nodeName === 'TEXTAREA' && actualNode.value) {
19005    -1           return actualNode.value;
   -1 20329         var valueMethods = Object.keys(text.formControlValueMethods).map(function(name) {
   -1 20330           return text.formControlValueMethods[name];
   -1 20331         });
   -1 20332         var valueString = valueMethods.reduce(function(accName, step) {
   -1 20333           return accName || step(virtualNode, context);
   -1 20334         }, '');
   -1 20335         if (context.debug) {
   -1 20336           axe.log(valueString || '{empty-value}', actualNode, context);
   -1 20337         }
   -1 20338         return valueString;
   -1 20339       };
   -1 20340       function nativeTextboxValue(node) {
   -1 20341         node = node.actualNode || node;
   -1 20342         var nonTextInputTypes = [ 'button', 'checkbox', 'file', 'hidden', 'image', 'password', 'radio', 'reset', 'submit', 'color' ];
   -1 20343         var nodeName = node.nodeName.toUpperCase();
   -1 20344         if (nodeName === 'TEXTAREA' || nodeName === 'INPUT' && !nonTextInputTypes.includes(node.type)) {
   -1 20345           return node.value || '';
19006 20346         }
19007 20347         return '';
19008 20348       }
19009    -1       function checkDescendant(_ref32, nodeName) {
19010    -1         var actualNode = _ref32.actualNode;
19011    -1         var candidate = actualNode.querySelector(nodeName.toLowerCase());
19012    -1         if (candidate) {
19013    -1           return text.accessibleText(candidate);
   -1 20349       function nativeSelectValue(node) {
   -1 20350         node = node.actualNode || node;
   -1 20351         if (node.nodeName.toUpperCase() !== 'SELECT') {
   -1 20352           return '';
19014 20353         }
19015    -1         return '';
   -1 20354         return Array.from(node.options).filter(function(option) {
   -1 20355           return option.selected;
   -1 20356         }).map(function(option) {
   -1 20357           return option.text;
   -1 20358         }).join(' ') || '';
19016 20359       }
19017    -1       function isEmbeddedControl(elm) {
19018    -1         if (!elm) {
19019    -1           return false;
   -1 20360       function ariaTextboxValue(virtualNode) {
   -1 20361         var actualNode = virtualNode.actualNode;
   -1 20362         var role = aria.getRole(actualNode);
   -1 20363         if (role !== 'textbox') {
   -1 20364           return '';
19020 20365         }
19021    -1         var actualNode = elm.actualNode;
19022    -1         switch (actualNode.nodeName.toUpperCase()) {
19023    -1          case 'SELECT':
19024    -1          case 'TEXTAREA':
19025    -1           return true;
19026    -1 
19027    -1          case 'INPUT':
19028    -1           return !actualNode.hasAttribute('type') || inputTypes.includes(actualNode.getAttribute('type').toLowerCase());
19029    -1 
19030    -1          default:
19031    -1           return false;
   -1 20366         if (!dom.isHiddenWithCSS(actualNode)) {
   -1 20367           return text.visibleVirtual(virtualNode, true);
   -1 20368         } else {
   -1 20369           return actualNode.textContent;
19032 20370         }
19033 20371       }
19034    -1       function shouldCheckAlt(_ref33) {
19035    -1         var actualNode = _ref33.actualNode;
19036    -1         var nodeName = actualNode.nodeName.toUpperCase();
19037    -1         return [ 'IMG', 'APPLET', 'AREA' ].includes(nodeName) || nodeName === 'INPUT' && actualNode.type.toLowerCase() === 'image';
19038    -1       }
19039    -1       function nonEmptyText(t) {
19040    -1         return !!text.sanitize(t);
19041    -1       }
19042    -1       text.accessibleText = function accessibleText(element, inLabelledByContext) {
19043    -1         var virtualNode = axe.utils.getNodeFromTree(axe._tree[0], element);
19044    -1         return axe.commons.text.accessibleTextVirtual(virtualNode, inLabelledByContext);
19045    -1       };
19046    -1       text.accessibleTextVirtual = function accessibleTextVirtual(element, inLabelledByContext) {
19047    -1         var accessibleNameComputation = void 0;
19048    -1         var encounteredNodes = [];
19049    -1         if (element instanceof Node) {
19050    -1           element = axe.utils.getNodeFromTree(axe._tree[0], element);
19051    -1         }
19052    -1         function getInnerText(element, inLabelledByContext, inControlContext) {
19053    -1           return element.children.reduce(function(returnText, child) {
19054    -1             var actualNode = child.actualNode;
19055    -1             if (actualNode.nodeType === 3) {
19056    -1               returnText += actualNode.nodeValue;
19057    -1             } else if (actualNode.nodeType === 1) {
19058    -1               if (!phrasingElements.includes(actualNode.nodeName.toUpperCase())) {
19059    -1                 returnText += ' ';
19060    -1               }
19061    -1               returnText += accessibleNameComputation(child, inLabelledByContext, inControlContext);
19062    -1             }
19063    -1             return returnText;
19064    -1           }, '');
19065    -1         }
19066    -1         function getLayoutTableText(element) {
19067    -1           if (!axe.commons.table.isDataTable(element.actualNode) && axe.commons.table.getAllCells(element.actualNode).length === 1) {
19068    -1             return getInnerText(element, false, false).trim();
19069    -1           }
   -1 20372       function ariaListboxValue(virtualNode, context) {
   -1 20373         var actualNode = virtualNode.actualNode;
   -1 20374         var role = aria.getRole(actualNode);
   -1 20375         if (role !== 'listbox') {
19070 20376           return '';
19071 20377         }
19072    -1         function checkNative(element, inLabelledByContext, inControlContext) {
19073    -1           var returnText = '';
19074    -1           var actualNode = element.actualNode;
19075    -1           var nodeName = actualNode.nodeName.toUpperCase();
19076    -1           if (shouldCheckSubtree(element)) {
19077    -1             returnText = getInnerText(element, false, false) || '';
19078    -1             if (nonEmptyText(returnText)) {
19079    -1               return returnText;
19080    -1             }
19081    -1           }
19082    -1           if (nodeName === 'FIGURE') {
19083    -1             returnText = checkDescendant(element, 'figcaption');
19084    -1             if (nonEmptyText(returnText)) {
19085    -1               return returnText;
19086    -1             }
19087    -1           }
19088    -1           if (nodeName === 'TABLE') {
19089    -1             returnText = checkDescendant(element, 'caption');
19090    -1             if (nonEmptyText(returnText)) {
19091    -1               return returnText;
19092    -1             }
19093    -1             returnText = actualNode.getAttribute('title') || actualNode.getAttribute('summary') || getLayoutTableText(element) || '';
19094    -1             if (nonEmptyText(returnText)) {
19095    -1               return returnText;
19096    -1             }
19097    -1           }
19098    -1           if (shouldCheckAlt(element)) {
19099    -1             return actualNode.getAttribute('alt') || '';
19100    -1           }
19101    -1           if (isInput(element) && !inControlContext) {
19102    -1             if (isButton(element)) {
19103    -1               return actualNode.value || actualNode.title || defaultButtonValues[actualNode.type] || '';
19104    -1             }
19105    -1             var labelElement = findLabel(element);
19106    -1             if (labelElement) {
19107    -1               return accessibleNameComputation(labelElement, inLabelledByContext, true);
19108    -1             }
19109    -1           }
   -1 20378         var selected = aria.getOwnedVirtual(virtualNode).filter(function(owned) {
   -1 20379           return aria.getRole(owned) === 'option' && owned.actualNode.getAttribute('aria-selected') === 'true';
   -1 20380         });
   -1 20381         if (selected.length === 0) {
19110 20382           return '';
19111 20383         }
19112    -1         function checkARIA(element, inLabelledByContext, inControlContext) {
19113    -1           var returnText = '';
19114    -1           var actualNode = element.actualNode;
19115    -1           if (!inLabelledByContext && actualNode.hasAttribute('aria-labelledby')) {
19116    -1             returnText = text.sanitize(dom.idrefs(actualNode, 'aria-labelledby').map(function(label) {
19117    -1               if (label !== null) {
19118    -1                 if (actualNode === label) {
19119    -1                   encounteredNodes.pop();
19120    -1                 }
19121    -1                 var vLabel = axe.utils.getNodeFromTree(axe._tree[0], label);
19122    -1                 return accessibleNameComputation(vLabel, true, actualNode !== label);
19123    -1               } else {
19124    -1                 return '';
19125    -1               }
19126    -1             }).join(' '));
19127    -1           }
19128    -1           if (!returnText && !(inControlContext && isEmbeddedControl(element)) && actualNode.hasAttribute('aria-label')) {
19129    -1             return text.sanitize(actualNode.getAttribute('aria-label'));
19130    -1           }
19131    -1           return returnText;
   -1 20384         return axe.commons.text.accessibleTextVirtual(selected[0], context);
   -1 20385       }
   -1 20386       function ariaComboboxValue(virtualNode, context) {
   -1 20387         var actualNode = virtualNode.actualNode;
   -1 20388         var role = aria.getRole(actualNode, {
   -1 20389           noImplicit: true
   -1 20390         });
   -1 20391         var listbox = void 0;
   -1 20392         if (!role === 'combobox') {
   -1 20393           return '';
19132 20394         }
19133    -1         accessibleNameComputation = function accessibleNameComputation(element, inLabelledByContext, inControlContext) {
19134    -1           var returnText = void 0;
19135    -1           if (!element || encounteredNodes.includes(element)) {
19136    -1             return '';
19137    -1           } else if (element !== null && element.actualNode instanceof Node !== true) {
19138    -1             throw new Error('Invalid argument. Virtual Node must be provided');
19139    -1           } else if (!inLabelledByContext && !dom.isVisible(element.actualNode, true)) {
19140    -1             return '';
19141    -1           }
19142    -1           encounteredNodes.push(element);
19143    -1           var role = element.actualNode.getAttribute('role');
19144    -1           returnText = checkARIA(element, inLabelledByContext, inControlContext);
19145    -1           if (nonEmptyText(returnText)) {
19146    -1             return returnText;
19147    -1           }
19148    -1           returnText = checkNative(element, inLabelledByContext, inControlContext);
19149    -1           if (nonEmptyText(returnText)) {
19150    -1             return returnText;
19151    -1           }
19152    -1           if (inControlContext) {
19153    -1             returnText = formValueText(element, inLabelledByContext);
19154    -1             if (nonEmptyText(returnText)) {
19155    -1               return returnText;
19156    -1             }
19157    -1           }
19158    -1           if ((inLabelledByContext || !shouldNeverCheckSubtree(element)) && (!role || aria.getRolesWithNameFromContents().indexOf(role) !== -1)) {
19159    -1             returnText = getInnerText(element, inLabelledByContext, inControlContext);
19160    -1             if (nonEmptyText(returnText)) {
19161    -1               return returnText;
19162    -1             }
19163    -1           }
19164    -1           if (element.actualNode.hasAttribute('title')) {
19165    -1             return element.actualNode.getAttribute('title');
19166    -1           }
   -1 20395         listbox = aria.getOwnedVirtual(virtualNode).filter(function(elm) {
   -1 20396           return aria.getRole(elm) === 'listbox';
   -1 20397         })[0];
   -1 20398         return listbox ? text.formControlValueMethods.ariaListboxValue(listbox, context) : '';
   -1 20399       }
   -1 20400       function ariaRangeValue(node) {
   -1 20401         node = node.actualNode || node;
   -1 20402         var role = aria.getRole(node);
   -1 20403         if (!rangeRoles.includes(role) || !node.hasAttribute('aria-valuenow')) {
19167 20404           return '';
19168    -1         };
19169    -1         return text.sanitize(accessibleNameComputation(element, inLabelledByContext));
   -1 20405         }
   -1 20406         var valueNow = +node.getAttribute('aria-valuenow');
   -1 20407         return !isNaN(valueNow) ? String(valueNow) : '0';
   -1 20408       }
   -1 20409       text.isHumanInterpretable = function(str) {
   -1 20410         if (!str.length) {
   -1 20411           return 0;
   -1 20412         }
   -1 20413         var alphaNumericIconMap = [ 'x', 'i' ];
   -1 20414         if (alphaNumericIconMap.includes(str)) {
   -1 20415           return 0;
   -1 20416         }
   -1 20417         var noUnicodeStr = text.removeUnicode(str, {
   -1 20418           emoji: true,
   -1 20419           nonBmp: true,
   -1 20420           punctuations: true
   -1 20421         });
   -1 20422         if (!text.sanitize(noUnicodeStr)) {
   -1 20423           return 0;
   -1 20424         }
   -1 20425         return 1;
19170 20426       };
19171 20427       var autocomplete = {
19172 20428         stateTerms: [ 'on', 'off' ],
@@ -19177,7 +20433,7 @@ module.exports = {
19177 20433       };
19178 20434       text.autocomplete = autocomplete;
19179 20435       text.isValidAutocomplete = function isValidAutocomplete(autocomplete) {
19180    -1         var _ref34 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref34$looseTyped = _ref34.looseTyped, looseTyped = _ref34$looseTyped === undefined ? false : _ref34$looseTyped, _ref34$stateTerms = _ref34.stateTerms, stateTerms = _ref34$stateTerms === undefined ? [] : _ref34$stateTerms, _ref34$locations = _ref34.locations, locations = _ref34$locations === undefined ? [] : _ref34$locations, _ref34$qualifiers = _ref34.qualifiers, qualifiers = _ref34$qualifiers === undefined ? [] : _ref34$qualifiers, _ref34$standaloneTerm = _ref34.standaloneTerms, standaloneTerms = _ref34$standaloneTerm === undefined ? [] : _ref34$standaloneTerm, _ref34$qualifiedTerms = _ref34.qualifiedTerms, qualifiedTerms = _ref34$qualifiedTerms === undefined ? [] : _ref34$qualifiedTerms;
   -1 20436         var _ref33 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref33$looseTyped = _ref33.looseTyped, looseTyped = _ref33$looseTyped === undefined ? false : _ref33$looseTyped, _ref33$stateTerms = _ref33.stateTerms, stateTerms = _ref33$stateTerms === undefined ? [] : _ref33$stateTerms, _ref33$locations = _ref33.locations, locations = _ref33$locations === undefined ? [] : _ref33$locations, _ref33$qualifiers = _ref33.qualifiers, qualifiers = _ref33$qualifiers === undefined ? [] : _ref33$qualifiers, _ref33$standaloneTerm = _ref33.standaloneTerms, standaloneTerms = _ref33$standaloneTerm === undefined ? [] : _ref33$standaloneTerm, _ref33$qualifiedTerms = _ref33.qualifiedTerms, qualifiedTerms = _ref33$qualifiedTerms === undefined ? [] : _ref33$qualifiedTerms;
19181 20437         autocomplete = autocomplete.toLowerCase().trim();
19182 20438         stateTerms = stateTerms.concat(text.autocomplete.stateTerms);
19183 20439         if (stateTerms.includes(autocomplete) || autocomplete === '') {
@@ -19206,6 +20462,45 @@ module.exports = {
19206 20462         var purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];
19207 20463         return standaloneTerms.includes(purposeTerm) || qualifiedTerms.includes(purposeTerm);
19208 20464       };
   -1 20465       text.labelText = function labelText(virtualNode) {
   -1 20466         var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
   -1 20467         var alreadyProcessed = text.accessibleTextVirtual.alreadyProcessed;
   -1 20468         if (context.inControlContext || context.inLabelledByContext || alreadyProcessed(virtualNode, context)) {
   -1 20469           return '';
   -1 20470         }
   -1 20471         if (!context.startNode) {
   -1 20472           context.startNode = virtualNode;
   -1 20473         }
   -1 20474         var labelContext = _extends({
   -1 20475           inControlContext: true
   -1 20476         }, context);
   -1 20477         var explicitLabels = getExplicitLabels(virtualNode);
   -1 20478         var implicitLabel = dom.findUpVirtual(virtualNode, 'label');
   -1 20479         var labels = void 0;
   -1 20480         if (implicitLabel) {
   -1 20481           labels = [].concat(_toConsumableArray(explicitLabels), [ implicitLabel ]);
   -1 20482           labels.sort(axe.utils.nodeSorter);
   -1 20483         } else {
   -1 20484           labels = explicitLabels;
   -1 20485         }
   -1 20486         return labels.map(function(label) {
   -1 20487           return text.accessibleText(label, labelContext);
   -1 20488         }).filter(function(text) {
   -1 20489           return text !== '';
   -1 20490         }).join(' ');
   -1 20491       };
   -1 20492       function getExplicitLabels(_ref34) {
   -1 20493         var actualNode = _ref34.actualNode;
   -1 20494         if (!actualNode.id) {
   -1 20495           return [];
   -1 20496         }
   -1 20497         return dom.findElmsInContext({
   -1 20498           elm: 'label',
   -1 20499           attr: 'for',
   -1 20500           value: actualNode.id,
   -1 20501           context: actualNode
   -1 20502         });
   -1 20503       }
19209 20504       text.labelVirtual = function(node) {
19210 20505         var ref, candidate, doc;
19211 20506         candidate = aria.labelVirtual(node);
@@ -19213,7 +20508,7 @@ module.exports = {
19213 20508           return candidate;
19214 20509         }
19215 20510         if (node.actualNode.id) {
19216    -1           var id = axe.commons.utils.escapeSelector(node.actualNode.getAttribute('id'));
   -1 20511           var id = axe.utils.escapeSelector(node.actualNode.getAttribute('id'));
19217 20512           doc = axe.commons.dom.getRootNode(node.actualNode);
19218 20513           ref = doc.querySelector('label[for="' + id + '"]');
19219 20514           candidate = ref && text.visible(ref, true);
@@ -19232,10 +20527,226 @@ module.exports = {
19232 20527         node = axe.utils.getNodeFromTree(axe._tree[0], node);
19233 20528         return text.labelVirtual(node);
19234 20529       };
   -1 20530       text.nativeElementType = [ {
   -1 20531         matches: [ {
   -1 20532           nodeName: 'textarea'
   -1 20533         }, {
   -1 20534           nodeName: 'input',
   -1 20535           properties: {
   -1 20536             type: [ 'text', 'password', 'search', 'tel', 'email', 'url' ]
   -1 20537           }
   -1 20538         } ],
   -1 20539         namingMethods: 'labelText'
   -1 20540       }, {
   -1 20541         matches: {
   -1 20542           nodeName: 'input',
   -1 20543           properties: {
   -1 20544             type: [ 'button', 'submit', 'reset' ]
   -1 20545           }
   -1 20546         },
   -1 20547         namingMethods: [ 'valueText', 'titleText', 'buttonDefaultText' ]
   -1 20548       }, {
   -1 20549         matches: {
   -1 20550           nodeName: 'input',
   -1 20551           properties: {
   -1 20552             type: 'image'
   -1 20553           }
   -1 20554         },
   -1 20555         namingMethods: [ 'altText', 'valueText', 'labelText', 'titleText', 'buttonDefaultText' ]
   -1 20556       }, {
   -1 20557         matches: 'button',
   -1 20558         namingMethods: 'subtreeText'
   -1 20559       }, {
   -1 20560         matches: 'fieldset',
   -1 20561         namingMethods: 'fieldsetLegendText'
   -1 20562       }, {
   -1 20563         matches: 'OUTPUT',
   -1 20564         namingMethods: 'subtreeText'
   -1 20565       }, {
   -1 20566         matches: [ {
   -1 20567           nodeName: 'select'
   -1 20568         }, {
   -1 20569           nodeName: 'input',
   -1 20570           properties: {
   -1 20571             type: /^(?!text|password|search|tel|email|url|button|submit|reset)/
   -1 20572           }
   -1 20573         } ],
   -1 20574         namingMethods: 'labelText'
   -1 20575       }, {
   -1 20576         matches: 'summary',
   -1 20577         namingMethods: 'subtreeText'
   -1 20578       }, {
   -1 20579         matches: 'figure',
   -1 20580         namingMethods: [ 'figureText', 'titleText' ]
   -1 20581       }, {
   -1 20582         matches: 'img',
   -1 20583         namingMethods: 'altText'
   -1 20584       }, {
   -1 20585         matches: 'table',
   -1 20586         namingMethods: [ 'tableCaptionText', 'tableSummaryText' ]
   -1 20587       }, {
   -1 20588         matches: [ 'hr', 'br' ],
   -1 20589         namingMethods: [ 'titleText', 'singleSpace' ]
   -1 20590       } ];
   -1 20591       text.nativeTextAlternative = function nativeTextAlternative(virtualNode) {
   -1 20592         var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
   -1 20593         var actualNode = virtualNode.actualNode;
   -1 20594         if (actualNode.nodeType !== 1 || [ 'presentation', 'none' ].includes(aria.getRole(actualNode))) {
   -1 20595           return '';
   -1 20596         }
   -1 20597         var textMethods = findTextMethods(virtualNode);
   -1 20598         var accName = textMethods.reduce(function(accName, step) {
   -1 20599           return accName || step(virtualNode, context);
   -1 20600         }, '');
   -1 20601         if (context.debug) {
   -1 20602           axe.log(accName || '{empty-value}', actualNode, context);
   -1 20603         }
   -1 20604         return accName;
   -1 20605       };
   -1 20606       function findTextMethods(virtualNode) {
   -1 20607         var nativeElementType = text.nativeElementType, nativeTextMethods = text.nativeTextMethods;
   -1 20608         var nativeType = nativeElementType.find(function(_ref35) {
   -1 20609           var matches = _ref35.matches;
   -1 20610           return axe.commons.matches(virtualNode, matches);
   -1 20611         });
   -1 20612         var methods = nativeType ? [].concat(nativeType.namingMethods) : [];
   -1 20613         return methods.map(function(methodName) {
   -1 20614           return nativeTextMethods[methodName];
   -1 20615         });
   -1 20616       }
   -1 20617       var defaultButtonValues = {
   -1 20618         submit: 'Submit',
   -1 20619         image: 'Submit',
   -1 20620         reset: 'Reset',
   -1 20621         button: ''
   -1 20622       };
   -1 20623       text.nativeTextMethods = {
   -1 20624         valueText: function valueText(_ref36) {
   -1 20625           var actualNode = _ref36.actualNode;
   -1 20626           return actualNode.value || '';
   -1 20627         },
   -1 20628         buttonDefaultText: function buttonDefaultText(_ref37) {
   -1 20629           var actualNode = _ref37.actualNode;
   -1 20630           return defaultButtonValues[actualNode.type] || '';
   -1 20631         },
   -1 20632         tableCaptionText: descendantText.bind(null, 'caption'),
   -1 20633         figureText: descendantText.bind(null, 'figcaption'),
   -1 20634         fieldsetLegendText: descendantText.bind(null, 'legend'),
   -1 20635         altText: attrText.bind(null, 'alt'),
   -1 20636         tableSummaryText: attrText.bind(null, 'summary'),
   -1 20637         titleText: function titleText(virtualNode, context) {
   -1 20638           return text.titleText(virtualNode, context);
   -1 20639         },
   -1 20640         subtreeText: function subtreeText(virtualNode, context) {
   -1 20641           return text.subtreeText(virtualNode, context);
   -1 20642         },
   -1 20643         labelText: function labelText(virtualNode, context) {
   -1 20644           return text.labelText(virtualNode, context);
   -1 20645         },
   -1 20646         singleSpace: function singleSpace() {
   -1 20647           return ' ';
   -1 20648         }
   -1 20649       };
   -1 20650       function attrText(attr, _ref38) {
   -1 20651         var actualNode = _ref38.actualNode;
   -1 20652         return actualNode.getAttribute(attr) || '';
   -1 20653       }
   -1 20654       function descendantText(nodeName, _ref39, context) {
   -1 20655         var actualNode = _ref39.actualNode;
   -1 20656         nodeName = nodeName.toLowerCase();
   -1 20657         var nodeNames = [ nodeName, actualNode.nodeName.toLowerCase() ].join(',');
   -1 20658         var candidate = actualNode.querySelector(nodeNames);
   -1 20659         if (!candidate || candidate.nodeName.toLowerCase() !== nodeName) {
   -1 20660           return '';
   -1 20661         }
   -1 20662         return text.accessibleText(candidate, context);
   -1 20663       }
19235 20664       text.sanitize = function(str) {
19236 20665         'use strict';
19237 20666         return str.replace(/\r\n/g, '\n').replace(/\u00A0/g, ' ').replace(/[\s]{2,}/g, ' ').trim();
19238 20667       };
   -1 20668       text.subtreeText = function subtreeText(virtualNode) {
   -1 20669         var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
   -1 20670         var alreadyProcessed = text.accessibleTextVirtual.alreadyProcessed;
   -1 20671         context.startNode = context.startNode || virtualNode;
   -1 20672         var strict = context.strict;
   -1 20673         if (alreadyProcessed(virtualNode, context) || !aria.namedFromContents(virtualNode, {
   -1 20674           strict: strict
   -1 20675         })) {
   -1 20676           return '';
   -1 20677         }
   -1 20678         return aria.getOwnedVirtual(virtualNode).reduce(function(contentText, child) {
   -1 20679           return appendAccessibleText(contentText, child, context);
   -1 20680         }, '');
   -1 20681       };
   -1 20682       var phrasingElements = [ 'A', 'EM', 'STRONG', 'SMALL', 'MARK', 'ABBR', 'DFN', 'I', 'B', 'S', 'U', 'CODE', 'VAR', 'SAMP', 'KBD', 'SUP', 'SUB', 'Q', 'CITE', 'SPAN', 'BDO', 'BDI', 'WBR', 'INS', 'DEL', 'MAP', 'AREA', 'NOSCRIPT', 'RUBY', 'BUTTON', 'LABEL', 'OUTPUT', 'DATALIST', 'KEYGEN', 'PROGRESS', 'COMMAND', 'CANVAS', 'TIME', 'METER', '#TEXT' ];
   -1 20683       function appendAccessibleText(contentText, virtualNode, context) {
   -1 20684         var nodeName = virtualNode.actualNode.nodeName.toUpperCase();
   -1 20685         var contentTextAdd = text.accessibleTextVirtual(virtualNode, context);
   -1 20686         if (!contentTextAdd) {
   -1 20687           return contentText;
   -1 20688         }
   -1 20689         if (!phrasingElements.includes(nodeName)) {
   -1 20690           if (contentTextAdd[0] !== ' ') {
   -1 20691             contentTextAdd += ' ';
   -1 20692           }
   -1 20693           if (contentText && contentText[contentText.length - 1] !== ' ') {
   -1 20694             contentTextAdd = ' ' + contentTextAdd;
   -1 20695           }
   -1 20696         }
   -1 20697         return contentText + contentTextAdd;
   -1 20698       }
   -1 20699       var alwaysTitleElements = [ 'button', 'iframe', 'a[href]', {
   -1 20700         nodeName: 'input',
   -1 20701         properties: {
   -1 20702           type: 'button'
   -1 20703         }
   -1 20704       } ];
   -1 20705       text.titleText = function titleText(node) {
   -1 20706         node = node.actualNode || node;
   -1 20707         if (node.nodeType !== 1 || !node.hasAttribute('title')) {
   -1 20708           return '';
   -1 20709         }
   -1 20710         if (!axe.commons.matches(node, alwaysTitleElements) && [ 'none', 'presentation' ].includes(aria.getRole(node))) {
   -1 20711           return '';
   -1 20712         }
   -1 20713         return node.getAttribute('title');
   -1 20714       };
   -1 20715       text.hasUnicode = function hasUnicode(str, options) {
   -1 20716         var emoji = options.emoji, nonBmp = options.nonBmp, punctuations = options.punctuations;
   -1 20717         if (emoji) {
   -1 20718           return axe.imports.emojiRegexText().test(str);
   -1 20719         }
   -1 20720         if (nonBmp) {
   -1 20721           return getUnicodeNonBmpRegExp().test(str);
   -1 20722         }
   -1 20723         if (punctuations) {
   -1 20724           return getPunctuationRegExp().test(str);
   -1 20725         }
   -1 20726         return false;
   -1 20727       };
   -1 20728       text.removeUnicode = function removeUnicode(str, options) {
   -1 20729         var emoji = options.emoji, nonBmp = options.nonBmp, punctuations = options.punctuations;
   -1 20730         if (emoji) {
   -1 20731           str = str.replace(axe.imports.emojiRegexText(), '');
   -1 20732         }
   -1 20733         if (nonBmp) {
   -1 20734           str = str.replace(getUnicodeNonBmpRegExp(), '');
   -1 20735         }
   -1 20736         if (punctuations) {
   -1 20737           str = str.replace(getPunctuationRegExp(), '');
   -1 20738         }
   -1 20739         return str;
   -1 20740       };
   -1 20741       function getUnicodeNonBmpRegExp() {
   -1 20742         return new RegExp('[' + 'ᴀ-ᵿ' + 'ᶀ-ᶿ' + '᷀-᷿' + '₠-⃏' + '⃐-⃿' + '℀-⅏' + '⅐-↏' + '←-⇿' + '∀-⋿' + '⌀-⏿' + '␀-␿' + '⑀-⑟' + '①-⓿' + '─-╿' + '▀-▟' + '■-◿' + '☀-⛿' + '✀-➿' + ']');
   -1 20743       }
   -1 20744       function getPunctuationRegExp() {
   -1 20745         return /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g;
   -1 20746       }
   -1 20747       text.unsupported = {
   -1 20748         accessibleNameFromFieldValue: [ 'combobox', 'listbox', 'progressbar' ]
   -1 20749       };
19239 20750       text.visibleVirtual = function(element, screenReader, noRecursing) {
19240 20751         var result = element.children.map(function(child) {
19241 20752           if (child.actualNode.nodeType === 3) {
@@ -19253,33 +20764,12 @@ module.exports = {
19253 20764         element = axe.utils.getNodeFromTree(axe._tree[0], element);
19254 20765         return text.visibleVirtual(element, screenReader, noRecursing);
19255 20766       };
19256    -1       axe.utils.getBaseLang = function getBaseLang(lang) {
19257    -1         if (!lang) {
19258    -1           return '';
19259    -1         }
19260    -1         return lang.trim().split('-')[0].toLowerCase();
19261    -1       };
19262    -1       var htmlTags = [ 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'math', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'script', 'section', 'select', 'slot', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'svg', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr' ];
19263    -1       axe.utils.isHtmlElement = function isHtmlElement(node) {
19264    -1         var tagName = node.nodeName.toLowerCase();
19265    -1         return htmlTags.includes(tagName) && node.namespaceURI !== 'http://www.w3.org/2000/svg';
19266    -1       };
19267    -1       axe.utils.tokenList = function(str) {
19268    -1         'use strict';
19269    -1         return str.trim().replace(/\s{2,}/g, ' ').split(' ');
19270    -1       };
19271    -1       var langs = [ 'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'in', 'io', 'is', 'it', 'iu', 'iw', 'ja', 'ji', 'jv', 'jw', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu', 'aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag', 'aah', 'aai', 'aak', 'aal', 'aam', 'aan', 'aao', 'aap', 'aaq', 'aas', 'aat', 'aau', 'aav', 'aaw', 'aax', 'aaz', 'aba', 'abb', 'abc', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz', 'aca', 'acb', 'acd', 'ace', 'acf', 'ach', 'aci', 'ack', 'acl', 'acm', 'acn', 'acp', 'acq', 'acr', 'acs', 'act', 'acu', 'acv', 'acw', 'acx', 'acy', 'acz', 'ada', 'adb', 'add', 'ade', 'adf', 'adg', 'adh', 'adi', 'adj', 'adl', 'adn', 'ado', 'adp', 'adq', 'adr', 'ads', 'adt', 'adu', 'adw', 'adx', 'ady', 'adz', 'aea', 'aeb', 'aec', 'aed', 'aee', 'aek', 'ael', 'aem', 'aen', 'aeq', 'aer', 'aes', 'aeu', 'aew', 'aey', 'aez', 'afa', 'afb', 'afd', 'afe', 'afg', 'afh', 'afi', 'afk', 'afn', 'afo', 'afp', 'afs', 'aft', 'afu', 'afz', 'aga', 'agb', 'agc', 'agd', 'age', 'agf', 'agg', 'agh', 'agi', 'agj', 'agk', 'agl', 'agm', 'agn', 'ago', 'agp', 'agq', 'agr', 'ags', 'agt', 'agu', 'agv', 'agw', 'agx', 'agy', 'agz', 'aha', 'ahb', 'ahg', 'ahh', 'ahi', 'ahk', 'ahl', 'ahm', 'ahn', 'aho', 'ahp', 'ahr', 'ahs', 'aht', 'aia', 'aib', 'aic', 'aid', 'aie', 'aif', 'aig', 'aih', 'aii', 'aij', 'aik', 'ail', 'aim', 'ain', 'aio', 'aip', 'aiq', 'air', 'ais', 'ait', 'aiw', 'aix', 'aiy', 'aja', 'ajg', 'aji', 'ajn', 'ajp', 'ajt', 'aju', 'ajw', 'ajz', 'akb', 'akc', 'akd', 'ake', 'akf', 'akg', 'akh', 'aki', 'akj', 'akk', 'akl', 'akm', 'ako', 'akp', 'akq', 'akr', 'aks', 'akt', 'aku', 'akv', 'akw', 'akx', 'aky', 'akz', 'ala', 'alc', 'ald', 'ale', 'alf', 'alg', 'alh', 'ali', 'alj', 'alk', 'all', 'alm', 'aln', 'alo', 'alp', 'alq', 'alr', 'als', 'alt', 'alu', 'alv', 'alw', 'alx', 'aly', 'alz', 'ama', 'amb', 'amc', 'ame', 'amf', 'amg', 'ami', 'amj', 'amk', 'aml', 'amm', 'amn', 'amo', 'amp', 'amq', 'amr', 'ams', 'amt', 'amu', 'amv', 'amw', 'amx', 'amy', 'amz', 'ana', 'anb', 'anc', 'and', 'ane', 'anf', 'ang', 'anh', 'ani', 'anj', 'ank', 'anl', 'anm', 'ann', 'ano', 'anp', 'anq', 'anr', 'ans', 'ant', 'anu', 'anv', 'anw', 'anx', 'any', 'anz', 'aoa', 'aob', 'aoc', 'aod', 'aoe', 'aof', 'aog', 'aoh', 'aoi', 'aoj', 'aok', 'aol', 'aom', 'aon', 'aor', 'aos', 'aot', 'aou', 'aox', 'aoz', 'apa', 'apb', 'apc', 'apd', 'ape', 'apf', 'apg', 'aph', 'api', 'apj', 'apk', 'apl', 'apm', 'apn', 'apo', 'app', 'apq', 'apr', 'aps', 'apt', 'apu', 'apv', 'apw', 'apx', 'apy', 'apz', 'aqa', 'aqc', 'aqd', 'aqg', 'aql', 'aqm', 'aqn', 'aqp', 'aqr', 'aqt', 'aqz', 'arb', 'arc', 'ard', 'are', 'arh', 'ari', 'arj', 'ark', 'arl', 'arn', 'aro', 'arp', 'arq', 'arr', 'ars', 'art', 'aru', 'arv', 'arw', 'arx', 'ary', 'arz', 'asa', 'asb', 'asc', 'asd', 'ase', 'asf', 'asg', 'ash', 'asi', 'asj', 'ask', 'asl', 'asn', 'aso', 'asp', 'asq', 'asr', 'ass', 'ast', 'asu', 'asv', 'asw', 'asx', 'asy', 'asz', 'ata', 'atb', 'atc', 'atd', 'ate', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz', 'aua', 'aub', 'auc', 'aud', 'aue', 'auf', 'aug', 'auh', 'aui', 'auj', 'auk', 'aul', 'aum', 'aun', 'auo', 'aup', 'auq', 'aur', 'aus', 'aut', 'auu', 'auw', 'aux', 'auy', 'auz', 'avb', 'avd', 'avi', 'avk', 'avl', 'avm', 'avn', 'avo', 'avs', 'avt', 'avu', 'avv', 'awa', 'awb', 'awc', 'awd', 'awe', 'awg', 'awh', 'awi', 'awk', 'awm', 'awn', 'awo', 'awr', 'aws', 'awt', 'awu', 'awv', 'aww', 'awx', 'awy', 'axb', 'axe', 'axg', 'axk', 'axl', 'axm', 'axx', 'aya', 'ayb', 'ayc', 'ayd', 'aye', 'ayg', 'ayh', 'ayi', 'ayk', 'ayl', 'ayn', 'ayo', 'ayp', 'ayq', 'ayr', 'ays', 'ayt', 'ayu', 'ayx', 'ayy', 'ayz', 'aza', 'azb', 'azc', 'azd', 'azg', 'azj', 'azm', 'azn', 'azo', 'azt', 'azz', 'baa', 'bab', 'bac', 'bad', 'bae', 'baf', 'bag', 'bah', 'bai', 'baj', 'bal', 'ban', 'bao', 'bap', 'bar', 'bas', 'bat', 'bau', 'bav', 'baw', 'bax', 'bay', 'baz', 'bba', 'bbb', 'bbc', 'bbd', 'bbe', 'bbf', 'bbg', 'bbh', 'bbi', 'bbj', 'bbk', 'bbl', 'bbm', 'bbn', 'bbo', 'bbp', 'bbq', 'bbr', 'bbs', 'bbt', 'bbu', 'bbv', 'bbw', 'bbx', 'bby', 'bbz', 'bca', 'bcb', 'bcc', 'bcd', 'bce', 'bcf', 'bcg', 'bch', 'bci', 'bcj', 'bck', 'bcl', 'bcm', 'bcn', 'bco', 'bcp', 'bcq', 'bcr', 'bcs', 'bct', 'bcu', 'bcv', 'bcw', 'bcy', 'bcz', 'bda', 'bdb', 'bdc', 'bdd', 'bde', 'bdf', 'bdg', 'bdh', 'bdi', 'bdj', 'bdk', 'bdl', 'bdm', 'bdn', 'bdo', 'bdp', 'bdq', 'bdr', 'bds', 'bdt', 'bdu', 'bdv', 'bdw', 'bdx', 'bdy', 'bdz', 'bea', 'beb', 'bec', 'bed', 'bee', 'bef', 'beg', 'beh', 'bei', 'bej', 'bek', 'bem', 'beo', 'bep', 'beq', 'ber', 'bes', 'bet', 'beu', 'bev', 'bew', 'bex', 'bey', 'bez', 'bfa', 'bfb', 'bfc', 'bfd', 'bfe', 'bff', 'bfg', 'bfh', 'bfi', 'bfj', 'bfk', 'bfl', 'bfm', 'bfn', 'bfo', 'bfp', 'bfq', 'bfr', 'bfs', 'bft', 'bfu', 'bfw', 'bfx', 'bfy', 'bfz', 'bga', 'bgb', 'bgc', 'bgd', 'bge', 'bgf', 'bgg', 'bgi', 'bgj', 'bgk', 'bgl', 'bgm', 'bgn', 'bgo', 'bgp', 'bgq', 'bgr', 'bgs', 'bgt', 'bgu', 'bgv', 'bgw', 'bgx', 'bgy', 'bgz', 'bha', 'bhb', 'bhc', 'bhd', 'bhe', 'bhf', 'bhg', 'bhh', 'bhi', 'bhj', 'bhk', 'bhl', 'bhm', 'bhn', 'bho', 'bhp', 'bhq', 'bhr', 'bhs', 'bht', 'bhu', 'bhv', 'bhw', 'bhx', 'bhy', 'bhz', 'bia', 'bib', 'bic', 'bid', 'bie', 'bif', 'big', 'bij', 'bik', 'bil', 'bim', 'bin', 'bio', 'bip', 'biq', 'bir', 'bit', 'biu', 'biv', 'biw', 'bix', 'biy', 'biz', 'bja', 'bjb', 'bjc', 'bjd', 'bje', 'bjf', 'bjg', 'bjh', 'bji', 'bjj', 'bjk', 'bjl', 'bjm', 'bjn', 'bjo', 'bjp', 'bjq', 'bjr', 'bjs', 'bjt', 'bju', 'bjv', 'bjw', 'bjx', 'bjy', 'bjz', 'bka', 'bkb', 'bkc', 'bkd', 'bkf', 'bkg', 'bkh', 'bki', 'bkj', 'bkk', 'bkl', 'bkm', 'bkn', 'bko', 'bkp', 'bkq', 'bkr', 'bks', 'bkt', 'bku', 'bkv', 'bkw', 'bkx', 'bky', 'bkz', 'bla', 'blb', 'blc', 'bld', 'ble', 'blf', 'blg', 'blh', 'bli', 'blj', 'blk', 'bll', 'blm', 'bln', 'blo', 'blp', 'blq', 'blr', 'bls', 'blt', 'blv', 'blw', 'blx', 'bly', 'blz', 'bma', 'bmb', 'bmc', 'bmd', 'bme', 'bmf', 'bmg', 'bmh', 'bmi', 'bmj', 'bmk', 'bml', 'bmm', 'bmn', 'bmo', 'bmp', 'bmq', 'bmr', 'bms', 'bmt', 'bmu', 'bmv', 'bmw', 'bmx', 'bmy', 'bmz', 'bna', 'bnb', 'bnc', 'bnd', 'bne', 'bnf', 'bng', 'bni', 'bnj', 'bnk', 'bnl', 'bnm', 'bnn', 'bno', 'bnp', 'bnq', 'bnr', 'bns', 'bnt', 'bnu', 'bnv', 'bnw', 'bnx', 'bny', 'bnz', 'boa', 'bob', 'boe', 'bof', 'bog', 'boh', 'boi', 'boj', 'bok', 'bol', 'bom', 'bon', 'boo', 'bop', 'boq', 'bor', 'bot', 'bou', 'bov', 'bow', 'box', 'boy', 'boz', 'bpa', 'bpb', 'bpd', 'bpg', 'bph', 'bpi', 'bpj', 'bpk', 'bpl', 'bpm', 'bpn', 'bpo', 'bpp', 'bpq', 'bpr', 'bps', 'bpt', 'bpu', 'bpv', 'bpw', 'bpx', 'bpy', 'bpz', 'bqa', 'bqb', 'bqc', 'bqd', 'bqf', 'bqg', 'bqh', 'bqi', 'bqj', 'bqk', 'bql', 'bqm', 'bqn', 'bqo', 'bqp', 'bqq', 'bqr', 'bqs', 'bqt', 'bqu', 'bqv', 'bqw', 'bqx', 'bqy', 'bqz', 'bra', 'brb', 'brc', 'brd', 'brf', 'brg', 'brh', 'bri', 'brj', 'brk', 'brl', 'brm', 'brn', 'bro', 'brp', 'brq', 'brr', 'brs', 'brt', 'bru', 'brv', 'brw', 'brx', 'bry', 'brz', 'bsa', 'bsb', 'bsc', 'bse', 'bsf', 'bsg', 'bsh', 'bsi', 'bsj', 'bsk', 'bsl', 'bsm', 'bsn', 'bso', 'bsp', 'bsq', 'bsr', 'bss', 'bst', 'bsu', 'bsv', 'bsw', 'bsx', 'bsy', 'bta', 'btb', 'btc', 'btd', 'bte', 'btf', 'btg', 'bth', 'bti', 'btj', 'btk', 'btl', 'btm', 'btn', 'bto', 'btp', 'btq', 'btr', 'bts', 'btt', 'btu', 'btv', 'btw', 'btx', 'bty', 'btz', 'bua', 'bub', 'buc', 'bud', 'bue', 'buf', 'bug', 'buh', 'bui', 'buj', 'buk', 'bum', 'bun', 'buo', 'bup', 'buq', 'bus', 'but', 'buu', 'buv', 'buw', 'bux', 'buy', 'buz', 'bva', 'bvb', 'bvc', 'bvd', 'bve', 'bvf', 'bvg', 'bvh', 'bvi', 'bvj', 'bvk', 'bvl', 'bvm', 'bvn', 'bvo', 'bvp', 'bvq', 'bvr', 'bvt', 'bvu', 'bvv', 'bvw', 'bvx', 'bvy', 'bvz', 'bwa', 'bwb', 'bwc', 'bwd', 'bwe', 'bwf', 'bwg', 'bwh', 'bwi', 'bwj', 'bwk', 'bwl', 'bwm', 'bwn', 'bwo', 'bwp', 'bwq', 'bwr', 'bws', 'bwt', 'bwu', 'bww', 'bwx', 'bwy', 'bwz', 'bxa', 'bxb', 'bxc', 'bxd', 'bxe', 'bxf', 'bxg', 'bxh', 'bxi', 'bxj', 'bxk', 'bxl', 'bxm', 'bxn', 'bxo', 'bxp', 'bxq', 'bxr', 'bxs', 'bxu', 'bxv', 'bxw', 'bxx', 'bxz', 'bya', 'byb', 'byc', 'byd', 'bye', 'byf', 'byg', 'byh', 'byi', 'byj', 'byk', 'byl', 'bym', 'byn', 'byo', 'byp', 'byq', 'byr', 'bys', 'byt', 'byv', 'byw', 'byx', 'byy', 'byz', 'bza', 'bzb', 'bzc', 'bzd', 'bze', 'bzf', 'bzg', 'bzh', 'bzi', 'bzj', 'bzk', 'bzl', 'bzm', 'bzn', 'bzo', 'bzp', 'bzq', 'bzr', 'bzs', 'bzt', 'bzu', 'bzv', 'bzw', 'bzx', 'bzy', 'bzz', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'can', 'cao', 'cap', 'caq', 'car', 'cas', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cba', 'cbb', 'cbc', 'cbd', 'cbe', 'cbg', 'cbh', 'cbi', 'cbj', 'cbk', 'cbl', 'cbn', 'cbo', 'cbq', 'cbr', 'cbs', 'cbt', 'cbu', 'cbv', 'cbw', 'cby', 'cca', 'ccc', 'ccd', 'cce', 'ccg', 'cch', 'ccj', 'ccl', 'ccm', 'ccn', 'cco', 'ccp', 'ccq', 'ccr', 'ccs', 'cda', 'cdc', 'cdd', 'cde', 'cdf', 'cdg', 'cdh', 'cdi', 'cdj', 'cdm', 'cdn', 'cdo', 'cdr', 'cds', 'cdy', 'cdz', 'cea', 'ceb', 'ceg', 'cek', 'cel', 'cen', 'cet', 'cfa', 'cfd', 'cfg', 'cfm', 'cga', 'cgc', 'cgg', 'cgk', 'chb', 'chc', 'chd', 'chf', 'chg', 'chh', 'chj', 'chk', 'chl', 'chm', 'chn', 'cho', 'chp', 'chq', 'chr', 'cht', 'chw', 'chx', 'chy', 'chz', 'cia', 'cib', 'cic', 'cid', 'cie', 'cih', 'cik', 'cim', 'cin', 'cip', 'cir', 'ciw', 'ciy', 'cja', 'cje', 'cjh', 'cji', 'cjk', 'cjm', 'cjn', 'cjo', 'cjp', 'cjr', 'cjs', 'cjv', 'cjy', 'cka', 'ckb', 'ckh', 'ckl', 'ckn', 'cko', 'ckq', 'ckr', 'cks', 'ckt', 'cku', 'ckv', 'ckx', 'cky', 'ckz', 'cla', 'clc', 'cld', 'cle', 'clh', 'cli', 'clj', 'clk', 'cll', 'clm', 'clo', 'clt', 'clu', 'clw', 'cly', 'cma', 'cmc', 'cme', 'cmg', 'cmi', 'cmk', 'cml', 'cmm', 'cmn', 'cmo', 'cmr', 'cms', 'cmt', 'cna', 'cnb', 'cnc', 'cng', 'cnh', 'cni', 'cnk', 'cnl', 'cno', 'cnr', 'cns', 'cnt', 'cnu', 'cnw', 'cnx', 'coa', 'cob', 'coc', 'cod', 'coe', 'cof', 'cog', 'coh', 'coj', 'cok', 'col', 'com', 'con', 'coo', 'cop', 'coq', 'cot', 'cou', 'cov', 'cow', 'cox', 'coy', 'coz', 'cpa', 'cpb', 'cpc', 'cpe', 'cpf', 'cpg', 'cpi', 'cpn', 'cpo', 'cpp', 'cps', 'cpu', 'cpx', 'cpy', 'cqd', 'cqu', 'cra', 'crb', 'crc', 'crd', 'crf', 'crg', 'crh', 'cri', 'crj', 'crk', 'crl', 'crm', 'crn', 'cro', 'crp', 'crq', 'crr', 'crs', 'crt', 'crv', 'crw', 'crx', 'cry', 'crz', 'csa', 'csb', 'csc', 'csd', 'cse', 'csf', 'csg', 'csh', 'csi', 'csj', 'csk', 'csl', 'csm', 'csn', 'cso', 'csq', 'csr', 'css', 'cst', 'csu', 'csv', 'csw', 'csy', 'csz', 'cta', 'ctc', 'ctd', 'cte', 'ctg', 'cth', 'ctl', 'ctm', 'ctn', 'cto', 'ctp', 'cts', 'ctt', 'ctu', 'ctz', 'cua', 'cub', 'cuc', 'cug', 'cuh', 'cui', 'cuj', 'cuk', 'cul', 'cum', 'cuo', 'cup', 'cuq', 'cur', 'cus', 'cut', 'cuu', 'cuv', 'cuw', 'cux', 'cuy', 'cvg', 'cvn', 'cwa', 'cwb', 'cwd', 'cwe', 'cwg', 'cwt', 'cya', 'cyb', 'cyo', 'czh', 'czk', 'czn', 'czo', 'czt', 'daa', 'dac', 'dad', 'dae', 'daf', 'dag', 'dah', 'dai', 'daj', 'dak', 'dal', 'dam', 'dao', 'dap', 'daq', 'dar', 'das', 'dau', 'dav', 'daw', 'dax', 'day', 'daz', 'dba', 'dbb', 'dbd', 'dbe', 'dbf', 'dbg', 'dbi', 'dbj', 'dbl', 'dbm', 'dbn', 'dbo', 'dbp', 'dbq', 'dbr', 'dbt', 'dbu', 'dbv', 'dbw', 'dby', 'dcc', 'dcr', 'dda', 'ddd', 'dde', 'ddg', 'ddi', 'ddj', 'ddn', 'ddo', 'ddr', 'dds', 'ddw', 'dec', 'ded', 'dee', 'def', 'deg', 'deh', 'dei', 'dek', 'del', 'dem', 'den', 'dep', 'deq', 'der', 'des', 'dev', 'dez', 'dga', 'dgb', 'dgc', 'dgd', 'dge', 'dgg', 'dgh', 'dgi', 'dgk', 'dgl', 'dgn', 'dgo', 'dgr', 'dgs', 'dgt', 'dgu', 'dgw', 'dgx', 'dgz', 'dha', 'dhd', 'dhg', 'dhi', 'dhl', 'dhm', 'dhn', 'dho', 'dhr', 'dhs', 'dhu', 'dhv', 'dhw', 'dhx', 'dia', 'dib', 'dic', 'did', 'dif', 'dig', 'dih', 'dii', 'dij', 'dik', 'dil', 'dim', 'din', 'dio', 'dip', 'diq', 'dir', 'dis', 'dit', 'diu', 'diw', 'dix', 'diy', 'diz', 'dja', 'djb', 'djc', 'djd', 'dje', 'djf', 'dji', 'djj', 'djk', 'djl', 'djm', 'djn', 'djo', 'djr', 'dju', 'djw', 'dka', 'dkk', 'dkl', 'dkr', 'dks', 'dkx', 'dlg', 'dlk', 'dlm', 'dln', 'dma', 'dmb', 'dmc', 'dmd', 'dme', 'dmg', 'dmk', 'dml', 'dmm', 'dmn', 'dmo', 'dmr', 'dms', 'dmu', 'dmv', 'dmw', 'dmx', 'dmy', 'dna', 'dnd', 'dne', 'dng', 'dni', 'dnj', 'dnk', 'dnn', 'dnr', 'dnt', 'dnu', 'dnv', 'dnw', 'dny', 'doa', 'dob', 'doc', 'doe', 'dof', 'doh', 'doi', 'dok', 'dol', 'don', 'doo', 'dop', 'doq', 'dor', 'dos', 'dot', 'dov', 'dow', 'dox', 'doy', 'doz', 'dpp', 'dra', 'drb', 'drc', 'drd', 'dre', 'drg', 'drh', 'dri', 'drl', 'drn', 'dro', 'drq', 'drr', 'drs', 'drt', 'dru', 'drw', 'dry', 'dsb', 'dse', 'dsh', 'dsi', 'dsl', 'dsn', 'dso', 'dsq', 'dta', 'dtb', 'dtd', 'dth', 'dti', 'dtk', 'dtm', 'dtn', 'dto', 'dtp', 'dtr', 'dts', 'dtt', 'dtu', 'dty', 'dua', 'dub', 'duc', 'dud', 'due', 'duf', 'dug', 'duh', 'dui', 'duj', 'duk', 'dul', 'dum', 'dun', 'duo', 'dup', 'duq', 'dur', 'dus', 'duu', 'duv', 'duw', 'dux', 'duy', 'duz', 'dva', 'dwa', 'dwl', 'dwr', 'dws', 'dwu', 'dww', 'dwy', 'dya', 'dyb', 'dyd', 'dyg', 'dyi', 'dym', 'dyn', 'dyo', 'dyu', 'dyy', 'dza', 'dzd', 'dze', 'dzg', 'dzl', 'dzn', 'eaa', 'ebg', 'ebk', 'ebo', 'ebr', 'ebu', 'ecr', 'ecs', 'ecy', 'eee', 'efa', 'efe', 'efi', 'ega', 'egl', 'ego', 'egx', 'egy', 'ehu', 'eip', 'eit', 'eiv', 'eja', 'eka', 'ekc', 'eke', 'ekg', 'eki', 'ekk', 'ekl', 'ekm', 'eko', 'ekp', 'ekr', 'eky', 'ele', 'elh', 'eli', 'elk', 'elm', 'elo', 'elp', 'elu', 'elx', 'ema', 'emb', 'eme', 'emg', 'emi', 'emk', 'emm', 'emn', 'emo', 'emp', 'ems', 'emu', 'emw', 'emx', 'emy', 'ena', 'enb', 'enc', 'end', 'enf', 'enh', 'enl', 'enm', 'enn', 'eno', 'enq', 'enr', 'enu', 'env', 'enw', 'enx', 'eot', 'epi', 'era', 'erg', 'erh', 'eri', 'erk', 'ero', 'err', 'ers', 'ert', 'erw', 'ese', 'esg', 'esh', 'esi', 'esk', 'esl', 'esm', 'esn', 'eso', 'esq', 'ess', 'esu', 'esx', 'esy', 'etb', 'etc', 'eth', 'etn', 'eto', 'etr', 'ets', 'ett', 'etu', 'etx', 'etz', 'euq', 'eve', 'evh', 'evn', 'ewo', 'ext', 'eya', 'eyo', 'eza', 'eze', 'faa', 'fab', 'fad', 'faf', 'fag', 'fah', 'fai', 'faj', 'fak', 'fal', 'fam', 'fan', 'fap', 'far', 'fat', 'fau', 'fax', 'fay', 'faz', 'fbl', 'fcs', 'fer', 'ffi', 'ffm', 'fgr', 'fia', 'fie', 'fil', 'fip', 'fir', 'fit', 'fiu', 'fiw', 'fkk', 'fkv', 'fla', 'flh', 'fli', 'fll', 'fln', 'flr', 'fly', 'fmp', 'fmu', 'fnb', 'fng', 'fni', 'fod', 'foi', 'fom', 'fon', 'for', 'fos', 'fox', 'fpe', 'fqs', 'frc', 'frd', 'frk', 'frm', 'fro', 'frp', 'frq', 'frr', 'frs', 'frt', 'fse', 'fsl', 'fss', 'fub', 'fuc', 'fud', 'fue', 'fuf', 'fuh', 'fui', 'fuj', 'fum', 'fun', 'fuq', 'fur', 'fut', 'fuu', 'fuv', 'fuy', 'fvr', 'fwa', 'fwe', 'gaa', 'gab', 'gac', 'gad', 'gae', 'gaf', 'gag', 'gah', 'gai', 'gaj', 'gak', 'gal', 'gam', 'gan', 'gao', 'gap', 'gaq', 'gar', 'gas', 'gat', 'gau', 'gav', 'gaw', 'gax', 'gay', 'gaz', 'gba', 'gbb', 'gbc', 'gbd', 'gbe', 'gbf', 'gbg', 'gbh', 'gbi', 'gbj', 'gbk', 'gbl', 'gbm', 'gbn', 'gbo', 'gbp', 'gbq', 'gbr', 'gbs', 'gbu', 'gbv', 'gbw', 'gbx', 'gby', 'gbz', 'gcc', 'gcd', 'gce', 'gcf', 'gcl', 'gcn', 'gcr', 'gct', 'gda', 'gdb', 'gdc', 'gdd', 'gde', 'gdf', 'gdg', 'gdh', 'gdi', 'gdj', 'gdk', 'gdl', 'gdm', 'gdn', 'gdo', 'gdq', 'gdr', 'gds', 'gdt', 'gdu', 'gdx', 'gea', 'geb', 'gec', 'ged', 'geg', 'geh', 'gei', 'gej', 'gek', 'gel', 'gem', 'geq', 'ges', 'gev', 'gew', 'gex', 'gey', 'gez', 'gfk', 'gft', 'gfx', 'gga', 'ggb', 'ggd', 'gge', 'ggg', 'ggk', 'ggl', 'ggn', 'ggo', 'ggr', 'ggt', 'ggu', 'ggw', 'gha', 'ghc', 'ghe', 'ghh', 'ghk', 'ghl', 'ghn', 'gho', 'ghr', 'ghs', 'ght', 'gia', 'gib', 'gic', 'gid', 'gie', 'gig', 'gih', 'gil', 'gim', 'gin', 'gio', 'gip', 'giq', 'gir', 'gis', 'git', 'giu', 'giw', 'gix', 'giy', 'giz', 'gji', 'gjk', 'gjm', 'gjn', 'gjr', 'gju', 'gka', 'gkd', 'gke', 'gkn', 'gko', 'gkp', 'gku', 'glc', 'gld', 'glh', 'gli', 'glj', 'glk', 'gll', 'glo', 'glr', 'glu', 'glw', 'gly', 'gma', 'gmb', 'gmd', 'gme', 'gmg', 'gmh', 'gml', 'gmm', 'gmn', 'gmq', 'gmu', 'gmv', 'gmw', 'gmx', 'gmy', 'gmz', 'gna', 'gnb', 'gnc', 'gnd', 'gne', 'gng', 'gnh', 'gni', 'gnj', 'gnk', 'gnl', 'gnm', 'gnn', 'gno', 'gnq', 'gnr', 'gnt', 'gnu', 'gnw', 'gnz', 'goa', 'gob', 'goc', 'god', 'goe', 'gof', 'gog', 'goh', 'goi', 'goj', 'gok', 'gol', 'gom', 'gon', 'goo', 'gop', 'goq', 'gor', 'gos', 'got', 'gou', 'gow', 'gox', 'goy', 'goz', 'gpa', 'gpe', 'gpn', 'gqa', 'gqi', 'gqn', 'gqr', 'gqu', 'gra', 'grb', 'grc', 'grd', 'grg', 'grh', 'gri', 'grj', 'grk', 'grm', 'gro', 'grq', 'grr', 'grs', 'grt', 'gru', 'grv', 'grw', 'grx', 'gry', 'grz', 'gse', 'gsg', 'gsl', 'gsm', 'gsn', 'gso', 'gsp', 'gss', 'gsw', 'gta', 'gti', 'gtu', 'gua', 'gub', 'guc', 'gud', 'gue', 'guf', 'gug', 'guh', 'gui', 'guk', 'gul', 'gum', 'gun', 'guo', 'gup', 'guq', 'gur', 'gus', 'gut', 'guu', 'guv', 'guw', 'gux', 'guz', 'gva', 'gvc', 'gve', 'gvf', 'gvj', 'gvl', 'gvm', 'gvn', 'gvo', 'gvp', 'gvr', 'gvs', 'gvy', 'gwa', 'gwb', 'gwc', 'gwd', 'gwe', 'gwf', 'gwg', 'gwi', 'gwj', 'gwm', 'gwn', 'gwr', 'gwt', 'gwu', 'gww', 'gwx', 'gxx', 'gya', 'gyb', 'gyd', 'gye', 'gyf', 'gyg', 'gyi', 'gyl', 'gym', 'gyn', 'gyo', 'gyr', 'gyy', 'gza', 'gzi', 'gzn', 'haa', 'hab', 'hac', 'had', 'hae', 'haf', 'hag', 'hah', 'hai', 'haj', 'hak', 'hal', 'ham', 'han', 'hao', 'hap', 'haq', 'har', 'has', 'hav', 'haw', 'hax', 'hay', 'haz', 'hba', 'hbb', 'hbn', 'hbo', 'hbu', 'hca', 'hch', 'hdn', 'hds', 'hdy', 'hea', 'hed', 'heg', 'heh', 'hei', 'hem', 'hgm', 'hgw', 'hhi', 'hhr', 'hhy', 'hia', 'hib', 'hid', 'hif', 'hig', 'hih', 'hii', 'hij', 'hik', 'hil', 'him', 'hio', 'hir', 'hit', 'hiw', 'hix', 'hji', 'hka', 'hke', 'hkk', 'hkn', 'hks', 'hla', 'hlb', 'hld', 'hle', 'hlt', 'hlu', 'hma', 'hmb', 'hmc', 'hmd', 'hme', 'hmf', 'hmg', 'hmh', 'hmi', 'hmj', 'hmk', 'hml', 'hmm', 'hmn', 'hmp', 'hmq', 'hmr', 'hms', 'hmt', 'hmu', 'hmv', 'hmw', 'hmx', 'hmy', 'hmz', 'hna', 'hnd', 'hne', 'hnh', 'hni', 'hnj', 'hnn', 'hno', 'hns', 'hnu', 'hoa', 'hob', 'hoc', 'hod', 'hoe', 'hoh', 'hoi', 'hoj', 'hok', 'hol', 'hom', 'hoo', 'hop', 'hor', 'hos', 'hot', 'hov', 'how', 'hoy', 'hoz', 'hpo', 'hps', 'hra', 'hrc', 'hre', 'hrk', 'hrm', 'hro', 'hrp', 'hrr', 'hrt', 'hru', 'hrw', 'hrx', 'hrz', 'hsb', 'hsh', 'hsl', 'hsn', 'hss', 'hti', 'hto', 'hts', 'htu', 'htx', 'hub', 'huc', 'hud', 'hue', 'huf', 'hug', 'huh', 'hui', 'huj', 'huk', 'hul', 'hum', 'huo', 'hup', 'huq', 'hur', 'hus', 'hut', 'huu', 'huv', 'huw', 'hux', 'huy', 'huz', 'hvc', 'hve', 'hvk', 'hvn', 'hvv', 'hwa', 'hwc', 'hwo', 'hya', 'hyw', 'hyx', 'iai', 'ian', 'iap', 'iar', 'iba', 'ibb', 'ibd', 'ibe', 'ibg', 'ibh', 'ibi', 'ibl', 'ibm', 'ibn', 'ibr', 'ibu', 'iby', 'ica', 'ich', 'icl', 'icr', 'ida', 'idb', 'idc', 'idd', 'ide', 'idi', 'idr', 'ids', 'idt', 'idu', 'ifa', 'ifb', 'ife', 'iff', 'ifk', 'ifm', 'ifu', 'ify', 'igb', 'ige', 'igg', 'igl', 'igm', 'ign', 'igo', 'igs', 'igw', 'ihb', 'ihi', 'ihp', 'ihw', 'iin', 'iir', 'ijc', 'ije', 'ijj', 'ijn', 'ijo', 'ijs', 'ike', 'iki', 'ikk', 'ikl', 'iko', 'ikp', 'ikr', 'iks', 'ikt', 'ikv', 'ikw', 'ikx', 'ikz', 'ila', 'ilb', 'ilg', 'ili', 'ilk', 'ill', 'ilm', 'ilo', 'ilp', 'ils', 'ilu', 'ilv', 'ilw', 'ima', 'ime', 'imi', 'iml', 'imn', 'imo', 'imr', 'ims', 'imy', 'inb', 'inc', 'ine', 'ing', 'inh', 'inj', 'inl', 'inm', 'inn', 'ino', 'inp', 'ins', 'int', 'inz', 'ior', 'iou', 'iow', 'ipi', 'ipo', 'iqu', 'iqw', 'ira', 'ire', 'irh', 'iri', 'irk', 'irn', 'iro', 'irr', 'iru', 'irx', 'iry', 'isa', 'isc', 'isd', 'ise', 'isg', 'ish', 'isi', 'isk', 'ism', 'isn', 'iso', 'isr', 'ist', 'isu', 'itb', 'itc', 'itd', 'ite', 'iti', 'itk', 'itl', 'itm', 'ito', 'itr', 'its', 'itt', 'itv', 'itw', 'itx', 'ity', 'itz', 'ium', 'ivb', 'ivv', 'iwk', 'iwm', 'iwo', 'iws', 'ixc', 'ixl', 'iya', 'iyo', 'iyx', 'izh', 'izi', 'izr', 'izz', 'jaa', 'jab', 'jac', 'jad', 'jae', 'jaf', 'jah', 'jaj', 'jak', 'jal', 'jam', 'jan', 'jao', 'jaq', 'jar', 'jas', 'jat', 'jau', 'jax', 'jay', 'jaz', 'jbe', 'jbi', 'jbj', 'jbk', 'jbn', 'jbo', 'jbr', 'jbt', 'jbu', 'jbw', 'jcs', 'jct', 'jda', 'jdg', 'jdt', 'jeb', 'jee', 'jeg', 'jeh', 'jei', 'jek', 'jel', 'jen', 'jer', 'jet', 'jeu', 'jgb', 'jge', 'jgk', 'jgo', 'jhi', 'jhs', 'jia', 'jib', 'jic', 'jid', 'jie', 'jig', 'jih', 'jii', 'jil', 'jim', 'jio', 'jiq', 'jit', 'jiu', 'jiv', 'jiy', 'jje', 'jjr', 'jka', 'jkm', 'jko', 'jkp', 'jkr', 'jku', 'jle', 'jls', 'jma', 'jmb', 'jmc', 'jmd', 'jmi', 'jml', 'jmn', 'jmr', 'jms', 'jmw', 'jmx', 'jna', 'jnd', 'jng', 'jni', 'jnj', 'jnl', 'jns', 'job', 'jod', 'jog', 'jor', 'jos', 'jow', 'jpa', 'jpr', 'jpx', 'jqr', 'jra', 'jrb', 'jrr', 'jrt', 'jru', 'jsl', 'jua', 'jub', 'juc', 'jud', 'juh', 'jui', 'juk', 'jul', 'jum', 'jun', 'juo', 'jup', 'jur', 'jus', 'jut', 'juu', 'juw', 'juy', 'jvd', 'jvn', 'jwi', 'jya', 'jye', 'jyy', 'kaa', 'kab', 'kac', 'kad', 'kae', 'kaf', 'kag', 'kah', 'kai', 'kaj', 'kak', 'kam', 'kao', 'kap', 'kaq', 'kar', 'kav', 'kaw', 'kax', 'kay', 'kba', 'kbb', 'kbc', 'kbd', 'kbe', 'kbf', 'kbg', 'kbh', 'kbi', 'kbj', 'kbk', 'kbl', 'kbm', 'kbn', 'kbo', 'kbp', 'kbq', 'kbr', 'kbs', 'kbt', 'kbu', 'kbv', 'kbw', 'kbx', 'kby', 'kbz', 'kca', 'kcb', 'kcc', 'kcd', 'kce', 'kcf', 'kcg', 'kch', 'kci', 'kcj', 'kck', 'kcl', 'kcm', 'kcn', 'kco', 'kcp', 'kcq', 'kcr', 'kcs', 'kct', 'kcu', 'kcv', 'kcw', 'kcx', 'kcy', 'kcz', 'kda', 'kdc', 'kdd', 'kde', 'kdf', 'kdg', 'kdh', 'kdi', 'kdj', 'kdk', 'kdl', 'kdm', 'kdn', 'kdo', 'kdp', 'kdq', 'kdr', 'kdt', 'kdu', 'kdv', 'kdw', 'kdx', 'kdy', 'kdz', 'kea', 'keb', 'kec', 'ked', 'kee', 'kef', 'keg', 'keh', 'kei', 'kej', 'kek', 'kel', 'kem', 'ken', 'keo', 'kep', 'keq', 'ker', 'kes', 'ket', 'keu', 'kev', 'kew', 'kex', 'key', 'kez', 'kfa', 'kfb', 'kfc', 'kfd', 'kfe', 'kff', 'kfg', 'kfh', 'kfi', 'kfj', 'kfk', 'kfl', 'kfm', 'kfn', 'kfo', 'kfp', 'kfq', 'kfr', 'kfs', 'kft', 'kfu', 'kfv', 'kfw', 'kfx', 'kfy', 'kfz', 'kga', 'kgb', 'kgc', 'kgd', 'kge', 'kgf', 'kgg', 'kgh', 'kgi', 'kgj', 'kgk', 'kgl', 'kgm', 'kgn', 'kgo', 'kgp', 'kgq', 'kgr', 'kgs', 'kgt', 'kgu', 'kgv', 'kgw', 'kgx', 'kgy', 'kha', 'khb', 'khc', 'khd', 'khe', 'khf', 'khg', 'khh', 'khi', 'khj', 'khk', 'khl', 'khn', 'kho', 'khp', 'khq', 'khr', 'khs', 'kht', 'khu', 'khv', 'khw', 'khx', 'khy', 'khz', 'kia', 'kib', 'kic', 'kid', 'kie', 'kif', 'kig', 'kih', 'kii', 'kij', 'kil', 'kim', 'kio', 'kip', 'kiq', 'kis', 'kit', 'kiu', 'kiv', 'kiw', 'kix', 'kiy', 'kiz', 'kja', 'kjb', 'kjc', 'kjd', 'kje', 'kjf', 'kjg', 'kjh', 'kji', 'kjj', 'kjk', 'kjl', 'kjm', 'kjn', 'kjo', 'kjp', 'kjq', 'kjr', 'kjs', 'kjt', 'kju', 'kjv', 'kjx', 'kjy', 'kjz', 'kka', 'kkb', 'kkc', 'kkd', 'kke', 'kkf', 'kkg', 'kkh', 'kki', 'kkj', 'kkk', 'kkl', 'kkm', 'kkn', 'kko', 'kkp', 'kkq', 'kkr', 'kks', 'kkt', 'kku', 'kkv', 'kkw', 'kkx', 'kky', 'kkz', 'kla', 'klb', 'klc', 'kld', 'kle', 'klf', 'klg', 'klh', 'kli', 'klj', 'klk', 'kll', 'klm', 'kln', 'klo', 'klp', 'klq', 'klr', 'kls', 'klt', 'klu', 'klv', 'klw', 'klx', 'kly', 'klz', 'kma', 'kmb', 'kmc', 'kmd', 'kme', 'kmf', 'kmg', 'kmh', 'kmi', 'kmj', 'kmk', 'kml', 'kmm', 'kmn', 'kmo', 'kmp', 'kmq', 'kmr', 'kms', 'kmt', 'kmu', 'kmv', 'kmw', 'kmx', 'kmy', 'kmz', 'kna', 'knb', 'knc', 'knd', 'kne', 'knf', 'kng', 'kni', 'knj', 'knk', 'knl', 'knm', 'knn', 'kno', 'knp', 'knq', 'knr', 'kns', 'knt', 'knu', 'knv', 'knw', 'knx', 'kny', 'knz', 'koa', 'koc', 'kod', 'koe', 'kof', 'kog', 'koh', 'koi', 'koj', 'kok', 'kol', 'koo', 'kop', 'koq', 'kos', 'kot', 'kou', 'kov', 'kow', 'kox', 'koy', 'koz', 'kpa', 'kpb', 'kpc', 'kpd', 'kpe', 'kpf', 'kpg', 'kph', 'kpi', 'kpj', 'kpk', 'kpl', 'kpm', 'kpn', 'kpo', 'kpp', 'kpq', 'kpr', 'kps', 'kpt', 'kpu', 'kpv', 'kpw', 'kpx', 'kpy', 'kpz', 'kqa', 'kqb', 'kqc', 'kqd', 'kqe', 'kqf', 'kqg', 'kqh', 'kqi', 'kqj', 'kqk', 'kql', 'kqm', 'kqn', 'kqo', 'kqp', 'kqq', 'kqr', 'kqs', 'kqt', 'kqu', 'kqv', 'kqw', 'kqx', 'kqy', 'kqz', 'kra', 'krb', 'krc', 'krd', 'kre', 'krf', 'krh', 'kri', 'krj', 'krk', 'krl', 'krm', 'krn', 'kro', 'krp', 'krr', 'krs', 'krt', 'kru', 'krv', 'krw', 'krx', 'kry', 'krz', 'ksa', 'ksb', 'ksc', 'ksd', 'kse', 'ksf', 'ksg', 'ksh', 'ksi', 'ksj', 'ksk', 'ksl', 'ksm', 'ksn', 'kso', 'ksp', 'ksq', 'ksr', 'kss', 'kst', 'ksu', 'ksv', 'ksw', 'ksx', 'ksy', 'ksz', 'kta', 'ktb', 'ktc', 'ktd', 'kte', 'ktf', 'ktg', 'kth', 'kti', 'ktj', 'ktk', 'ktl', 'ktm', 'ktn', 'kto', 'ktp', 'ktq', 'ktr', 'kts', 'ktt', 'ktu', 'ktv', 'ktw', 'ktx', 'kty', 'ktz', 'kub', 'kuc', 'kud', 'kue', 'kuf', 'kug', 'kuh', 'kui', 'kuj', 'kuk', 'kul', 'kum', 'kun', 'kuo', 'kup', 'kuq', 'kus', 'kut', 'kuu', 'kuv', 'kuw', 'kux', 'kuy', 'kuz', 'kva', 'kvb', 'kvc', 'kvd', 'kve', 'kvf', 'kvg', 'kvh', 'kvi', 'kvj', 'kvk', 'kvl', 'kvm', 'kvn', 'kvo', 'kvp', 'kvq', 'kvr', 'kvs', 'kvt', 'kvu', 'kvv', 'kvw', 'kvx', 'kvy', 'kvz', 'kwa', 'kwb', 'kwc', 'kwd', 'kwe', 'kwf', 'kwg', 'kwh', 'kwi', 'kwj', 'kwk', 'kwl', 'kwm', 'kwn', 'kwo', 'kwp', 'kwq', 'kwr', 'kws', 'kwt', 'kwu', 'kwv', 'kww', 'kwx', 'kwy', 'kwz', 'kxa', 'kxb', 'kxc', 'kxd', 'kxe', 'kxf', 'kxh', 'kxi', 'kxj', 'kxk', 'kxl', 'kxm', 'kxn', 'kxo', 'kxp', 'kxq', 'kxr', 'kxs', 'kxt', 'kxu', 'kxv', 'kxw', 'kxx', 'kxy', 'kxz', 'kya', 'kyb', 'kyc', 'kyd', 'kye', 'kyf', 'kyg', 'kyh', 'kyi', 'kyj', 'kyk', 'kyl', 'kym', 'kyn', 'kyo', 'kyp', 'kyq', 'kyr', 'kys', 'kyt', 'kyu', 'kyv', 'kyw', 'kyx', 'kyy', 'kyz', 'kza', 'kzb', 'kzc', 'kzd', 'kze', 'kzf', 'kzg', 'kzh', 'kzi', 'kzj', 'kzk', 'kzl', 'kzm', 'kzn', 'kzo', 'kzp', 'kzq', 'kzr', 'kzs', 'kzt', 'kzu', 'kzv', 'kzw', 'kzx', 'kzy', 'kzz', 'laa', 'lab', 'lac', 'lad', 'lae', 'laf', 'lag', 'lah', 'lai', 'laj', 'lak', 'lal', 'lam', 'lan', 'lap', 'laq', 'lar', 'las', 'lau', 'law', 'lax', 'lay', 'laz', 'lba', 'lbb', 'lbc', 'lbe', 'lbf', 'lbg', 'lbi', 'lbj', 'lbk', 'lbl', 'lbm', 'lbn', 'lbo', 'lbq', 'lbr', 'lbs', 'lbt', 'lbu', 'lbv', 'lbw', 'lbx', 'lby', 'lbz', 'lcc', 'lcd', 'lce', 'lcf', 'lch', 'lcl', 'lcm', 'lcp', 'lcq', 'lcs', 'lda', 'ldb', 'ldd', 'ldg', 'ldh', 'ldi', 'ldj', 'ldk', 'ldl', 'ldm', 'ldn', 'ldo', 'ldp', 'ldq', 'lea', 'leb', 'lec', 'led', 'lee', 'lef', 'leg', 'leh', 'lei', 'lej', 'lek', 'lel', 'lem', 'len', 'leo', 'lep', 'leq', 'ler', 'les', 'let', 'leu', 'lev', 'lew', 'lex', 'ley', 'lez', 'lfa', 'lfn', 'lga', 'lgb', 'lgg', 'lgh', 'lgi', 'lgk', 'lgl', 'lgm', 'lgn', 'lgq', 'lgr', 'lgt', 'lgu', 'lgz', 'lha', 'lhh', 'lhi', 'lhl', 'lhm', 'lhn', 'lhp', 'lhs', 'lht', 'lhu', 'lia', 'lib', 'lic', 'lid', 'lie', 'lif', 'lig', 'lih', 'lii', 'lij', 'lik', 'lil', 'lio', 'lip', 'liq', 'lir', 'lis', 'liu', 'liv', 'liw', 'lix', 'liy', 'liz', 'lja', 'lje', 'lji', 'ljl', 'ljp', 'ljw', 'ljx', 'lka', 'lkb', 'lkc', 'lkd', 'lke', 'lkh', 'lki', 'lkj', 'lkl', 'lkm', 'lkn', 'lko', 'lkr', 'lks', 'lkt', 'lku', 'lky', 'lla', 'llb', 'llc', 'lld', 'lle', 'llf', 'llg', 'llh', 'lli', 'llj', 'llk', 'lll', 'llm', 'lln', 'llo', 'llp', 'llq', 'lls', 'llu', 'llx', 'lma', 'lmb', 'lmc', 'lmd', 'lme', 'lmf', 'lmg', 'lmh', 'lmi', 'lmj', 'lmk', 'lml', 'lmm', 'lmn', 'lmo', 'lmp', 'lmq', 'lmr', 'lmu', 'lmv', 'lmw', 'lmx', 'lmy', 'lmz', 'lna', 'lnb', 'lnd', 'lng', 'lnh', 'lni', 'lnj', 'lnl', 'lnm', 'lnn', 'lno', 'lns', 'lnu', 'lnw', 'lnz', 'loa', 'lob', 'loc', 'loe', 'lof', 'log', 'loh', 'loi', 'loj', 'lok', 'lol', 'lom', 'lon', 'loo', 'lop', 'loq', 'lor', 'los', 'lot', 'lou', 'lov', 'low', 'lox', 'loy', 'loz', 'lpa', 'lpe', 'lpn', 'lpo', 'lpx', 'lra', 'lrc', 'lre', 'lrg', 'lri', 'lrk', 'lrl', 'lrm', 'lrn', 'lro', 'lrr', 'lrt', 'lrv', 'lrz', 'lsa', 'lsd', 'lse', 'lsg', 'lsh', 'lsi', 'lsl', 'lsm', 'lso', 'lsp', 'lsr', 'lss', 'lst', 'lsy', 'ltc', 'ltg', 'lth', 'lti', 'ltn', 'lto', 'lts', 'ltu', 'lua', 'luc', 'lud', 'lue', 'luf', 'lui', 'luj', 'luk', 'lul', 'lum', 'lun', 'luo', 'lup', 'luq', 'lur', 'lus', 'lut', 'luu', 'luv', 'luw', 'luy', 'luz', 'lva', 'lvk', 'lvs', 'lvu', 'lwa', 'lwe', 'lwg', 'lwh', 'lwl', 'lwm', 'lwo', 'lws', 'lwt', 'lwu', 'lww', 'lya', 'lyg', 'lyn', 'lzh', 'lzl', 'lzn', 'lzz', 'maa', 'mab', 'mad', 'mae', 'maf', 'mag', 'mai', 'maj', 'mak', 'mam', 'man', 'map', 'maq', 'mas', 'mat', 'mau', 'mav', 'maw', 'max', 'maz', 'mba', 'mbb', 'mbc', 'mbd', 'mbe', 'mbf', 'mbh', 'mbi', 'mbj', 'mbk', 'mbl', 'mbm', 'mbn', 'mbo', 'mbp', 'mbq', 'mbr', 'mbs', 'mbt', 'mbu', 'mbv', 'mbw', 'mbx', 'mby', 'mbz', 'mca', 'mcb', 'mcc', 'mcd', 'mce', 'mcf', 'mcg', 'mch', 'mci', 'mcj', 'mck', 'mcl', 'mcm', 'mcn', 'mco', 'mcp', 'mcq', 'mcr', 'mcs', 'mct', 'mcu', 'mcv', 'mcw', 'mcx', 'mcy', 'mcz', 'mda', 'mdb', 'mdc', 'mdd', 'mde', 'mdf', 'mdg', 'mdh', 'mdi', 'mdj', 'mdk', 'mdl', 'mdm', 'mdn', 'mdp', 'mdq', 'mdr', 'mds', 'mdt', 'mdu', 'mdv', 'mdw', 'mdx', 'mdy', 'mdz', 'mea', 'meb', 'mec', 'med', 'mee', 'mef', 'meg', 'meh', 'mei', 'mej', 'mek', 'mel', 'mem', 'men', 'meo', 'mep', 'meq', 'mer', 'mes', 'met', 'meu', 'mev', 'mew', 'mey', 'mez', 'mfa', 'mfb', 'mfc', 'mfd', 'mfe', 'mff', 'mfg', 'mfh', 'mfi', 'mfj', 'mfk', 'mfl', 'mfm', 'mfn', 'mfo', 'mfp', 'mfq', 'mfr', 'mfs', 'mft', 'mfu', 'mfv', 'mfw', 'mfx', 'mfy', 'mfz', 'mga', 'mgb', 'mgc', 'mgd', 'mge', 'mgf', 'mgg', 'mgh', 'mgi', 'mgj', 'mgk', 'mgl', 'mgm', 'mgn', 'mgo', 'mgp', 'mgq', 'mgr', 'mgs', 'mgt', 'mgu', 'mgv', 'mgw', 'mgx', 'mgy', 'mgz', 'mha', 'mhb', 'mhc', 'mhd', 'mhe', 'mhf', 'mhg', 'mhh', 'mhi', 'mhj', 'mhk', 'mhl', 'mhm', 'mhn', 'mho', 'mhp', 'mhq', 'mhr', 'mhs', 'mht', 'mhu', 'mhw', 'mhx', 'mhy', 'mhz', 'mia', 'mib', 'mic', 'mid', 'mie', 'mif', 'mig', 'mih', 'mii', 'mij', 'mik', 'mil', 'mim', 'min', 'mio', 'mip', 'miq', 'mir', 'mis', 'mit', 'miu', 'miw', 'mix', 'miy', 'miz', 'mja', 'mjb', 'mjc', 'mjd', 'mje', 'mjg', 'mjh', 'mji', 'mjj', 'mjk', 'mjl', 'mjm', 'mjn', 'mjo', 'mjp', 'mjq', 'mjr', 'mjs', 'mjt', 'mju', 'mjv', 'mjw', 'mjx', 'mjy', 'mjz', 'mka', 'mkb', 'mkc', 'mke', 'mkf', 'mkg', 'mkh', 'mki', 'mkj', 'mkk', 'mkl', 'mkm', 'mkn', 'mko', 'mkp', 'mkq', 'mkr', 'mks', 'mkt', 'mku', 'mkv', 'mkw', 'mkx', 'mky', 'mkz', 'mla', 'mlb', 'mlc', 'mld', 'mle', 'mlf', 'mlh', 'mli', 'mlj', 'mlk', 'mll', 'mlm', 'mln', 'mlo', 'mlp', 'mlq', 'mlr', 'mls', 'mlu', 'mlv', 'mlw', 'mlx', 'mlz', 'mma', 'mmb', 'mmc', 'mmd', 'mme', 'mmf', 'mmg', 'mmh', 'mmi', 'mmj', 'mmk', 'mml', 'mmm', 'mmn', 'mmo', 'mmp', 'mmq', 'mmr', 'mmt', 'mmu', 'mmv', 'mmw', 'mmx', 'mmy', 'mmz', 'mna', 'mnb', 'mnc', 'mnd', 'mne', 'mnf', 'mng', 'mnh', 'mni', 'mnj', 'mnk', 'mnl', 'mnm', 'mnn', 'mno', 'mnp', 'mnq', 'mnr', 'mns', 'mnt', 'mnu', 'mnv', 'mnw', 'mnx', 'mny', 'mnz', 'moa', 'moc', 'mod', 'moe', 'mof', 'mog', 'moh', 'moi', 'moj', 'mok', 'mom', 'moo', 'mop', 'moq', 'mor', 'mos', 'mot', 'mou', 'mov', 'mow', 'mox', 'moy', 'moz', 'mpa', 'mpb', 'mpc', 'mpd', 'mpe', 'mpg', 'mph', 'mpi', 'mpj', 'mpk', 'mpl', 'mpm', 'mpn', 'mpo', 'mpp', 'mpq', 'mpr', 'mps', 'mpt', 'mpu', 'mpv', 'mpw', 'mpx', 'mpy', 'mpz', 'mqa', 'mqb', 'mqc', 'mqe', 'mqf', 'mqg', 'mqh', 'mqi', 'mqj', 'mqk', 'mql', 'mqm', 'mqn', 'mqo', 'mqp', 'mqq', 'mqr', 'mqs', 'mqt', 'mqu', 'mqv', 'mqw', 'mqx', 'mqy', 'mqz', 'mra', 'mrb', 'mrc', 'mrd', 'mre', 'mrf', 'mrg', 'mrh', 'mrj', 'mrk', 'mrl', 'mrm', 'mrn', 'mro', 'mrp', 'mrq', 'mrr', 'mrs', 'mrt', 'mru', 'mrv', 'mrw', 'mrx', 'mry', 'mrz', 'msb', 'msc', 'msd', 'mse', 'msf', 'msg', 'msh', 'msi', 'msj', 'msk', 'msl', 'msm', 'msn', 'mso', 'msp', 'msq', 'msr', 'mss', 'mst', 'msu', 'msv', 'msw', 'msx', 'msy', 'msz', 'mta', 'mtb', 'mtc', 'mtd', 'mte', 'mtf', 'mtg', 'mth', 'mti', 'mtj', 'mtk', 'mtl', 'mtm', 'mtn', 'mto', 'mtp', 'mtq', 'mtr', 'mts', 'mtt', 'mtu', 'mtv', 'mtw', 'mtx', 'mty', 'mua', 'mub', 'muc', 'mud', 'mue', 'mug', 'muh', 'mui', 'muj', 'muk', 'mul', 'mum', 'mun', 'muo', 'mup', 'muq', 'mur', 'mus', 'mut', 'muu', 'muv', 'mux', 'muy', 'muz', 'mva', 'mvb', 'mvd', 'mve', 'mvf', 'mvg', 'mvh', 'mvi', 'mvk', 'mvl', 'mvm', 'mvn', 'mvo', 'mvp', 'mvq', 'mvr', 'mvs', 'mvt', 'mvu', 'mvv', 'mvw', 'mvx', 'mvy', 'mvz', 'mwa', 'mwb', 'mwc', 'mwd', 'mwe', 'mwf', 'mwg', 'mwh', 'mwi', 'mwj', 'mwk', 'mwl', 'mwm', 'mwn', 'mwo', 'mwp', 'mwq', 'mwr', 'mws', 'mwt', 'mwu', 'mwv', 'mww', 'mwx', 'mwy', 'mwz', 'mxa', 'mxb', 'mxc', 'mxd', 'mxe', 'mxf', 'mxg', 'mxh', 'mxi', 'mxj', 'mxk', 'mxl', 'mxm', 'mxn', 'mxo', 'mxp', 'mxq', 'mxr', 'mxs', 'mxt', 'mxu', 'mxv', 'mxw', 'mxx', 'mxy', 'mxz', 'myb', 'myc', 'myd', 'mye', 'myf', 'myg', 'myh', 'myi', 'myj', 'myk', 'myl', 'mym', 'myn', 'myo', 'myp', 'myq', 'myr', 'mys', 'myt', 'myu', 'myv', 'myw', 'myx', 'myy', 'myz', 'mza', 'mzb', 'mzc', 'mzd', 'mze', 'mzg', 'mzh', 'mzi', 'mzj', 'mzk', 'mzl', 'mzm', 'mzn', 'mzo', 'mzp', 'mzq', 'mzr', 'mzs', 'mzt', 'mzu', 'mzv', 'mzw', 'mzx', 'mzy', 'mzz', 'naa', 'nab', 'nac', 'nad', 'nae', 'naf', 'nag', 'nah', 'nai', 'naj', 'nak', 'nal', 'nam', 'nan', 'nao', 'nap', 'naq', 'nar', 'nas', 'nat', 'naw', 'nax', 'nay', 'naz', 'nba', 'nbb', 'nbc', 'nbd', 'nbe', 'nbf', 'nbg', 'nbh', 'nbi', 'nbj', 'nbk', 'nbm', 'nbn', 'nbo', 'nbp', 'nbq', 'nbr', 'nbs', 'nbt', 'nbu', 'nbv', 'nbw', 'nbx', 'nby', 'nca', 'ncb', 'ncc', 'ncd', 'nce', 'ncf', 'ncg', 'nch', 'nci', 'ncj', 'nck', 'ncl', 'ncm', 'ncn', 'nco', 'ncp', 'ncq', 'ncr', 'ncs', 'nct', 'ncu', 'ncx', 'ncz', 'nda', 'ndb', 'ndc', 'ndd', 'ndf', 'ndg', 'ndh', 'ndi', 'ndj', 'ndk', 'ndl', 'ndm', 'ndn', 'ndp', 'ndq', 'ndr', 'nds', 'ndt', 'ndu', 'ndv', 'ndw', 'ndx', 'ndy', 'ndz', 'nea', 'neb', 'nec', 'ned', 'nee', 'nef', 'neg', 'neh', 'nei', 'nej', 'nek', 'nem', 'nen', 'neo', 'neq', 'ner', 'nes', 'net', 'neu', 'nev', 'new', 'nex', 'ney', 'nez', 'nfa', 'nfd', 'nfl', 'nfr', 'nfu', 'nga', 'ngb', 'ngc', 'ngd', 'nge', 'ngf', 'ngg', 'ngh', 'ngi', 'ngj', 'ngk', 'ngl', 'ngm', 'ngn', 'ngo', 'ngp', 'ngq', 'ngr', 'ngs', 'ngt', 'ngu', 'ngv', 'ngw', 'ngx', 'ngy', 'ngz', 'nha', 'nhb', 'nhc', 'nhd', 'nhe', 'nhf', 'nhg', 'nhh', 'nhi', 'nhk', 'nhm', 'nhn', 'nho', 'nhp', 'nhq', 'nhr', 'nht', 'nhu', 'nhv', 'nhw', 'nhx', 'nhy', 'nhz', 'nia', 'nib', 'nic', 'nid', 'nie', 'nif', 'nig', 'nih', 'nii', 'nij', 'nik', 'nil', 'nim', 'nin', 'nio', 'niq', 'nir', 'nis', 'nit', 'niu', 'niv', 'niw', 'nix', 'niy', 'niz', 'nja', 'njb', 'njd', 'njh', 'nji', 'njj', 'njl', 'njm', 'njn', 'njo', 'njr', 'njs', 'njt', 'nju', 'njx', 'njy', 'njz', 'nka', 'nkb', 'nkc', 'nkd', 'nke', 'nkf', 'nkg', 'nkh', 'nki', 'nkj', 'nkk', 'nkm', 'nkn', 'nko', 'nkp', 'nkq', 'nkr', 'nks', 'nkt', 'nku', 'nkv', 'nkw', 'nkx', 'nkz', 'nla', 'nlc', 'nle', 'nlg', 'nli', 'nlj', 'nlk', 'nll', 'nlm', 'nln', 'nlo', 'nlq', 'nlr', 'nlu', 'nlv', 'nlw', 'nlx', 'nly', 'nlz', 'nma', 'nmb', 'nmc', 'nmd', 'nme', 'nmf', 'nmg', 'nmh', 'nmi', 'nmj', 'nmk', 'nml', 'nmm', 'nmn', 'nmo', 'nmp', 'nmq', 'nmr', 'nms', 'nmt', 'nmu', 'nmv', 'nmw', 'nmx', 'nmy', 'nmz', 'nna', 'nnb', 'nnc', 'nnd', 'nne', 'nnf', 'nng', 'nnh', 'nni', 'nnj', 'nnk', 'nnl', 'nnm', 'nnn', 'nnp', 'nnq', 'nnr', 'nns', 'nnt', 'nnu', 'nnv', 'nnw', 'nnx', 'nny', 'nnz', 'noa', 'noc', 'nod', 'noe', 'nof', 'nog', 'noh', 'noi', 'noj', 'nok', 'nol', 'nom', 'non', 'noo', 'nop', 'noq', 'nos', 'not', 'nou', 'nov', 'now', 'noy', 'noz', 'npa', 'npb', 'npg', 'nph', 'npi', 'npl', 'npn', 'npo', 'nps', 'npu', 'npx', 'npy', 'nqg', 'nqk', 'nql', 'nqm', 'nqn', 'nqo', 'nqq', 'nqy', 'nra', 'nrb', 'nrc', 'nre', 'nrf', 'nrg', 'nri', 'nrk', 'nrl', 'nrm', 'nrn', 'nrp', 'nrr', 'nrt', 'nru', 'nrx', 'nrz', 'nsa', 'nsc', 'nsd', 'nse', 'nsf', 'nsg', 'nsh', 'nsi', 'nsk', 'nsl', 'nsm', 'nsn', 'nso', 'nsp', 'nsq', 'nsr', 'nss', 'nst', 'nsu', 'nsv', 'nsw', 'nsx', 'nsy', 'nsz', 'ntd', 'nte', 'ntg', 'nti', 'ntj', 'ntk', 'ntm', 'nto', 'ntp', 'ntr', 'nts', 'ntu', 'ntw', 'ntx', 'nty', 'ntz', 'nua', 'nub', 'nuc', 'nud', 'nue', 'nuf', 'nug', 'nuh', 'nui', 'nuj', 'nuk', 'nul', 'num', 'nun', 'nuo', 'nup', 'nuq', 'nur', 'nus', 'nut', 'nuu', 'nuv', 'nuw', 'nux', 'nuy', 'nuz', 'nvh', 'nvm', 'nvo', 'nwa', 'nwb', 'nwc', 'nwe', 'nwg', 'nwi', 'nwm', 'nwo', 'nwr', 'nwx', 'nwy', 'nxa', 'nxd', 'nxe', 'nxg', 'nxi', 'nxk', 'nxl', 'nxm', 'nxn', 'nxo', 'nxq', 'nxr', 'nxu', 'nxx', 'nyb', 'nyc', 'nyd', 'nye', 'nyf', 'nyg', 'nyh', 'nyi', 'nyj', 'nyk', 'nyl', 'nym', 'nyn', 'nyo', 'nyp', 'nyq', 'nyr', 'nys', 'nyt', 'nyu', 'nyv', 'nyw', 'nyx', 'nyy', 'nza', 'nzb', 'nzd', 'nzi', 'nzk', 'nzm', 'nzs', 'nzu', 'nzy', 'nzz', 'oaa', 'oac', 'oar', 'oav', 'obi', 'obk', 'obl', 'obm', 'obo', 'obr', 'obt', 'obu', 'oca', 'och', 'oco', 'ocu', 'oda', 'odk', 'odt', 'odu', 'ofo', 'ofs', 'ofu', 'ogb', 'ogc', 'oge', 'ogg', 'ogo', 'ogu', 'oht', 'ohu', 'oia', 'oin', 'ojb', 'ojc', 'ojg', 'ojp', 'ojs', 'ojv', 'ojw', 'oka', 'okb', 'okd', 'oke', 'okg', 'okh', 'oki', 'okj', 'okk', 'okl', 'okm', 'okn', 'oko', 'okr', 'oks', 'oku', 'okv', 'okx', 'ola', 'old', 'ole', 'olk', 'olm', 'olo', 'olr', 'olt', 'olu', 'oma', 'omb', 'omc', 'ome', 'omg', 'omi', 'omk', 'oml', 'omn', 'omo', 'omp', 'omq', 'omr', 'omt', 'omu', 'omv', 'omw', 'omx', 'ona', 'onb', 'one', 'ong', 'oni', 'onj', 'onk', 'onn', 'ono', 'onp', 'onr', 'ons', 'ont', 'onu', 'onw', 'onx', 'ood', 'oog', 'oon', 'oor', 'oos', 'opa', 'opk', 'opm', 'opo', 'opt', 'opy', 'ora', 'orc', 'ore', 'org', 'orh', 'orn', 'oro', 'orr', 'ors', 'ort', 'oru', 'orv', 'orw', 'orx', 'ory', 'orz', 'osa', 'osc', 'osi', 'oso', 'osp', 'ost', 'osu', 'osx', 'ota', 'otb', 'otd', 'ote', 'oti', 'otk', 'otl', 'otm', 'otn', 'oto', 'otq', 'otr', 'ots', 'ott', 'otu', 'otw', 'otx', 'oty', 'otz', 'oua', 'oub', 'oue', 'oui', 'oum', 'oun', 'ovd', 'owi', 'owl', 'oyb', 'oyd', 'oym', 'oyy', 'ozm', 'paa', 'pab', 'pac', 'pad', 'pae', 'paf', 'pag', 'pah', 'pai', 'pak', 'pal', 'pam', 'pao', 'pap', 'paq', 'par', 'pas', 'pat', 'pau', 'pav', 'paw', 'pax', 'pay', 'paz', 'pbb', 'pbc', 'pbe', 'pbf', 'pbg', 'pbh', 'pbi', 'pbl', 'pbm', 'pbn', 'pbo', 'pbp', 'pbr', 'pbs', 'pbt', 'pbu', 'pbv', 'pby', 'pbz', 'pca', 'pcb', 'pcc', 'pcd', 'pce', 'pcf', 'pcg', 'pch', 'pci', 'pcj', 'pck', 'pcl', 'pcm', 'pcn', 'pcp', 'pcr', 'pcw', 'pda', 'pdc', 'pdi', 'pdn', 'pdo', 'pdt', 'pdu', 'pea', 'peb', 'ped', 'pee', 'pef', 'peg', 'peh', 'pei', 'pej', 'pek', 'pel', 'pem', 'peo', 'pep', 'peq', 'pes', 'pev', 'pex', 'pey', 'pez', 'pfa', 'pfe', 'pfl', 'pga', 'pgd', 'pgg', 'pgi', 'pgk', 'pgl', 'pgn', 'pgs', 'pgu', 'pgy', 'pgz', 'pha', 'phd', 'phg', 'phh', 'phi', 'phk', 'phl', 'phm', 'phn', 'pho', 'phq', 'phr', 'pht', 'phu', 'phv', 'phw', 'pia', 'pib', 'pic', 'pid', 'pie', 'pif', 'pig', 'pih', 'pii', 'pij', 'pil', 'pim', 'pin', 'pio', 'pip', 'pir', 'pis', 'pit', 'piu', 'piv', 'piw', 'pix', 'piy', 'piz', 'pjt', 'pka', 'pkb', 'pkc', 'pkg', 'pkh', 'pkn', 'pko', 'pkp', 'pkr', 'pks', 'pkt', 'pku', 'pla', 'plb', 'plc', 'pld', 'ple', 'plf', 'plg', 'plh', 'plj', 'plk', 'pll', 'pln', 'plo', 'plp', 'plq', 'plr', 'pls', 'plt', 'plu', 'plv', 'plw', 'ply', 'plz', 'pma', 'pmb', 'pmc', 'pmd', 'pme', 'pmf', 'pmh', 'pmi', 'pmj', 'pmk', 'pml', 'pmm', 'pmn', 'pmo', 'pmq', 'pmr', 'pms', 'pmt', 'pmu', 'pmw', 'pmx', 'pmy', 'pmz', 'pna', 'pnb', 'pnc', 'pne', 'png', 'pnh', 'pni', 'pnj', 'pnk', 'pnl', 'pnm', 'pnn', 'pno', 'pnp', 'pnq', 'pnr', 'pns', 'pnt', 'pnu', 'pnv', 'pnw', 'pnx', 'pny', 'pnz', 'poc', 'pod', 'poe', 'pof', 'pog', 'poh', 'poi', 'pok', 'pom', 'pon', 'poo', 'pop', 'poq', 'pos', 'pot', 'pov', 'pow', 'pox', 'poy', 'poz', 'ppa', 'ppe', 'ppi', 'ppk', 'ppl', 'ppm', 'ppn', 'ppo', 'ppp', 'ppq', 'ppr', 'pps', 'ppt', 'ppu', 'pqa', 'pqe', 'pqm', 'pqw', 'pra', 'prb', 'prc', 'prd', 'pre', 'prf', 'prg', 'prh', 'pri', 'prk', 'prl', 'prm', 'prn', 'pro', 'prp', 'prq', 'prr', 'prs', 'prt', 'pru', 'prw', 'prx', 'pry', 'prz', 'psa', 'psc', 'psd', 'pse', 'psg', 'psh', 'psi', 'psl', 'psm', 'psn', 'pso', 'psp', 'psq', 'psr', 'pss', 'pst', 'psu', 'psw', 'psy', 'pta', 'pth', 'pti', 'ptn', 'pto', 'ptp', 'ptq', 'ptr', 'ptt', 'ptu', 'ptv', 'ptw', 'pty', 'pua', 'pub', 'puc', 'pud', 'pue', 'puf', 'pug', 'pui', 'puj', 'puk', 'pum', 'puo', 'pup', 'puq', 'pur', 'put', 'puu', 'puw', 'pux', 'puy', 'puz', 'pwa', 'pwb', 'pwg', 'pwi', 'pwm', 'pwn', 'pwo', 'pwr', 'pww', 'pxm', 'pye', 'pym', 'pyn', 'pys', 'pyu', 'pyx', 'pyy', 'pzn', 'qaa..qtz', 'qua', 'qub', 'quc', 'qud', 'quf', 'qug', 'quh', 'qui', 'quk', 'qul', 'qum', 'qun', 'qup', 'quq', 'qur', 'qus', 'quv', 'quw', 'qux', 'quy', 'quz', 'qva', 'qvc', 'qve', 'qvh', 'qvi', 'qvj', 'qvl', 'qvm', 'qvn', 'qvo', 'qvp', 'qvs', 'qvw', 'qvy', 'qvz', 'qwa', 'qwc', 'qwe', 'qwh', 'qwm', 'qws', 'qwt', 'qxa', 'qxc', 'qxh', 'qxl', 'qxn', 'qxo', 'qxp', 'qxq', 'qxr', 'qxs', 'qxt', 'qxu', 'qxw', 'qya', 'qyp', 'raa', 'rab', 'rac', 'rad', 'raf', 'rag', 'rah', 'rai', 'raj', 'rak', 'ral', 'ram', 'ran', 'rao', 'rap', 'raq', 'rar', 'ras', 'rat', 'rau', 'rav', 'raw', 'rax', 'ray', 'raz', 'rbb', 'rbk', 'rbl', 'rbp', 'rcf', 'rdb', 'rea', 'reb', 'ree', 'reg', 'rei', 'rej', 'rel', 'rem', 'ren', 'rer', 'res', 'ret', 'rey', 'rga', 'rge', 'rgk', 'rgn', 'rgr', 'rgs', 'rgu', 'rhg', 'rhp', 'ria', 'rie', 'rif', 'ril', 'rim', 'rin', 'rir', 'rit', 'riu', 'rjg', 'rji', 'rjs', 'rka', 'rkb', 'rkh', 'rki', 'rkm', 'rkt', 'rkw', 'rma', 'rmb', 'rmc', 'rmd', 'rme', 'rmf', 'rmg', 'rmh', 'rmi', 'rmk', 'rml', 'rmm', 'rmn', 'rmo', 'rmp', 'rmq', 'rmr', 'rms', 'rmt', 'rmu', 'rmv', 'rmw', 'rmx', 'rmy', 'rmz', 'rna', 'rnd', 'rng', 'rnl', 'rnn', 'rnp', 'rnr', 'rnw', 'roa', 'rob', 'roc', 'rod', 'roe', 'rof', 'rog', 'rol', 'rom', 'roo', 'rop', 'ror', 'rou', 'row', 'rpn', 'rpt', 'rri', 'rro', 'rrt', 'rsb', 'rsi', 'rsl', 'rsm', 'rtc', 'rth', 'rtm', 'rts', 'rtw', 'rub', 'ruc', 'rue', 'ruf', 'rug', 'ruh', 'rui', 'ruk', 'ruo', 'rup', 'ruq', 'rut', 'ruu', 'ruy', 'ruz', 'rwa', 'rwk', 'rwm', 'rwo', 'rwr', 'rxd', 'rxw', 'ryn', 'rys', 'ryu', 'rzh', 'saa', 'sab', 'sac', 'sad', 'sae', 'saf', 'sah', 'sai', 'saj', 'sak', 'sal', 'sam', 'sao', 'sap', 'saq', 'sar', 'sas', 'sat', 'sau', 'sav', 'saw', 'sax', 'say', 'saz', 'sba', 'sbb', 'sbc', 'sbd', 'sbe', 'sbf', 'sbg', 'sbh', 'sbi', 'sbj', 'sbk', 'sbl', 'sbm', 'sbn', 'sbo', 'sbp', 'sbq', 'sbr', 'sbs', 'sbt', 'sbu', 'sbv', 'sbw', 'sbx', 'sby', 'sbz', 'sca', 'scb', 'sce', 'scf', 'scg', 'sch', 'sci', 'sck', 'scl', 'scn', 'sco', 'scp', 'scq', 'scs', 'sct', 'scu', 'scv', 'scw', 'scx', 'sda', 'sdb', 'sdc', 'sde', 'sdf', 'sdg', 'sdh', 'sdj', 'sdk', 'sdl', 'sdm', 'sdn', 'sdo', 'sdp', 'sdr', 'sds', 'sdt', 'sdu', 'sdv', 'sdx', 'sdz', 'sea', 'seb', 'sec', 'sed', 'see', 'sef', 'seg', 'seh', 'sei', 'sej', 'sek', 'sel', 'sem', 'sen', 'seo', 'sep', 'seq', 'ser', 'ses', 'set', 'seu', 'sev', 'sew', 'sey', 'sez', 'sfb', 'sfe', 'sfm', 'sfs', 'sfw', 'sga', 'sgb', 'sgc', 'sgd', 'sge', 'sgg', 'sgh', 'sgi', 'sgj', 'sgk', 'sgl', 'sgm', 'sgn', 'sgo', 'sgp', 'sgr', 'sgs', 'sgt', 'sgu', 'sgw', 'sgx', 'sgy', 'sgz', 'sha', 'shb', 'shc', 'shd', 'she', 'shg', 'shh', 'shi', 'shj', 'shk', 'shl', 'shm', 'shn', 'sho', 'shp', 'shq', 'shr', 'shs', 'sht', 'shu', 'shv', 'shw', 'shx', 'shy', 'shz', 'sia', 'sib', 'sid', 'sie', 'sif', 'sig', 'sih', 'sii', 'sij', 'sik', 'sil', 'sim', 'sio', 'sip', 'siq', 'sir', 'sis', 'sit', 'siu', 'siv', 'siw', 'six', 'siy', 'siz', 'sja', 'sjb', 'sjd', 'sje', 'sjg', 'sjk', 'sjl', 'sjm', 'sjn', 'sjo', 'sjp', 'sjr', 'sjs', 'sjt', 'sju', 'sjw', 'ska', 'skb', 'skc', 'skd', 'ske', 'skf', 'skg', 'skh', 'ski', 'skj', 'skk', 'skm', 'skn', 'sko', 'skp', 'skq', 'skr', 'sks', 'skt', 'sku', 'skv', 'skw', 'skx', 'sky', 'skz', 'sla', 'slc', 'sld', 'sle', 'slf', 'slg', 'slh', 'sli', 'slj', 'sll', 'slm', 'sln', 'slp', 'slq', 'slr', 'sls', 'slt', 'slu', 'slw', 'slx', 'sly', 'slz', 'sma', 'smb', 'smc', 'smd', 'smf', 'smg', 'smh', 'smi', 'smj', 'smk', 'sml', 'smm', 'smn', 'smp', 'smq', 'smr', 'sms', 'smt', 'smu', 'smv', 'smw', 'smx', 'smy', 'smz', 'snb', 'snc', 'sne', 'snf', 'sng', 'snh', 'sni', 'snj', 'snk', 'snl', 'snm', 'snn', 'sno', 'snp', 'snq', 'snr', 'sns', 'snu', 'snv', 'snw', 'snx', 'sny', 'snz', 'soa', 'sob', 'soc', 'sod', 'soe', 'sog', 'soh', 'soi', 'soj', 'sok', 'sol', 'son', 'soo', 'sop', 'soq', 'sor', 'sos', 'sou', 'sov', 'sow', 'sox', 'soy', 'soz', 'spb', 'spc', 'spd', 'spe', 'spg', 'spi', 'spk', 'spl', 'spm', 'spn', 'spo', 'spp', 'spq', 'spr', 'sps', 'spt', 'spu', 'spv', 'spx', 'spy', 'sqa', 'sqh', 'sqj', 'sqk', 'sqm', 'sqn', 'sqo', 'sqq', 'sqr', 'sqs', 'sqt', 'squ', 'sra', 'srb', 'src', 'sre', 'srf', 'srg', 'srh', 'sri', 'srk', 'srl', 'srm', 'srn', 'sro', 'srq', 'srr', 'srs', 'srt', 'sru', 'srv', 'srw', 'srx', 'sry', 'srz', 'ssa', 'ssb', 'ssc', 'ssd', 'sse', 'ssf', 'ssg', 'ssh', 'ssi', 'ssj', 'ssk', 'ssl', 'ssm', 'ssn', 'sso', 'ssp', 'ssq', 'ssr', 'sss', 'sst', 'ssu', 'ssv', 'ssx', 'ssy', 'ssz', 'sta', 'stb', 'std', 'ste', 'stf', 'stg', 'sth', 'sti', 'stj', 'stk', 'stl', 'stm', 'stn', 'sto', 'stp', 'stq', 'str', 'sts', 'stt', 'stu', 'stv', 'stw', 'sty', 'sua', 'sub', 'suc', 'sue', 'sug', 'sui', 'suj', 'suk', 'sul', 'sum', 'suq', 'sur', 'sus', 'sut', 'suv', 'suw', 'sux', 'suy', 'suz', 'sva', 'svb', 'svc', 'sve', 'svk', 'svm', 'svr', 'svs', 'svx', 'swb', 'swc', 'swf', 'swg', 'swh', 'swi', 'swj', 'swk', 'swl', 'swm', 'swn', 'swo', 'swp', 'swq', 'swr', 'sws', 'swt', 'swu', 'swv', 'sww', 'swx', 'swy', 'sxb', 'sxc', 'sxe', 'sxg', 'sxk', 'sxl', 'sxm', 'sxn', 'sxo', 'sxr', 'sxs', 'sxu', 'sxw', 'sya', 'syb', 'syc', 'syd', 'syi', 'syk', 'syl', 'sym', 'syn', 'syo', 'syr', 'sys', 'syw', 'syx', 'syy', 'sza', 'szb', 'szc', 'szd', 'sze', 'szg', 'szl', 'szn', 'szp', 'szs', 'szv', 'szw', 'taa', 'tab', 'tac', 'tad', 'tae', 'taf', 'tag', 'tai', 'taj', 'tak', 'tal', 'tan', 'tao', 'tap', 'taq', 'tar', 'tas', 'tau', 'tav', 'taw', 'tax', 'tay', 'taz', 'tba', 'tbb', 'tbc', 'tbd', 'tbe', 'tbf', 'tbg', 'tbh', 'tbi', 'tbj', 'tbk', 'tbl', 'tbm', 'tbn', 'tbo', 'tbp', 'tbq', 'tbr', 'tbs', 'tbt', 'tbu', 'tbv', 'tbw', 'tbx', 'tby', 'tbz', 'tca', 'tcb', 'tcc', 'tcd', 'tce', 'tcf', 'tcg', 'tch', 'tci', 'tck', 'tcl', 'tcm', 'tcn', 'tco', 'tcp', 'tcq', 'tcs', 'tct', 'tcu', 'tcw', 'tcx', 'tcy', 'tcz', 'tda', 'tdb', 'tdc', 'tdd', 'tde', 'tdf', 'tdg', 'tdh', 'tdi', 'tdj', 'tdk', 'tdl', 'tdm', 'tdn', 'tdo', 'tdq', 'tdr', 'tds', 'tdt', 'tdu', 'tdv', 'tdx', 'tdy', 'tea', 'teb', 'tec', 'ted', 'tee', 'tef', 'teg', 'teh', 'tei', 'tek', 'tem', 'ten', 'teo', 'tep', 'teq', 'ter', 'tes', 'tet', 'teu', 'tev', 'tew', 'tex', 'tey', 'tez', 'tfi', 'tfn', 'tfo', 'tfr', 'tft', 'tga', 'tgb', 'tgc', 'tgd', 'tge', 'tgf', 'tgg', 'tgh', 'tgi', 'tgj', 'tgn', 'tgo', 'tgp', 'tgq', 'tgr', 'tgs', 'tgt', 'tgu', 'tgv', 'tgw', 'tgx', 'tgy', 'tgz', 'thc', 'thd', 'the', 'thf', 'thh', 'thi', 'thk', 'thl', 'thm', 'thn', 'thp', 'thq', 'thr', 'ths', 'tht', 'thu', 'thv', 'thw', 'thx', 'thy', 'thz', 'tia', 'tic', 'tid', 'tie', 'tif', 'tig', 'tih', 'tii', 'tij', 'tik', 'til', 'tim', 'tin', 'tio', 'tip', 'tiq', 'tis', 'tit', 'tiu', 'tiv', 'tiw', 'tix', 'tiy', 'tiz', 'tja', 'tjg', 'tji', 'tjl', 'tjm', 'tjn', 'tjo', 'tjs', 'tju', 'tjw', 'tka', 'tkb', 'tkd', 'tke', 'tkf', 'tkg', 'tkk', 'tkl', 'tkm', 'tkn', 'tkp', 'tkq', 'tkr', 'tks', 'tkt', 'tku', 'tkv', 'tkw', 'tkx', 'tkz', 'tla', 'tlb', 'tlc', 'tld', 'tlf', 'tlg', 'tlh', 'tli', 'tlj', 'tlk', 'tll', 'tlm', 'tln', 'tlo', 'tlp', 'tlq', 'tlr', 'tls', 'tlt', 'tlu', 'tlv', 'tlw', 'tlx', 'tly', 'tma', 'tmb', 'tmc', 'tmd', 'tme', 'tmf', 'tmg', 'tmh', 'tmi', 'tmj', 'tmk', 'tml', 'tmm', 'tmn', 'tmo', 'tmp', 'tmq', 'tmr', 'tms', 'tmt', 'tmu', 'tmv', 'tmw', 'tmy', 'tmz', 'tna', 'tnb', 'tnc', 'tnd', 'tne', 'tnf', 'tng', 'tnh', 'tni', 'tnk', 'tnl', 'tnm', 'tnn', 'tno', 'tnp', 'tnq', 'tnr', 'tns', 'tnt', 'tnu', 'tnv', 'tnw', 'tnx', 'tny', 'tnz', 'tob', 'toc', 'tod', 'toe', 'tof', 'tog', 'toh', 'toi', 'toj', 'tol', 'tom', 'too', 'top', 'toq', 'tor', 'tos', 'tou', 'tov', 'tow', 'tox', 'toy', 'toz', 'tpa', 'tpc', 'tpe', 'tpf', 'tpg', 'tpi', 'tpj', 'tpk', 'tpl', 'tpm', 'tpn', 'tpo', 'tpp', 'tpq', 'tpr', 'tpt', 'tpu', 'tpv', 'tpw', 'tpx', 'tpy', 'tpz', 'tqb', 'tql', 'tqm', 'tqn', 'tqo', 'tqp', 'tqq', 'tqr', 'tqt', 'tqu', 'tqw', 'tra', 'trb', 'trc', 'trd', 'tre', 'trf', 'trg', 'trh', 'tri', 'trj', 'trk', 'trl', 'trm', 'trn', 'tro', 'trp', 'trq', 'trr', 'trs', 'trt', 'tru', 'trv', 'trw', 'trx', 'try', 'trz', 'tsa', 'tsb', 'tsc', 'tsd', 'tse', 'tsf', 'tsg', 'tsh', 'tsi', 'tsj', 'tsk', 'tsl', 'tsm', 'tsp', 'tsq', 'tsr', 'tss', 'tst', 'tsu', 'tsv', 'tsw', 'tsx', 'tsy', 'tsz', 'tta', 'ttb', 'ttc', 'ttd', 'tte', 'ttf', 'ttg', 'tth', 'tti', 'ttj', 'ttk', 'ttl', 'ttm', 'ttn', 'tto', 'ttp', 'ttq', 'ttr', 'tts', 'ttt', 'ttu', 'ttv', 'ttw', 'tty', 'ttz', 'tua', 'tub', 'tuc', 'tud', 'tue', 'tuf', 'tug', 'tuh', 'tui', 'tuj', 'tul', 'tum', 'tun', 'tuo', 'tup', 'tuq', 'tus', 'tut', 'tuu', 'tuv', 'tuw', 'tux', 'tuy', 'tuz', 'tva', 'tvd', 'tve', 'tvk', 'tvl', 'tvm', 'tvn', 'tvo', 'tvs', 'tvt', 'tvu', 'tvw', 'tvy', 'twa', 'twb', 'twc', 'twd', 'twe', 'twf', 'twg', 'twh', 'twl', 'twm', 'twn', 'two', 'twp', 'twq', 'twr', 'twt', 'twu', 'tww', 'twx', 'twy', 'txa', 'txb', 'txc', 'txe', 'txg', 'txh', 'txi', 'txj', 'txm', 'txn', 'txo', 'txq', 'txr', 'txs', 'txt', 'txu', 'txx', 'txy', 'tya', 'tye', 'tyh', 'tyi', 'tyj', 'tyl', 'tyn', 'typ', 'tyr', 'tys', 'tyt', 'tyu', 'tyv', 'tyx', 'tyz', 'tza', 'tzh', 'tzj', 'tzl', 'tzm', 'tzn', 'tzo', 'tzx', 'uam', 'uan', 'uar', 'uba', 'ubi', 'ubl', 'ubr', 'ubu', 'uby', 'uda', 'ude', 'udg', 'udi', 'udj', 'udl', 'udm', 'udu', 'ues', 'ufi', 'uga', 'ugb', 'uge', 'ugn', 'ugo', 'ugy', 'uha', 'uhn', 'uis', 'uiv', 'uji', 'uka', 'ukg', 'ukh', 'ukk', 'ukl', 'ukp', 'ukq', 'uks', 'uku', 'ukw', 'uky', 'ula', 'ulb', 'ulc', 'ule', 'ulf', 'uli', 'ulk', 'ull', 'ulm', 'uln', 'ulu', 'ulw', 'uma', 'umb', 'umc', 'umd', 'umg', 'umi', 'umm', 'umn', 'umo', 'ump', 'umr', 'ums', 'umu', 'una', 'und', 'une', 'ung', 'unk', 'unm', 'unn', 'unp', 'unr', 'unu', 'unx', 'unz', 'uok', 'upi', 'upv', 'ura', 'urb', 'urc', 'ure', 'urf', 'urg', 'urh', 'uri', 'urj', 'urk', 'url', 'urm', 'urn', 'uro', 'urp', 'urr', 'urt', 'uru', 'urv', 'urw', 'urx', 'ury', 'urz', 'usa', 'ush', 'usi', 'usk', 'usp', 'usu', 'uta', 'ute', 'utp', 'utr', 'utu', 'uum', 'uun', 'uur', 'uuu', 'uve', 'uvh', 'uvl', 'uwa', 'uya', 'uzn', 'uzs', 'vaa', 'vae', 'vaf', 'vag', 'vah', 'vai', 'vaj', 'val', 'vam', 'van', 'vao', 'vap', 'var', 'vas', 'vau', 'vav', 'vay', 'vbb', 'vbk', 'vec', 'ved', 'vel', 'vem', 'veo', 'vep', 'ver', 'vgr', 'vgt', 'vic', 'vid', 'vif', 'vig', 'vil', 'vin', 'vis', 'vit', 'viv', 'vka', 'vki', 'vkj', 'vkk', 'vkl', 'vkm', 'vko', 'vkp', 'vkt', 'vku', 'vlp', 'vls', 'vma', 'vmb', 'vmc', 'vmd', 'vme', 'vmf', 'vmg', 'vmh', 'vmi', 'vmj', 'vmk', 'vml', 'vmm', 'vmp', 'vmq', 'vmr', 'vms', 'vmu', 'vmv', 'vmw', 'vmx', 'vmy', 'vmz', 'vnk', 'vnm', 'vnp', 'vor', 'vot', 'vra', 'vro', 'vrs', 'vrt', 'vsi', 'vsl', 'vsv', 'vto', 'vum', 'vun', 'vut', 'vwa', 'waa', 'wab', 'wac', 'wad', 'wae', 'waf', 'wag', 'wah', 'wai', 'waj', 'wak', 'wal', 'wam', 'wan', 'wao', 'wap', 'waq', 'war', 'was', 'wat', 'wau', 'wav', 'waw', 'wax', 'way', 'waz', 'wba', 'wbb', 'wbe', 'wbf', 'wbh', 'wbi', 'wbj', 'wbk', 'wbl', 'wbm', 'wbp', 'wbq', 'wbr', 'wbs', 'wbt', 'wbv', 'wbw', 'wca', 'wci', 'wdd', 'wdg', 'wdj', 'wdk', 'wdu', 'wdy', 'wea', 'wec', 'wed', 'weg', 'weh', 'wei', 'wem', 'wen', 'weo', 'wep', 'wer', 'wes', 'wet', 'weu', 'wew', 'wfg', 'wga', 'wgb', 'wgg', 'wgi', 'wgo', 'wgu', 'wgw', 'wgy', 'wha', 'whg', 'whk', 'whu', 'wib', 'wic', 'wie', 'wif', 'wig', 'wih', 'wii', 'wij', 'wik', 'wil', 'wim', 'win', 'wir', 'wit', 'wiu', 'wiv', 'wiw', 'wiy', 'wja', 'wji', 'wka', 'wkb', 'wkd', 'wkl', 'wku', 'wkw', 'wky', 'wla', 'wlc', 'wle', 'wlg', 'wli', 'wlk', 'wll', 'wlm', 'wlo', 'wlr', 'wls', 'wlu', 'wlv', 'wlw', 'wlx', 'wly', 'wma', 'wmb', 'wmc', 'wmd', 'wme', 'wmh', 'wmi', 'wmm', 'wmn', 'wmo', 'wms', 'wmt', 'wmw', 'wmx', 'wnb', 'wnc', 'wnd', 'wne', 'wng', 'wni', 'wnk', 'wnm', 'wnn', 'wno', 'wnp', 'wnu', 'wnw', 'wny', 'woa', 'wob', 'woc', 'wod', 'woe', 'wof', 'wog', 'woi', 'wok', 'wom', 'won', 'woo', 'wor', 'wos', 'wow', 'woy', 'wpc', 'wra', 'wrb', 'wrd', 'wrg', 'wrh', 'wri', 'wrk', 'wrl', 'wrm', 'wrn', 'wro', 'wrp', 'wrr', 'wrs', 'wru', 'wrv', 'wrw', 'wrx', 'wry', 'wrz', 'wsa', 'wsg', 'wsi', 'wsk', 'wsr', 'wss', 'wsu', 'wsv', 'wtf', 'wth', 'wti', 'wtk', 'wtm', 'wtw', 'wua', 'wub', 'wud', 'wuh', 'wul', 'wum', 'wun', 'wur', 'wut', 'wuu', 'wuv', 'wux', 'wuy', 'wwa', 'wwb', 'wwo', 'wwr', 'www', 'wxa', 'wxw', 'wya', 'wyb', 'wyi', 'wym', 'wyr', 'wyy', 'xaa', 'xab', 'xac', 'xad', 'xae', 'xag', 'xai', 'xaj', 'xak', 'xal', 'xam', 'xan', 'xao', 'xap', 'xaq', 'xar', 'xas', 'xat', 'xau', 'xav', 'xaw', 'xay', 'xba', 'xbb', 'xbc', 'xbd', 'xbe', 'xbg', 'xbi', 'xbj', 'xbm', 'xbn', 'xbo', 'xbp', 'xbr', 'xbw', 'xbx', 'xby', 'xcb', 'xcc', 'xce', 'xcg', 'xch', 'xcl', 'xcm', 'xcn', 'xco', 'xcr', 'xct', 'xcu', 'xcv', 'xcw', 'xcy', 'xda', 'xdc', 'xdk', 'xdm', 'xdo', 'xdy', 'xeb', 'xed', 'xeg', 'xel', 'xem', 'xep', 'xer', 'xes', 'xet', 'xeu', 'xfa', 'xga', 'xgb', 'xgd', 'xgf', 'xgg', 'xgi', 'xgl', 'xgm', 'xgn', 'xgr', 'xgu', 'xgw', 'xha', 'xhc', 'xhd', 'xhe', 'xhr', 'xht', 'xhu', 'xhv', 'xia', 'xib', 'xii', 'xil', 'xin', 'xip', 'xir', 'xis', 'xiv', 'xiy', 'xjb', 'xjt', 'xka', 'xkb', 'xkc', 'xkd', 'xke', 'xkf', 'xkg', 'xkh', 'xki', 'xkj', 'xkk', 'xkl', 'xkn', 'xko', 'xkp', 'xkq', 'xkr', 'xks', 'xkt', 'xku', 'xkv', 'xkw', 'xkx', 'xky', 'xkz', 'xla', 'xlb', 'xlc', 'xld', 'xle', 'xlg', 'xli', 'xln', 'xlo', 'xlp', 'xls', 'xlu', 'xly', 'xma', 'xmb', 'xmc', 'xmd', 'xme', 'xmf', 'xmg', 'xmh', 'xmj', 'xmk', 'xml', 'xmm', 'xmn', 'xmo', 'xmp', 'xmq', 'xmr', 'xms', 'xmt', 'xmu', 'xmv', 'xmw', 'xmx', 'xmy', 'xmz', 'xna', 'xnb', 'xnd', 'xng', 'xnh', 'xni', 'xnk', 'xnn', 'xno', 'xnr', 'xns', 'xnt', 'xnu', 'xny', 'xnz', 'xoc', 'xod', 'xog', 'xoi', 'xok', 'xom', 'xon', 'xoo', 'xop', 'xor', 'xow', 'xpa', 'xpc', 'xpe', 'xpg', 'xpi', 'xpj', 'xpk', 'xpm', 'xpn', 'xpo', 'xpp', 'xpq', 'xpr', 'xps', 'xpt', 'xpu', 'xpy', 'xqa', 'xqt', 'xra', 'xrb', 'xrd', 'xre', 'xrg', 'xri', 'xrm', 'xrn', 'xrq', 'xrr', 'xrt', 'xru', 'xrw', 'xsa', 'xsb', 'xsc', 'xsd', 'xse', 'xsh', 'xsi', 'xsj', 'xsl', 'xsm', 'xsn', 'xso', 'xsp', 'xsq', 'xsr', 'xss', 'xsu', 'xsv', 'xsy', 'xta', 'xtb', 'xtc', 'xtd', 'xte', 'xtg', 'xth', 'xti', 'xtj', 'xtl', 'xtm', 'xtn', 'xto', 'xtp', 'xtq', 'xtr', 'xts', 'xtt', 'xtu', 'xtv', 'xtw', 'xty', 'xtz', 'xua', 'xub', 'xud', 'xug', 'xuj', 'xul', 'xum', 'xun', 'xuo', 'xup', 'xur', 'xut', 'xuu', 'xve', 'xvi', 'xvn', 'xvo', 'xvs', 'xwa', 'xwc', 'xwd', 'xwe', 'xwg', 'xwj', 'xwk', 'xwl', 'xwo', 'xwr', 'xwt', 'xww', 'xxb', 'xxk', 'xxm', 'xxr', 'xxt', 'xya', 'xyb', 'xyj', 'xyk', 'xyl', 'xyt', 'xyy', 'xzh', 'xzm', 'xzp', 'yaa', 'yab', 'yac', 'yad', 'yae', 'yaf', 'yag', 'yah', 'yai', 'yaj', 'yak', 'yal', 'yam', 'yan', 'yao', 'yap', 'yaq', 'yar', 'yas', 'yat', 'yau', 'yav', 'yaw', 'yax', 'yay', 'yaz', 'yba', 'ybb', 'ybd', 'ybe', 'ybh', 'ybi', 'ybj', 'ybk', 'ybl', 'ybm', 'ybn', 'ybo', 'ybx', 'yby', 'ych', 'ycl', 'ycn', 'ycp', 'yda', 'ydd', 'yde', 'ydg', 'ydk', 'yds', 'yea', 'yec', 'yee', 'yei', 'yej', 'yel', 'yen', 'yer', 'yes', 'yet', 'yeu', 'yev', 'yey', 'yga', 'ygi', 'ygl', 'ygm', 'ygp', 'ygr', 'ygs', 'ygu', 'ygw', 'yha', 'yhd', 'yhl', 'yhs', 'yia', 'yif', 'yig', 'yih', 'yii', 'yij', 'yik', 'yil', 'yim', 'yin', 'yip', 'yiq', 'yir', 'yis', 'yit', 'yiu', 'yiv', 'yix', 'yiy', 'yiz', 'yka', 'ykg', 'yki', 'ykk', 'ykl', 'ykm', 'ykn', 'yko', 'ykr', 'ykt', 'yku', 'yky', 'yla', 'ylb', 'yle', 'ylg', 'yli', 'yll', 'ylm', 'yln', 'ylo', 'ylr', 'ylu', 'yly', 'yma', 'ymb', 'ymc', 'ymd', 'yme', 'ymg', 'ymh', 'ymi', 'ymk', 'yml', 'ymm', 'ymn', 'ymo', 'ymp', 'ymq', 'ymr', 'yms', 'ymt', 'ymx', 'ymz', 'yna', 'ynd', 'yne', 'yng', 'ynh', 'ynk', 'ynl', 'ynn', 'yno', 'ynq', 'yns', 'ynu', 'yob', 'yog', 'yoi', 'yok', 'yol', 'yom', 'yon', 'yos', 'yot', 'yox', 'yoy', 'ypa', 'ypb', 'ypg', 'yph', 'ypk', 'ypm', 'ypn', 'ypo', 'ypp', 'ypz', 'yra', 'yrb', 'yre', 'yri', 'yrk', 'yrl', 'yrm', 'yrn', 'yro', 'yrs', 'yrw', 'yry', 'ysc', 'ysd', 'ysg', 'ysl', 'ysn', 'yso', 'ysp', 'ysr', 'yss', 'ysy', 'yta', 'ytl', 'ytp', 'ytw', 'yty', 'yua', 'yub', 'yuc', 'yud', 'yue', 'yuf', 'yug', 'yui', 'yuj', 'yuk', 'yul', 'yum', 'yun', 'yup', 'yuq', 'yur', 'yut', 'yuu', 'yuw', 'yux', 'yuy', 'yuz', 'yva', 'yvt', 'ywa', 'ywg', 'ywl', 'ywn', 'ywq', 'ywr', 'ywt', 'ywu', 'yww', 'yxa', 'yxg', 'yxl', 'yxm', 'yxu', 'yxy', 'yyr', 'yyu', 'yyz', 'yzg', 'yzk', 'zaa', 'zab', 'zac', 'zad', 'zae', 'zaf', 'zag', 'zah', 'zai', 'zaj', 'zak', 'zal', 'zam', 'zao', 'zap', 'zaq', 'zar', 'zas', 'zat', 'zau', 'zav', 'zaw', 'zax', 'zay', 'zaz', 'zbc', 'zbe', 'zbl', 'zbt', 'zbw', 'zca', 'zch', 'zdj', 'zea', 'zeg', 'zeh', 'zen', 'zga', 'zgb', 'zgh', 'zgm', 'zgn', 'zgr', 'zhb', 'zhd', 'zhi', 'zhn', 'zhw', 'zhx', 'zia', 'zib', 'zik', 'zil', 'zim', 'zin', 'zir', 'ziw', 'ziz', 'zka', 'zkb', 'zkd', 'zkg', 'zkh', 'zkk', 'zkn', 'zko', 'zkp', 'zkr', 'zkt', 'zku', 'zkv', 'zkz', 'zle', 'zlj', 'zlm', 'zln', 'zlq', 'zls', 'zlw', 'zma', 'zmb', 'zmc', 'zmd', 'zme', 'zmf', 'zmg', 'zmh', 'zmi', 'zmj', 'zmk', 'zml', 'zmm', 'zmn', 'zmo', 'zmp', 'zmq', 'zmr', 'zms', 'zmt', 'zmu', 'zmv', 'zmw', 'zmx', 'zmy', 'zmz', 'zna', 'znd', 'zne', 'zng', 'znk', 'zns', 'zoc', 'zoh', 'zom', 'zoo', 'zoq', 'zor', 'zos', 'zpa', 'zpb', 'zpc', 'zpd', 'zpe', 'zpf', 'zpg', 'zph', 'zpi', 'zpj', 'zpk', 'zpl', 'zpm', 'zpn', 'zpo', 'zpp', 'zpq', 'zpr', 'zps', 'zpt', 'zpu', 'zpv', 'zpw', 'zpx', 'zpy', 'zpz', 'zqe', 'zra', 'zrg', 'zrn', 'zro', 'zrp', 'zrs', 'zsa', 'zsk', 'zsl', 'zsm', 'zsr', 'zsu', 'zte', 'ztg', 'ztl', 'ztm', 'ztn', 'ztp', 'ztq', 'zts', 'ztt', 'ztu', 'ztx', 'zty', 'zua', 'zuh', 'zum', 'zun', 'zuy', 'zwa', 'zxx', 'zyb', 'zyg', 'zyj', 'zyn', 'zyp', 'zza', 'zzj' ];
19272    -1       axe.utils.validLangs = function() {
19273    -1         'use strict';
19274    -1         return langs;
19275    -1       };
19276 20767       return commons;
19277 20768     }()
19278 20769   });
19279 20770 })(typeof window === 'object' ? window : this);
19280    -1 }).call(this,require('_process'))
19281    -1 },{"_process":1}],14:[function(require,module,exports){
19282    -1 var currentVersion = "2.20";
   -1 20771 },{}],13:[function(require,module,exports){
   -1 20772 window.getAccNameVersion = "2.20";
19283 20773 
19284 20774 /*!
19285 20775 CalcNames: The AccName Computation Prototype, compute the Name and Description property values for a DOM node
@@ -19292,1160 +20782,1183 @@ Distributed under the terms of the Open Source Initiative OSI - MIT License
19292 20782 */
19293 20783 
19294 20784 // AccName Computation Prototype
19295    -1 var calcNames = function(node, fnc, preventVisualARIASelfCSSRef) {
19296    -1   var props = { name: "", desc: "" };
19297    -1   if (!node || node.nodeType !== 1) {
19298    -1     return props;
19299    -1   }
19300    -1   var rootNode = node;
19301    -1 
19302    -1   // Track nodes to prevent duplicate node reference parsing.
19303    -1   var nodes = [];
19304    -1   // Track aria-owns references to prevent duplicate parsing.
19305    -1   var owns = [];
19306    -1 
19307    -1   // Recursively process a DOM node to compute an accessible name in accordance with the spec
19308    -1   var walk = function(
19309    -1     refNode,
19310    -1     stop,
19311    -1     skip,
19312    -1     nodesToIgnoreValues,
19313    -1     skipAbort,
19314    -1     ownedBy
19315    -1   ) {
19316    -1     var fullResult = {
19317    -1       name: "",
19318    -1       title: ""
19319    -1     };
   -1 20785 window.getAccName = calcNames = function(
   -1 20786   node,
   -1 20787   fnc,
   -1 20788   preventVisualARIASelfCSSRef
   -1 20789 ) {
   -1 20790   var props = { name: "", desc: "", error: "" };
   -1 20791   try {
   -1 20792     if (!node || node.nodeType !== 1) {
   -1 20793       return props;
   -1 20794     }
   -1 20795     var rootNode = node;
   -1 20796 
   -1 20797     // Track nodes to prevent duplicate node reference parsing.
   -1 20798     var nodes = [];
   -1 20799     // Track aria-owns references to prevent duplicate parsing.
   -1 20800     var owns = [];
   -1 20801 
   -1 20802     // Recursively process a DOM node to compute an accessible name in accordance with the spec
   -1 20803     var walk = function(
   -1 20804       refNode,
   -1 20805       stop,
   -1 20806       skip,
   -1 20807       nodesToIgnoreValues,
   -1 20808       skipAbort,
   -1 20809       ownedBy
   -1 20810     ) {
   -1 20811       var fullResult = {
   -1 20812         name: "",
   -1 20813         title: ""
   -1 20814       };
19320 20815 
19321    -1     /*
   -1 20816       /*
19322 20817   ARIA Role Exception Rule Set 1.1
19323 20818   The following Role Exception Rule Set is based on the following ARIA Working Group discussion involving all relevant browser venders.
19324 20819   https://lists.w3.org/Archives/Public/public-aria/2017Jun/0057.html
19325 20820   */
19326    -1     var isException = function(node, refNode) {
19327    -1       if (!refNode || !node || refNode.nodeType !== 1 || node.nodeType !== 1) {
19328    -1         return false;
19329    -1       }
19330    -1 
19331    -1       var inList = function(node, list) {
19332    -1         var role = getRole(node);
19333    -1         var tag = node.nodeName.toLowerCase();
19334    -1         return (
19335    -1           (role && list.roles.indexOf(role) >= 0) ||
19336    -1           (!role && list.tags.indexOf(tag) >= 0)
19337    -1         );
19338    -1       };
19339    -1 
19340    -1       // The list3 overrides must be checked first.
19341    -1       if (inList(node, list3)) {
   -1 20821       var isException = function(node, refNode) {
19342 20822         if (
19343    -1           node === refNode &&
19344    -1           !(node.id && ownedBy[node.id] && ownedBy[node.id].node)
   -1 20823           !refNode ||
   -1 20824           !node ||
   -1 20825           refNode.nodeType !== 1 ||
   -1 20826           node.nodeType !== 1
19345 20827         ) {
19346    -1           return !isFocusable(node);
19347    -1         } else {
19348    -1           // Note: the inParent checker needs to be present to allow for embedded roles matching list3 when the referenced parent is referenced using aria-labelledby, aria-describedby, or aria-owns.
19349    -1           return !(
19350    -1             (inParent(node, ownedBy.top) &&
19351    -1               node.nodeName.toLowerCase() !== "select") ||
19352    -1             inList(refNode, list1)
19353    -1           );
   -1 20828           return false;
19354 20829         }
19355    -1       }
19356    -1       // Otherwise process list2 to identify roles to ignore processing name from content.
19357    -1       else if (
19358    -1         inList(node, list2) ||
19359    -1         (node === rootNode && !inList(node, list1))
19360    -1       ) {
19361    -1         return true;
19362    -1       } else {
19363    -1         return false;
19364    -1       }
19365    -1     };
19366 20830 
19367    -1     var inParent = function(node, parent) {
19368    -1       var trackNodes = [];
19369    -1       while (node) {
19370    -1         if (
19371    -1           node.id &&
19372    -1           ownedBy[node.id] &&
19373    -1           ownedBy[node.id].node &&
19374    -1           trackNodes.indexOf(node) === -1
   -1 20831         var inList = function(node, list) {
   -1 20832           var role = getRole(node);
   -1 20833           var tag = node.nodeName.toLowerCase();
   -1 20834           return (
   -1 20835             (role && list.roles.indexOf(role) >= 0) ||
   -1 20836             (!role && list.tags.indexOf(tag) >= 0)
   -1 20837           );
   -1 20838         };
   -1 20839 
   -1 20840         // The list3 overrides must be checked first.
   -1 20841         if (inList(node, list3)) {
   -1 20842           if (
   -1 20843             node === refNode &&
   -1 20844             !(node.id && ownedBy[node.id] && ownedBy[node.id].node)
   -1 20845           ) {
   -1 20846             return !isFocusable(node);
   -1 20847           } else {
   -1 20848             // Note: the inParent checker needs to be present to allow for embedded roles matching list3 when the referenced parent is referenced using aria-labelledby, aria-describedby, or aria-owns.
   -1 20849             return !(
   -1 20850               (inParent(node, ownedBy.top) &&
   -1 20851                 node.nodeName.toLowerCase() !== "select") ||
   -1 20852               inList(refNode, list1)
   -1 20853             );
   -1 20854           }
   -1 20855         }
   -1 20856         // Otherwise process list2 to identify roles to ignore processing name from content.
   -1 20857         else if (
   -1 20858           inList(node, list2) ||
   -1 20859           (node === rootNode && !inList(node, list1))
19375 20860         ) {
19376    -1           trackNodes.push(node);
19377    -1           node = ownedBy[node.id].node;
19378    -1         } else {
19379    -1           node = node.parentNode;
19380    -1         }
19381    -1         if (node && node === parent) {
19382 20861           return true;
19383    -1         } else if (!node || node === ownedBy.top || node === document.body) {
   -1 20862         } else {
19384 20863           return false;
19385 20864         }
19386    -1       }
19387    -1       return false;
19388    -1     };
19389    -1 
19390    -1     // Placeholder for storing CSS before and after pseudo element text values for the top level node
19391    -1     var cssOP = {
19392    -1       before: "",
19393    -1       after: ""
19394    -1     };
   -1 20865       };
19395 20866 
19396    -1     if (ownedBy.ref) {
19397    -1       if (isParentHidden(refNode, document.body, true, true)) {
19398    -1         // If referenced via aria-labelledby or aria-describedby, do not return a name or description if a parent node is hidden.
19399    -1         return fullResult;
19400    -1       } else if (isHidden(refNode, document.body)) {
19401    -1         // Otherwise, if aria-labelledby or aria-describedby reference a node that is explicitly hidden, then process all children regardless of their individual hidden states.
19402    -1         var ignoreHidden = true;
19403    -1       }
19404    -1     }
   -1 20867       var inParent = function(node, parent) {
   -1 20868         var trackNodes = [];
   -1 20869         while (node) {
   -1 20870           if (
   -1 20871             node.id &&
   -1 20872             ownedBy[node.id] &&
   -1 20873             ownedBy[node.id].node &&
   -1 20874             trackNodes.indexOf(node) === -1
   -1 20875           ) {
   -1 20876             trackNodes.push(node);
   -1 20877             node = ownedBy[node.id].node;
   -1 20878           } else {
   -1 20879             node = node.parentNode;
   -1 20880           }
   -1 20881           if (node && node === parent) {
   -1 20882             return true;
   -1 20883           } else if (!node || node === ownedBy.top || node === document.body) {
   -1 20884             return false;
   -1 20885           }
   -1 20886         }
   -1 20887         return false;
   -1 20888       };
19405 20889 
19406    -1     if (nodes.indexOf(refNode) === -1) {
19407    -1       // Store the before and after pseudo element 'content' values for the top level DOM node
19408    -1       // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
19409    -1       cssOP = getCSSText(refNode, null);
   -1 20890       // Placeholder for storing CSS before and after pseudo element text values for the top level node
   -1 20891       var cssOP = {
   -1 20892         before: "",
   -1 20893         after: ""
   -1 20894       };
19410 20895 
19411    -1       // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
19412    -1       if (preventVisualARIASelfCSSRef) {
19413    -1         if (
19414    -1           cssOP.before.indexOf(" [ARIA] ") !== -1 ||
19415    -1           cssOP.before.indexOf(" aria-") !== -1 ||
19416    -1           cssOP.before.indexOf(" accName: ") !== -1
19417    -1         )
19418    -1           cssOP.before = "";
19419    -1         if (
19420    -1           cssOP.after.indexOf(" [ARIA] ") !== -1 ||
19421    -1           cssOP.after.indexOf(" aria-") !== -1 ||
19422    -1           cssOP.after.indexOf(" accDescription: ") !== -1
19423    -1         )
19424    -1           cssOP.after = "";
   -1 20896       if (ownedBy.ref) {
   -1 20897         if (isParentHidden(refNode, document.body, true, true)) {
   -1 20898           // If referenced via aria-labelledby or aria-describedby, do not return a name or description if a parent node is hidden.
   -1 20899           return fullResult;
   -1 20900         } else if (isHidden(refNode, document.body)) {
   -1 20901           // Otherwise, if aria-labelledby or aria-describedby reference a node that is explicitly hidden, then process all children regardless of their individual hidden states.
   -1 20902           var ignoreHidden = true;
   -1 20903         }
19425 20904       }
19426    -1     }
19427 20905 
19428    -1     // Recursively apply the same naming computation to all nodes within the referenced structure
19429    -1     var walkDOM = function(node, fn, refNode) {
19430    -1       var res = {
19431    -1         name: "",
19432    -1         title: ""
19433    -1       };
19434    -1       if (!node) {
19435    -1         return res;
19436    -1       }
19437    -1       var nodeIsBlock =
19438    -1         node && node.nodeType === 1 && isBlockLevelElement(node) ? true : false;
19439    -1       var fResult = fn(node) || {};
19440    -1       if (fResult.name && fResult.name.length) {
19441    -1         res.name += fResult.name;
19442    -1       }
19443    -1       if (!isException(node, ownedBy.top, ownedBy)) {
19444    -1         node = node.firstChild;
19445    -1         while (node) {
19446    -1           res.name += walkDOM(node, fn, refNode).name;
19447    -1           node = node.nextSibling;
   -1 20906       if (nodes.indexOf(refNode) === -1) {
   -1 20907         // Store the before and after pseudo element 'content' values for the top level DOM node
   -1 20908         // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
   -1 20909         cssOP = getCSSText(refNode, null);
   -1 20910 
   -1 20911         // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
   -1 20912         if (preventVisualARIASelfCSSRef) {
   -1 20913           if (
   -1 20914             cssOP.before.indexOf(" [ARIA] ") !== -1 ||
   -1 20915             cssOP.before.indexOf(" aria-") !== -1 ||
   -1 20916             cssOP.before.indexOf(" accName: ") !== -1
   -1 20917           )
   -1 20918             cssOP.before = "";
   -1 20919           if (
   -1 20920             cssOP.after.indexOf(" [ARIA] ") !== -1 ||
   -1 20921             cssOP.after.indexOf(" aria-") !== -1 ||
   -1 20922             cssOP.after.indexOf(" accDescription: ") !== -1
   -1 20923           )
   -1 20924             cssOP.after = "";
19448 20925         }
19449 20926       }
19450    -1       res.name += fResult.owns || "";
19451    -1       if (rootNode === refNode && !trim(res.name) && trim(fResult.title)) {
19452    -1         res.name = addSpacing(fResult.title);
19453    -1       } else if (rootNode === refNode && trim(fResult.title)) {
19454    -1         res.title = addSpacing(fResult.title);
19455    -1       }
19456    -1       if (rootNode === refNode && trim(fResult.desc)) {
19457    -1         res.title = addSpacing(fResult.desc);
19458    -1       }
19459    -1       if (nodeIsBlock || fResult.isWidget) {
19460    -1         res.name = addSpacing(res.name);
19461    -1       }
19462    -1       return res;
19463    -1     };
19464 20927 
19465    -1     fullResult = walkDOM(
19466    -1       refNode,
19467    -1       function(node) {
19468    -1         var i = 0;
19469    -1         var element = null;
19470    -1         var ids = [];
19471    -1         var parts = [];
19472    -1         var result = {
   -1 20928       // Recursively apply the same naming computation to all nodes within the referenced structure
   -1 20929       var walkDOM = function(node, fn, refNode) {
   -1 20930         var res = {
19473 20931           name: "",
19474    -1           title: "",
19475    -1           owns: ""
   -1 20932           title: ""
19476 20933         };
19477    -1         var isEmbeddedNode =
19478    -1           node &&
19479    -1           node.nodeType === 1 &&
19480    -1           nodesToIgnoreValues &&
19481    -1           nodesToIgnoreValues.length &&
19482    -1           nodesToIgnoreValues.indexOf(node) !== -1 &&
19483    -1           node === rootNode &&
19484    -1           node !== refNode
   -1 20934         if (!node) {
   -1 20935           return res;
   -1 20936         }
   -1 20937         var nodeIsBlock =
   -1 20938           node && node.nodeType === 1 && isBlockLevelElement(node)
19485 20939             ? true
19486 20940             : false;
19487    -1 
19488    -1         if (
19489    -1           (skip ||
19490    -1             !node ||
19491    -1             nodes.indexOf(node) !== -1 ||
19492    -1             (!ignoreHidden && isHidden(node, ownedBy.top))) &&
19493    -1           !skipAbort &&
19494    -1           !isEmbeddedNode
19495    -1         ) {
19496    -1           // Abort if algorithm step is already completed, or if node is a hidden child of refNode, or if this node has already been processed, or skip abort if aria-labelledby self references same node.
19497    -1           return result;
19498    -1         }
19499    -1 
19500    -1         if (nodes.indexOf(node) === -1) {
19501    -1           nodes.push(node);
   -1 20941         var fResult = fn(node) || {};
   -1 20942         if (fResult.name && fResult.name.length) {
   -1 20943           res.name += fResult.name;
19502 20944         }
19503    -1 
19504    -1         // Store name for the current node.
19505    -1         var name = "";
19506    -1         // Store name from aria-owns references if detected.
19507    -1         var ariaO = "";
19508    -1         // Placeholder for storing CSS before and after pseudo element text values for the current node container element
19509    -1         var cssO = {
19510    -1           before: "",
19511    -1           after: ""
19512    -1         };
19513    -1 
19514    -1         var parent = refNode === node ? node : node.parentNode;
19515    -1         if (nodes.indexOf(parent) === -1) {
19516    -1           nodes.push(parent);
19517    -1           // Store the before and after pseudo element 'content' values for the current node container element
19518    -1           // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
19519    -1           cssO = getCSSText(parent, refNode);
19520    -1 
19521    -1           // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
19522    -1           if (preventVisualARIASelfCSSRef) {
19523    -1             if (
19524    -1               cssO.before.indexOf(" [ARIA] ") !== -1 ||
19525    -1               cssO.before.indexOf(" aria-") !== -1 ||
19526    -1               cssO.before.indexOf(" accName: ") !== -1
19527    -1             )
19528    -1               cssO.before = "";
19529    -1             if (
19530    -1               cssO.after.indexOf(" [ARIA] ") !== -1 ||
19531    -1               cssO.after.indexOf(" aria-") !== -1 ||
19532    -1               cssO.after.indexOf(" accDescription: ") !== -1
19533    -1             )
19534    -1               cssO.after = "";
   -1 20945         if (!isException(node, ownedBy.top, ownedBy)) {
   -1 20946           node = node.firstChild;
   -1 20947           while (node) {
   -1 20948             res.name += walkDOM(node, fn, refNode).name;
   -1 20949             node = node.nextSibling;
19535 20950           }
19536 20951         }
   -1 20952         res.name += fResult.owns || "";
   -1 20953         if (rootNode === refNode && !trim(res.name) && trim(fResult.title)) {
   -1 20954           res.name = addSpacing(fResult.title);
   -1 20955         } else if (rootNode === refNode && trim(fResult.title)) {
   -1 20956           res.title = addSpacing(fResult.title);
   -1 20957         }
   -1 20958         if (rootNode === refNode && trim(fResult.desc)) {
   -1 20959           res.title = addSpacing(fResult.desc);
   -1 20960         }
   -1 20961         if (nodeIsBlock || fResult.isWidget) {
   -1 20962           res.name = addSpacing(res.name);
   -1 20963         }
   -1 20964         return res;
   -1 20965       };
19537 20966 
19538    -1         // Process standard DOM element node
19539    -1         if (node.nodeType === 1) {
19540    -1           var aLabelledby = node.getAttribute("aria-labelledby") || "";
19541    -1           var aDescribedby = node.getAttribute("aria-describedby") || "";
19542    -1           var aLabel = node.getAttribute("aria-label") || "";
19543    -1           var nTitle = node.getAttribute("title") || "";
19544    -1           var nTag = node.nodeName.toLowerCase();
19545    -1           var nRole = getRole(node);
19546    -1 
19547    -1           var isNativeFormField = nativeFormFields.indexOf(nTag) !== -1;
19548    -1           var isNativeButton = ["input"].indexOf(nTag) !== -1;
19549    -1           var isRangeWidgetRole = rangeWidgetRoles.indexOf(nRole) !== -1;
19550    -1           var isEditWidgetRole = editWidgetRoles.indexOf(nRole) !== -1;
19551    -1           var isSelectWidgetRole = selectWidgetRoles.indexOf(nRole) !== -1;
19552    -1           var isSimulatedFormField =
19553    -1             isRangeWidgetRole ||
19554    -1             isEditWidgetRole ||
19555    -1             isSelectWidgetRole ||
19556    -1             nRole === "combobox";
19557    -1           var isWidgetRole =
19558    -1             (isSimulatedFormField || otherWidgetRoles.indexOf(nRole) !== -1) &&
19559    -1             nRole !== "link";
19560    -1           result.isWidget = isNativeFormField || isWidgetRole;
19561    -1 
19562    -1           var hasName = false;
19563    -1           var aOwns = node.getAttribute("aria-owns") || "";
19564    -1           var isSeparatChildFormField =
19565    -1             !isEmbeddedNode &&
19566    -1             ((node !== refNode &&
19567    -1               (isNativeFormField || isSimulatedFormField)) ||
19568    -1               (node.id &&
19569    -1                 ownedBy[node.id] &&
19570    -1                 ownedBy[node.id].target &&
19571    -1                 ownedBy[node.id].target === node))
   -1 20967       fullResult = walkDOM(
   -1 20968         refNode,
   -1 20969         function(node) {
   -1 20970           var i = 0;
   -1 20971           var element = null;
   -1 20972           var ids = [];
   -1 20973           var parts = [];
   -1 20974           var result = {
   -1 20975             name: "",
   -1 20976             title: "",
   -1 20977             owns: ""
   -1 20978           };
   -1 20979           var isEmbeddedNode =
   -1 20980             node &&
   -1 20981             node.nodeType === 1 &&
   -1 20982             nodesToIgnoreValues &&
   -1 20983             nodesToIgnoreValues.length &&
   -1 20984             nodesToIgnoreValues.indexOf(node) !== -1 &&
   -1 20985             node === rootNode &&
   -1 20986             node !== refNode
19572 20987               ? true
19573 20988               : false;
19574 20989 
19575    -1           if (!stop && node === refNode) {
19576    -1             // Check for non-empty value of aria-labelledby if current node equals reference node, follow each ID ref, then stop and process no deeper.
19577    -1             if (aLabelledby) {
19578    -1               ids = aLabelledby.split(/\s+/);
19579    -1               parts = [];
19580    -1               for (i = 0; i < ids.length; i++) {
19581    -1                 element = document.getElementById(ids[i]);
19582    -1                 // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
19583    -1                 parts.push(
19584    -1                   walk(element, true, skip, [node], element === refNode, {
19585    -1                     ref: ownedBy,
19586    -1                     top: element
19587    -1                   }).name
19588    -1                 );
19589    -1               }
19590    -1               // Check for blank value, since whitespace chars alone are not valid as a name
19591    -1               name = trim(parts.join(" "));
   -1 20990           if (
   -1 20991             (skip ||
   -1 20992               !node ||
   -1 20993               nodes.indexOf(node) !== -1 ||
   -1 20994               (!ignoreHidden && isHidden(node, ownedBy.top))) &&
   -1 20995             !skipAbort &&
   -1 20996             !isEmbeddedNode
   -1 20997           ) {
   -1 20998             // Abort if algorithm step is already completed, or if node is a hidden child of refNode, or if this node has already been processed, or skip abort if aria-labelledby self references same node.
   -1 20999             return result;
   -1 21000           }
19592 21001 
19593    -1               if (trim(name)) {
19594    -1                 hasName = true;
19595    -1                 // Abort further recursion if name is valid.
19596    -1                 skip = true;
19597    -1               }
   -1 21002           if (nodes.indexOf(node) === -1) {
   -1 21003             nodes.push(node);
   -1 21004           }
   -1 21005 
   -1 21006           // Store name for the current node.
   -1 21007           var name = "";
   -1 21008           // Store name from aria-owns references if detected.
   -1 21009           var ariaO = "";
   -1 21010           // Placeholder for storing CSS before and after pseudo element text values for the current node container element
   -1 21011           var cssO = {
   -1 21012             before: "",
   -1 21013             after: ""
   -1 21014           };
   -1 21015 
   -1 21016           var parent = refNode === node ? node : node.parentNode;
   -1 21017           if (nodes.indexOf(parent) === -1) {
   -1 21018             nodes.push(parent);
   -1 21019             // Store the before and after pseudo element 'content' values for the current node container element
   -1 21020             // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
   -1 21021             cssO = getCSSText(parent, refNode);
   -1 21022 
   -1 21023             // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
   -1 21024             if (preventVisualARIASelfCSSRef) {
   -1 21025               if (
   -1 21026                 cssO.before.indexOf(" [ARIA] ") !== -1 ||
   -1 21027                 cssO.before.indexOf(" aria-") !== -1 ||
   -1 21028                 cssO.before.indexOf(" accName: ") !== -1
   -1 21029               )
   -1 21030                 cssO.before = "";
   -1 21031               if (
   -1 21032                 cssO.after.indexOf(" [ARIA] ") !== -1 ||
   -1 21033                 cssO.after.indexOf(" aria-") !== -1 ||
   -1 21034                 cssO.after.indexOf(" accDescription: ") !== -1
   -1 21035               )
   -1 21036                 cssO.after = "";
19598 21037             }
   -1 21038           }
19599 21039 
19600    -1             // Check for non-empty value of aria-describedby if current node equals reference node, follow each ID ref, then stop and process no deeper.
19601    -1             if (aDescribedby) {
19602    -1               var desc = "";
19603    -1               ids = aDescribedby.split(/\s+/);
19604    -1               parts = [];
19605    -1               for (i = 0; i < ids.length; i++) {
19606    -1                 element = document.getElementById(ids[i]);
19607    -1                 // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
19608    -1                 parts.push(
19609    -1                   walk(element, true, false, [node], false, {
19610    -1                     ref: ownedBy,
19611    -1                     top: element
19612    -1                   }).name
19613    -1                 );
   -1 21040           // Process standard DOM element node
   -1 21041           if (node.nodeType === 1) {
   -1 21042             var aLabelledby = node.getAttribute("aria-labelledby") || "";
   -1 21043             var aDescribedby = node.getAttribute("aria-describedby") || "";
   -1 21044             var aLabel = node.getAttribute("aria-label") || "";
   -1 21045             var nTitle = node.getAttribute("title") || "";
   -1 21046             var nTag = node.nodeName.toLowerCase();
   -1 21047             var nRole = getRole(node);
   -1 21048 
   -1 21049             var isNativeFormField = nativeFormFields.indexOf(nTag) !== -1;
   -1 21050             var isNativeButton = ["input"].indexOf(nTag) !== -1;
   -1 21051             var isRangeWidgetRole = rangeWidgetRoles.indexOf(nRole) !== -1;
   -1 21052             var isEditWidgetRole = editWidgetRoles.indexOf(nRole) !== -1;
   -1 21053             var isSelectWidgetRole = selectWidgetRoles.indexOf(nRole) !== -1;
   -1 21054             var isSimulatedFormField =
   -1 21055               isRangeWidgetRole ||
   -1 21056               isEditWidgetRole ||
   -1 21057               isSelectWidgetRole ||
   -1 21058               nRole === "combobox";
   -1 21059             var isWidgetRole =
   -1 21060               (isSimulatedFormField ||
   -1 21061                 otherWidgetRoles.indexOf(nRole) !== -1) &&
   -1 21062               nRole !== "link";
   -1 21063             result.isWidget = isNativeFormField || isWidgetRole;
   -1 21064 
   -1 21065             var hasName = false;
   -1 21066             var aOwns = node.getAttribute("aria-owns") || "";
   -1 21067             var isSeparatChildFormField =
   -1 21068               !isEmbeddedNode &&
   -1 21069               ((node !== refNode &&
   -1 21070                 (isNativeFormField || isSimulatedFormField)) ||
   -1 21071                 (node.id &&
   -1 21072                   ownedBy[node.id] &&
   -1 21073                   ownedBy[node.id].target &&
   -1 21074                   ownedBy[node.id].target === node))
   -1 21075                 ? true
   -1 21076                 : false;
   -1 21077 
   -1 21078             if (!stop && node === refNode) {
   -1 21079               // Check for non-empty value of aria-labelledby if current node equals reference node, follow each ID ref, then stop and process no deeper.
   -1 21080               if (aLabelledby) {
   -1 21081                 ids = aLabelledby.split(/\s+/);
   -1 21082                 parts = [];
   -1 21083                 for (i = 0; i < ids.length; i++) {
   -1 21084                   element = document.getElementById(ids[i]);
   -1 21085                   // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
   -1 21086                   parts.push(
   -1 21087                     walk(element, true, skip, [node], element === refNode, {
   -1 21088                       ref: ownedBy,
   -1 21089                       top: element
   -1 21090                     }).name
   -1 21091                   );
   -1 21092                 }
   -1 21093                 // Check for blank value, since whitespace chars alone are not valid as a name
   -1 21094                 name = trim(parts.join(" "));
   -1 21095 
   -1 21096                 if (trim(name)) {
   -1 21097                   hasName = true;
   -1 21098                   // Abort further recursion if name is valid.
   -1 21099                   skip = true;
   -1 21100                 }
19614 21101               }
19615    -1               // Check for blank value, since whitespace chars alone are not valid as a name
19616    -1               desc = trim(parts.join(" "));
19617 21102 
19618    -1               if (trim(desc)) {
19619    -1                 result.desc = desc;
   -1 21103               // Check for non-empty value of aria-describedby if current node equals reference node, follow each ID ref, then stop and process no deeper.
   -1 21104               if (aDescribedby) {
   -1 21105                 var desc = "";
   -1 21106                 ids = aDescribedby.split(/\s+/);
   -1 21107                 parts = [];
   -1 21108                 for (i = 0; i < ids.length; i++) {
   -1 21109                   element = document.getElementById(ids[i]);
   -1 21110                   // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
   -1 21111                   parts.push(
   -1 21112                     walk(element, true, false, [node], false, {
   -1 21113                       ref: ownedBy,
   -1 21114                       top: element
   -1 21115                     }).name
   -1 21116                   );
   -1 21117                 }
   -1 21118                 // Check for blank value, since whitespace chars alone are not valid as a name
   -1 21119                 desc = trim(parts.join(" "));
   -1 21120 
   -1 21121                 if (trim(desc)) {
   -1 21122                   result.desc = desc;
   -1 21123                 }
19620 21124               }
19621 21125             }
19622    -1           }
19623 21126 
19624    -1           // Otherwise, if the current node is a nested widget control within the parent ref obj, then add only its value and process no deeper within the branch.
19625    -1           if (isSeparatChildFormField) {
19626    -1             // Prevent the referencing node from having its value included in the case of form control labels that contain the element with focus.
19627    -1             if (
19628    -1               !(
19629    -1                 nodesToIgnoreValues &&
19630    -1                 nodesToIgnoreValues.length &&
19631    -1                 nodesToIgnoreValues.indexOf(node) !== -1
19632    -1               )
19633    -1             ) {
19634    -1               if (isRangeWidgetRole) {
19635    -1                 // For range widgets, append aria-valuetext if non-empty, or aria-valuenow if non-empty, or node.value if applicable.
19636    -1                 name = getObjectValue(nRole, node, true);
19637    -1               } else if (
19638    -1                 isEditWidgetRole ||
19639    -1                 (nRole === "combobox" && isNativeFormField)
   -1 21127             // Otherwise, if the current node is a nested widget control within the parent ref obj, then add only its value and process no deeper within the branch.
   -1 21128             if (isSeparatChildFormField) {
   -1 21129               // Prevent the referencing node from having its value included in the case of form control labels that contain the element with focus.
   -1 21130               if (
   -1 21131                 !(
   -1 21132                   nodesToIgnoreValues &&
   -1 21133                   nodesToIgnoreValues.length &&
   -1 21134                   nodesToIgnoreValues.indexOf(node) !== -1
   -1 21135                 )
19640 21136               ) {
19641    -1                 // For simulated edit widgets, append text from content if applicable, or node.value if applicable.
19642    -1                 name = getObjectValue(nRole, node, false, true);
19643    -1               } else if (isSelectWidgetRole) {
19644    -1                 // For simulated select widgets, append same naming computation algorithm for all child nodes including aria-selected="true" separated by a space when multiple.
19645    -1                 // Also filter nodes so that only valid child roles of relevant parent role that include aria-selected="true" are included.
19646    -1                 name = getObjectValue(nRole, node, false, false, true);
19647    -1               } else if (
19648    -1                 isNativeFormField &&
19649    -1                 ["input", "textarea"].indexOf(nTag) !== -1 &&
19650    -1                 (!isWidgetRole || isEditWidgetRole)
19651    -1               ) {
19652    -1                 // For native edit fields, append node.value when applicable.
19653    -1                 name = getObjectValue(nRole, node, false, false, false, true);
19654    -1               } else if (
19655    -1                 isNativeFormField &&
19656    -1                 nTag === "select" &&
19657    -1                 (!isWidgetRole || nRole === "combobox")
19658    -1               ) {
19659    -1                 // For native select fields, get text from content for all options with selected attribute separated by a space when multiple, but don't process if another widget role is present unless it matches role="combobox".
19660    -1                 // Reference: https://github.com/WhatSock/w3c-alternative-text-computation/issues/7
19661    -1                 name = getObjectValue(nRole, node, false, false, true, true);
   -1 21137                 if (isRangeWidgetRole) {
   -1 21138                   // For range widgets, append aria-valuetext if non-empty, or aria-valuenow if non-empty, or node.value if applicable.
   -1 21139                   name = getObjectValue(nRole, node, true);
   -1 21140                 } else if (
   -1 21141                   isEditWidgetRole ||
   -1 21142                   (nRole === "combobox" && isNativeFormField)
   -1 21143                 ) {
   -1 21144                   // For simulated edit widgets, append text from content if applicable, or node.value if applicable.
   -1 21145                   name = getObjectValue(nRole, node, false, true);
   -1 21146                 } else if (isSelectWidgetRole) {
   -1 21147                   // For simulated select widgets, append same naming computation algorithm for all child nodes including aria-selected="true" separated by a space when multiple.
   -1 21148                   // Also filter nodes so that only valid child roles of relevant parent role that include aria-selected="true" are included.
   -1 21149                   name = getObjectValue(nRole, node, false, false, true);
   -1 21150                 } else if (
   -1 21151                   isNativeFormField &&
   -1 21152                   ["input", "textarea"].indexOf(nTag) !== -1 &&
   -1 21153                   (!isWidgetRole || isEditWidgetRole)
   -1 21154                 ) {
   -1 21155                   // For native edit fields, append node.value when applicable.
   -1 21156                   name = getObjectValue(nRole, node, false, false, false, true);
   -1 21157                 } else if (
   -1 21158                   isNativeFormField &&
   -1 21159                   nTag === "select" &&
   -1 21160                   (!isWidgetRole || nRole === "combobox")
   -1 21161                 ) {
   -1 21162                   // For native select fields, get text from content for all options with selected attribute separated by a space when multiple, but don't process if another widget role is present unless it matches role="combobox".
   -1 21163                   // Reference: https://github.com/WhatSock/w3c-alternative-text-computation/issues/7
   -1 21164                   name = getObjectValue(nRole, node, false, false, true, true);
   -1 21165                 }
   -1 21166 
   -1 21167                 // Check for blank value, since whitespace chars alone are not valid as a name
   -1 21168                 name = trim(name);
19662 21169               }
19663 21170 
19664    -1               // Check for blank value, since whitespace chars alone are not valid as a name
19665    -1               name = trim(name);
   -1 21171               if (trim(name)) {
   -1 21172                 hasName = true;
   -1 21173               }
19666 21174             }
19667 21175 
19668    -1             if (trim(name)) {
19669    -1               hasName = true;
   -1 21176             // Otherwise, if current node has a non-empty aria-label then set as name and process no deeper within the branch.
   -1 21177             if (!hasName && trim(aLabel) && !isSeparatChildFormField) {
   -1 21178               name = aLabel;
   -1 21179 
   -1 21180               // Check for blank value, since whitespace chars alone are not valid as a name
   -1 21181               if (trim(name)) {
   -1 21182                 hasName = true;
   -1 21183                 if (node === refNode) {
   -1 21184                   // If name is non-empty and both the current and refObject nodes match, then don't process any deeper within the branch.
   -1 21185                   skip = true;
   -1 21186                 }
   -1 21187               }
19670 21188             }
19671    -1           }
19672 21189 
19673    -1           // Otherwise, if current node has a non-empty aria-label then set as name and process no deeper within the branch.
19674    -1           if (!hasName && trim(aLabel) && !isSeparatChildFormField) {
19675    -1             name = aLabel;
   -1 21190             // Otherwise, if name is still empty and the current node matches the ref node and is a standard form field with a non-empty associated label element, process label with same naming computation algorithm.
   -1 21191             if (!hasName && node === refNode && isNativeFormField) {
   -1 21192               // Logic modified to match issue
   -1 21193               // https://github.com/WhatSock/w3c-alternative-text-computation/issues/12 */
   -1 21194               var labels = document.querySelectorAll("label");
   -1 21195               var implicitLabel = getParent(node, "label") || false;
   -1 21196               var explicitLabel =
   -1 21197                 node.id &&
   -1 21198                 document.querySelectorAll('label[for="' + node.id + '"]').length
   -1 21199                   ? document.querySelector('label[for="' + node.id + '"]')
   -1 21200                   : false;
   -1 21201               var implicitI = 0;
   -1 21202               var explicitI = 0;
   -1 21203               for (i = 0; i < labels.length; i++) {
   -1 21204                 if (labels[i] === implicitLabel) {
   -1 21205                   implicitI = i;
   -1 21206                 } else if (labels[i] === explicitLabel) {
   -1 21207                   explicitI = i;
   -1 21208                 }
   -1 21209               }
   -1 21210               var isImplicitFirst =
   -1 21211                 implicitLabel &&
   -1 21212                 implicitLabel.nodeType === 1 &&
   -1 21213                 explicitLabel &&
   -1 21214                 explicitLabel.nodeType === 1 &&
   -1 21215                 implicitI < explicitI
   -1 21216                   ? true
   -1 21217                   : false;
   -1 21218 
   -1 21219               if (explicitLabel) {
   -1 21220                 var eLblName = trim(
   -1 21221                   walk(explicitLabel, true, skip, [node], false, {
   -1 21222                     ref: ownedBy,
   -1 21223                     top: explicitLabel
   -1 21224                   }).name
   -1 21225                 );
   -1 21226               }
   -1 21227               if (implicitLabel && implicitLabel !== explicitLabel) {
   -1 21228                 var iLblName = trim(
   -1 21229                   walk(implicitLabel, true, skip, [node], false, {
   -1 21230                     ref: ownedBy,
   -1 21231                     top: implicitLabel
   -1 21232                   }).name
   -1 21233                 );
   -1 21234               }
19676 21235 
19677    -1             // Check for blank value, since whitespace chars alone are not valid as a name
19678    -1             if (trim(name)) {
19679    -1               hasName = true;
19680    -1               if (node === refNode) {
19681    -1                 // If name is non-empty and both the current and refObject nodes match, then don't process any deeper within the branch.
19682    -1                 skip = true;
   -1 21236               if (iLblName && eLblName && isImplicitFirst) {
   -1 21237                 name = iLblName + " " + eLblName;
   -1 21238               } else if (eLblName && iLblName) {
   -1 21239                 name = eLblName + " " + iLblName;
   -1 21240               } else if (eLblName) {
   -1 21241                 name = eLblName;
   -1 21242               } else if (iLblName) {
   -1 21243                 name = iLblName;
19683 21244               }
19684    -1             }
19685    -1           }
19686 21245 
19687    -1           // Otherwise, if name is still empty and the current node matches the ref node and is a standard form field with a non-empty associated label element, process label with same naming computation algorithm.
19688    -1           if (!hasName && node === refNode && isNativeFormField) {
19689    -1             // Logic modified to match issue
19690    -1             // https://github.com/WhatSock/w3c-alternative-text-computation/issues/12 */
19691    -1             var labels = document.querySelectorAll("label");
19692    -1             var implicitLabel = getParent(node, "label") || false;
19693    -1             var explicitLabel =
19694    -1               node.id &&
19695    -1               document.querySelectorAll('label[for="' + node.id + '"]').length
19696    -1                 ? document.querySelector('label[for="' + node.id + '"]')
19697    -1                 : false;
19698    -1             var implicitI = 0;
19699    -1             var explicitI = 0;
19700    -1             for (i = 0; i < labels.length; i++) {
19701    -1               if (labels[i] === implicitLabel) {
19702    -1                 implicitI = i;
19703    -1               } else if (labels[i] === explicitLabel) {
19704    -1                 explicitI = i;
   -1 21246               if (trim(name)) {
   -1 21247                 hasName = true;
19705 21248               }
19706 21249             }
19707    -1             var isImplicitFirst =
19708    -1               implicitLabel &&
19709    -1               implicitLabel.nodeType === 1 &&
19710    -1               explicitLabel &&
19711    -1               explicitLabel.nodeType === 1 &&
19712    -1               implicitI < explicitI
   -1 21250 
   -1 21251             // Process native form field buttons in accordance with the HTML AAM
   -1 21252             // https://w3c.github.io/html-aam/#accessible-name-and-description-computation
   -1 21253             var btnType =
   -1 21254               (isNativeButton && node.getAttribute("type")) || false;
   -1 21255             var btnValue =
   -1 21256               (btnType && trim(node.getAttribute("value"))) || false;
   -1 21257 
   -1 21258             var rolePresentation =
   -1 21259               !hasName &&
   -1 21260               nRole &&
   -1 21261               presentationRoles.indexOf(nRole) !== -1 &&
   -1 21262               !isFocusable(node) &&
   -1 21263               !hasGlobalAttr(node)
19713 21264                 ? true
19714 21265                 : false;
   -1 21266             var nAlt = rolePresentation ? "" : trim(node.getAttribute("alt"));
19715 21267 
19716    -1             if (explicitLabel) {
19717    -1               var eLblName = trim(
19718    -1                 walk(explicitLabel, true, skip, [node], false, {
19719    -1                   ref: ownedBy,
19720    -1                   top: explicitLabel
19721    -1                 }).name
19722    -1               );
19723    -1             }
19724    -1             if (implicitLabel && implicitLabel !== explicitLabel) {
19725    -1               var iLblName = trim(
19726    -1                 walk(implicitLabel, true, skip, [node], false, {
19727    -1                   ref: ownedBy,
19728    -1                   top: implicitLabel
19729    -1                 }).name
19730    -1               );
19731    -1             }
19732    -1 
19733    -1             if (iLblName && eLblName && isImplicitFirst) {
19734    -1               name = iLblName + " " + eLblName;
19735    -1             } else if (eLblName && iLblName) {
19736    -1               name = eLblName + " " + iLblName;
19737    -1             } else if (eLblName) {
19738    -1               name = eLblName;
19739    -1             } else if (iLblName) {
19740    -1               name = iLblName;
19741    -1             }
19742    -1 
19743    -1             if (trim(name)) {
19744    -1               hasName = true;
19745    -1             }
19746    -1           }
19747    -1 
19748    -1           // Process native form field buttons in accordance with the HTML AAM
19749    -1           // https://w3c.github.io/html-aam/#accessible-name-and-description-computation
19750    -1           var btnType = (isNativeButton && node.getAttribute("type")) || false;
19751    -1           var btnValue = (btnType && trim(node.getAttribute("value"))) || false;
19752    -1 
19753    -1           var rolePresentation =
19754    -1             !hasName &&
19755    -1             nRole &&
19756    -1             presentationRoles.indexOf(nRole) !== -1 &&
19757    -1             !isFocusable(node) &&
19758    -1             !hasGlobalAttr(node)
19759    -1               ? true
19760    -1               : false;
19761    -1           var nAlt = rolePresentation ? "" : trim(node.getAttribute("alt"));
19762    -1 
19763    -1           // Otherwise, if name is still empty and current node is a standard non-presentational img or image button with a non-empty alt attribute, set alt attribute value as the accessible name.
19764    -1           if (
19765    -1             !hasName &&
19766    -1             !rolePresentation &&
19767    -1             (nTag === "img" || btnType === "image") &&
19768    -1             nAlt
19769    -1           ) {
19770    -1             // Check for blank value, since whitespace chars alone are not valid as a name
19771    -1             name = trim(nAlt);
19772    -1             if (trim(name)) {
19773    -1               hasName = true;
   -1 21268             // Otherwise, if name is still empty and current node is a standard non-presentational img or image button with a non-empty alt attribute, set alt attribute value as the accessible name.
   -1 21269             if (
   -1 21270               !hasName &&
   -1 21271               !rolePresentation &&
   -1 21272               (nTag === "img" || btnType === "image") &&
   -1 21273               nAlt
   -1 21274             ) {
   -1 21275               // Check for blank value, since whitespace chars alone are not valid as a name
   -1 21276               name = trim(nAlt);
   -1 21277               if (trim(name)) {
   -1 21278                 hasName = true;
   -1 21279               }
19774 21280             }
19775    -1           }
19776 21281 
19777    -1           if (
19778    -1             !hasName &&
19779    -1             node === refNode &&
19780    -1             btnType &&
19781    -1             ["button", "image", "submit", "reset"].indexOf(btnType) !== -1
19782    -1           ) {
19783    -1             if (btnValue) {
19784    -1               name = btnValue;
19785    -1             } else {
19786    -1               switch (btnType) {
19787    -1                 case "submit":
19788    -1                 case "image":
19789    -1                   name = "Submit Query";
19790    -1                   break;
19791    -1                 case "reset":
19792    -1                   name = "Reset";
19793    -1                   break;
19794    -1                 default:
19795    -1                   name = "";
   -1 21282             if (
   -1 21283               !hasName &&
   -1 21284               node === refNode &&
   -1 21285               btnType &&
   -1 21286               ["button", "image", "submit", "reset"].indexOf(btnType) !== -1
   -1 21287             ) {
   -1 21288               if (btnValue) {
   -1 21289                 name = btnValue;
   -1 21290               } else {
   -1 21291                 switch (btnType) {
   -1 21292                   case "submit":
   -1 21293                   case "image":
   -1 21294                     name = "Submit Query";
   -1 21295                     break;
   -1 21296                   case "reset":
   -1 21297                     name = "Reset";
   -1 21298                     break;
   -1 21299                   default:
   -1 21300                     name = "";
   -1 21301                 }
   -1 21302               }
   -1 21303               if (trim(name)) {
   -1 21304                 hasName = true;
19796 21305               }
19797 21306             }
19798    -1             if (trim(name)) {
19799    -1               hasName = true;
   -1 21307 
   -1 21308             if (
   -1 21309               hasName &&
   -1 21310               node === refNode &&
   -1 21311               btnType &&
   -1 21312               ["button", "submit", "reset"].indexOf(btnType) !== -1 &&
   -1 21313               btnValue &&
   -1 21314               btnValue !== name &&
   -1 21315               !result.desc
   -1 21316             ) {
   -1 21317               result.desc = btnValue;
19800 21318             }
19801    -1           }
19802 21319 
19803    -1           if (
19804    -1             hasName &&
19805    -1             node === refNode &&
19806    -1             btnType &&
19807    -1             ["button", "submit", "reset"].indexOf(btnType) !== -1 &&
19808    -1             btnValue &&
19809    -1             btnValue !== name &&
19810    -1             !result.desc
19811    -1           ) {
19812    -1             result.desc = btnValue;
19813    -1           }
   -1 21320             // Otherwise, if current node is the same as rootNode and is non-presentational and includes a non-empty title attribute and is not a separate embedded form field, store title attribute value as the accessible name if name is still empty, or the description if not.
   -1 21321             if (
   -1 21322               node === rootNode &&
   -1 21323               !rolePresentation &&
   -1 21324               trim(nTitle) &&
   -1 21325               !isSeparatChildFormField
   -1 21326             ) {
   -1 21327               result.title = trim(nTitle);
   -1 21328             }
19814 21329 
19815    -1           // Otherwise, if current node is the same as rootNode and is non-presentational and includes a non-empty title attribute and is not a separate embedded form field, store title attribute value as the accessible name if name is still empty, or the description if not.
19816    -1           if (
19817    -1             node === rootNode &&
19818    -1             !rolePresentation &&
19819    -1             trim(nTitle) &&
19820    -1             !isSeparatChildFormField
19821    -1           ) {
19822    -1             result.title = trim(nTitle);
19823    -1           }
19824    -1 
19825    -1           // Check for non-empty value of aria-owns, follow each ID ref, then process with same naming computation.
19826    -1           // Also abort aria-owns processing if contained on an element that does not support child elements.
19827    -1           if (aOwns && !isNativeFormField && nTag !== "img") {
19828    -1             ids = aOwns.split(/\s+/);
19829    -1             parts = [];
19830    -1             for (i = 0; i < ids.length; i++) {
19831    -1               element = document.getElementById(ids[i]);
19832    -1               // Abort processing if the referenced node has already been traversed
19833    -1               if (element && owns.indexOf(ids[i]) === -1) {
19834    -1                 owns.push(ids[i]);
19835    -1                 var oBy = { ref: ownedBy, top: ownedBy.top };
19836    -1                 oBy[ids[i]] = {
19837    -1                   refNode: refNode,
19838    -1                   node: node,
19839    -1                   target: element
19840    -1                 };
19841    -1                 if (!isParentHidden(element, document.body, true)) {
19842    -1                   parts.push(walk(element, true, skip, [], false, oBy).name);
   -1 21330             // Check for non-empty value of aria-owns, follow each ID ref, then process with same naming computation.
   -1 21331             // Also abort aria-owns processing if contained on an element that does not support child elements.
   -1 21332             if (aOwns && !isNativeFormField && nTag !== "img") {
   -1 21333               ids = aOwns.split(/\s+/);
   -1 21334               parts = [];
   -1 21335               for (i = 0; i < ids.length; i++) {
   -1 21336                 element = document.getElementById(ids[i]);
   -1 21337                 // Abort processing if the referenced node has already been traversed
   -1 21338                 if (element && owns.indexOf(ids[i]) === -1) {
   -1 21339                   owns.push(ids[i]);
   -1 21340                   var oBy = { ref: ownedBy, top: ownedBy.top };
   -1 21341                   oBy[ids[i]] = {
   -1 21342                     refNode: refNode,
   -1 21343                     node: node,
   -1 21344                     target: element
   -1 21345                   };
   -1 21346                   if (!isParentHidden(element, document.body, true)) {
   -1 21347                     parts.push(walk(element, true, skip, [], false, oBy).name);
   -1 21348                   }
19843 21349                 }
19844 21350               }
   -1 21351               // Join without adding whitespace since this is already handled by parsing individual nodes within the algorithm steps.
   -1 21352               ariaO = parts.join("");
19845 21353             }
19846    -1             // Join without adding whitespace since this is already handled by parsing individual nodes within the algorithm steps.
19847    -1             ariaO = parts.join("");
19848 21354           }
19849    -1         }
19850 21355 
19851    -1         // Otherwise, process text node
19852    -1         else if (node.nodeType === 3) {
19853    -1           name = node.data;
19854    -1         }
   -1 21356           // Otherwise, process text node
   -1 21357           else if (node.nodeType === 3) {
   -1 21358             name = node.data;
   -1 21359           }
19855 21360 
19856    -1         // Prepend and append the current CSS pseudo element text, plus normalize all whitespace such as newline characters and others into flat spaces.
19857    -1         name = cssO.before + name.replace(/\s+/g, " ") + cssO.after;
   -1 21361           // Prepend and append the current CSS pseudo element text, plus normalize all whitespace such as newline characters and others into flat spaces.
   -1 21362           name = cssO.before + name.replace(/\s+/g, " ") + cssO.after;
19858 21363 
19859    -1         if (
19860    -1           name.length &&
19861    -1           !hasParentLabelOrHidden(node, ownedBy.top, ownedBy, ignoreHidden)
19862    -1         ) {
19863    -1           result.name = name;
19864    -1         }
   -1 21364           if (
   -1 21365             name.length &&
   -1 21366             !hasParentLabelOrHidden(node, ownedBy.top, ownedBy, ignoreHidden)
   -1 21367           ) {
   -1 21368             result.name = name;
   -1 21369           }
19865 21370 
19866    -1         result.owns = ariaO;
   -1 21371           result.owns = ariaO;
19867 21372 
19868    -1         return result;
19869    -1       },
19870    -1       refNode
19871    -1     );
   -1 21373           return result;
   -1 21374         },
   -1 21375         refNode
   -1 21376       );
19872 21377 
19873    -1     // Prepend and append the refObj CSS pseudo element text, plus normalize whitespace chars into flat spaces.
19874    -1     fullResult.name =
19875    -1       cssOP.before + fullResult.name.replace(/\s+/g, " ") + cssOP.after;
   -1 21378       // Prepend and append the refObj CSS pseudo element text, plus normalize whitespace chars into flat spaces.
   -1 21379       fullResult.name =
   -1 21380         cssOP.before + fullResult.name.replace(/\s+/g, " ") + cssOP.after;
19876 21381 
19877    -1     return fullResult;
19878    -1   };
   -1 21382       return fullResult;
   -1 21383     };
19879 21384 
19880    -1   var getRole = function(node) {
19881    -1     var role = node && node.getAttribute ? node.getAttribute("role") : "";
19882    -1     if (!trim(role)) {
   -1 21385     var getRole = function(node) {
   -1 21386       var role = node && node.getAttribute ? node.getAttribute("role") : "";
   -1 21387       if (!trim(role)) {
   -1 21388         return "";
   -1 21389       }
   -1 21390       var inList = function(list) {
   -1 21391         return trim(role).length > 0 && list.roles.indexOf(role) >= 0;
   -1 21392       };
   -1 21393       var roles = role.split(/\s+/);
   -1 21394       for (var i = 0; i < roles.length; i++) {
   -1 21395         role = roles[i];
   -1 21396         if (
   -1 21397           inList(list1) ||
   -1 21398           inList(list2) ||
   -1 21399           inList(list3) ||
   -1 21400           presentationRoles.indexOf(role) !== -1
   -1 21401         ) {
   -1 21402           return role;
   -1 21403         }
   -1 21404       }
19883 21405       return "";
19884    -1     }
19885    -1     var inList = function(list) {
19886    -1       return trim(role).length > 0 && list.roles.indexOf(role) >= 0;
19887 21406     };
19888    -1     var roles = role.split(/\s+/);
19889    -1     for (var i = 0; i < roles.length; i++) {
19890    -1       role = roles[i];
   -1 21407 
   -1 21408     var isFocusable = function(node) {
   -1 21409       var nodeName = node.nodeName.toLowerCase();
   -1 21410       if (node.getAttribute("tabindex")) {
   -1 21411         return true;
   -1 21412       }
   -1 21413       if (nodeName === "a" && node.getAttribute("href")) {
   -1 21414         return true;
   -1 21415       }
19891 21416       if (
19892    -1         inList(list1) ||
19893    -1         inList(list2) ||
19894    -1         inList(list3) ||
19895    -1         presentationRoles.indexOf(role) !== -1
   -1 21417         ["button", "input", "select", "textarea"].indexOf(nodeName) !== -1 &&
   -1 21418         node.getAttribute("type") !== "hidden"
19896 21419       ) {
19897    -1         return role;
   -1 21420         return true;
19898 21421       }
19899    -1     }
19900    -1     return "";
19901    -1   };
19902    -1 
19903    -1   var isFocusable = function(node) {
19904    -1     var nodeName = node.nodeName.toLowerCase();
19905    -1     if (node.getAttribute("tabindex")) {
19906    -1       return true;
19907    -1     }
19908    -1     if (nodeName === "a" && node.getAttribute("href")) {
19909    -1       return true;
19910    -1     }
19911    -1     if (
19912    -1       ["button", "input", "select", "textarea"].indexOf(nodeName) !== -1 &&
19913    -1       node.getAttribute("type") !== "hidden"
19914    -1     ) {
19915    -1       return true;
19916    -1     }
19917    -1     return false;
19918    -1   };
   -1 21422       return false;
   -1 21423     };
19919 21424 
19920    -1   // ARIA Role Exception Rule Set 1.1
19921    -1   // The following Role Exception Rule Set is based on the following ARIA Working Group discussion involving all relevant browser venders.
19922    -1   // https://lists.w3.org/Archives/Public/public-aria/2017Jun/0057.html
   -1 21425     // ARIA Role Exception Rule Set 1.1
   -1 21426     // The following Role Exception Rule Set is based on the following ARIA Working Group discussion involving all relevant browser venders.
   -1 21427     // https://lists.w3.org/Archives/Public/public-aria/2017Jun/0057.html
   -1 21428 
   -1 21429     // Always include name from content when the referenced node matches list1, as well as when child nodes match those within list3
   -1 21430     // Note: gridcell was added to list1 to account for focusable gridcells that match the ARIA 1.0 paradigm for interactive grids.
   -1 21431     var list1 = {
   -1 21432       roles: [
   -1 21433         "button",
   -1 21434         "checkbox",
   -1 21435         "link",
   -1 21436         "option",
   -1 21437         "radio",
   -1 21438         "switch",
   -1 21439         "tab",
   -1 21440         "treeitem",
   -1 21441         "menuitem",
   -1 21442         "menuitemcheckbox",
   -1 21443         "menuitemradio",
   -1 21444         "cell",
   -1 21445         "gridcell",
   -1 21446         "columnheader",
   -1 21447         "rowheader",
   -1 21448         "tooltip",
   -1 21449         "heading"
   -1 21450       ],
   -1 21451       tags: [
   -1 21452         "a",
   -1 21453         "button",
   -1 21454         "summary",
   -1 21455         "input",
   -1 21456         "h1",
   -1 21457         "h2",
   -1 21458         "h3",
   -1 21459         "h4",
   -1 21460         "h5",
   -1 21461         "h6",
   -1 21462         "menuitem",
   -1 21463         "option",
   -1 21464         "td",
   -1 21465         "th"
   -1 21466       ]
   -1 21467     };
   -1 21468     // Never include name from content when current node matches list2
   -1 21469     var list2 = {
   -1 21470       roles: [
   -1 21471         "application",
   -1 21472         "alert",
   -1 21473         "log",
   -1 21474         "marquee",
   -1 21475         "timer",
   -1 21476         "alertdialog",
   -1 21477         "dialog",
   -1 21478         "banner",
   -1 21479         "complementary",
   -1 21480         "form",
   -1 21481         "main",
   -1 21482         "navigation",
   -1 21483         "region",
   -1 21484         "search",
   -1 21485         "article",
   -1 21486         "document",
   -1 21487         "feed",
   -1 21488         "figure",
   -1 21489         "img",
   -1 21490         "math",
   -1 21491         "toolbar",
   -1 21492         "menu",
   -1 21493         "menubar",
   -1 21494         "grid",
   -1 21495         "listbox",
   -1 21496         "radiogroup",
   -1 21497         "textbox",
   -1 21498         "searchbox",
   -1 21499         "spinbutton",
   -1 21500         "scrollbar",
   -1 21501         "slider",
   -1 21502         "tablist",
   -1 21503         "tabpanel",
   -1 21504         "tree",
   -1 21505         "treegrid",
   -1 21506         "separator"
   -1 21507       ],
   -1 21508       tags: [
   -1 21509         "article",
   -1 21510         "aside",
   -1 21511         "body",
   -1 21512         "select",
   -1 21513         "datalist",
   -1 21514         "optgroup",
   -1 21515         "dialog",
   -1 21516         "figure",
   -1 21517         "footer",
   -1 21518         "form",
   -1 21519         "header",
   -1 21520         "hr",
   -1 21521         "img",
   -1 21522         "textarea",
   -1 21523         "input",
   -1 21524         "main",
   -1 21525         "math",
   -1 21526         "menu",
   -1 21527         "nav",
   -1 21528         "section"
   -1 21529       ]
   -1 21530     };
   -1 21531     // As an override of list2, conditionally include name from content if current node is focusable, or if the current node matches list3 while the referenced parent node matches list1.
   -1 21532     var list3 = {
   -1 21533       roles: [
   -1 21534         "term",
   -1 21535         "definition",
   -1 21536         "directory",
   -1 21537         "list",
   -1 21538         "group",
   -1 21539         "note",
   -1 21540         "status",
   -1 21541         "table",
   -1 21542         "rowgroup",
   -1 21543         "row",
   -1 21544         "contentinfo"
   -1 21545       ],
   -1 21546       tags: [
   -1 21547         "dl",
   -1 21548         "ul",
   -1 21549         "ol",
   -1 21550         "dd",
   -1 21551         "details",
   -1 21552         "output",
   -1 21553         "table",
   -1 21554         "thead",
   -1 21555         "tbody",
   -1 21556         "tfoot",
   -1 21557         "tr"
   -1 21558       ]
   -1 21559     };
19923 21560 
19924    -1   // Always include name from content when the referenced node matches list1, as well as when child nodes match those within list3
19925    -1   // Note: gridcell was added to list1 to account for focusable gridcells that match the ARIA 1.0 paradigm for interactive grids.
19926    -1   var list1 = {
19927    -1     roles: [
   -1 21561     var nativeFormFields = ["button", "input", "select", "textarea"];
   -1 21562     var rangeWidgetRoles = ["scrollbar", "slider", "spinbutton"];
   -1 21563     var editWidgetRoles = ["searchbox", "textbox"];
   -1 21564     var selectWidgetRoles = ["grid", "listbox", "tablist", "tree", "treegrid"];
   -1 21565     var otherWidgetRoles = [
19928 21566       "button",
19929 21567       "checkbox",
19930 21568       "link",
19931    -1       "option",
19932    -1       "radio",
19933 21569       "switch",
19934    -1       "tab",
19935    -1       "treeitem",
   -1 21570       "option",
   -1 21571       "menu",
   -1 21572       "menubar",
19936 21573       "menuitem",
19937 21574       "menuitemcheckbox",
19938 21575       "menuitemradio",
19939    -1       "cell",
19940    -1       "gridcell",
19941    -1       "columnheader",
19942    -1       "rowheader",
19943    -1       "tooltip",
19944    -1       "heading"
19945    -1     ],
19946    -1     tags: [
19947    -1       "a",
19948    -1       "button",
19949    -1       "summary",
19950    -1       "input",
   -1 21576       "radio",
   -1 21577       "tab",
   -1 21578       "treeitem",
   -1 21579       "gridcell"
   -1 21580     ];
   -1 21581     var presentationRoles = ["presentation", "none"];
   -1 21582 
   -1 21583     var hasGlobalAttr = function(node) {
   -1 21584       var globalPropsAndStates = [
   -1 21585         "busy",
   -1 21586         "controls",
   -1 21587         "current",
   -1 21588         "describedby",
   -1 21589         "details",
   -1 21590         "disabled",
   -1 21591         "dropeffect",
   -1 21592         "errormessage",
   -1 21593         "flowto",
   -1 21594         "grabbed",
   -1 21595         "haspopup",
   -1 21596         "invalid",
   -1 21597         "keyshortcuts",
   -1 21598         "live",
   -1 21599         "owns",
   -1 21600         "roledescription"
   -1 21601       ];
   -1 21602       for (var i = 0; i < globalPropsAndStates.length; i++) {
   -1 21603         var a = trim(node.getAttribute("aria-" + globalPropsAndStates[i]));
   -1 21604         if (a) {
   -1 21605           return true;
   -1 21606         }
   -1 21607       }
   -1 21608       return false;
   -1 21609     };
   -1 21610 
   -1 21611     var isHidden = function(node, refNode) {
   -1 21612       var hidden = function(node) {
   -1 21613         if (!node || node.nodeType !== 1 || node === refNode) {
   -1 21614           return false;
   -1 21615         }
   -1 21616         if (node.getAttribute("aria-hidden") === "true") {
   -1 21617           return true;
   -1 21618         }
   -1 21619         if (node.getAttribute("hidden")) {
   -1 21620           return true;
   -1 21621         }
   -1 21622         var style = getStyleObject(node);
   -1 21623         if (style["display"] === "none" || style["visibility"] === "hidden") {
   -1 21624           return true;
   -1 21625         }
   -1 21626         return false;
   -1 21627       };
   -1 21628       return hidden(node);
   -1 21629     };
   -1 21630 
   -1 21631     var isParentHidden = function(node, refNode, skipOwned, skipCurrent) {
   -1 21632       while (node && node !== refNode) {
   -1 21633         if (!skipCurrent && node.nodeType === 1 && isHidden(node, refNode)) {
   -1 21634           return true;
   -1 21635         } else skipCurrent = false;
   -1 21636         node = node.parentNode;
   -1 21637       }
   -1 21638       return false;
   -1 21639     };
   -1 21640 
   -1 21641     var getStyleObject = function(node) {
   -1 21642       var style = {};
   -1 21643       if (document.defaultView && document.defaultView.getComputedStyle) {
   -1 21644         style = document.defaultView.getComputedStyle(node, "");
   -1 21645       } else if (node.currentStyle) {
   -1 21646         style = node.currentStyle;
   -1 21647       }
   -1 21648       return style;
   -1 21649     };
   -1 21650 
   -1 21651     var cleanCSSText = function(node, text) {
   -1 21652       var s = text;
   -1 21653       if (s.indexOf("attr(") !== -1) {
   -1 21654         var m = s.match(/attr\((.|\n|\r\n)*?\)/g);
   -1 21655         for (var i = 0; i < m.length; i++) {
   -1 21656           var b = m[i].slice(5, -1);
   -1 21657           b = node.getAttribute(b) || "";
   -1 21658           s = s.replace(m[i], b);
   -1 21659         }
   -1 21660       }
   -1 21661       return s || text;
   -1 21662     };
   -1 21663 
   -1 21664     var isBlockLevelElement = function(node, cssObj) {
   -1 21665       var styleObject = cssObj || getStyleObject(node);
   -1 21666       for (var prop in blockStyles) {
   -1 21667         var values = blockStyles[prop];
   -1 21668         for (var i = 0; i < values.length; i++) {
   -1 21669           if (
   -1 21670             styleObject[prop] &&
   -1 21671             ((values[i].indexOf("!") === 0 &&
   -1 21672               [values[i].slice(1), "inherit", "initial", "unset"].indexOf(
   -1 21673                 styleObject[prop]
   -1 21674               ) === -1) ||
   -1 21675               styleObject[prop].indexOf(values[i]) !== -1)
   -1 21676           ) {
   -1 21677             return true;
   -1 21678           }
   -1 21679         }
   -1 21680       }
   -1 21681       if (
   -1 21682         !cssObj &&
   -1 21683         node.nodeName &&
   -1 21684         blockElements.indexOf(node.nodeName.toLowerCase()) !== -1
   -1 21685       ) {
   -1 21686         return true;
   -1 21687       }
   -1 21688       return false;
   -1 21689     };
   -1 21690 
   -1 21691     // CSS Block Styles indexed from:
   -1 21692     // https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
   -1 21693     var blockStyles = {
   -1 21694       display: ["block", "grid", "table", "flow-root", "flex"],
   -1 21695       position: ["absolute", "fixed"],
   -1 21696       float: ["left", "right", "inline"],
   -1 21697       clear: ["left", "right", "both", "inline"],
   -1 21698       overflow: ["hidden", "scroll", "auto"],
   -1 21699       "column-count": ["!auto"],
   -1 21700       "column-width": ["!auto"],
   -1 21701       "column-span": ["all"],
   -1 21702       contain: ["layout", "content", "strict"]
   -1 21703     };
   -1 21704 
   -1 21705     // HTML5 Block Elements indexed from:
   -1 21706     // https://github.com/webmodules/block-elements
   -1 21707     // Note: 'br' was added to this array because it impacts visual display and should thus add a space .
   -1 21708     // Reference issue: https://github.com/w3c/accname/issues/4
   -1 21709     // Note: Added in 1.13, td, th, tr, and legend
   -1 21710     var blockElements = [
   -1 21711       "address",
   -1 21712       "article",
   -1 21713       "aside",
   -1 21714       "blockquote",
   -1 21715       "br",
   -1 21716       "canvas",
   -1 21717       "dd",
   -1 21718       "div",
   -1 21719       "dl",
   -1 21720       "dt",
   -1 21721       "fieldset",
   -1 21722       "figcaption",
   -1 21723       "figure",
   -1 21724       "footer",
   -1 21725       "form",
19951 21726       "h1",
19952 21727       "h2",
19953 21728       "h3",
19954 21729       "h4",
19955 21730       "h5",
19956 21731       "h6",
19957    -1       "menuitem",
19958    -1       "option",
19959    -1       "td",
19960    -1       "th"
19961    -1     ]
19962    -1   };
19963    -1   // Never include name from content when current node matches list2
19964    -1   var list2 = {
19965    -1     roles: [
19966    -1       "application",
19967    -1       "alert",
19968    -1       "log",
19969    -1       "marquee",
19970    -1       "timer",
19971    -1       "alertdialog",
19972    -1       "dialog",
19973    -1       "banner",
19974    -1       "complementary",
19975    -1       "form",
19976    -1       "main",
19977    -1       "navigation",
19978    -1       "region",
19979    -1       "search",
19980    -1       "article",
19981    -1       "document",
19982    -1       "feed",
19983    -1       "figure",
19984    -1       "img",
19985    -1       "math",
19986    -1       "toolbar",
19987    -1       "menu",
19988    -1       "menubar",
19989    -1       "grid",
19990    -1       "listbox",
19991    -1       "radiogroup",
19992    -1       "textbox",
19993    -1       "searchbox",
19994    -1       "spinbutton",
19995    -1       "scrollbar",
19996    -1       "slider",
19997    -1       "tablist",
19998    -1       "tabpanel",
19999    -1       "tree",
20000    -1       "treegrid",
20001    -1       "separator"
20002    -1     ],
20003    -1     tags: [
20004    -1       "article",
20005    -1       "aside",
20006    -1       "body",
20007    -1       "select",
20008    -1       "datalist",
20009    -1       "optgroup",
20010    -1       "dialog",
20011    -1       "figure",
20012    -1       "footer",
20013    -1       "form",
20014 21732       "header",
   -1 21733       "hgroup",
20015 21734       "hr",
20016    -1       "img",
20017    -1       "textarea",
20018    -1       "input",
   -1 21735       "legend",
   -1 21736       "li",
20019 21737       "main",
20020    -1       "math",
20021    -1       "menu",
20022 21738       "nav",
20023    -1       "section"
20024    -1     ]
20025    -1   };
20026    -1   // As an override of list2, conditionally include name from content if current node is focusable, or if the current node matches list3 while the referenced parent node matches list1.
20027    -1   var list3 = {
20028    -1     roles: [
20029    -1       "term",
20030    -1       "definition",
20031    -1       "directory",
20032    -1       "list",
20033    -1       "group",
20034    -1       "note",
20035    -1       "status",
20036    -1       "table",
20037    -1       "rowgroup",
20038    -1       "row",
20039    -1       "contentinfo"
20040    -1     ],
20041    -1     tags: [
20042    -1       "dl",
20043    -1       "ul",
   -1 21739       "noscript",
20044 21740       "ol",
20045    -1       "dd",
20046    -1       "details",
20047 21741       "output",
   -1 21742       "p",
   -1 21743       "pre",
   -1 21744       "section",
20048 21745       "table",
20049    -1       "thead",
20050    -1       "tbody",
   -1 21746       "td",
20051 21747       "tfoot",
20052    -1       "tr"
20053    -1     ]
20054    -1   };
20055    -1 
20056    -1   var nativeFormFields = ["button", "input", "select", "textarea"];
20057    -1   var rangeWidgetRoles = ["scrollbar", "slider", "spinbutton"];
20058    -1   var editWidgetRoles = ["searchbox", "textbox"];
20059    -1   var selectWidgetRoles = ["grid", "listbox", "tablist", "tree", "treegrid"];
20060    -1   var otherWidgetRoles = [
20061    -1     "button",
20062    -1     "checkbox",
20063    -1     "link",
20064    -1     "switch",
20065    -1     "option",
20066    -1     "menu",
20067    -1     "menubar",
20068    -1     "menuitem",
20069    -1     "menuitemcheckbox",
20070    -1     "menuitemradio",
20071    -1     "radio",
20072    -1     "tab",
20073    -1     "treeitem",
20074    -1     "gridcell"
20075    -1   ];
20076    -1   var presentationRoles = ["presentation", "none"];
20077    -1 
20078    -1   var hasGlobalAttr = function(node) {
20079    -1     var globalPropsAndStates = [
20080    -1       "busy",
20081    -1       "controls",
20082    -1       "current",
20083    -1       "describedby",
20084    -1       "details",
20085    -1       "disabled",
20086    -1       "dropeffect",
20087    -1       "errormessage",
20088    -1       "flowto",
20089    -1       "grabbed",
20090    -1       "haspopup",
20091    -1       "invalid",
20092    -1       "keyshortcuts",
20093    -1       "live",
20094    -1       "owns",
20095    -1       "roledescription"
   -1 21748       "th",
   -1 21749       "tr",
   -1 21750       "ul",
   -1 21751       "video"
20096 21752     ];
20097    -1     for (var i = 0; i < globalPropsAndStates.length; i++) {
20098    -1       var a = trim(node.getAttribute("aria-" + globalPropsAndStates[i]));
20099    -1       if (a) {
20100    -1         return true;
20101    -1       }
20102    -1     }
20103    -1     return false;
20104    -1   };
20105    -1 
20106    -1   var isHidden = function(node, refNode) {
20107    -1     var hidden = function(node) {
20108    -1       if (!node || node.nodeType !== 1 || node === refNode) {
20109    -1         return false;
20110    -1       }
20111    -1       if (node.getAttribute("aria-hidden") === "true") {
20112    -1         return true;
20113    -1       }
20114    -1       if (node.getAttribute("hidden")) {
20115    -1         return true;
20116    -1       }
20117    -1       var style = getStyleObject(node);
20118    -1       if (style["display"] === "none" || style["visibility"] === "hidden") {
20119    -1         return true;
20120    -1       }
20121    -1       return false;
20122    -1     };
20123    -1     return hidden(node);
20124    -1   };
20125    -1 
20126    -1   var isParentHidden = function(node, refNode, skipOwned, skipCurrent) {
20127    -1     while (node && node !== refNode) {
20128    -1       if (!skipCurrent && node.nodeType === 1 && isHidden(node, refNode)) {
20129    -1         return true;
20130    -1       } else skipCurrent = false;
20131    -1       node = node.parentNode;
20132    -1     }
20133    -1     return false;
20134    -1   };
20135    -1 
20136    -1   var getStyleObject = function(node) {
20137    -1     var style = {};
20138    -1     if (document.defaultView && document.defaultView.getComputedStyle) {
20139    -1       style = document.defaultView.getComputedStyle(node, "");
20140    -1     } else if (node.currentStyle) {
20141    -1       style = node.currentStyle;
20142    -1     }
20143    -1     return style;
20144    -1   };
20145    -1 
20146    -1   var cleanCSSText = function(node, text) {
20147    -1     var s = text;
20148    -1     if (s.indexOf("attr(") !== -1) {
20149    -1       var m = s.match(/attr\((.|\n|\r\n)*?\)/g);
20150    -1       for (var i = 0; i < m.length; i++) {
20151    -1         var b = m[i].slice(5, -1);
20152    -1         b = node.getAttribute(b) || "";
20153    -1         s = s.replace(m[i], b);
20154    -1       }
20155    -1     }
20156    -1     return s || text;
20157    -1   };
20158 21753 
20159    -1   var isBlockLevelElement = function(node, cssObj) {
20160    -1     var styleObject = cssObj || getStyleObject(node);
20161    -1     for (var prop in blockStyles) {
20162    -1       var values = blockStyles[prop];
20163    -1       for (var i = 0; i < values.length; i++) {
20164    -1         if (
20165    -1           styleObject[prop] &&
20166    -1           ((values[i].indexOf("!") === 0 &&
20167    -1             [values[i].slice(1), "inherit", "initial", "unset"].indexOf(
20168    -1               styleObject[prop]
20169    -1             ) === -1) ||
20170    -1             styleObject[prop].indexOf(values[i]) !== -1)
20171    -1         ) {
20172    -1           return true;
20173    -1         }
20174    -1       }
20175    -1     }
20176    -1     if (
20177    -1       !cssObj &&
20178    -1       node.nodeName &&
20179    -1       blockElements.indexOf(node.nodeName.toLowerCase()) !== -1
   -1 21754     var getObjectValue = function(
   -1 21755       role,
   -1 21756       node,
   -1 21757       isRange,
   -1 21758       isEdit,
   -1 21759       isSelect,
   -1 21760       isNative
20180 21761     ) {
20181    -1       return true;
20182    -1     }
20183    -1     return false;
20184    -1   };
20185    -1 
20186    -1   // CSS Block Styles indexed from:
20187    -1   // https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
20188    -1   var blockStyles = {
20189    -1     display: ["block", "grid", "table", "flow-root", "flex"],
20190    -1     position: ["absolute", "fixed"],
20191    -1     float: ["left", "right", "inline"],
20192    -1     clear: ["left", "right", "both", "inline"],
20193    -1     overflow: ["hidden", "scroll", "auto"],
20194    -1     "column-count": ["!auto"],
20195    -1     "column-width": ["!auto"],
20196    -1     "column-span": ["all"],
20197    -1     contain: ["layout", "content", "strict"]
20198    -1   };
20199    -1 
20200    -1   // HTML5 Block Elements indexed from:
20201    -1   // https://github.com/webmodules/block-elements
20202    -1   // Note: 'br' was added to this array because it impacts visual display and should thus add a space .
20203    -1   // Reference issue: https://github.com/w3c/accname/issues/4
20204    -1   // Note: Added in 1.13, td, th, tr, and legend
20205    -1   var blockElements = [
20206    -1     "address",
20207    -1     "article",
20208    -1     "aside",
20209    -1     "blockquote",
20210    -1     "br",
20211    -1     "canvas",
20212    -1     "dd",
20213    -1     "div",
20214    -1     "dl",
20215    -1     "dt",
20216    -1     "fieldset",
20217    -1     "figcaption",
20218    -1     "figure",
20219    -1     "footer",
20220    -1     "form",
20221    -1     "h1",
20222    -1     "h2",
20223    -1     "h3",
20224    -1     "h4",
20225    -1     "h5",
20226    -1     "h6",
20227    -1     "header",
20228    -1     "hgroup",
20229    -1     "hr",
20230    -1     "legend",
20231    -1     "li",
20232    -1     "main",
20233    -1     "nav",
20234    -1     "noscript",
20235    -1     "ol",
20236    -1     "output",
20237    -1     "p",
20238    -1     "pre",
20239    -1     "section",
20240    -1     "table",
20241    -1     "td",
20242    -1     "tfoot",
20243    -1     "th",
20244    -1     "tr",
20245    -1     "ul",
20246    -1     "video"
20247    -1   ];
20248    -1 
20249    -1   var getObjectValue = function(
20250    -1     role,
20251    -1     node,
20252    -1     isRange,
20253    -1     isEdit,
20254    -1     isSelect,
20255    -1     isNative
20256    -1   ) {
20257    -1     var val = "";
20258    -1     var bypass = false;
20259    -1 
20260    -1     if (isRange && !isNative) {
20261    -1       val =
20262    -1         node.getAttribute("aria-valuetext") ||
20263    -1         node.getAttribute("aria-valuenow") ||
20264    -1         "";
20265    -1     } else if (isEdit && !isNative) {
20266    -1       val = getText(node) || "";
20267    -1     } else if (isSelect && !isNative) {
20268    -1       var childRoles = [];
20269    -1       if (role === "grid" || role === "treegrid") {
20270    -1         childRoles = ["gridcell", "rowheader", "columnheader"];
20271    -1       } else if (role === "listbox") {
20272    -1         childRoles = ["option"];
20273    -1       } else if (role === "tablist") {
20274    -1         childRoles = ["tab"];
20275    -1       } else if (role === "tree") {
20276    -1         childRoles = ["treeitem"];
20277    -1       }
20278    -1       val = joinSelectedParts(
20279    -1         node,
20280    -1         node.querySelectorAll('*[aria-selected="true"]'),
20281    -1         false,
20282    -1         childRoles
20283    -1       );
20284    -1       bypass = true;
20285    -1     }
20286    -1     val = trim(val);
20287    -1     if (!val && (isRange || isEdit) && node.value) {
20288    -1       val = node.value;
20289    -1     }
20290    -1     if (!bypass && !val && isNative) {
20291    -1       if (isSelect) {
   -1 21762       var val = "";
   -1 21763       var bypass = false;
   -1 21764 
   -1 21765       if (isRange && !isNative) {
   -1 21766         val =
   -1 21767           node.getAttribute("aria-valuetext") ||
   -1 21768           node.getAttribute("aria-valuenow") ||
   -1 21769           "";
   -1 21770       } else if (isEdit && !isNative) {
   -1 21771         val = getText(node) || "";
   -1 21772       } else if (isSelect && !isNative) {
   -1 21773         var childRoles = [];
   -1 21774         if (role === "grid" || role === "treegrid") {
   -1 21775           childRoles = ["gridcell", "rowheader", "columnheader"];
   -1 21776         } else if (role === "listbox") {
   -1 21777           childRoles = ["option"];
   -1 21778         } else if (role === "tablist") {
   -1 21779           childRoles = ["tab"];
   -1 21780         } else if (role === "tree") {
   -1 21781           childRoles = ["treeitem"];
   -1 21782         }
20292 21783         val = joinSelectedParts(
20293 21784           node,
20294    -1           node.querySelectorAll("option[selected]"),
20295    -1           true
   -1 21785           node.querySelectorAll('*[aria-selected="true"]'),
   -1 21786           false,
   -1 21787           childRoles
20296 21788         );
20297    -1       } else {
   -1 21789         bypass = true;
   -1 21790       }
   -1 21791       val = trim(val);
   -1 21792       if (!val && (isRange || isEdit) && node.value) {
20298 21793         val = node.value;
20299 21794       }
20300    -1     }
   -1 21795       if (!bypass && !val && isNative) {
   -1 21796         if (isSelect) {
   -1 21797           val = joinSelectedParts(
   -1 21798             node,
   -1 21799             node.querySelectorAll("option[selected]"),
   -1 21800             true
   -1 21801           );
   -1 21802         } else {
   -1 21803           val = node.value;
   -1 21804         }
   -1 21805       }
20301 21806 
20302    -1     return val;
20303    -1   };
   -1 21807       return val;
   -1 21808     };
20304 21809 
20305    -1   var addSpacing = function(s) {
20306    -1     return trim(s).length ? " " + s + " " : " ";
20307    -1   };
   -1 21810     var addSpacing = function(s) {
   -1 21811       return trim(s).length ? " " + s + " " : " ";
   -1 21812     };
20308 21813 
20309    -1   var joinSelectedParts = function(node, nOA, isNative, childRoles) {
20310    -1     if (!nOA || !nOA.length) {
20311    -1       return "";
20312    -1     }
20313    -1     var parts = [];
20314    -1     for (var i = 0; i < nOA.length; i++) {
20315    -1       var role = getRole(nOA[i]);
20316    -1       var isValidChildRole = !childRoles || childRoles.indexOf(role) !== -1;
20317    -1       if (isValidChildRole) {
20318    -1         parts.push(
20319    -1           isNative
20320    -1             ? getText(nOA[i])
20321    -1             : walk(nOA[i], true, false, [], false, { top: nOA[i] }).name
20322    -1         );
   -1 21814     var joinSelectedParts = function(node, nOA, isNative, childRoles) {
   -1 21815       if (!nOA || !nOA.length) {
   -1 21816         return "";
   -1 21817       }
   -1 21818       var parts = [];
   -1 21819       for (var i = 0; i < nOA.length; i++) {
   -1 21820         var role = getRole(nOA[i]);
   -1 21821         var isValidChildRole = !childRoles || childRoles.indexOf(role) !== -1;
   -1 21822         if (isValidChildRole) {
   -1 21823           parts.push(
   -1 21824             isNative
   -1 21825               ? getText(nOA[i])
   -1 21826               : walk(nOA[i], true, false, [], false, { top: nOA[i] }).name
   -1 21827           );
   -1 21828         }
20323 21829       }
20324    -1     }
20325    -1     return parts.join(" ");
20326    -1   };
   -1 21830       return parts.join(" ");
   -1 21831     };
20327 21832 
20328    -1   var getPseudoElStyleObj = function(node, position) {
20329    -1     var styleObj = {};
20330    -1     for (var prop in blockStyles) {
20331    -1       styleObj[prop] = document.defaultView
   -1 21833     var getPseudoElStyleObj = function(node, position) {
   -1 21834       var styleObj = {};
   -1 21835       for (var prop in blockStyles) {
   -1 21836         styleObj[prop] = document.defaultView
   -1 21837           .getComputedStyle(node, position)
   -1 21838           .getPropertyValue(prop);
   -1 21839       }
   -1 21840       styleObj["content"] = document.defaultView
20332 21841         .getComputedStyle(node, position)
20333    -1         .getPropertyValue(prop);
20334    -1     }
20335    -1     styleObj["content"] = document.defaultView
20336    -1       .getComputedStyle(node, position)
20337    -1       .getPropertyValue("content")
20338    -1       .replace(/^"|\\|"$/g, "");
20339    -1     return styleObj;
20340    -1   };
   -1 21842         .getPropertyValue("content")
   -1 21843         .replace(/^"|\\|"$/g, "");
   -1 21844       return styleObj;
   -1 21845     };
20341 21846 
20342    -1   var getText = function(node, position) {
20343    -1     if (!position && node.nodeType === 1) {
20344    -1       return node.innerText || node.textContent || "";
20345    -1     }
20346    -1     var styles = getPseudoElStyleObj(node, position);
20347    -1     var text = styles["content"];
20348    -1     if (!text || text === "none") {
20349    -1       return "";
20350    -1     }
20351    -1     if (isBlockLevelElement({}, styles)) {
20352    -1       if (position === ":before") {
20353    -1         text += " ";
20354    -1       } else if (position === ":after") {
20355    -1         text = " " + text;
   -1 21847     var getText = function(node, position) {
   -1 21848       if (!position && node.nodeType === 1) {
   -1 21849         return node.innerText || node.textContent || "";
20356 21850       }
20357    -1     }
20358    -1     return text;
20359    -1   };
20360    -1 
20361    -1   var getCSSText = function(node, refNode) {
20362    -1     if (
20363    -1       (node && node.nodeType !== 1) ||
20364    -1       node === refNode ||
20365    -1       ["input", "select", "textarea", "img", "iframe"].indexOf(
20366    -1         node.nodeName.toLowerCase()
20367    -1       ) !== -1
20368    -1     ) {
20369    -1       return { before: "", after: "" };
20370    -1     }
20371    -1     if (document.defaultView && document.defaultView.getComputedStyle) {
20372    -1       return {
20373    -1         before: cleanCSSText(node, getText(node, ":before")),
20374    -1         after: cleanCSSText(node, getText(node, ":after"))
20375    -1       };
20376    -1     } else {
20377    -1       return { before: "", after: "" };
20378    -1     }
20379    -1   };
20380    -1 
20381    -1   var getParent = function(node, nTag) {
20382    -1     while (node) {
20383    -1       node = node.parentNode;
20384    -1       if (node && node.nodeName && node.nodeName.toLowerCase() === nTag) {
20385    -1         return node;
   -1 21851       var styles = getPseudoElStyleObj(node, position);
   -1 21852       var text = styles["content"];
   -1 21853       if (!text || text === "none") {
   -1 21854         return "";
20386 21855       }
20387    -1     }
20388    -1     return {};
20389    -1   };
   -1 21856       if (isBlockLevelElement({}, styles)) {
   -1 21857         if (position === ":before") {
   -1 21858           text += " ";
   -1 21859         } else if (position === ":after") {
   -1 21860           text = " " + text;
   -1 21861         }
   -1 21862       }
   -1 21863       return text;
   -1 21864     };
20390 21865 
20391    -1   var hasParentLabelOrHidden = function(node, refNode, ownedBy, ignoreHidden) {
20392    -1     var trackNodes = [];
20393    -1     while (node && node !== refNode) {
   -1 21866     var getCSSText = function(node, refNode) {
20394 21867       if (
20395    -1         node.id &&
20396    -1         ownedBy &&
20397    -1         ownedBy[node.id] &&
20398    -1         ownedBy[node.id].node &&
20399    -1         trackNodes.indexOf(node) === -1
   -1 21868         (node && node.nodeType !== 1) ||
   -1 21869         node === refNode ||
   -1 21870         ["input", "select", "textarea", "img", "iframe"].indexOf(
   -1 21871           node.nodeName.toLowerCase()
   -1 21872         ) !== -1
20400 21873       ) {
20401    -1         trackNodes.push(node);
20402    -1         node = ownedBy[node.id].node;
   -1 21874         return { before: "", after: "" };
   -1 21875       }
   -1 21876       if (document.defaultView && document.defaultView.getComputedStyle) {
   -1 21877         return {
   -1 21878           before: cleanCSSText(node, getText(node, ":before")),
   -1 21879           after: cleanCSSText(node, getText(node, ":after"))
   -1 21880         };
20403 21881       } else {
   -1 21882         return { before: "", after: "" };
   -1 21883       }
   -1 21884     };
   -1 21885 
   -1 21886     var getParent = function(node, nTag) {
   -1 21887       while (node) {
20404 21888         node = node.parentNode;
   -1 21889         if (node && node.nodeName && node.nodeName.toLowerCase() === nTag) {
   -1 21890           return node;
   -1 21891         }
20405 21892       }
20406    -1       if (node && node.getAttribute) {
   -1 21893       return {};
   -1 21894     };
   -1 21895 
   -1 21896     var hasParentLabelOrHidden = function(
   -1 21897       node,
   -1 21898       refNode,
   -1 21899       ownedBy,
   -1 21900       ignoreHidden
   -1 21901     ) {
   -1 21902       var trackNodes = [];
   -1 21903       while (node && node !== refNode) {
20407 21904         if (
20408    -1           trim(node.getAttribute("aria-label")) ||
20409    -1           (!ignoreHidden && isHidden(node, refNode))
   -1 21905           node.id &&
   -1 21906           ownedBy &&
   -1 21907           ownedBy[node.id] &&
   -1 21908           ownedBy[node.id].node &&
   -1 21909           trackNodes.indexOf(node) === -1
20410 21910         ) {
20411    -1           return true;
   -1 21911           trackNodes.push(node);
   -1 21912           node = ownedBy[node.id].node;
   -1 21913         } else {
   -1 21914           node = node.parentNode;
   -1 21915         }
   -1 21916         if (node && node.getAttribute) {
   -1 21917           if (
   -1 21918             trim(node.getAttribute("aria-label")) ||
   -1 21919             (!ignoreHidden && isHidden(node, refNode))
   -1 21920           ) {
   -1 21921             return true;
   -1 21922           }
20412 21923         }
20413 21924       }
20414    -1     }
20415    -1     return false;
20416    -1   };
   -1 21925       return false;
   -1 21926     };
20417 21927 
20418    -1   var trim = function(str) {
20419    -1     if (typeof str !== "string") {
20420    -1       return "";
20421    -1     }
20422    -1     return str.replace(/^\s+|\s+$/g, "");
20423    -1   };
   -1 21928     var trim = function(str) {
   -1 21929       if (typeof str !== "string") {
   -1 21930         return "";
   -1 21931       }
   -1 21932       return str.replace(/^\s+|\s+$/g, "");
   -1 21933     };
20424 21934 
20425    -1   if (isParentHidden(node, document.body, true)) {
20426    -1     return props;
20427    -1   }
   -1 21935     if (isParentHidden(node, document.body, true)) {
   -1 21936       return props;
   -1 21937     }
20428 21938 
20429    -1   // Compute accessible Name and Description properties value for node
20430    -1   var accProps = walk(node, false, false, [], false, { top: node });
   -1 21939     // Compute accessible Name and Description properties value for node
   -1 21940     var accProps = walk(node, false, false, [], false, { top: node });
20431 21941 
20432    -1   var accName = trim(accProps.name.replace(/\s+/g, " "));
20433    -1   var accDesc = trim(accProps.title.replace(/\s+/g, " "));
   -1 21942     var accName = trim(accProps.name.replace(/\s+/g, " "));
   -1 21943     var accDesc = trim(accProps.title.replace(/\s+/g, " "));
20434 21944 
20435    -1   if (accName === accDesc) {
20436    -1     // If both Name and Description properties match, then clear the Description property value.
20437    -1     accDesc = "";
20438    -1   }
   -1 21945     if (accName === accDesc) {
   -1 21946       // If both Name and Description properties match, then clear the Description property value.
   -1 21947       accDesc = "";
   -1 21948     }
20439 21949 
20440    -1   props.name = accName;
20441    -1   props.desc = accDesc;
   -1 21950     props.name = accName;
   -1 21951     props.desc = accDesc;
20442 21952 
20443    -1   // Clear track variables
20444    -1   nodes = [];
20445    -1   owns = [];
   -1 21953     // Clear track variables
   -1 21954     nodes = [];
   -1 21955     owns = [];
   -1 21956   } catch (e) {
   -1 21957     props.error = e;
   -1 21958   }
20446 21959 
20447 21960   if (fnc && typeof fnc === "function") {
20448    -1     return fnc.apply(node, [node, props]);
   -1 21961     return fnc.apply(node, [props, node]);
20449 21962   } else {
20450 21963     return props;
20451 21964   }
@@ -20453,17 +21966,28 @@ var calcNames = function(node, fnc, preventVisualARIASelfCSSRef) {
20453 21966 
20454 21967 // Customize returned string for testable statements
20455 21968 
20456    -1 var getNames = function(node) {
   -1 21969 window.getAccNameMsg = getNames = function(node) {
20457 21970   var props = calcNames(node);
20458    -1   return (
20459    -1     'accName: "' +
20460    -1     props.name +
20461    -1     '"\n\naccDesc: "' +
20462    -1     props.desc +
20463    -1     '"\n\n(Running AccName Computation Prototype version: ' +
20464    -1     currentVersion +
20465    -1     ")"
20466    -1   );
   -1 21971   if (props.error) {
   -1 21972     return (
   -1 21973       props.error +
   -1 21974       "\n\n" +
   -1 21975       "An error has been thrown in AccName Prototype version " +
   -1 21976       window.getAccNameVersion +
   -1 21977       ". Please copy this error message and the HTML markup that caused it, and submit both as a new GitHub issue at\n" +
   -1 21978       "https://github.com/whatsock/w3c-alternative-text-computation"
   -1 21979     );
   -1 21980   } else {
   -1 21981     return (
   -1 21982       'accName: "' +
   -1 21983       props.name +
   -1 21984       '"\n\naccDesc: "' +
   -1 21985       props.desc +
   -1 21986       '"\n\n(Running AccName Computation Prototype version: ' +
   -1 21987       window.getAccNameVersion +
   -1 21988       ")"
   -1 21989     );
   -1 21990   }
20467 21991 };
20468 21992 
20469 21993 if (typeof module === "object" && module.exports) {
@@ -20473,7 +21997,7 @@ if (typeof module === "object" && module.exports) {
20473 21997   };
20474 21998 }
20475 21999 
20476    -1 },{}],15:[function(require,module,exports){
   -1 22000 },{}],14:[function(require,module,exports){
20477 22001 (function (global){
20478 22002 global.goog = {
20479 22003 	provide: function() {},
@@ -20498,7 +22022,7 @@ require('accessibility-developer-tools/src/js/Properties');
20498 22022 module.exports = global.axs;
20499 22023 
20500 22024 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20501    -1 },{"accessibility-developer-tools/src/js/AccessibilityUtils":2,"accessibility-developer-tools/src/js/BrowserUtils":3,"accessibility-developer-tools/src/js/Color":4,"accessibility-developer-tools/src/js/Constants":5,"accessibility-developer-tools/src/js/DOMUtils":6,"accessibility-developer-tools/src/js/Properties":7}],16:[function(require,module,exports){
   -1 22025 },{"accessibility-developer-tools/src/js/AccessibilityUtils":1,"accessibility-developer-tools/src/js/BrowserUtils":2,"accessibility-developer-tools/src/js/Color":3,"accessibility-developer-tools/src/js/Constants":4,"accessibility-developer-tools/src/js/DOMUtils":5,"accessibility-developer-tools/src/js/Properties":6}],15:[function(require,module,exports){
20502 22026 var ariaApi = require('aria-api');
20503 22027 var accdc = require('w3c-alternative-text-computation');
20504 22028 var axe = require('axe-core');
@@ -20517,7 +22041,7 @@ var ex = function(fn, args, _this) {
20517 22041 };
20518 22042 
20519 22043 var implementations = {
20520    -1 	'aria-api (0.2.6)': function(el) {
   -1 22044 	'aria-api (0.2.7)': function(el) {
20521 22045 		return {
20522 22046 			name: ex(ariaApi.getName, [el]),
20523 22047 			desc: ex(ariaApi.getDescription, [el]),
@@ -20525,7 +22049,7 @@ var implementations = {
20525 22049 		};
20526 22050 	},
20527 22051 	'accdc (2.20)': accdc.calcNames,
20528    -1 	'axe (3.1.2)': function(el) {
   -1 22052 	'axe (3.2.2)': function(el) {
20529 22053 		return {
20530 22054 			name: ex(function(el) {
20531 22055 				axe._tree = axe.utils.getFlattenedTree(document.body);
@@ -20599,4 +22123,4 @@ try {
20599 22123 	});
20600 22124 }
20601 22125 
20602    -1 },{"./axs":15,"aria-api":8,"axe-core":13,"w3c-alternative-text-computation":14}]},{},[16]);
   -1 22126 },{"./axs":14,"aria-api":7,"axe-core":12,"w3c-alternative-text-computation":13}]},{},[15]);

diff --git a/fuzz.js b/fuzz.js

@@ -608,8 +608,8 @@ exports.nameFromDescendant = {
  608   608 };
  609   609 
  610   610 exports.nameDefaults = {
  611    -1 	'[type="submit"]': 'Submit',
  612    -1 	'[type="reset"]': 'Reset',
   -1   611 	'input[type="submit"]': 'Submit',
   -1   612 	'input[type="reset"]': 'Reset',
  613   613 	'summary': 'Details',
  614   614 };
  615   615 
@@ -625,11 +625,21 @@ exports.labelable = [
  625   625 ];
  626   626 
  627   627 },{}],6:[function(require,module,exports){
  628    -1 var cov_2q245nv9x6=function(){var path="node_modules/aria-api/lib/name.js";var hash="5c805f0e3f5a395e829925703a8d9d82cab75605";var Function=function(){}.constructor;var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"node_modules/aria-api/lib/name.js",statementMap:{"0":{start:{line:1,column:16},end:{line:1,column:41}},"1":{start:{line:2,column:12},end:{line:2,column:33}},"2":{start:{line:3,column:11},end:{line:3,column:31}},"3":{start:{line:5,column:23},end:{line:21,column:1}},"4":{start:{line:6,column:14},end:{line:6,column:53}},"5":{start:{line:7,column:11},end:{line:7,column:45}},"6":{start:{line:8,column:14},end:{line:8,column:54}},"7":{start:{line:9,column:1},end:{line:11,column:2}},"8":{start:{line:10,column:2},end:{line:10,column:12}},"9":{start:{line:12,column:1},end:{line:20,column:2}},"10":{start:{line:13,column:2},end:{line:13,column:12}},"11":{start:{line:15,column:2},end:{line:19,column:3}},"12":{start:{line:16,column:3},end:{line:16,column:27}},"13":{start:{line:18,column:3},end:{line:18,column:39}},"14":{start:{line:23,column:17},end:{line:61,column:1}},"15":{start:{line:24,column:16},end:{line:24,column:18}},"16":{start:{line:26,column:1},end:{line:31,column:2}},"17":{start:{line:26,column:14},end:{line:26,column:15}},"18":{start:{line:27,column:13},end:{line:27,column:31}},"19":{start:{line:28,column:2},end:{line:30,column:3}},"20":{start:{line:29,column:3},end:{line:29,column:23}},"21":{start:{line:33,column:12},end:{line:33,column:50}},"22":{start:{line:34,column:1},end:{line:40,column:2}},"23":{start:{line:34,column:14},end:{line:34,column:15}},"24":{start:{line:35,column:14},end:{line:35,column:46}},"25":{start:{line:36,column:2},end:{line:39,column:3}},"26":{start:{line:37,column:3},end:{line:37,column:24}},"27":{start:{line:38,column:3},end:{line:38,column:24}},"28":{start:{line:42,column:11},end:{line:42,column:13}},"29":{start:{line:43,column:1},end:{line:58,column:2}},"30":{start:{line:43,column:14},end:{line:43,column:15}},"31":{start:{line:44,column:13},end:{line:44,column:24}},"32":{start:{line:45,column:2},end:{line:57,column:3}},"33":{start:{line:46,column:3},end:{line:46,column:27}},"34":{start:{line:47,column:9},end:{line:57,column:3}},"35":{start:{line:48,column:3},end:{line:56,column:4}},"36":{start:{line:49,column:4},end:{line:49,column:16}},"37":{start:{line:50,column:10},end:{line:56,column:4}},"38":{start:{line:53,column:4},end:{line:53,column:50}},"39":{start:{line:55,column:4},end:{line:55,column:62}},"40":{start:{line:60,column:1},end:{line:60,column:12}},"41":{start:{line:63,column:27},end:{line:66,column:1}},"42":{start:{line:64,column:12},end:{line:64,column:29}},"43":{start:{line:65,column:1},end:{line:65,column:65}},"44":{start:{line:68,column:18},end:{line:71,column:1}},"45":{start:{line:69,column:16},end:{line:69,column:45}},"46":{start:{line:70,column:1},end:{line:70,column:29}},"47":{start:{line:74,column:20},end:{line:89,column:1}},"48":{start:{line:75,column:14},end:{line:75,column:16}},"49":{start:{line:76,column:17},end:{line:76,column:46}},"50":{start:{line:77,column:1},end:{line:87,column:4}},"51":{start:{line:78,column:2},end:{line:86,column:3}},"52":{start:{line:79,column:3},end:{line:85,column:4}},"53":{start:{line:80,column:4},end:{line:82,column:5}},"54":{start:{line:81,column:5},end:{line:81,column:23}},"55":{start:{line:83,column:10},end:{line:85,column:4}},"56":{start:{line:84,column:4},end:{line:84,column:22}},"57":{start:{line:88,column:1},end:{line:88,column:15}},"58":{start:{line:93,column:14},end:{line:170,column:1}},"59":{start:{line:94,column:11},end:{line:94,column:13}},"60":{start:{line:95,column:13},end:{line:95,column:24}},"61":{start:{line:97,column:1},end:{line:99,column:2}},"62":{start:{line:98,column:2},end:{line:98,column:12}},"63":{start:{line:100,column:1},end:{line:107,column:2}},"64":{start:{line:101,column:12},end:{line:101,column:59}},"65":{start:{line:102,column:16},end:{line:105,column:4}},"66":{start:{line:103,column:15},end:{line:103,column:42}},"67":{start:{line:104,column:3},end:{line:104,column:58}},"68":{start:{line:106,column:2},end:{line:106,column:26}},"69":{start:{line:108,column:1},end:{line:110,column:2}},"70":{start:{line:109,column:2},end:{line:109,column:38}},"71":{start:{line:111,column:1},end:{line:113,column:2}},"72":{start:{line:112,column:2},end:{line:112,column:43}},"73":{start:{line:114,column:1},end:{line:119,column:2}},"74":{start:{line:115,column:16},end:{line:117,column:4}},"75":{start:{line:116,column:3},end:{line:116,column:45}},"76":{start:{line:118,column:2},end:{line:118,column:26}},"77":{start:{line:120,column:1},end:{line:122,column:2}},"78":{start:{line:121,column:2},end:{line:121,column:29}},"79":{start:{line:123,column:1},end:{line:125,column:2}},"80":{start:{line:124,column:2},end:{line:124,column:21}},"81":{start:{line:126,column:1},end:{line:128,column:2}},"82":{start:{line:127,column:2},end:{line:127,column:17}},"83":{start:{line:129,column:1},end:{line:138,column:2}},"84":{start:{line:130,column:2},end:{line:137,column:3}},"85":{start:{line:131,column:3},end:{line:136,column:4}},"86":{start:{line:132,column:21},end:{line:132,column:77}},"87":{start:{line:133,column:4},end:{line:135,column:5}},"88":{start:{line:134,column:5},end:{line:134,column:56}},"89":{start:{line:139,column:1},end:{line:152,column:2}},"90":{start:{line:140,column:2},end:{line:151,column:3}},"91":{start:{line:141,column:3},end:{line:150,column:4}},"92":{start:{line:142,column:4},end:{line:142,column:37}},"93":{start:{line:143,column:10},end:{line:150,column:4}},"94":{start:{line:144,column:19},end:{line:144,column:92}},"95":{start:{line:145,column:4},end:{line:147,column:5}},"96":{start:{line:146,column:5},end:{line:146,column:59}},"97":{start:{line:148,column:10},end:{line:150,column:4}},"98":{start:{line:149,column:4},end:{line:149,column:103}},"99":{start:{line:153,column:1},end:{line:155,column:2}},"100":{start:{line:154,column:2},end:{line:154,column:42}},"101":{start:{line:156,column:1},end:{line:162,column:2}},"102":{start:{line:157,column:2},end:{line:161,column:3}},"103":{start:{line:158,column:3},end:{line:160,column:4}},"104":{start:{line:159,column:4},end:{line:159,column:43}},"105":{start:{line:163,column:1},end:{line:165,column:2}},"106":{start:{line:164,column:2},end:{line:164,column:23}},"107":{start:{line:167,column:14},end:{line:167,column:45}},"108":{start:{line:168,column:13},end:{line:168,column:43}},"109":{start:{line:169,column:1},end:{line:169,column:29}},"110":{start:{line:172,column:21},end:{line:174,column:1}},"111":{start:{line:173,column:1},end:{line:173,column:48}},"112":{start:{line:176,column:21},end:{line:200,column:1}},"113":{start:{line:177,column:11},end:{line:177,column:13}},"114":{start:{line:178,column:13},end:{line:178,column:15}},"115":{start:{line:180,column:1},end:{line:191,column:2}},"116":{start:{line:181,column:12},end:{line:181,column:60}},"117":{start:{line:182,column:16},end:{line:185,column:4}},"118":{start:{line:183,column:15},end:{line:183,column:42}},"119":{start:{line:184,column:3},end:{line:184,column:58}},"120":{start:{line:186,column:2},end:{line:186,column:26}},"121":{start:{line:187,column:8},end:{line:191,column:2}},"122":{start:{line:188,column:2},end:{line:188,column:17}},"123":{start:{line:189,column:8},end:{line:191,column:2}},"124":{start:{line:190,column:2},end:{line:190,column:23}},"125":{start:{line:193,column:1},end:{line:193,column:47}},"126":{start:{line:195,column:1},end:{line:197,column:2}},"127":{start:{line:196,column:2},end:{line:196,column:11}},"128":{start:{line:199,column:1},end:{line:199,column:12}},"129":{start:{line:202,column:0},end:{line:205,column:2}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:5,column:23},end:{line:5,column:24}},loc:{start:{line:5,column:48},end:{line:21,column:1}},line:5},"1":{name:"(anonymous_1)",decl:{start:{line:23,column:17},end:{line:23,column:18}},loc:{start:{line:23,column:51},end:{line:61,column:1}},line:23},"2":{name:"(anonymous_2)",decl:{start:{line:63,column:27},end:{line:63,column:28}},loc:{start:{line:63,column:40},end:{line:66,column:1}},line:63},"3":{name:"(anonymous_3)",decl:{start:{line:68,column:18},end:{line:68,column:19}},loc:{start:{line:68,column:31},end:{line:71,column:1}},line:68},"4":{name:"(anonymous_4)",decl:{start:{line:74,column:20},end:{line:74,column:21}},loc:{start:{line:74,column:38},end:{line:89,column:1}},line:74},"5":{name:"(anonymous_5)",decl:{start:{line:77,column:29},end:{line:77,column:30}},loc:{start:{line:77,column:44},end:{line:87,column:2}},line:77},"6":{name:"(anonymous_6)",decl:{start:{line:93,column:14},end:{line:93,column:15}},loc:{start:{line:93,column:57},end:{line:170,column:1}},line:93},"7":{name:"(anonymous_7)",decl:{start:{line:102,column:24},end:{line:102,column:25}},loc:{start:{line:102,column:37},end:{line:105,column:3}},line:102},"8":{name:"(anonymous_8)",decl:{start:{line:115,column:38},end:{line:115,column:39}},loc:{start:{line:115,column:54},end:{line:117,column:3}},line:115},"9":{name:"(anonymous_9)",decl:{start:{line:172,column:21},end:{line:172,column:22}},loc:{start:{line:172,column:34},end:{line:174,column:1}},line:172},"10":{name:"(anonymous_10)",decl:{start:{line:176,column:21},end:{line:176,column:22}},loc:{start:{line:176,column:34},end:{line:200,column:1}},line:176},"11":{name:"(anonymous_11)",decl:{start:{line:182,column:24},end:{line:182,column:25}},loc:{start:{line:182,column:37},end:{line:185,column:3}},line:182}},branchMap:{"0":{loc:{start:{line:9,column:1},end:{line:11,column:2}},type:"if",locations:[{start:{line:9,column:1},end:{line:11,column:2}},{start:{line:9,column:1},end:{line:11,column:2}}],line:9},"1":{loc:{start:{line:12,column:1},end:{line:20,column:2}},type:"if",locations:[{start:{line:12,column:1},end:{line:20,column:2}},{start:{line:12,column:1},end:{line:20,column:2}}],line:12},"2":{loc:{start:{line:15,column:2},end:{line:19,column:3}},type:"if",locations:[{start:{line:15,column:2},end:{line:19,column:3}},{start:{line:15,column:2},end:{line:19,column:3}}],line:15},"3":{loc:{start:{line:28,column:2},end:{line:30,column:3}},type:"if",locations:[{start:{line:28,column:2},end:{line:30,column:3}},{start:{line:28,column:2},end:{line:30,column:3}}],line:28},"4":{loc:{start:{line:28,column:6},end:{line:28,column:75}},type:"binary-expr",locations:[{start:{line:28,column:6},end:{line:28,column:14}},{start:{line:28,column:18},end:{line:28,column:75}}],line:28},"5":{loc:{start:{line:33,column:12},end:{line:33,column:50}},type:"binary-expr",locations:[{start:{line:33,column:12},end:{line:33,column:44}},{start:{line:33,column:48},end:{line:33,column:50}}],line:33},"6":{loc:{start:{line:36,column:2},end:{line:39,column:3}},type:"if",locations:[{start:{line:36,column:2},end:{line:39,column:3}},{start:{line:36,column:2},end:{line:39,column:3}}],line:36},"7":{loc:{start:{line:36,column:6},end:{line:36,column:63}},type:"binary-expr",locations:[{start:{line:36,column:6},end:{line:36,column:11}},{start:{line:36,column:15},end:{line:36,column:29}},{start:{line:36,column:33},end:{line:36,column:63}}],line:36},"8":{loc:{start:{line:45,column:2},end:{line:57,column:3}},type:"if",locations:[{start:{line:45,column:2},end:{line:57,column:3}},{start:{line:45,column:2},end:{line:57,column:3}}],line:45},"9":{loc:{start:{line:47,column:9},end:{line:57,column:3}},type:"if",locations:[{start:{line:47,column:9},end:{line:57,column:3}},{start:{line:47,column:9},end:{line:57,column:3}}],line:47},"10":{loc:{start:{line:48,column:3},end:{line:56,column:4}},type:"if",locations:[{start:{line:48,column:3},end:{line:56,column:4}},{start:{line:48,column:3},end:{line:56,column:4}}],line:48},"11":{loc:{start:{line:50,column:10},end:{line:56,column:4}},type:"if",locations:[{start:{line:50,column:10},end:{line:56,column:4}},{start:{line:50,column:10},end:{line:56,column:4}}],line:50},"12":{loc:{start:{line:50,column:14},end:{line:52,column:41}},type:"binary-expr",locations:[{start:{line:50,column:14},end:{line:50,column:77}},{start:{line:51,column:5},end:{line:51,column:43}},{start:{line:52,column:5},end:{line:52,column:41}}],line:50},"13":{loc:{start:{line:65,column:8},end:{line:65,column:64}},type:"binary-expr",locations:[{start:{line:65,column:8},end:{line:65,column:13}},{start:{line:65,column:17},end:{line:65,column:64}}],line:65},"14":{loc:{start:{line:78,column:2},end:{line:86,column:3}},type:"if",locations:[{start:{line:78,column:2},end:{line:86,column:3}},{start:{line:78,column:2},end:{line:86,column:3}}],line:78},"15":{loc:{start:{line:78,column:6},end:{line:78,column:60}},type:"binary-expr",locations:[{start:{line:78,column:6},end:{line:78,column:18}},{start:{line:78,column:22},end:{line:78,column:60}}],line:78},"16":{loc:{start:{line:79,column:3},end:{line:85,column:4}},type:"if",locations:[{start:{line:79,column:3},end:{line:85,column:4}},{start:{line:79,column:3},end:{line:85,column:4}}],line:79},"17":{loc:{start:{line:80,column:4},end:{line:82,column:5}},type:"if",locations:[{start:{line:80,column:4},end:{line:82,column:5}},{start:{line:80,column:4},end:{line:82,column:5}}],line:80},"18":{loc:{start:{line:80,column:8},end:{line:80,column:61}},type:"binary-expr",locations:[{start:{line:80,column:8},end:{line:80,column:18}},{start:{line:80,column:22},end:{line:80,column:61}}],line:80},"19":{loc:{start:{line:83,column:10},end:{line:85,column:4}},type:"if",locations:[{start:{line:83,column:10},end:{line:85,column:4}},{start:{line:83,column:10},end:{line:85,column:4}}],line:83},"20":{loc:{start:{line:95,column:13},end:{line:95,column:24}},type:"binary-expr",locations:[{start:{line:95,column:13},end:{line:95,column:18}},{start:{line:95,column:22},end:{line:95,column:24}}],line:95},"21":{loc:{start:{line:97,column:1},end:{line:99,column:2}},type:"if",locations:[{start:{line:97,column:1},end:{line:99,column:2}},{start:{line:97,column:1},end:{line:99,column:2}}],line:97},"22":{loc:{start:{line:100,column:1},end:{line:107,column:2}},type:"if",locations:[{start:{line:100,column:1},end:{line:107,column:2}},{start:{line:100,column:1},end:{line:107,column:2}}],line:100},"23":{loc:{start:{line:100,column:5},end:{line:100,column:50}},type:"binary-expr",locations:[{start:{line:100,column:5},end:{line:100,column:15}},{start:{line:100,column:19},end:{line:100,column:50}}],line:100},"24":{loc:{start:{line:104,column:10},end:{line:104,column:57}},type:"cond-expr",locations:[{start:{line:104,column:18},end:{line:104,column:52}},{start:{line:104,column:55},end:{line:104,column:57}}],line:104},"25":{loc:{start:{line:108,column:1},end:{line:110,column:2}},type:"if",locations:[{start:{line:108,column:1},end:{line:110,column:2}},{start:{line:108,column:1},end:{line:110,column:2}}],line:108},"26":{loc:{start:{line:108,column:5},end:{line:108,column:46}},type:"binary-expr",locations:[{start:{line:108,column:5},end:{line:108,column:16}},{start:{line:108,column:20},end:{line:108,column:46}}],line:108},"27":{loc:{start:{line:111,column:1},end:{line:113,column:2}},type:"if",locations:[{start:{line:111,column:1},end:{line:113,column:2}},{start:{line:111,column:1},end:{line:113,column:2}}],line:111},"28":{loc:{start:{line:111,column:5},end:{line:111,column:53}},type:"binary-expr",locations:[{start:{line:111,column:5},end:{line:111,column:16}},{start:{line:111,column:20},end:{line:111,column:53}}],line:111},"29":{loc:{start:{line:114,column:1},end:{line:119,column:2}},type:"if",locations:[{start:{line:114,column:1},end:{line:119,column:2}},{start:{line:114,column:1},end:{line:119,column:2}}],line:114},"30":{loc:{start:{line:114,column:5},end:{line:114,column:42}},type:"binary-expr",locations:[{start:{line:114,column:5},end:{line:114,column:9}},{start:{line:114,column:13},end:{line:114,column:23}},{start:{line:114,column:27},end:{line:114,column:42}}],line:114},"31":{loc:{start:{line:120,column:1},end:{line:122,column:2}},type:"if",locations:[{start:{line:120,column:1},end:{line:122,column:2}},{start:{line:120,column:1},end:{line:122,column:2}}],line:120},"32":{loc:{start:{line:121,column:8},end:{line:121,column:28}},type:"binary-expr",locations:[{start:{line:121,column:8},end:{line:121,column:22}},{start:{line:121,column:26},end:{line:121,column:28}}],line:121},"33":{loc:{start:{line:123,column:1},end:{line:125,column:2}},type:"if",locations:[{start:{line:123,column:1},end:{line:125,column:2}},{start:{line:123,column:1},end:{line:125,column:2}}],line:123},"34":{loc:{start:{line:124,column:8},end:{line:124,column:20}},type:"binary-expr",locations:[{start:{line:124,column:8},end:{line:124,column:14}},{start:{line:124,column:18},end:{line:124,column:20}}],line:124},"35":{loc:{start:{line:126,column:1},end:{line:128,column:2}},type:"if",locations:[{start:{line:126,column:1},end:{line:128,column:2}},{start:{line:126,column:1},end:{line:128,column:2}}],line:126},"36":{loc:{start:{line:126,column:5},end:{line:126,column:58}},type:"binary-expr",locations:[{start:{line:126,column:5},end:{line:126,column:16}},{start:{line:126,column:20},end:{line:126,column:46}},{start:{line:126,column:50},end:{line:126,column:58}}],line:126},"37":{loc:{start:{line:129,column:1},end:{line:138,column:2}},type:"if",locations:[{start:{line:129,column:1},end:{line:138,column:2}},{start:{line:129,column:1},end:{line:138,column:2}}],line:129},"38":{loc:{start:{line:131,column:3},end:{line:136,column:4}},type:"if",locations:[{start:{line:131,column:3},end:{line:136,column:4}},{start:{line:131,column:3},end:{line:136,column:4}}],line:131},"39":{loc:{start:{line:133,column:4},end:{line:135,column:5}},type:"if",locations:[{start:{line:133,column:4},end:{line:135,column:5}},{start:{line:133,column:4},end:{line:135,column:5}}],line:133},"40":{loc:{start:{line:139,column:1},end:{line:152,column:2}},type:"if",locations:[{start:{line:139,column:1},end:{line:152,column:2}},{start:{line:139,column:1},end:{line:152,column:2}}],line:139},"41":{loc:{start:{line:139,column:5},end:{line:139,column:68}},type:"binary-expr",locations:[{start:{line:139,column:5},end:{line:139,column:24}},{start:{line:139,column:28},end:{line:139,column:37}},{start:{line:139,column:41},end:{line:139,column:68}}],line:139},"42":{loc:{start:{line:140,column:2},end:{line:151,column:3}},type:"if",locations:[{start:{line:140,column:2},end:{line:151,column:3}},{start:{line:140,column:2},end:{line:151,column:3}}],line:140},"43":{loc:{start:{line:140,column:6},end:{line:140,column:79}},type:"binary-expr",locations:[{start:{line:140,column:6},end:{line:140,column:17}},{start:{line:140,column:21},end:{line:140,column:79}}],line:140},"44":{loc:{start:{line:141,column:3},end:{line:150,column:4}},type:"if",locations:[{start:{line:141,column:3},end:{line:150,column:4}},{start:{line:141,column:3},end:{line:150,column:4}}],line:141},"45":{loc:{start:{line:142,column:10},end:{line:142,column:36}},type:"binary-expr",locations:[{start:{line:142,column:10},end:{line:142,column:18}},{start:{line:142,column:22},end:{line:142,column:36}}],line:142},"46":{loc:{start:{line:143,column:10},end:{line:150,column:4}},type:"if",locations:[{start:{line:143,column:10},end:{line:150,column:4}},{start:{line:143,column:10},end:{line:150,column:4}}],line:143},"47":{loc:{start:{line:144,column:19},end:{line:144,column:92}},type:"binary-expr",locations:[{start:{line:144,column:19},end:{line:144,column:55}},{start:{line:144,column:59},end:{line:144,column:92}}],line:144},"48":{loc:{start:{line:145,column:4},end:{line:147,column:5}},type:"if",locations:[{start:{line:145,column:4},end:{line:147,column:5}},{start:{line:145,column:4},end:{line:147,column:5}}],line:145},"49":{loc:{start:{line:148,column:10},end:{line:150,column:4}},type:"if",locations:[{start:{line:148,column:10},end:{line:150,column:4}},{start:{line:148,column:10},end:{line:150,column:4}}],line:148},"50":{loc:{start:{line:149,column:16},end:{line:149,column:101}},type:"binary-expr",locations:[{start:{line:149,column:16},end:{line:149,column:51}},{start:{line:149,column:55},end:{line:149,column:89}},{start:{line:149,column:93},end:{line:149,column:101}}],line:149},"51":{loc:{start:{line:153,column:1},end:{line:155,column:2}},type:"if",locations:[{start:{line:153,column:1},end:{line:155,column:2}},{start:{line:153,column:1},end:{line:155,column:2}}],line:153},"52":{loc:{start:{line:153,column:5},end:{line:153,column:89}},type:"binary-expr",locations:[{start:{line:153,column:5},end:{line:153,column:16}},{start:{line:153,column:21},end:{line:153,column:30}},{start:{line:153,column:34},end:{line:153,column:58}},{start:{line:153,column:63},end:{line:153,column:89}}],line:153},"53":{loc:{start:{line:156,column:1},end:{line:162,column:2}},type:"if",locations:[{start:{line:156,column:1},end:{line:162,column:2}},{start:{line:156,column:1},end:{line:162,column:2}}],line:156},"54":{loc:{start:{line:158,column:3},end:{line:160,column:4}},type:"if",locations:[{start:{line:158,column:3},end:{line:160,column:4}},{start:{line:158,column:3},end:{line:160,column:4}}],line:158},"55":{loc:{start:{line:163,column:1},end:{line:165,column:2}},type:"if",locations:[{start:{line:163,column:1},end:{line:165,column:2}},{start:{line:163,column:1},end:{line:165,column:2}}],line:163},"56":{loc:{start:{line:164,column:8},end:{line:164,column:22}},type:"binary-expr",locations:[{start:{line:164,column:8},end:{line:164,column:16}},{start:{line:164,column:20},end:{line:164,column:22}}],line:164},"57":{loc:{start:{line:180,column:1},end:{line:191,column:2}},type:"if",locations:[{start:{line:180,column:1},end:{line:191,column:2}},{start:{line:180,column:1},end:{line:191,column:2}}],line:180},"58":{loc:{start:{line:184,column:10},end:{line:184,column:57}},type:"cond-expr",locations:[{start:{line:184,column:18},end:{line:184,column:52}},{start:{line:184,column:55},end:{line:184,column:57}}],line:184},"59":{loc:{start:{line:187,column:8},end:{line:191,column:2}},type:"if",locations:[{start:{line:187,column:8},end:{line:191,column:2}},{start:{line:187,column:8},end:{line:191,column:2}}],line:187},"60":{loc:{start:{line:189,column:8},end:{line:191,column:2}},type:"if",locations:[{start:{line:189,column:8},end:{line:191,column:2}},{start:{line:189,column:8},end:{line:191,column:2}}],line:189},"61":{loc:{start:{line:193,column:8},end:{line:193,column:17}},type:"binary-expr",locations:[{start:{line:193,column:8},end:{line:193,column:11}},{start:{line:193,column:15},end:{line:193,column:17}}],line:193},"62":{loc:{start:{line:195,column:1},end:{line:197,column:2}},type:"if",locations:[{start:{line:195,column:1},end:{line:197,column:2}},{start:{line:195,column:1},end:{line:197,column:2}}],line:195}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0,0],"51":[0,0],"52":[0,0,0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0]},_coverageSchema:"43e27e138ebf9cfc5966b082cf9a028302ed4184"};var coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();var constants=(cov_2q245nv9x6.s[0]++,require('./constants.js'));var query=(cov_2q245nv9x6.s[1]++,require('./query.js'));var util=(cov_2q245nv9x6.s[2]++,require('./util.js'));cov_2q245nv9x6.s[3]++;var getPseudoContent=function(node,selector){cov_2q245nv9x6.f[0]++;var styles=(cov_2q245nv9x6.s[4]++,window.getComputedStyle(node,selector));var ret=(cov_2q245nv9x6.s[5]++,styles.getPropertyValue('content'));var inline=(cov_2q245nv9x6.s[6]++,styles.display.substr(0,6)==='inline');cov_2q245nv9x6.s[7]++;if(!ret){cov_2q245nv9x6.b[0][0]++;cov_2q245nv9x6.s[8]++;return'';}else{cov_2q245nv9x6.b[0][1]++;}cov_2q245nv9x6.s[9]++;if(ret.substr(0,1)!=='"'){cov_2q245nv9x6.b[1][0]++;cov_2q245nv9x6.s[10]++;return'';}else{cov_2q245nv9x6.b[1][1]++;cov_2q245nv9x6.s[11]++;if(inline){cov_2q245nv9x6.b[2][0]++;cov_2q245nv9x6.s[12]++;return ret.slice(1,-1);}else{cov_2q245nv9x6.b[2][1]++;cov_2q245nv9x6.s[13]++;return' '+ret.slice(1,-1)+' ';}}};cov_2q245nv9x6.s[14]++;var getContent=function(root,referenced,owned){cov_2q245nv9x6.f[1]++;var children=(cov_2q245nv9x6.s[15]++,[]);cov_2q245nv9x6.s[16]++;for(var i=(cov_2q245nv9x6.s[17]++,0);i<root.childNodes.length;i++){var node=(cov_2q245nv9x6.s[18]++,root.childNodes[i]);cov_2q245nv9x6.s[19]++;if((cov_2q245nv9x6.b[4][0]++,!node.id)||(cov_2q245nv9x6.b[4][1]++,!document.querySelector('[aria-owns~="'+node.id+'"]'))){cov_2q245nv9x6.b[3][0]++;cov_2q245nv9x6.s[20]++;children.push(node);}else{cov_2q245nv9x6.b[3][1]++;}}var owns=(cov_2q245nv9x6.s[21]++,(cov_2q245nv9x6.b[5][0]++,query.getAttribute(root,'owns'))||(cov_2q245nv9x6.b[5][1]++,[]));cov_2q245nv9x6.s[22]++;for(var i=(cov_2q245nv9x6.s[23]++,0);i<owns.length;i++){var child=(cov_2q245nv9x6.s[24]++,document.getElementById(owns[i]));cov_2q245nv9x6.s[25]++;if((cov_2q245nv9x6.b[7][0]++,child)&&(cov_2q245nv9x6.b[7][1]++,child!==root)&&(cov_2q245nv9x6.b[7][2]++,owned.indexOf(child.id)===-1)){cov_2q245nv9x6.b[6][0]++;cov_2q245nv9x6.s[26]++;children.push(child);cov_2q245nv9x6.s[27]++;owned.push(child.id);}else{cov_2q245nv9x6.b[6][1]++;}}var ret=(cov_2q245nv9x6.s[28]++,'');cov_2q245nv9x6.s[29]++;for(var i=(cov_2q245nv9x6.s[30]++,0);i<children.length;i++){var node=(cov_2q245nv9x6.s[31]++,children[i]);cov_2q245nv9x6.s[32]++;if(node.nodeType===node.TEXT_NODE){cov_2q245nv9x6.b[8][0]++;cov_2q245nv9x6.s[33]++;ret+=node.textContent;}else{cov_2q245nv9x6.b[8][1]++;cov_2q245nv9x6.s[34]++;if(node.nodeType===node.ELEMENT_NODE){cov_2q245nv9x6.b[9][0]++;cov_2q245nv9x6.s[35]++;if(node.tagName.toLowerCase()==='br'){cov_2q245nv9x6.b[10][0]++;cov_2q245nv9x6.s[36]++;ret+='\n';}else{cov_2q245nv9x6.b[10][1]++;cov_2q245nv9x6.s[37]++;if((cov_2q245nv9x6.b[12][0]++,window.getComputedStyle(node).display.substr(0,6)==='inline')&&(cov_2q245nv9x6.b[12][1]++,node.tagName.toLowerCase()!=='input')&&(cov_2q245nv9x6.b[12][2]++,node.tagName.toLowerCase()!=='img')){cov_2q245nv9x6.b[11][0]++;cov_2q245nv9x6.s[38]++;// https://github.com/w3c/accname/issues/3
  629    -1 ret+=getName(node,true,referenced,owned);}else{cov_2q245nv9x6.b[11][1]++;cov_2q245nv9x6.s[39]++;ret+=' '+getName(node,true,referenced,owned)+' ';}}}else{cov_2q245nv9x6.b[9][1]++;}}}cov_2q245nv9x6.s[40]++;return ret;};cov_2q245nv9x6.s[41]++;var allowNameFromContent=function(el){cov_2q245nv9x6.f[2]++;var role=(cov_2q245nv9x6.s[42]++,query.getRole(el));cov_2q245nv9x6.s[43]++;return(cov_2q245nv9x6.b[13][0]++,!role)||(cov_2q245nv9x6.b[13][1]++,constants.nameFromContents.indexOf(role)!==-1);};cov_2q245nv9x6.s[44]++;var isLabelable=function(el){cov_2q245nv9x6.f[3]++;var selector=(cov_2q245nv9x6.s[45]++,constants.labelable.join(','));cov_2q245nv9x6.s[46]++;return el.matches(selector);};// Control.labels is part of the standard, but not supported in most browsers
  630    -1 cov_2q245nv9x6.s[47]++;var getLabelNodes=function(element){cov_2q245nv9x6.f[4]++;var labels=(cov_2q245nv9x6.s[48]++,[]);var labelable=(cov_2q245nv9x6.s[49]++,constants.labelable.join(','));cov_2q245nv9x6.s[50]++;util.walkDOM(document.body,function(node){cov_2q245nv9x6.f[5]++;cov_2q245nv9x6.s[51]++;if((cov_2q245nv9x6.b[15][0]++,node.tagName)&&(cov_2q245nv9x6.b[15][1]++,node.tagName.toLowerCase()==='label')){cov_2q245nv9x6.b[14][0]++;cov_2q245nv9x6.s[52]++;if(node.getAttribute('for')){cov_2q245nv9x6.b[16][0]++;cov_2q245nv9x6.s[53]++;if((cov_2q245nv9x6.b[18][0]++,element.id)&&(cov_2q245nv9x6.b[18][1]++,node.getAttribute('for')===element.id)){cov_2q245nv9x6.b[17][0]++;cov_2q245nv9x6.s[54]++;labels.push(node);}else{cov_2q245nv9x6.b[17][1]++;}}else{cov_2q245nv9x6.b[16][1]++;cov_2q245nv9x6.s[55]++;if(node.querySelector(labelable)===element){cov_2q245nv9x6.b[19][0]++;cov_2q245nv9x6.s[56]++;labels.push(node);}else{cov_2q245nv9x6.b[19][1]++;}}}else{cov_2q245nv9x6.b[14][1]++;}});cov_2q245nv9x6.s[57]++;return labels;};// http://www.ssbbartgroup.com/blog/how-the-w3c-text-alternative-computation-works/
  631    -1 // https://www.w3.org/TR/accname-aam-1.1/#h-mapping_additional_nd_te
  632    -1 cov_2q245nv9x6.s[58]++;var getName=function(el,recursive,referenced,owned){cov_2q245nv9x6.f[6]++;var ret=(cov_2q245nv9x6.s[59]++,'');var owned=(cov_2q245nv9x6.s[60]++,(cov_2q245nv9x6.b[20][0]++,owned)||(cov_2q245nv9x6.b[20][1]++,[]));cov_2q245nv9x6.s[61]++;if(query.getAttribute(el,'hidden',referenced)){cov_2q245nv9x6.b[21][0]++;cov_2q245nv9x6.s[62]++;return'';}else{cov_2q245nv9x6.b[21][1]++;}cov_2q245nv9x6.s[63]++;if((cov_2q245nv9x6.b[23][0]++,!recursive)&&(cov_2q245nv9x6.b[23][1]++,el.matches('[aria-labelledby]'))){cov_2q245nv9x6.b[22][0]++;var ids=(cov_2q245nv9x6.s[64]++,el.getAttribute('aria-labelledby').split(/\s+/));var strings=(cov_2q245nv9x6.s[65]++,ids.map(function(id){cov_2q245nv9x6.f[7]++;var label=(cov_2q245nv9x6.s[66]++,document.getElementById(id));cov_2q245nv9x6.s[67]++;return label?(cov_2q245nv9x6.b[24][0]++,getName(label,true,label,owned)):(cov_2q245nv9x6.b[24][1]++,'');}));cov_2q245nv9x6.s[68]++;ret=strings.join(' ');}else{cov_2q245nv9x6.b[22][1]++;}cov_2q245nv9x6.s[69]++;if((cov_2q245nv9x6.b[26][0]++,!ret.trim())&&(cov_2q245nv9x6.b[26][1]++,el.matches('[aria-label]'))){cov_2q245nv9x6.b[25][0]++;cov_2q245nv9x6.s[70]++;ret=el.getAttribute('aria-label');}else{cov_2q245nv9x6.b[25][1]++;}cov_2q245nv9x6.s[71]++;if((cov_2q245nv9x6.b[28][0]++,!ret.trim())&&(cov_2q245nv9x6.b[28][1]++,query.matches(el,'presentation'))){cov_2q245nv9x6.b[27][0]++;cov_2q245nv9x6.s[72]++;return getContent(el,referenced,owned);}else{cov_2q245nv9x6.b[27][1]++;}cov_2q245nv9x6.s[73]++;if((cov_2q245nv9x6.b[30][0]++,!ret)&&(cov_2q245nv9x6.b[30][1]++,!recursive)&&(cov_2q245nv9x6.b[30][2]++,isLabelable(el))){cov_2q245nv9x6.b[29][0]++;var strings=(cov_2q245nv9x6.s[74]++,getLabelNodes(el).map(function(label){cov_2q245nv9x6.f[8]++;cov_2q245nv9x6.s[75]++;return getName(label,true,label,owned);}));cov_2q245nv9x6.s[76]++;ret=strings.join(' ');}else{cov_2q245nv9x6.b[29][1]++;}cov_2q245nv9x6.s[77]++;if(!ret.trim()){cov_2q245nv9x6.b[31][0]++;cov_2q245nv9x6.s[78]++;ret=(cov_2q245nv9x6.b[32][0]++,el.placeholder)||(cov_2q245nv9x6.b[32][1]++,'');}else{cov_2q245nv9x6.b[31][1]++;}cov_2q245nv9x6.s[79]++;if(!ret.trim()){cov_2q245nv9x6.b[33][0]++;cov_2q245nv9x6.s[80]++;ret=(cov_2q245nv9x6.b[34][0]++,el.alt)||(cov_2q245nv9x6.b[34][1]++,'');}else{cov_2q245nv9x6.b[33][1]++;}cov_2q245nv9x6.s[81]++;if((cov_2q245nv9x6.b[36][0]++,!ret.trim())&&(cov_2q245nv9x6.b[36][1]++,el.matches('abbr,acronym'))&&(cov_2q245nv9x6.b[36][2]++,el.title)){cov_2q245nv9x6.b[35][0]++;cov_2q245nv9x6.s[82]++;ret=el.title;}else{cov_2q245nv9x6.b[35][1]++;}cov_2q245nv9x6.s[83]++;if(!ret.trim()){cov_2q245nv9x6.b[37][0]++;cov_2q245nv9x6.s[84]++;for(var selector in constants.nameFromDescendant){cov_2q245nv9x6.s[85]++;if(el.matches(selector)){cov_2q245nv9x6.b[38][0]++;var descendant=(cov_2q245nv9x6.s[86]++,el.querySelector(constants.nameFromDescendant[selector]));cov_2q245nv9x6.s[87]++;if(descendant){cov_2q245nv9x6.b[39][0]++;cov_2q245nv9x6.s[88]++;ret=getName(descendant,true,descendant,owned);}else{cov_2q245nv9x6.b[39][1]++;}}else{cov_2q245nv9x6.b[38][1]++;}}}else{cov_2q245nv9x6.b[37][1]++;}cov_2q245nv9x6.s[89]++;if((cov_2q245nv9x6.b[41][0]++,el.closest('label'))||(cov_2q245nv9x6.b[41][1]++,recursive)||(cov_2q245nv9x6.b[41][2]++,query.matches(el,'button'))){cov_2q245nv9x6.b[40][0]++;cov_2q245nv9x6.s[90]++;if((cov_2q245nv9x6.b[43][0]++,!ret.trim())&&(cov_2q245nv9x6.b[43][1]++,query.matches(el,'textbox,button,combobox,listbox,range'))){cov_2q245nv9x6.b[42][0]++;cov_2q245nv9x6.s[91]++;if(query.matches(el,'textbox,button')){cov_2q245nv9x6.b[44][0]++;cov_2q245nv9x6.s[92]++;ret=(cov_2q245nv9x6.b[45][0]++,el.value)||(cov_2q245nv9x6.b[45][1]++,el.textContent);}else{cov_2q245nv9x6.b[44][1]++;cov_2q245nv9x6.s[93]++;if(query.matches(el,'combobox,listbox')){cov_2q245nv9x6.b[46][0]++;var selected=(cov_2q245nv9x6.s[94]++,(cov_2q245nv9x6.b[47][0]++,query.querySelector(el,':selected'))||(cov_2q245nv9x6.b[47][1]++,query.querySelector(el,'option')));cov_2q245nv9x6.s[95]++;if(selected){cov_2q245nv9x6.b[48][0]++;cov_2q245nv9x6.s[96]++;ret=getName(selected,recursive,referenced,owned);}else{cov_2q245nv9x6.b[48][1]++;}}else{cov_2q245nv9x6.b[46][1]++;cov_2q245nv9x6.s[97]++;if(query.matches(el,'range')){cov_2q245nv9x6.b[49][0]++;cov_2q245nv9x6.s[98]++;ret=''+((cov_2q245nv9x6.b[50][0]++,query.getAttribute(el,'valuetext'))||(cov_2q245nv9x6.b[50][1]++,query.getAttribute(el,'valuenow'))||(cov_2q245nv9x6.b[50][2]++,el.value));}else{cov_2q245nv9x6.b[49][1]++;}}}}else{cov_2q245nv9x6.b[42][1]++;}}else{cov_2q245nv9x6.b[40][1]++;}cov_2q245nv9x6.s[99]++;if((cov_2q245nv9x6.b[52][0]++,!ret.trim())&&((cov_2q245nv9x6.b[52][1]++,recursive)||(cov_2q245nv9x6.b[52][2]++,allowNameFromContent(el)))&&(cov_2q245nv9x6.b[52][3]++,!query.matches(el,'menu'))){cov_2q245nv9x6.b[51][0]++;cov_2q245nv9x6.s[100]++;ret=getContent(el,referenced,owned);}else{cov_2q245nv9x6.b[51][1]++;}cov_2q245nv9x6.s[101]++;if(!ret.trim()){cov_2q245nv9x6.b[53][0]++;cov_2q245nv9x6.s[102]++;for(var selector in constants.nameDefaults){cov_2q245nv9x6.s[103]++;if(el.matches(selector)){cov_2q245nv9x6.b[54][0]++;cov_2q245nv9x6.s[104]++;ret=constants.nameDefaults[selector];}else{cov_2q245nv9x6.b[54][1]++;}}}else{cov_2q245nv9x6.b[53][1]++;}cov_2q245nv9x6.s[105]++;if(!ret.trim()){cov_2q245nv9x6.b[55][0]++;cov_2q245nv9x6.s[106]++;ret=(cov_2q245nv9x6.b[56][0]++,el.title)||(cov_2q245nv9x6.b[56][1]++,'');}else{cov_2q245nv9x6.b[55][1]++;}var before=(cov_2q245nv9x6.s[107]++,getPseudoContent(el,':before'));var after=(cov_2q245nv9x6.s[108]++,getPseudoContent(el,':after'));cov_2q245nv9x6.s[109]++;return before+ret+after;};cov_2q245nv9x6.s[110]++;var getNameTrimmed=function(el){cov_2q245nv9x6.f[9]++;cov_2q245nv9x6.s[111]++;return getName(el).replace(/\s+/g,' ').trim();};cov_2q245nv9x6.s[112]++;var getDescription=function(el){cov_2q245nv9x6.f[10]++;var ret=(cov_2q245nv9x6.s[113]++,'');var owned=(cov_2q245nv9x6.s[114]++,[]);cov_2q245nv9x6.s[115]++;if(el.matches('[aria-describedby]')){cov_2q245nv9x6.b[57][0]++;var ids=(cov_2q245nv9x6.s[116]++,el.getAttribute('aria-describedby').split(/\s+/));var strings=(cov_2q245nv9x6.s[117]++,ids.map(function(id){cov_2q245nv9x6.f[11]++;var label=(cov_2q245nv9x6.s[118]++,document.getElementById(id));cov_2q245nv9x6.s[119]++;return label?(cov_2q245nv9x6.b[58][0]++,getName(label,true,label,owned)):(cov_2q245nv9x6.b[58][1]++,'');}));cov_2q245nv9x6.s[120]++;ret=strings.join(' ');}else{cov_2q245nv9x6.b[57][1]++;cov_2q245nv9x6.s[121]++;if(el.title){cov_2q245nv9x6.b[59][0]++;cov_2q245nv9x6.s[122]++;ret=el.title;}else{cov_2q245nv9x6.b[59][1]++;cov_2q245nv9x6.s[123]++;if(el.placeholder){cov_2q245nv9x6.b[60][0]++;cov_2q245nv9x6.s[124]++;ret=el.placeholder;}else{cov_2q245nv9x6.b[60][1]++;}}}cov_2q245nv9x6.s[125]++;ret=((cov_2q245nv9x6.b[61][0]++,ret)||(cov_2q245nv9x6.b[61][1]++,'')).trim().replace(/\s+/g,' ');cov_2q245nv9x6.s[126]++;if(ret===getNameTrimmed(el)){cov_2q245nv9x6.b[62][0]++;cov_2q245nv9x6.s[127]++;ret='';}else{cov_2q245nv9x6.b[62][1]++;}cov_2q245nv9x6.s[128]++;return ret;};cov_2q245nv9x6.s[129]++;module.exports={getName:getNameTrimmed,getDescription:getDescription};
   -1   628 var cov_2q245nv9x6=function(){var path="node_modules/aria-api/lib/name.js";var hash="93a6713c2560ab0da7818aecac970728fca1f799";var Function=function(){}.constructor;var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"node_modules/aria-api/lib/name.js",statementMap:{"0":{start:{line:1,column:16},end:{line:1,column:41}},"1":{start:{line:2,column:12},end:{line:2,column:33}},"2":{start:{line:3,column:11},end:{line:3,column:31}},"3":{start:{line:5,column:23},end:{line:21,column:1}},"4":{start:{line:6,column:14},end:{line:6,column:53}},"5":{start:{line:7,column:11},end:{line:7,column:45}},"6":{start:{line:8,column:14},end:{line:8,column:54}},"7":{start:{line:9,column:1},end:{line:11,column:2}},"8":{start:{line:10,column:2},end:{line:10,column:12}},"9":{start:{line:12,column:1},end:{line:20,column:2}},"10":{start:{line:13,column:2},end:{line:13,column:12}},"11":{start:{line:15,column:2},end:{line:19,column:3}},"12":{start:{line:16,column:3},end:{line:16,column:27}},"13":{start:{line:18,column:3},end:{line:18,column:39}},"14":{start:{line:23,column:17},end:{line:61,column:1}},"15":{start:{line:24,column:16},end:{line:24,column:18}},"16":{start:{line:26,column:1},end:{line:31,column:2}},"17":{start:{line:26,column:14},end:{line:26,column:15}},"18":{start:{line:27,column:13},end:{line:27,column:31}},"19":{start:{line:28,column:2},end:{line:30,column:3}},"20":{start:{line:29,column:3},end:{line:29,column:23}},"21":{start:{line:33,column:12},end:{line:33,column:50}},"22":{start:{line:34,column:1},end:{line:40,column:2}},"23":{start:{line:34,column:14},end:{line:34,column:15}},"24":{start:{line:35,column:14},end:{line:35,column:46}},"25":{start:{line:36,column:2},end:{line:39,column:3}},"26":{start:{line:37,column:3},end:{line:37,column:24}},"27":{start:{line:38,column:3},end:{line:38,column:24}},"28":{start:{line:42,column:11},end:{line:42,column:13}},"29":{start:{line:43,column:1},end:{line:58,column:2}},"30":{start:{line:43,column:14},end:{line:43,column:15}},"31":{start:{line:44,column:13},end:{line:44,column:24}},"32":{start:{line:45,column:2},end:{line:57,column:3}},"33":{start:{line:46,column:3},end:{line:46,column:27}},"34":{start:{line:47,column:9},end:{line:57,column:3}},"35":{start:{line:48,column:3},end:{line:56,column:4}},"36":{start:{line:49,column:4},end:{line:49,column:16}},"37":{start:{line:50,column:10},end:{line:56,column:4}},"38":{start:{line:53,column:4},end:{line:53,column:50}},"39":{start:{line:55,column:4},end:{line:55,column:62}},"40":{start:{line:60,column:1},end:{line:60,column:12}},"41":{start:{line:63,column:27},end:{line:66,column:1}},"42":{start:{line:64,column:12},end:{line:64,column:29}},"43":{start:{line:65,column:1},end:{line:65,column:64}},"44":{start:{line:68,column:18},end:{line:71,column:1}},"45":{start:{line:69,column:16},end:{line:69,column:45}},"46":{start:{line:70,column:1},end:{line:70,column:29}},"47":{start:{line:74,column:20},end:{line:89,column:1}},"48":{start:{line:75,column:14},end:{line:75,column:16}},"49":{start:{line:76,column:17},end:{line:76,column:46}},"50":{start:{line:77,column:1},end:{line:87,column:4}},"51":{start:{line:78,column:2},end:{line:86,column:3}},"52":{start:{line:79,column:3},end:{line:85,column:4}},"53":{start:{line:80,column:4},end:{line:82,column:5}},"54":{start:{line:81,column:5},end:{line:81,column:23}},"55":{start:{line:83,column:10},end:{line:85,column:4}},"56":{start:{line:84,column:4},end:{line:84,column:22}},"57":{start:{line:88,column:1},end:{line:88,column:15}},"58":{start:{line:91,column:30},end:{line:95,column:1}},"59":{start:{line:92,column:13},end:{line:92,column:46}},"60":{start:{line:93,column:17},end:{line:93,column:34}},"61":{start:{line:94,column:1},end:{line:94,column:49}},"62":{start:{line:97,column:14},end:{line:197,column:1}},"63":{start:{line:98,column:11},end:{line:98,column:13}},"64":{start:{line:99,column:13},end:{line:99,column:24}},"65":{start:{line:102,column:1},end:{line:104,column:2}},"66":{start:{line:103,column:2},end:{line:103,column:12}},"67":{start:{line:107,column:1},end:{line:114,column:2}},"68":{start:{line:108,column:12},end:{line:108,column:59}},"69":{start:{line:109,column:16},end:{line:112,column:4}},"70":{start:{line:110,column:15},end:{line:110,column:42}},"71":{start:{line:111,column:3},end:{line:111,column:58}},"72":{start:{line:113,column:2},end:{line:113,column:26}},"73":{start:{line:117,column:1},end:{line:119,column:2}},"74":{start:{line:118,column:2},end:{line:118,column:38}},"75":{start:{line:122,column:1},end:{line:127,column:2}},"76":{start:{line:123,column:16},end:{line:125,column:4}},"77":{start:{line:124,column:3},end:{line:124,column:45}},"78":{start:{line:126,column:2},end:{line:126,column:26}},"79":{start:{line:128,column:1},end:{line:130,column:2}},"80":{start:{line:129,column:2},end:{line:129,column:29}},"81":{start:{line:131,column:1},end:{line:133,column:2}},"82":{start:{line:132,column:2},end:{line:132,column:21}},"83":{start:{line:134,column:1},end:{line:136,column:2}},"84":{start:{line:135,column:2},end:{line:135,column:17}},"85":{start:{line:137,column:1},end:{line:146,column:2}},"86":{start:{line:138,column:2},end:{line:145,column:3}},"87":{start:{line:139,column:3},end:{line:144,column:4}},"88":{start:{line:140,column:21},end:{line:140,column:77}},"89":{start:{line:141,column:4},end:{line:143,column:5}},"90":{start:{line:142,column:5},end:{line:142,column:56}},"91":{start:{line:149,column:1},end:{line:164,column:2}},"92":{start:{line:150,column:2},end:{line:163,column:3}},"93":{start:{line:151,column:3},end:{line:162,column:4}},"94":{start:{line:152,column:4},end:{line:152,column:37}},"95":{start:{line:153,column:10},end:{line:162,column:4}},"96":{start:{line:154,column:19},end:{line:154,column:92}},"97":{start:{line:155,column:4},end:{line:159,column:5}},"98":{start:{line:156,column:5},end:{line:156,column:59}},"99":{start:{line:158,column:5},end:{line:158,column:26}},"100":{start:{line:160,column:10},end:{line:162,column:4}},"101":{start:{line:161,column:4},end:{line:161,column:103}},"102":{start:{line:168,column:1},end:{line:170,column:2}},"103":{start:{line:169,column:2},end:{line:169,column:42}},"104":{start:{line:176,column:1},end:{line:178,column:2}},"105":{start:{line:177,column:2},end:{line:177,column:43}},"106":{start:{line:181,column:1},end:{line:187,column:2}},"107":{start:{line:182,column:2},end:{line:186,column:3}},"108":{start:{line:183,column:3},end:{line:185,column:4}},"109":{start:{line:184,column:4},end:{line:184,column:43}},"110":{start:{line:190,column:1},end:{line:192,column:2}},"111":{start:{line:191,column:2},end:{line:191,column:23}},"112":{start:{line:194,column:14},end:{line:194,column:45}},"113":{start:{line:195,column:13},end:{line:195,column:43}},"114":{start:{line:196,column:1},end:{line:196,column:29}},"115":{start:{line:199,column:21},end:{line:201,column:1}},"116":{start:{line:200,column:1},end:{line:200,column:48}},"117":{start:{line:203,column:21},end:{line:227,column:1}},"118":{start:{line:204,column:11},end:{line:204,column:13}},"119":{start:{line:205,column:13},end:{line:205,column:15}},"120":{start:{line:207,column:1},end:{line:218,column:2}},"121":{start:{line:208,column:12},end:{line:208,column:60}},"122":{start:{line:209,column:16},end:{line:212,column:4}},"123":{start:{line:210,column:15},end:{line:210,column:42}},"124":{start:{line:211,column:3},end:{line:211,column:58}},"125":{start:{line:213,column:2},end:{line:213,column:26}},"126":{start:{line:214,column:8},end:{line:218,column:2}},"127":{start:{line:215,column:2},end:{line:215,column:17}},"128":{start:{line:216,column:8},end:{line:218,column:2}},"129":{start:{line:217,column:2},end:{line:217,column:23}},"130":{start:{line:220,column:1},end:{line:220,column:47}},"131":{start:{line:222,column:1},end:{line:224,column:2}},"132":{start:{line:223,column:2},end:{line:223,column:11}},"133":{start:{line:226,column:1},end:{line:226,column:12}},"134":{start:{line:229,column:0},end:{line:232,column:2}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:5,column:23},end:{line:5,column:24}},loc:{start:{line:5,column:48},end:{line:21,column:1}},line:5},"1":{name:"(anonymous_1)",decl:{start:{line:23,column:17},end:{line:23,column:18}},loc:{start:{line:23,column:51},end:{line:61,column:1}},line:23},"2":{name:"(anonymous_2)",decl:{start:{line:63,column:27},end:{line:63,column:28}},loc:{start:{line:63,column:40},end:{line:66,column:1}},line:63},"3":{name:"(anonymous_3)",decl:{start:{line:68,column:18},end:{line:68,column:19}},loc:{start:{line:68,column:31},end:{line:71,column:1}},line:68},"4":{name:"(anonymous_4)",decl:{start:{line:74,column:20},end:{line:74,column:21}},loc:{start:{line:74,column:38},end:{line:89,column:1}},line:74},"5":{name:"(anonymous_5)",decl:{start:{line:77,column:29},end:{line:77,column:30}},loc:{start:{line:77,column:44},end:{line:87,column:2}},line:77},"6":{name:"(anonymous_6)",decl:{start:{line:91,column:30},end:{line:91,column:31}},loc:{start:{line:91,column:43},end:{line:95,column:1}},line:91},"7":{name:"(anonymous_7)",decl:{start:{line:97,column:14},end:{line:97,column:15}},loc:{start:{line:97,column:57},end:{line:197,column:1}},line:97},"8":{name:"(anonymous_8)",decl:{start:{line:109,column:24},end:{line:109,column:25}},loc:{start:{line:109,column:37},end:{line:112,column:3}},line:109},"9":{name:"(anonymous_9)",decl:{start:{line:123,column:38},end:{line:123,column:39}},loc:{start:{line:123,column:54},end:{line:125,column:3}},line:123},"10":{name:"(anonymous_10)",decl:{start:{line:199,column:21},end:{line:199,column:22}},loc:{start:{line:199,column:34},end:{line:201,column:1}},line:199},"11":{name:"(anonymous_11)",decl:{start:{line:203,column:21},end:{line:203,column:22}},loc:{start:{line:203,column:34},end:{line:227,column:1}},line:203},"12":{name:"(anonymous_12)",decl:{start:{line:209,column:24},end:{line:209,column:25}},loc:{start:{line:209,column:37},end:{line:212,column:3}},line:209}},branchMap:{"0":{loc:{start:{line:9,column:1},end:{line:11,column:2}},type:"if",locations:[{start:{line:9,column:1},end:{line:11,column:2}},{start:{line:9,column:1},end:{line:11,column:2}}],line:9},"1":{loc:{start:{line:12,column:1},end:{line:20,column:2}},type:"if",locations:[{start:{line:12,column:1},end:{line:20,column:2}},{start:{line:12,column:1},end:{line:20,column:2}}],line:12},"2":{loc:{start:{line:15,column:2},end:{line:19,column:3}},type:"if",locations:[{start:{line:15,column:2},end:{line:19,column:3}},{start:{line:15,column:2},end:{line:19,column:3}}],line:15},"3":{loc:{start:{line:28,column:2},end:{line:30,column:3}},type:"if",locations:[{start:{line:28,column:2},end:{line:30,column:3}},{start:{line:28,column:2},end:{line:30,column:3}}],line:28},"4":{loc:{start:{line:28,column:6},end:{line:28,column:75}},type:"binary-expr",locations:[{start:{line:28,column:6},end:{line:28,column:14}},{start:{line:28,column:18},end:{line:28,column:75}}],line:28},"5":{loc:{start:{line:33,column:12},end:{line:33,column:50}},type:"binary-expr",locations:[{start:{line:33,column:12},end:{line:33,column:44}},{start:{line:33,column:48},end:{line:33,column:50}}],line:33},"6":{loc:{start:{line:36,column:2},end:{line:39,column:3}},type:"if",locations:[{start:{line:36,column:2},end:{line:39,column:3}},{start:{line:36,column:2},end:{line:39,column:3}}],line:36},"7":{loc:{start:{line:36,column:6},end:{line:36,column:63}},type:"binary-expr",locations:[{start:{line:36,column:6},end:{line:36,column:11}},{start:{line:36,column:15},end:{line:36,column:29}},{start:{line:36,column:33},end:{line:36,column:63}}],line:36},"8":{loc:{start:{line:45,column:2},end:{line:57,column:3}},type:"if",locations:[{start:{line:45,column:2},end:{line:57,column:3}},{start:{line:45,column:2},end:{line:57,column:3}}],line:45},"9":{loc:{start:{line:47,column:9},end:{line:57,column:3}},type:"if",locations:[{start:{line:47,column:9},end:{line:57,column:3}},{start:{line:47,column:9},end:{line:57,column:3}}],line:47},"10":{loc:{start:{line:48,column:3},end:{line:56,column:4}},type:"if",locations:[{start:{line:48,column:3},end:{line:56,column:4}},{start:{line:48,column:3},end:{line:56,column:4}}],line:48},"11":{loc:{start:{line:50,column:10},end:{line:56,column:4}},type:"if",locations:[{start:{line:50,column:10},end:{line:56,column:4}},{start:{line:50,column:10},end:{line:56,column:4}}],line:50},"12":{loc:{start:{line:50,column:14},end:{line:52,column:41}},type:"binary-expr",locations:[{start:{line:50,column:14},end:{line:50,column:77}},{start:{line:51,column:5},end:{line:51,column:43}},{start:{line:52,column:5},end:{line:52,column:41}}],line:50},"13":{loc:{start:{line:65,column:8},end:{line:65,column:63}},type:"binary-expr",locations:[{start:{line:65,column:8},end:{line:65,column:12}},{start:{line:65,column:16},end:{line:65,column:63}}],line:65},"14":{loc:{start:{line:78,column:2},end:{line:86,column:3}},type:"if",locations:[{start:{line:78,column:2},end:{line:86,column:3}},{start:{line:78,column:2},end:{line:86,column:3}}],line:78},"15":{loc:{start:{line:78,column:6},end:{line:78,column:60}},type:"binary-expr",locations:[{start:{line:78,column:6},end:{line:78,column:18}},{start:{line:78,column:22},end:{line:78,column:60}}],line:78},"16":{loc:{start:{line:79,column:3},end:{line:85,column:4}},type:"if",locations:[{start:{line:79,column:3},end:{line:85,column:4}},{start:{line:79,column:3},end:{line:85,column:4}}],line:79},"17":{loc:{start:{line:80,column:4},end:{line:82,column:5}},type:"if",locations:[{start:{line:80,column:4},end:{line:82,column:5}},{start:{line:80,column:4},end:{line:82,column:5}}],line:80},"18":{loc:{start:{line:80,column:8},end:{line:80,column:61}},type:"binary-expr",locations:[{start:{line:80,column:8},end:{line:80,column:18}},{start:{line:80,column:22},end:{line:80,column:61}}],line:80},"19":{loc:{start:{line:83,column:10},end:{line:85,column:4}},type:"if",locations:[{start:{line:83,column:10},end:{line:85,column:4}},{start:{line:83,column:10},end:{line:85,column:4}}],line:83},"20":{loc:{start:{line:94,column:8},end:{line:94,column:48}},type:"binary-expr",locations:[{start:{line:94,column:8},end:{line:94,column:13}},{start:{line:94,column:17},end:{line:94,column:48}}],line:94},"21":{loc:{start:{line:99,column:13},end:{line:99,column:24}},type:"binary-expr",locations:[{start:{line:99,column:13},end:{line:99,column:18}},{start:{line:99,column:22},end:{line:99,column:24}}],line:99},"22":{loc:{start:{line:102,column:1},end:{line:104,column:2}},type:"if",locations:[{start:{line:102,column:1},end:{line:104,column:2}},{start:{line:102,column:1},end:{line:104,column:2}}],line:102},"23":{loc:{start:{line:107,column:1},end:{line:114,column:2}},type:"if",locations:[{start:{line:107,column:1},end:{line:114,column:2}},{start:{line:107,column:1},end:{line:114,column:2}}],line:107},"24":{loc:{start:{line:107,column:5},end:{line:107,column:50}},type:"binary-expr",locations:[{start:{line:107,column:5},end:{line:107,column:15}},{start:{line:107,column:19},end:{line:107,column:50}}],line:107},"25":{loc:{start:{line:111,column:10},end:{line:111,column:57}},type:"cond-expr",locations:[{start:{line:111,column:18},end:{line:111,column:52}},{start:{line:111,column:55},end:{line:111,column:57}}],line:111},"26":{loc:{start:{line:117,column:1},end:{line:119,column:2}},type:"if",locations:[{start:{line:117,column:1},end:{line:119,column:2}},{start:{line:117,column:1},end:{line:119,column:2}}],line:117},"27":{loc:{start:{line:117,column:5},end:{line:117,column:46}},type:"binary-expr",locations:[{start:{line:117,column:5},end:{line:117,column:16}},{start:{line:117,column:20},end:{line:117,column:46}}],line:117},"28":{loc:{start:{line:122,column:1},end:{line:127,column:2}},type:"if",locations:[{start:{line:122,column:1},end:{line:127,column:2}},{start:{line:122,column:1},end:{line:127,column:2}}],line:122},"29":{loc:{start:{line:122,column:5},end:{line:122,column:49}},type:"binary-expr",locations:[{start:{line:122,column:5},end:{line:122,column:16}},{start:{line:122,column:20},end:{line:122,column:30}},{start:{line:122,column:34},end:{line:122,column:49}}],line:122},"30":{loc:{start:{line:128,column:1},end:{line:130,column:2}},type:"if",locations:[{start:{line:128,column:1},end:{line:130,column:2}},{start:{line:128,column:1},end:{line:130,column:2}}],line:128},"31":{loc:{start:{line:129,column:8},end:{line:129,column:28}},type:"binary-expr",locations:[{start:{line:129,column:8},end:{line:129,column:22}},{start:{line:129,column:26},end:{line:129,column:28}}],line:129},"32":{loc:{start:{line:131,column:1},end:{line:133,column:2}},type:"if",locations:[{start:{line:131,column:1},end:{line:133,column:2}},{start:{line:131,column:1},end:{line:133,column:2}}],line:131},"33":{loc:{start:{line:132,column:8},end:{line:132,column:20}},type:"binary-expr",locations:[{start:{line:132,column:8},end:{line:132,column:14}},{start:{line:132,column:18},end:{line:132,column:20}}],line:132},"34":{loc:{start:{line:134,column:1},end:{line:136,column:2}},type:"if",locations:[{start:{line:134,column:1},end:{line:136,column:2}},{start:{line:134,column:1},end:{line:136,column:2}}],line:134},"35":{loc:{start:{line:134,column:5},end:{line:134,column:58}},type:"binary-expr",locations:[{start:{line:134,column:5},end:{line:134,column:16}},{start:{line:134,column:20},end:{line:134,column:46}},{start:{line:134,column:50},end:{line:134,column:58}}],line:134},"36":{loc:{start:{line:137,column:1},end:{line:146,column:2}},type:"if",locations:[{start:{line:137,column:1},end:{line:146,column:2}},{start:{line:137,column:1},end:{line:146,column:2}}],line:137},"37":{loc:{start:{line:139,column:3},end:{line:144,column:4}},type:"if",locations:[{start:{line:139,column:3},end:{line:144,column:4}},{start:{line:139,column:3},end:{line:144,column:4}}],line:139},"38":{loc:{start:{line:141,column:4},end:{line:143,column:5}},type:"if",locations:[{start:{line:141,column:4},end:{line:143,column:5}},{start:{line:141,column:4},end:{line:143,column:5}}],line:141},"39":{loc:{start:{line:149,column:1},end:{line:164,column:2}},type:"if",locations:[{start:{line:149,column:1},end:{line:164,column:2}},{start:{line:149,column:1},end:{line:164,column:2}}],line:149},"40":{loc:{start:{line:149,column:5},end:{line:149,column:93}},type:"binary-expr",locations:[{start:{line:149,column:5},end:{line:149,column:16}},{start:{line:149,column:21},end:{line:149,column:30}},{start:{line:149,column:34},end:{line:149,column:61}},{start:{line:149,column:65},end:{line:149,column:92}}],line:149},"41":{loc:{start:{line:150,column:2},end:{line:163,column:3}},type:"if",locations:[{start:{line:150,column:2},end:{line:163,column:3}},{start:{line:150,column:2},end:{line:163,column:3}}],line:150},"42":{loc:{start:{line:151,column:3},end:{line:162,column:4}},type:"if",locations:[{start:{line:151,column:3},end:{line:162,column:4}},{start:{line:151,column:3},end:{line:162,column:4}}],line:151},"43":{loc:{start:{line:152,column:10},end:{line:152,column:36}},type:"binary-expr",locations:[{start:{line:152,column:10},end:{line:152,column:18}},{start:{line:152,column:22},end:{line:152,column:36}}],line:152},"44":{loc:{start:{line:153,column:10},end:{line:162,column:4}},type:"if",locations:[{start:{line:153,column:10},end:{line:162,column:4}},{start:{line:153,column:10},end:{line:162,column:4}}],line:153},"45":{loc:{start:{line:154,column:19},end:{line:154,column:92}},type:"binary-expr",locations:[{start:{line:154,column:19},end:{line:154,column:55}},{start:{line:154,column:59},end:{line:154,column:92}}],line:154},"46":{loc:{start:{line:155,column:4},end:{line:159,column:5}},type:"if",locations:[{start:{line:155,column:4},end:{line:159,column:5}},{start:{line:155,column:4},end:{line:159,column:5}}],line:155},"47":{loc:{start:{line:158,column:11},end:{line:158,column:25}},type:"binary-expr",locations:[{start:{line:158,column:11},end:{line:158,column:19}},{start:{line:158,column:23},end:{line:158,column:25}}],line:158},"48":{loc:{start:{line:160,column:10},end:{line:162,column:4}},type:"if",locations:[{start:{line:160,column:10},end:{line:162,column:4}},{start:{line:160,column:10},end:{line:162,column:4}}],line:160},"49":{loc:{start:{line:161,column:16},end:{line:161,column:101}},type:"binary-expr",locations:[{start:{line:161,column:16},end:{line:161,column:51}},{start:{line:161,column:55},end:{line:161,column:89}},{start:{line:161,column:93},end:{line:161,column:101}}],line:161},"50":{loc:{start:{line:168,column:1},end:{line:170,column:2}},type:"if",locations:[{start:{line:168,column:1},end:{line:170,column:2}},{start:{line:168,column:1},end:{line:170,column:2}}],line:168},"51":{loc:{start:{line:168,column:5},end:{line:168,column:112}},type:"binary-expr",locations:[{start:{line:168,column:5},end:{line:168,column:16}},{start:{line:168,column:21},end:{line:168,column:30}},{start:{line:168,column:34},end:{line:168,column:58}},{start:{line:168,column:62},end:{line:168,column:81}},{start:{line:168,column:86},end:{line:168,column:112}}],line:168},"52":{loc:{start:{line:176,column:1},end:{line:178,column:2}},type:"if",locations:[{start:{line:176,column:1},end:{line:178,column:2}},{start:{line:176,column:1},end:{line:178,column:2}}],line:176},"53":{loc:{start:{line:176,column:5},end:{line:176,column:53}},type:"binary-expr",locations:[{start:{line:176,column:5},end:{line:176,column:16}},{start:{line:176,column:20},end:{line:176,column:53}}],line:176},"54":{loc:{start:{line:181,column:1},end:{line:187,column:2}},type:"if",locations:[{start:{line:181,column:1},end:{line:187,column:2}},{start:{line:181,column:1},end:{line:187,column:2}}],line:181},"55":{loc:{start:{line:183,column:3},end:{line:185,column:4}},type:"if",locations:[{start:{line:183,column:3},end:{line:185,column:4}},{start:{line:183,column:3},end:{line:185,column:4}}],line:183},"56":{loc:{start:{line:190,column:1},end:{line:192,column:2}},type:"if",locations:[{start:{line:190,column:1},end:{line:192,column:2}},{start:{line:190,column:1},end:{line:192,column:2}}],line:190},"57":{loc:{start:{line:191,column:8},end:{line:191,column:22}},type:"binary-expr",locations:[{start:{line:191,column:8},end:{line:191,column:16}},{start:{line:191,column:20},end:{line:191,column:22}}],line:191},"58":{loc:{start:{line:207,column:1},end:{line:218,column:2}},type:"if",locations:[{start:{line:207,column:1},end:{line:218,column:2}},{start:{line:207,column:1},end:{line:218,column:2}}],line:207},"59":{loc:{start:{line:211,column:10},end:{line:211,column:57}},type:"cond-expr",locations:[{start:{line:211,column:18},end:{line:211,column:52}},{start:{line:211,column:55},end:{line:211,column:57}}],line:211},"60":{loc:{start:{line:214,column:8},end:{line:218,column:2}},type:"if",locations:[{start:{line:214,column:8},end:{line:218,column:2}},{start:{line:214,column:8},end:{line:218,column:2}}],line:214},"61":{loc:{start:{line:216,column:8},end:{line:218,column:2}},type:"if",locations:[{start:{line:216,column:8},end:{line:218,column:2}},{start:{line:216,column:8},end:{line:218,column:2}}],line:216},"62":{loc:{start:{line:220,column:8},end:{line:220,column:17}},type:"binary-expr",locations:[{start:{line:220,column:8},end:{line:220,column:11}},{start:{line:220,column:15},end:{line:220,column:17}}],line:220},"63":{loc:{start:{line:222,column:1},end:{line:224,column:2}},type:"if",locations:[{start:{line:222,column:1},end:{line:224,column:2}},{start:{line:222,column:1},end:{line:224,column:2}}],line:222}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0,0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0,0],"50":[0,0],"51":[0,0,0,0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0]},_coverageSchema:"43e27e138ebf9cfc5966b082cf9a028302ed4184"};var coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();var constants=(cov_2q245nv9x6.s[0]++,require('./constants.js'));var query=(cov_2q245nv9x6.s[1]++,require('./query.js'));var util=(cov_2q245nv9x6.s[2]++,require('./util.js'));cov_2q245nv9x6.s[3]++;var getPseudoContent=function(node,selector){cov_2q245nv9x6.f[0]++;var styles=(cov_2q245nv9x6.s[4]++,window.getComputedStyle(node,selector));var ret=(cov_2q245nv9x6.s[5]++,styles.getPropertyValue('content'));var inline=(cov_2q245nv9x6.s[6]++,styles.display.substr(0,6)==='inline');cov_2q245nv9x6.s[7]++;if(!ret){cov_2q245nv9x6.b[0][0]++;cov_2q245nv9x6.s[8]++;return'';}else{cov_2q245nv9x6.b[0][1]++;}cov_2q245nv9x6.s[9]++;if(ret.substr(0,1)!=='"'){cov_2q245nv9x6.b[1][0]++;cov_2q245nv9x6.s[10]++;return'';}else{cov_2q245nv9x6.b[1][1]++;cov_2q245nv9x6.s[11]++;if(inline){cov_2q245nv9x6.b[2][0]++;cov_2q245nv9x6.s[12]++;return ret.slice(1,-1);}else{cov_2q245nv9x6.b[2][1]++;cov_2q245nv9x6.s[13]++;return' '+ret.slice(1,-1)+' ';}}};cov_2q245nv9x6.s[14]++;var getContent=function(root,referenced,owned){cov_2q245nv9x6.f[1]++;var children=(cov_2q245nv9x6.s[15]++,[]);cov_2q245nv9x6.s[16]++;for(var i=(cov_2q245nv9x6.s[17]++,0);i<root.childNodes.length;i++){var node=(cov_2q245nv9x6.s[18]++,root.childNodes[i]);cov_2q245nv9x6.s[19]++;if((cov_2q245nv9x6.b[4][0]++,!node.id)||(cov_2q245nv9x6.b[4][1]++,!document.querySelector('[aria-owns~="'+node.id+'"]'))){cov_2q245nv9x6.b[3][0]++;cov_2q245nv9x6.s[20]++;children.push(node);}else{cov_2q245nv9x6.b[3][1]++;}}var owns=(cov_2q245nv9x6.s[21]++,(cov_2q245nv9x6.b[5][0]++,query.getAttribute(root,'owns'))||(cov_2q245nv9x6.b[5][1]++,[]));cov_2q245nv9x6.s[22]++;for(var i=(cov_2q245nv9x6.s[23]++,0);i<owns.length;i++){var child=(cov_2q245nv9x6.s[24]++,document.getElementById(owns[i]));cov_2q245nv9x6.s[25]++;if((cov_2q245nv9x6.b[7][0]++,child)&&(cov_2q245nv9x6.b[7][1]++,child!==root)&&(cov_2q245nv9x6.b[7][2]++,owned.indexOf(child.id)===-1)){cov_2q245nv9x6.b[6][0]++;cov_2q245nv9x6.s[26]++;children.push(child);cov_2q245nv9x6.s[27]++;owned.push(child.id);}else{cov_2q245nv9x6.b[6][1]++;}}var ret=(cov_2q245nv9x6.s[28]++,'');cov_2q245nv9x6.s[29]++;for(var i=(cov_2q245nv9x6.s[30]++,0);i<children.length;i++){var node=(cov_2q245nv9x6.s[31]++,children[i]);cov_2q245nv9x6.s[32]++;if(node.nodeType===node.TEXT_NODE){cov_2q245nv9x6.b[8][0]++;cov_2q245nv9x6.s[33]++;ret+=node.textContent;}else{cov_2q245nv9x6.b[8][1]++;cov_2q245nv9x6.s[34]++;if(node.nodeType===node.ELEMENT_NODE){cov_2q245nv9x6.b[9][0]++;cov_2q245nv9x6.s[35]++;if(node.tagName.toLowerCase()==='br'){cov_2q245nv9x6.b[10][0]++;cov_2q245nv9x6.s[36]++;ret+='\n';}else{cov_2q245nv9x6.b[10][1]++;cov_2q245nv9x6.s[37]++;if((cov_2q245nv9x6.b[12][0]++,window.getComputedStyle(node).display.substr(0,6)==='inline')&&(cov_2q245nv9x6.b[12][1]++,node.tagName.toLowerCase()!=='input')&&(cov_2q245nv9x6.b[12][2]++,node.tagName.toLowerCase()!=='img')){cov_2q245nv9x6.b[11][0]++;cov_2q245nv9x6.s[38]++;// https://github.com/w3c/accname/issues/3
   -1   629 ret+=getName(node,true,referenced,owned);}else{cov_2q245nv9x6.b[11][1]++;cov_2q245nv9x6.s[39]++;ret+=' '+getName(node,true,referenced,owned)+' ';}}}else{cov_2q245nv9x6.b[9][1]++;}}}cov_2q245nv9x6.s[40]++;return ret;};cov_2q245nv9x6.s[41]++;var allowNameFromContent=function(el){cov_2q245nv9x6.f[2]++;var role=(cov_2q245nv9x6.s[42]++,query.getRole(el));cov_2q245nv9x6.s[43]++;return(cov_2q245nv9x6.b[13][0]++,role)&&(cov_2q245nv9x6.b[13][1]++,constants.nameFromContents.indexOf(role)!==-1);};cov_2q245nv9x6.s[44]++;var isLabelable=function(el){cov_2q245nv9x6.f[3]++;var selector=(cov_2q245nv9x6.s[45]++,constants.labelable.join(','));cov_2q245nv9x6.s[46]++;return el.matches(selector);};// Control.labels is part of the standard, but not supported in most browsers
   -1   630 cov_2q245nv9x6.s[47]++;var getLabelNodes=function(element){cov_2q245nv9x6.f[4]++;var labels=(cov_2q245nv9x6.s[48]++,[]);var labelable=(cov_2q245nv9x6.s[49]++,constants.labelable.join(','));cov_2q245nv9x6.s[50]++;util.walkDOM(document.body,function(node){cov_2q245nv9x6.f[5]++;cov_2q245nv9x6.s[51]++;if((cov_2q245nv9x6.b[15][0]++,node.tagName)&&(cov_2q245nv9x6.b[15][1]++,node.tagName.toLowerCase()==='label')){cov_2q245nv9x6.b[14][0]++;cov_2q245nv9x6.s[52]++;if(node.getAttribute('for')){cov_2q245nv9x6.b[16][0]++;cov_2q245nv9x6.s[53]++;if((cov_2q245nv9x6.b[18][0]++,element.id)&&(cov_2q245nv9x6.b[18][1]++,node.getAttribute('for')===element.id)){cov_2q245nv9x6.b[17][0]++;cov_2q245nv9x6.s[54]++;labels.push(node);}else{cov_2q245nv9x6.b[17][1]++;}}else{cov_2q245nv9x6.b[16][1]++;cov_2q245nv9x6.s[55]++;if(node.querySelector(labelable)===element){cov_2q245nv9x6.b[19][0]++;cov_2q245nv9x6.s[56]++;labels.push(node);}else{cov_2q245nv9x6.b[19][1]++;}}}else{cov_2q245nv9x6.b[14][1]++;}});cov_2q245nv9x6.s[57]++;return labels;};cov_2q245nv9x6.s[58]++;var isInLabelForOtherWidget=function(el){cov_2q245nv9x6.f[6]++;var label=(cov_2q245nv9x6.s[59]++,el.parentElement.closest('label'));var ownLabels=(cov_2q245nv9x6.s[60]++,getLabelNodes(el));cov_2q245nv9x6.s[61]++;return(cov_2q245nv9x6.b[20][0]++,label)&&(cov_2q245nv9x6.b[20][1]++,ownLabels.indexOf(label)===-1);};cov_2q245nv9x6.s[62]++;var getName=function(el,recursive,referenced,owned){cov_2q245nv9x6.f[7]++;var ret=(cov_2q245nv9x6.s[63]++,'');var owned=(cov_2q245nv9x6.s[64]++,(cov_2q245nv9x6.b[21][0]++,owned)||(cov_2q245nv9x6.b[21][1]++,[]));// A
   -1   631 cov_2q245nv9x6.s[65]++;if(query.getAttribute(el,'hidden',referenced)){cov_2q245nv9x6.b[22][0]++;cov_2q245nv9x6.s[66]++;return'';}else{cov_2q245nv9x6.b[22][1]++;}// B
   -1   632 cov_2q245nv9x6.s[67]++;if((cov_2q245nv9x6.b[24][0]++,!recursive)&&(cov_2q245nv9x6.b[24][1]++,el.matches('[aria-labelledby]'))){cov_2q245nv9x6.b[23][0]++;var ids=(cov_2q245nv9x6.s[68]++,el.getAttribute('aria-labelledby').split(/\s+/));var strings=(cov_2q245nv9x6.s[69]++,ids.map(function(id){cov_2q245nv9x6.f[8]++;var label=(cov_2q245nv9x6.s[70]++,document.getElementById(id));cov_2q245nv9x6.s[71]++;return label?(cov_2q245nv9x6.b[25][0]++,getName(label,true,label,owned)):(cov_2q245nv9x6.b[25][1]++,'');}));cov_2q245nv9x6.s[72]++;ret=strings.join(' ');}else{cov_2q245nv9x6.b[23][1]++;}// C
   -1   633 cov_2q245nv9x6.s[73]++;if((cov_2q245nv9x6.b[27][0]++,!ret.trim())&&(cov_2q245nv9x6.b[27][1]++,el.matches('[aria-label]'))){cov_2q245nv9x6.b[26][0]++;cov_2q245nv9x6.s[74]++;ret=el.getAttribute('aria-label');}else{cov_2q245nv9x6.b[26][1]++;}// D
   -1   634 cov_2q245nv9x6.s[75]++;if((cov_2q245nv9x6.b[29][0]++,!ret.trim())&&(cov_2q245nv9x6.b[29][1]++,!recursive)&&(cov_2q245nv9x6.b[29][2]++,isLabelable(el))){cov_2q245nv9x6.b[28][0]++;var strings=(cov_2q245nv9x6.s[76]++,getLabelNodes(el).map(function(label){cov_2q245nv9x6.f[9]++;cov_2q245nv9x6.s[77]++;return getName(label,true,label,owned);}));cov_2q245nv9x6.s[78]++;ret=strings.join(' ');}else{cov_2q245nv9x6.b[28][1]++;}cov_2q245nv9x6.s[79]++;if(!ret.trim()){cov_2q245nv9x6.b[30][0]++;cov_2q245nv9x6.s[80]++;ret=(cov_2q245nv9x6.b[31][0]++,el.placeholder)||(cov_2q245nv9x6.b[31][1]++,'');}else{cov_2q245nv9x6.b[30][1]++;}cov_2q245nv9x6.s[81]++;if(!ret.trim()){cov_2q245nv9x6.b[32][0]++;cov_2q245nv9x6.s[82]++;ret=(cov_2q245nv9x6.b[33][0]++,el.alt)||(cov_2q245nv9x6.b[33][1]++,'');}else{cov_2q245nv9x6.b[32][1]++;}cov_2q245nv9x6.s[83]++;if((cov_2q245nv9x6.b[35][0]++,!ret.trim())&&(cov_2q245nv9x6.b[35][1]++,el.matches('abbr,acronym'))&&(cov_2q245nv9x6.b[35][2]++,el.title)){cov_2q245nv9x6.b[34][0]++;cov_2q245nv9x6.s[84]++;ret=el.title;}else{cov_2q245nv9x6.b[34][1]++;}cov_2q245nv9x6.s[85]++;if(!ret.trim()){cov_2q245nv9x6.b[36][0]++;cov_2q245nv9x6.s[86]++;for(var selector in constants.nameFromDescendant){cov_2q245nv9x6.s[87]++;if(el.matches(selector)){cov_2q245nv9x6.b[37][0]++;var descendant=(cov_2q245nv9x6.s[88]++,el.querySelector(constants.nameFromDescendant[selector]));cov_2q245nv9x6.s[89]++;if(descendant){cov_2q245nv9x6.b[38][0]++;cov_2q245nv9x6.s[90]++;ret=getName(descendant,true,descendant,owned);}else{cov_2q245nv9x6.b[38][1]++;}}else{cov_2q245nv9x6.b[37][1]++;}}}else{cov_2q245nv9x6.b[36][1]++;}// E
   -1   635 cov_2q245nv9x6.s[91]++;if((cov_2q245nv9x6.b[40][0]++,!ret.trim())&&((cov_2q245nv9x6.b[40][1]++,recursive)||(cov_2q245nv9x6.b[40][2]++,isInLabelForOtherWidget(el))||(cov_2q245nv9x6.b[40][3]++,query.matches(el,'button')))){cov_2q245nv9x6.b[39][0]++;cov_2q245nv9x6.s[92]++;if(query.matches(el,'textbox,button,combobox,listbox,range')){cov_2q245nv9x6.b[41][0]++;cov_2q245nv9x6.s[93]++;if(query.matches(el,'textbox,button')){cov_2q245nv9x6.b[42][0]++;cov_2q245nv9x6.s[94]++;ret=(cov_2q245nv9x6.b[43][0]++,el.value)||(cov_2q245nv9x6.b[43][1]++,el.textContent);}else{cov_2q245nv9x6.b[42][1]++;cov_2q245nv9x6.s[95]++;if(query.matches(el,'combobox,listbox')){cov_2q245nv9x6.b[44][0]++;var selected=(cov_2q245nv9x6.s[96]++,(cov_2q245nv9x6.b[45][0]++,query.querySelector(el,':selected'))||(cov_2q245nv9x6.b[45][1]++,query.querySelector(el,'option')));cov_2q245nv9x6.s[97]++;if(selected){cov_2q245nv9x6.b[46][0]++;cov_2q245nv9x6.s[98]++;ret=getName(selected,recursive,referenced,owned);}else{cov_2q245nv9x6.b[46][1]++;cov_2q245nv9x6.s[99]++;ret=(cov_2q245nv9x6.b[47][0]++,el.value)||(cov_2q245nv9x6.b[47][1]++,'');}}else{cov_2q245nv9x6.b[44][1]++;cov_2q245nv9x6.s[100]++;if(query.matches(el,'range')){cov_2q245nv9x6.b[48][0]++;cov_2q245nv9x6.s[101]++;ret=''+((cov_2q245nv9x6.b[49][0]++,query.getAttribute(el,'valuetext'))||(cov_2q245nv9x6.b[49][1]++,query.getAttribute(el,'valuenow'))||(cov_2q245nv9x6.b[49][2]++,el.value));}else{cov_2q245nv9x6.b[48][1]++;}}}}else{cov_2q245nv9x6.b[41][1]++;}}else{cov_2q245nv9x6.b[39][1]++;}// F
   -1   636 // FIXME: menu is not mentioned in the spec
   -1   637 cov_2q245nv9x6.s[102]++;if((cov_2q245nv9x6.b[51][0]++,!ret.trim())&&((cov_2q245nv9x6.b[51][1]++,recursive)||(cov_2q245nv9x6.b[51][2]++,allowNameFromContent(el))||(cov_2q245nv9x6.b[51][3]++,el.closest('label')))&&(cov_2q245nv9x6.b[51][4]++,!query.matches(el,'menu'))){cov_2q245nv9x6.b[50][0]++;cov_2q245nv9x6.s[103]++;ret=getContent(el,referenced,owned);}else{cov_2q245nv9x6.b[50][1]++;}// TODO: G
   -1   638 // TODO: H
   -1   639 // FIXME: not mentioned in the spec
   -1   640 cov_2q245nv9x6.s[104]++;if((cov_2q245nv9x6.b[53][0]++,!ret.trim())&&(cov_2q245nv9x6.b[53][1]++,query.matches(el,'presentation'))){cov_2q245nv9x6.b[52][0]++;cov_2q245nv9x6.s[105]++;return getContent(el,referenced,owned);}else{cov_2q245nv9x6.b[52][1]++;}// FIXME: not mentioned in the spec
   -1   641 cov_2q245nv9x6.s[106]++;if(!ret.trim()){cov_2q245nv9x6.b[54][0]++;cov_2q245nv9x6.s[107]++;for(var selector in constants.nameDefaults){cov_2q245nv9x6.s[108]++;if(el.matches(selector)){cov_2q245nv9x6.b[55][0]++;cov_2q245nv9x6.s[109]++;ret=constants.nameDefaults[selector];}else{cov_2q245nv9x6.b[55][1]++;}}}else{cov_2q245nv9x6.b[54][1]++;}// I
   -1   642 cov_2q245nv9x6.s[110]++;if(!ret.trim()){cov_2q245nv9x6.b[56][0]++;cov_2q245nv9x6.s[111]++;ret=(cov_2q245nv9x6.b[57][0]++,el.title)||(cov_2q245nv9x6.b[57][1]++,'');}else{cov_2q245nv9x6.b[56][1]++;}var before=(cov_2q245nv9x6.s[112]++,getPseudoContent(el,':before'));var after=(cov_2q245nv9x6.s[113]++,getPseudoContent(el,':after'));cov_2q245nv9x6.s[114]++;return before+ret+after;};cov_2q245nv9x6.s[115]++;var getNameTrimmed=function(el){cov_2q245nv9x6.f[10]++;cov_2q245nv9x6.s[116]++;return getName(el).replace(/\s+/g,' ').trim();};cov_2q245nv9x6.s[117]++;var getDescription=function(el){cov_2q245nv9x6.f[11]++;var ret=(cov_2q245nv9x6.s[118]++,'');var owned=(cov_2q245nv9x6.s[119]++,[]);cov_2q245nv9x6.s[120]++;if(el.matches('[aria-describedby]')){cov_2q245nv9x6.b[58][0]++;var ids=(cov_2q245nv9x6.s[121]++,el.getAttribute('aria-describedby').split(/\s+/));var strings=(cov_2q245nv9x6.s[122]++,ids.map(function(id){cov_2q245nv9x6.f[12]++;var label=(cov_2q245nv9x6.s[123]++,document.getElementById(id));cov_2q245nv9x6.s[124]++;return label?(cov_2q245nv9x6.b[59][0]++,getName(label,true,label,owned)):(cov_2q245nv9x6.b[59][1]++,'');}));cov_2q245nv9x6.s[125]++;ret=strings.join(' ');}else{cov_2q245nv9x6.b[58][1]++;cov_2q245nv9x6.s[126]++;if(el.title){cov_2q245nv9x6.b[60][0]++;cov_2q245nv9x6.s[127]++;ret=el.title;}else{cov_2q245nv9x6.b[60][1]++;cov_2q245nv9x6.s[128]++;if(el.placeholder){cov_2q245nv9x6.b[61][0]++;cov_2q245nv9x6.s[129]++;ret=el.placeholder;}else{cov_2q245nv9x6.b[61][1]++;}}}cov_2q245nv9x6.s[130]++;ret=((cov_2q245nv9x6.b[62][0]++,ret)||(cov_2q245nv9x6.b[62][1]++,'')).trim().replace(/\s+/g,' ');cov_2q245nv9x6.s[131]++;if(ret===getNameTrimmed(el)){cov_2q245nv9x6.b[63][0]++;cov_2q245nv9x6.s[132]++;ret='';}else{cov_2q245nv9x6.b[63][1]++;}cov_2q245nv9x6.s[133]++;return ret;};cov_2q245nv9x6.s[134]++;module.exports={getName:getNameTrimmed,getDescription:getDescription};
  633   643 
  634   644 },{"./constants.js":5,"./query.js":7,"./util.js":8}],7:[function(require,module,exports){
  635   645 var constants = require('./constants.js');
@@ -821,7 +831,7 @@ module.exports = {
  821   831 };
  822   832 
  823   833 },{}],9:[function(require,module,exports){
  824    -1 var currentVersion = "2.20";
   -1   834 window.getAccNameVersion = "2.20";
  825   835 
  826   836 /*!
  827   837 CalcNames: The AccName Computation Prototype, compute the Name and Description property values for a DOM node
@@ -834,1160 +844,1183 @@ Distributed under the terms of the Open Source Initiative OSI - MIT License
  834   844 */
  835   845 
  836   846 // AccName Computation Prototype
  837    -1 var calcNames = function(node, fnc, preventVisualARIASelfCSSRef) {
  838    -1   var props = { name: "", desc: "" };
  839    -1   if (!node || node.nodeType !== 1) {
  840    -1     return props;
  841    -1   }
  842    -1   var rootNode = node;
  843    -1 
  844    -1   // Track nodes to prevent duplicate node reference parsing.
  845    -1   var nodes = [];
  846    -1   // Track aria-owns references to prevent duplicate parsing.
  847    -1   var owns = [];
  848    -1 
  849    -1   // Recursively process a DOM node to compute an accessible name in accordance with the spec
  850    -1   var walk = function(
  851    -1     refNode,
  852    -1     stop,
  853    -1     skip,
  854    -1     nodesToIgnoreValues,
  855    -1     skipAbort,
  856    -1     ownedBy
  857    -1   ) {
  858    -1     var fullResult = {
  859    -1       name: "",
  860    -1       title: ""
  861    -1     };
   -1   847 window.getAccName = calcNames = function(
   -1   848   node,
   -1   849   fnc,
   -1   850   preventVisualARIASelfCSSRef
   -1   851 ) {
   -1   852   var props = { name: "", desc: "", error: "" };
   -1   853   try {
   -1   854     if (!node || node.nodeType !== 1) {
   -1   855       return props;
   -1   856     }
   -1   857     var rootNode = node;
  862   858 
  863    -1     /*
   -1   859     // Track nodes to prevent duplicate node reference parsing.
   -1   860     var nodes = [];
   -1   861     // Track aria-owns references to prevent duplicate parsing.
   -1   862     var owns = [];
   -1   863 
   -1   864     // Recursively process a DOM node to compute an accessible name in accordance with the spec
   -1   865     var walk = function(
   -1   866       refNode,
   -1   867       stop,
   -1   868       skip,
   -1   869       nodesToIgnoreValues,
   -1   870       skipAbort,
   -1   871       ownedBy
   -1   872     ) {
   -1   873       var fullResult = {
   -1   874         name: "",
   -1   875         title: ""
   -1   876       };
   -1   877 
   -1   878       /*
  864   879   ARIA Role Exception Rule Set 1.1
  865   880   The following Role Exception Rule Set is based on the following ARIA Working Group discussion involving all relevant browser venders.
  866   881   https://lists.w3.org/Archives/Public/public-aria/2017Jun/0057.html
  867   882   */
  868    -1     var isException = function(node, refNode) {
  869    -1       if (!refNode || !node || refNode.nodeType !== 1 || node.nodeType !== 1) {
  870    -1         return false;
  871    -1       }
  872    -1 
  873    -1       var inList = function(node, list) {
  874    -1         var role = getRole(node);
  875    -1         var tag = node.nodeName.toLowerCase();
  876    -1         return (
  877    -1           (role && list.roles.indexOf(role) >= 0) ||
  878    -1           (!role && list.tags.indexOf(tag) >= 0)
  879    -1         );
  880    -1       };
  881    -1 
  882    -1       // The list3 overrides must be checked first.
  883    -1       if (inList(node, list3)) {
   -1   883       var isException = function(node, refNode) {
  884   884         if (
  885    -1           node === refNode &&
  886    -1           !(node.id && ownedBy[node.id] && ownedBy[node.id].node)
   -1   885           !refNode ||
   -1   886           !node ||
   -1   887           refNode.nodeType !== 1 ||
   -1   888           node.nodeType !== 1
  887   889         ) {
  888    -1           return !isFocusable(node);
  889    -1         } else {
  890    -1           // Note: the inParent checker needs to be present to allow for embedded roles matching list3 when the referenced parent is referenced using aria-labelledby, aria-describedby, or aria-owns.
  891    -1           return !(
  892    -1             (inParent(node, ownedBy.top) &&
  893    -1               node.nodeName.toLowerCase() !== "select") ||
  894    -1             inList(refNode, list1)
  895    -1           );
   -1   890           return false;
  896   891         }
  897    -1       }
  898    -1       // Otherwise process list2 to identify roles to ignore processing name from content.
  899    -1       else if (
  900    -1         inList(node, list2) ||
  901    -1         (node === rootNode && !inList(node, list1))
  902    -1       ) {
  903    -1         return true;
  904    -1       } else {
  905    -1         return false;
  906    -1       }
  907    -1     };
  908   892 
  909    -1     var inParent = function(node, parent) {
  910    -1       var trackNodes = [];
  911    -1       while (node) {
  912    -1         if (
  913    -1           node.id &&
  914    -1           ownedBy[node.id] &&
  915    -1           ownedBy[node.id].node &&
  916    -1           trackNodes.indexOf(node) === -1
  917    -1         ) {
  918    -1           trackNodes.push(node);
  919    -1           node = ownedBy[node.id].node;
  920    -1         } else {
  921    -1           node = node.parentNode;
   -1   893         var inList = function(node, list) {
   -1   894           var role = getRole(node);
   -1   895           var tag = node.nodeName.toLowerCase();
   -1   896           return (
   -1   897             (role && list.roles.indexOf(role) >= 0) ||
   -1   898             (!role && list.tags.indexOf(tag) >= 0)
   -1   899           );
   -1   900         };
   -1   901 
   -1   902         // The list3 overrides must be checked first.
   -1   903         if (inList(node, list3)) {
   -1   904           if (
   -1   905             node === refNode &&
   -1   906             !(node.id && ownedBy[node.id] && ownedBy[node.id].node)
   -1   907           ) {
   -1   908             return !isFocusable(node);
   -1   909           } else {
   -1   910             // Note: the inParent checker needs to be present to allow for embedded roles matching list3 when the referenced parent is referenced using aria-labelledby, aria-describedby, or aria-owns.
   -1   911             return !(
   -1   912               (inParent(node, ownedBy.top) &&
   -1   913                 node.nodeName.toLowerCase() !== "select") ||
   -1   914               inList(refNode, list1)
   -1   915             );
   -1   916           }
  922   917         }
  923    -1         if (node && node === parent) {
   -1   918         // Otherwise process list2 to identify roles to ignore processing name from content.
   -1   919         else if (
   -1   920           inList(node, list2) ||
   -1   921           (node === rootNode && !inList(node, list1))
   -1   922         ) {
  924   923           return true;
  925    -1         } else if (!node || node === ownedBy.top || node === document.body) {
   -1   924         } else {
  926   925           return false;
  927   926         }
  928    -1       }
  929    -1       return false;
  930    -1     };
  931    -1 
  932    -1     // Placeholder for storing CSS before and after pseudo element text values for the top level node
  933    -1     var cssOP = {
  934    -1       before: "",
  935    -1       after: ""
  936    -1     };
   -1   927       };
  937   928 
  938    -1     if (ownedBy.ref) {
  939    -1       if (isParentHidden(refNode, document.body, true, true)) {
  940    -1         // If referenced via aria-labelledby or aria-describedby, do not return a name or description if a parent node is hidden.
  941    -1         return fullResult;
  942    -1       } else if (isHidden(refNode, document.body)) {
  943    -1         // Otherwise, if aria-labelledby or aria-describedby reference a node that is explicitly hidden, then process all children regardless of their individual hidden states.
  944    -1         var ignoreHidden = true;
  945    -1       }
  946    -1     }
   -1   929       var inParent = function(node, parent) {
   -1   930         var trackNodes = [];
   -1   931         while (node) {
   -1   932           if (
   -1   933             node.id &&
   -1   934             ownedBy[node.id] &&
   -1   935             ownedBy[node.id].node &&
   -1   936             trackNodes.indexOf(node) === -1
   -1   937           ) {
   -1   938             trackNodes.push(node);
   -1   939             node = ownedBy[node.id].node;
   -1   940           } else {
   -1   941             node = node.parentNode;
   -1   942           }
   -1   943           if (node && node === parent) {
   -1   944             return true;
   -1   945           } else if (!node || node === ownedBy.top || node === document.body) {
   -1   946             return false;
   -1   947           }
   -1   948         }
   -1   949         return false;
   -1   950       };
  947   951 
  948    -1     if (nodes.indexOf(refNode) === -1) {
  949    -1       // Store the before and after pseudo element 'content' values for the top level DOM node
  950    -1       // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
  951    -1       cssOP = getCSSText(refNode, null);
   -1   952       // Placeholder for storing CSS before and after pseudo element text values for the top level node
   -1   953       var cssOP = {
   -1   954         before: "",
   -1   955         after: ""
   -1   956       };
  952   957 
  953    -1       // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
  954    -1       if (preventVisualARIASelfCSSRef) {
  955    -1         if (
  956    -1           cssOP.before.indexOf(" [ARIA] ") !== -1 ||
  957    -1           cssOP.before.indexOf(" aria-") !== -1 ||
  958    -1           cssOP.before.indexOf(" accName: ") !== -1
  959    -1         )
  960    -1           cssOP.before = "";
  961    -1         if (
  962    -1           cssOP.after.indexOf(" [ARIA] ") !== -1 ||
  963    -1           cssOP.after.indexOf(" aria-") !== -1 ||
  964    -1           cssOP.after.indexOf(" accDescription: ") !== -1
  965    -1         )
  966    -1           cssOP.after = "";
   -1   958       if (ownedBy.ref) {
   -1   959         if (isParentHidden(refNode, document.body, true, true)) {
   -1   960           // If referenced via aria-labelledby or aria-describedby, do not return a name or description if a parent node is hidden.
   -1   961           return fullResult;
   -1   962         } else if (isHidden(refNode, document.body)) {
   -1   963           // Otherwise, if aria-labelledby or aria-describedby reference a node that is explicitly hidden, then process all children regardless of their individual hidden states.
   -1   964           var ignoreHidden = true;
   -1   965         }
  967   966       }
  968    -1     }
  969   967 
  970    -1     // Recursively apply the same naming computation to all nodes within the referenced structure
  971    -1     var walkDOM = function(node, fn, refNode) {
  972    -1       var res = {
  973    -1         name: "",
  974    -1         title: ""
  975    -1       };
  976    -1       if (!node) {
  977    -1         return res;
  978    -1       }
  979    -1       var nodeIsBlock =
  980    -1         node && node.nodeType === 1 && isBlockLevelElement(node) ? true : false;
  981    -1       var fResult = fn(node) || {};
  982    -1       if (fResult.name && fResult.name.length) {
  983    -1         res.name += fResult.name;
  984    -1       }
  985    -1       if (!isException(node, ownedBy.top, ownedBy)) {
  986    -1         node = node.firstChild;
  987    -1         while (node) {
  988    -1           res.name += walkDOM(node, fn, refNode).name;
  989    -1           node = node.nextSibling;
   -1   968       if (nodes.indexOf(refNode) === -1) {
   -1   969         // Store the before and after pseudo element 'content' values for the top level DOM node
   -1   970         // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
   -1   971         cssOP = getCSSText(refNode, null);
   -1   972 
   -1   973         // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
   -1   974         if (preventVisualARIASelfCSSRef) {
   -1   975           if (
   -1   976             cssOP.before.indexOf(" [ARIA] ") !== -1 ||
   -1   977             cssOP.before.indexOf(" aria-") !== -1 ||
   -1   978             cssOP.before.indexOf(" accName: ") !== -1
   -1   979           )
   -1   980             cssOP.before = "";
   -1   981           if (
   -1   982             cssOP.after.indexOf(" [ARIA] ") !== -1 ||
   -1   983             cssOP.after.indexOf(" aria-") !== -1 ||
   -1   984             cssOP.after.indexOf(" accDescription: ") !== -1
   -1   985           )
   -1   986             cssOP.after = "";
  990   987         }
  991   988       }
  992    -1       res.name += fResult.owns || "";
  993    -1       if (rootNode === refNode && !trim(res.name) && trim(fResult.title)) {
  994    -1         res.name = addSpacing(fResult.title);
  995    -1       } else if (rootNode === refNode && trim(fResult.title)) {
  996    -1         res.title = addSpacing(fResult.title);
  997    -1       }
  998    -1       if (rootNode === refNode && trim(fResult.desc)) {
  999    -1         res.title = addSpacing(fResult.desc);
 1000    -1       }
 1001    -1       if (nodeIsBlock || fResult.isWidget) {
 1002    -1         res.name = addSpacing(res.name);
 1003    -1       }
 1004    -1       return res;
 1005    -1     };
 1006   989 
 1007    -1     fullResult = walkDOM(
 1008    -1       refNode,
 1009    -1       function(node) {
 1010    -1         var i = 0;
 1011    -1         var element = null;
 1012    -1         var ids = [];
 1013    -1         var parts = [];
 1014    -1         var result = {
   -1   990       // Recursively apply the same naming computation to all nodes within the referenced structure
   -1   991       var walkDOM = function(node, fn, refNode) {
   -1   992         var res = {
 1015   993           name: "",
 1016    -1           title: "",
 1017    -1           owns: ""
   -1   994           title: ""
 1018   995         };
 1019    -1         var isEmbeddedNode =
 1020    -1           node &&
 1021    -1           node.nodeType === 1 &&
 1022    -1           nodesToIgnoreValues &&
 1023    -1           nodesToIgnoreValues.length &&
 1024    -1           nodesToIgnoreValues.indexOf(node) !== -1 &&
 1025    -1           node === rootNode &&
 1026    -1           node !== refNode
   -1   996         if (!node) {
   -1   997           return res;
   -1   998         }
   -1   999         var nodeIsBlock =
   -1  1000           node && node.nodeType === 1 && isBlockLevelElement(node)
 1027  1001             ? true
 1028  1002             : false;
 1029    -1 
 1030    -1         if (
 1031    -1           (skip ||
 1032    -1             !node ||
 1033    -1             nodes.indexOf(node) !== -1 ||
 1034    -1             (!ignoreHidden && isHidden(node, ownedBy.top))) &&
 1035    -1           !skipAbort &&
 1036    -1           !isEmbeddedNode
 1037    -1         ) {
 1038    -1           // Abort if algorithm step is already completed, or if node is a hidden child of refNode, or if this node has already been processed, or skip abort if aria-labelledby self references same node.
 1039    -1           return result;
 1040    -1         }
 1041    -1 
 1042    -1         if (nodes.indexOf(node) === -1) {
 1043    -1           nodes.push(node);
   -1  1003         var fResult = fn(node) || {};
   -1  1004         if (fResult.name && fResult.name.length) {
   -1  1005           res.name += fResult.name;
 1044  1006         }
 1045    -1 
 1046    -1         // Store name for the current node.
 1047    -1         var name = "";
 1048    -1         // Store name from aria-owns references if detected.
 1049    -1         var ariaO = "";
 1050    -1         // Placeholder for storing CSS before and after pseudo element text values for the current node container element
 1051    -1         var cssO = {
 1052    -1           before: "",
 1053    -1           after: ""
 1054    -1         };
 1055    -1 
 1056    -1         var parent = refNode === node ? node : node.parentNode;
 1057    -1         if (nodes.indexOf(parent) === -1) {
 1058    -1           nodes.push(parent);
 1059    -1           // Store the before and after pseudo element 'content' values for the current node container element
 1060    -1           // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
 1061    -1           cssO = getCSSText(parent, refNode);
 1062    -1 
 1063    -1           // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
 1064    -1           if (preventVisualARIASelfCSSRef) {
 1065    -1             if (
 1066    -1               cssO.before.indexOf(" [ARIA] ") !== -1 ||
 1067    -1               cssO.before.indexOf(" aria-") !== -1 ||
 1068    -1               cssO.before.indexOf(" accName: ") !== -1
 1069    -1             )
 1070    -1               cssO.before = "";
 1071    -1             if (
 1072    -1               cssO.after.indexOf(" [ARIA] ") !== -1 ||
 1073    -1               cssO.after.indexOf(" aria-") !== -1 ||
 1074    -1               cssO.after.indexOf(" accDescription: ") !== -1
 1075    -1             )
 1076    -1               cssO.after = "";
   -1  1007         if (!isException(node, ownedBy.top, ownedBy)) {
   -1  1008           node = node.firstChild;
   -1  1009           while (node) {
   -1  1010             res.name += walkDOM(node, fn, refNode).name;
   -1  1011             node = node.nextSibling;
 1077  1012           }
 1078  1013         }
   -1  1014         res.name += fResult.owns || "";
   -1  1015         if (rootNode === refNode && !trim(res.name) && trim(fResult.title)) {
   -1  1016           res.name = addSpacing(fResult.title);
   -1  1017         } else if (rootNode === refNode && trim(fResult.title)) {
   -1  1018           res.title = addSpacing(fResult.title);
   -1  1019         }
   -1  1020         if (rootNode === refNode && trim(fResult.desc)) {
   -1  1021           res.title = addSpacing(fResult.desc);
   -1  1022         }
   -1  1023         if (nodeIsBlock || fResult.isWidget) {
   -1  1024           res.name = addSpacing(res.name);
   -1  1025         }
   -1  1026         return res;
   -1  1027       };
 1079  1028 
 1080    -1         // Process standard DOM element node
 1081    -1         if (node.nodeType === 1) {
 1082    -1           var aLabelledby = node.getAttribute("aria-labelledby") || "";
 1083    -1           var aDescribedby = node.getAttribute("aria-describedby") || "";
 1084    -1           var aLabel = node.getAttribute("aria-label") || "";
 1085    -1           var nTitle = node.getAttribute("title") || "";
 1086    -1           var nTag = node.nodeName.toLowerCase();
 1087    -1           var nRole = getRole(node);
 1088    -1 
 1089    -1           var isNativeFormField = nativeFormFields.indexOf(nTag) !== -1;
 1090    -1           var isNativeButton = ["input"].indexOf(nTag) !== -1;
 1091    -1           var isRangeWidgetRole = rangeWidgetRoles.indexOf(nRole) !== -1;
 1092    -1           var isEditWidgetRole = editWidgetRoles.indexOf(nRole) !== -1;
 1093    -1           var isSelectWidgetRole = selectWidgetRoles.indexOf(nRole) !== -1;
 1094    -1           var isSimulatedFormField =
 1095    -1             isRangeWidgetRole ||
 1096    -1             isEditWidgetRole ||
 1097    -1             isSelectWidgetRole ||
 1098    -1             nRole === "combobox";
 1099    -1           var isWidgetRole =
 1100    -1             (isSimulatedFormField || otherWidgetRoles.indexOf(nRole) !== -1) &&
 1101    -1             nRole !== "link";
 1102    -1           result.isWidget = isNativeFormField || isWidgetRole;
 1103    -1 
 1104    -1           var hasName = false;
 1105    -1           var aOwns = node.getAttribute("aria-owns") || "";
 1106    -1           var isSeparatChildFormField =
 1107    -1             !isEmbeddedNode &&
 1108    -1             ((node !== refNode &&
 1109    -1               (isNativeFormField || isSimulatedFormField)) ||
 1110    -1               (node.id &&
 1111    -1                 ownedBy[node.id] &&
 1112    -1                 ownedBy[node.id].target &&
 1113    -1                 ownedBy[node.id].target === node))
   -1  1029       fullResult = walkDOM(
   -1  1030         refNode,
   -1  1031         function(node) {
   -1  1032           var i = 0;
   -1  1033           var element = null;
   -1  1034           var ids = [];
   -1  1035           var parts = [];
   -1  1036           var result = {
   -1  1037             name: "",
   -1  1038             title: "",
   -1  1039             owns: ""
   -1  1040           };
   -1  1041           var isEmbeddedNode =
   -1  1042             node &&
   -1  1043             node.nodeType === 1 &&
   -1  1044             nodesToIgnoreValues &&
   -1  1045             nodesToIgnoreValues.length &&
   -1  1046             nodesToIgnoreValues.indexOf(node) !== -1 &&
   -1  1047             node === rootNode &&
   -1  1048             node !== refNode
 1114  1049               ? true
 1115  1050               : false;
 1116  1051 
 1117    -1           if (!stop && node === refNode) {
 1118    -1             // Check for non-empty value of aria-labelledby if current node equals reference node, follow each ID ref, then stop and process no deeper.
 1119    -1             if (aLabelledby) {
 1120    -1               ids = aLabelledby.split(/\s+/);
 1121    -1               parts = [];
 1122    -1               for (i = 0; i < ids.length; i++) {
 1123    -1                 element = document.getElementById(ids[i]);
 1124    -1                 // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
 1125    -1                 parts.push(
 1126    -1                   walk(element, true, skip, [node], element === refNode, {
 1127    -1                     ref: ownedBy,
 1128    -1                     top: element
 1129    -1                   }).name
 1130    -1                 );
 1131    -1               }
 1132    -1               // Check for blank value, since whitespace chars alone are not valid as a name
 1133    -1               name = trim(parts.join(" "));
   -1  1052           if (
   -1  1053             (skip ||
   -1  1054               !node ||
   -1  1055               nodes.indexOf(node) !== -1 ||
   -1  1056               (!ignoreHidden && isHidden(node, ownedBy.top))) &&
   -1  1057             !skipAbort &&
   -1  1058             !isEmbeddedNode
   -1  1059           ) {
   -1  1060             // Abort if algorithm step is already completed, or if node is a hidden child of refNode, or if this node has already been processed, or skip abort if aria-labelledby self references same node.
   -1  1061             return result;
   -1  1062           }
 1134  1063 
 1135    -1               if (trim(name)) {
 1136    -1                 hasName = true;
 1137    -1                 // Abort further recursion if name is valid.
 1138    -1                 skip = true;
 1139    -1               }
   -1  1064           if (nodes.indexOf(node) === -1) {
   -1  1065             nodes.push(node);
   -1  1066           }
   -1  1067 
   -1  1068           // Store name for the current node.
   -1  1069           var name = "";
   -1  1070           // Store name from aria-owns references if detected.
   -1  1071           var ariaO = "";
   -1  1072           // Placeholder for storing CSS before and after pseudo element text values for the current node container element
   -1  1073           var cssO = {
   -1  1074             before: "",
   -1  1075             after: ""
   -1  1076           };
   -1  1077 
   -1  1078           var parent = refNode === node ? node : node.parentNode;
   -1  1079           if (nodes.indexOf(parent) === -1) {
   -1  1080             nodes.push(parent);
   -1  1081             // Store the before and after pseudo element 'content' values for the current node container element
   -1  1082             // Note: If the pseudo element includes block level styling, a space will be added, otherwise inline is asumed and no spacing is added.
   -1  1083             cssO = getCSSText(parent, refNode);
   -1  1084 
   -1  1085             // Enabled in Visual ARIA to prevent self referencing by Visual ARIA tooltips
   -1  1086             if (preventVisualARIASelfCSSRef) {
   -1  1087               if (
   -1  1088                 cssO.before.indexOf(" [ARIA] ") !== -1 ||
   -1  1089                 cssO.before.indexOf(" aria-") !== -1 ||
   -1  1090                 cssO.before.indexOf(" accName: ") !== -1
   -1  1091               )
   -1  1092                 cssO.before = "";
   -1  1093               if (
   -1  1094                 cssO.after.indexOf(" [ARIA] ") !== -1 ||
   -1  1095                 cssO.after.indexOf(" aria-") !== -1 ||
   -1  1096                 cssO.after.indexOf(" accDescription: ") !== -1
   -1  1097               )
   -1  1098                 cssO.after = "";
 1140  1099             }
   -1  1100           }
 1141  1101 
 1142    -1             // Check for non-empty value of aria-describedby if current node equals reference node, follow each ID ref, then stop and process no deeper.
 1143    -1             if (aDescribedby) {
 1144    -1               var desc = "";
 1145    -1               ids = aDescribedby.split(/\s+/);
 1146    -1               parts = [];
 1147    -1               for (i = 0; i < ids.length; i++) {
 1148    -1                 element = document.getElementById(ids[i]);
 1149    -1                 // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
 1150    -1                 parts.push(
 1151    -1                   walk(element, true, false, [node], false, {
 1152    -1                     ref: ownedBy,
 1153    -1                     top: element
 1154    -1                   }).name
 1155    -1                 );
   -1  1102           // Process standard DOM element node
   -1  1103           if (node.nodeType === 1) {
   -1  1104             var aLabelledby = node.getAttribute("aria-labelledby") || "";
   -1  1105             var aDescribedby = node.getAttribute("aria-describedby") || "";
   -1  1106             var aLabel = node.getAttribute("aria-label") || "";
   -1  1107             var nTitle = node.getAttribute("title") || "";
   -1  1108             var nTag = node.nodeName.toLowerCase();
   -1  1109             var nRole = getRole(node);
   -1  1110 
   -1  1111             var isNativeFormField = nativeFormFields.indexOf(nTag) !== -1;
   -1  1112             var isNativeButton = ["input"].indexOf(nTag) !== -1;
   -1  1113             var isRangeWidgetRole = rangeWidgetRoles.indexOf(nRole) !== -1;
   -1  1114             var isEditWidgetRole = editWidgetRoles.indexOf(nRole) !== -1;
   -1  1115             var isSelectWidgetRole = selectWidgetRoles.indexOf(nRole) !== -1;
   -1  1116             var isSimulatedFormField =
   -1  1117               isRangeWidgetRole ||
   -1  1118               isEditWidgetRole ||
   -1  1119               isSelectWidgetRole ||
   -1  1120               nRole === "combobox";
   -1  1121             var isWidgetRole =
   -1  1122               (isSimulatedFormField ||
   -1  1123                 otherWidgetRoles.indexOf(nRole) !== -1) &&
   -1  1124               nRole !== "link";
   -1  1125             result.isWidget = isNativeFormField || isWidgetRole;
   -1  1126 
   -1  1127             var hasName = false;
   -1  1128             var aOwns = node.getAttribute("aria-owns") || "";
   -1  1129             var isSeparatChildFormField =
   -1  1130               !isEmbeddedNode &&
   -1  1131               ((node !== refNode &&
   -1  1132                 (isNativeFormField || isSimulatedFormField)) ||
   -1  1133                 (node.id &&
   -1  1134                   ownedBy[node.id] &&
   -1  1135                   ownedBy[node.id].target &&
   -1  1136                   ownedBy[node.id].target === node))
   -1  1137                 ? true
   -1  1138                 : false;
   -1  1139 
   -1  1140             if (!stop && node === refNode) {
   -1  1141               // Check for non-empty value of aria-labelledby if current node equals reference node, follow each ID ref, then stop and process no deeper.
   -1  1142               if (aLabelledby) {
   -1  1143                 ids = aLabelledby.split(/\s+/);
   -1  1144                 parts = [];
   -1  1145                 for (i = 0; i < ids.length; i++) {
   -1  1146                   element = document.getElementById(ids[i]);
   -1  1147                   // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
   -1  1148                   parts.push(
   -1  1149                     walk(element, true, skip, [node], element === refNode, {
   -1  1150                       ref: ownedBy,
   -1  1151                       top: element
   -1  1152                     }).name
   -1  1153                   );
   -1  1154                 }
   -1  1155                 // Check for blank value, since whitespace chars alone are not valid as a name
   -1  1156                 name = trim(parts.join(" "));
   -1  1157 
   -1  1158                 if (trim(name)) {
   -1  1159                   hasName = true;
   -1  1160                   // Abort further recursion if name is valid.
   -1  1161                   skip = true;
   -1  1162                 }
 1156  1163               }
 1157    -1               // Check for blank value, since whitespace chars alone are not valid as a name
 1158    -1               desc = trim(parts.join(" "));
 1159  1164 
 1160    -1               if (trim(desc)) {
 1161    -1                 result.desc = desc;
   -1  1165               // Check for non-empty value of aria-describedby if current node equals reference node, follow each ID ref, then stop and process no deeper.
   -1  1166               if (aDescribedby) {
   -1  1167                 var desc = "";
   -1  1168                 ids = aDescribedby.split(/\s+/);
   -1  1169                 parts = [];
   -1  1170                 for (i = 0; i < ids.length; i++) {
   -1  1171                   element = document.getElementById(ids[i]);
   -1  1172                   // Also prevent the current form field from having its value included in the naming computation if nested as a child of label
   -1  1173                   parts.push(
   -1  1174                     walk(element, true, false, [node], false, {
   -1  1175                       ref: ownedBy,
   -1  1176                       top: element
   -1  1177                     }).name
   -1  1178                   );
   -1  1179                 }
   -1  1180                 // Check for blank value, since whitespace chars alone are not valid as a name
   -1  1181                 desc = trim(parts.join(" "));
   -1  1182 
   -1  1183                 if (trim(desc)) {
   -1  1184                   result.desc = desc;
   -1  1185                 }
 1162  1186               }
 1163  1187             }
 1164    -1           }
 1165  1188 
 1166    -1           // Otherwise, if the current node is a nested widget control within the parent ref obj, then add only its value and process no deeper within the branch.
 1167    -1           if (isSeparatChildFormField) {
 1168    -1             // Prevent the referencing node from having its value included in the case of form control labels that contain the element with focus.
 1169    -1             if (
 1170    -1               !(
 1171    -1                 nodesToIgnoreValues &&
 1172    -1                 nodesToIgnoreValues.length &&
 1173    -1                 nodesToIgnoreValues.indexOf(node) !== -1
 1174    -1               )
 1175    -1             ) {
 1176    -1               if (isRangeWidgetRole) {
 1177    -1                 // For range widgets, append aria-valuetext if non-empty, or aria-valuenow if non-empty, or node.value if applicable.
 1178    -1                 name = getObjectValue(nRole, node, true);
 1179    -1               } else if (
 1180    -1                 isEditWidgetRole ||
 1181    -1                 (nRole === "combobox" && isNativeFormField)
 1182    -1               ) {
 1183    -1                 // For simulated edit widgets, append text from content if applicable, or node.value if applicable.
 1184    -1                 name = getObjectValue(nRole, node, false, true);
 1185    -1               } else if (isSelectWidgetRole) {
 1186    -1                 // For simulated select widgets, append same naming computation algorithm for all child nodes including aria-selected="true" separated by a space when multiple.
 1187    -1                 // Also filter nodes so that only valid child roles of relevant parent role that include aria-selected="true" are included.
 1188    -1                 name = getObjectValue(nRole, node, false, false, true);
 1189    -1               } else if (
 1190    -1                 isNativeFormField &&
 1191    -1                 ["input", "textarea"].indexOf(nTag) !== -1 &&
 1192    -1                 (!isWidgetRole || isEditWidgetRole)
 1193    -1               ) {
 1194    -1                 // For native edit fields, append node.value when applicable.
 1195    -1                 name = getObjectValue(nRole, node, false, false, false, true);
 1196    -1               } else if (
 1197    -1                 isNativeFormField &&
 1198    -1                 nTag === "select" &&
 1199    -1                 (!isWidgetRole || nRole === "combobox")
   -1  1189             // Otherwise, if the current node is a nested widget control within the parent ref obj, then add only its value and process no deeper within the branch.
   -1  1190             if (isSeparatChildFormField) {
   -1  1191               // Prevent the referencing node from having its value included in the case of form control labels that contain the element with focus.
   -1  1192               if (
   -1  1193                 !(
   -1  1194                   nodesToIgnoreValues &&
   -1  1195                   nodesToIgnoreValues.length &&
   -1  1196                   nodesToIgnoreValues.indexOf(node) !== -1
   -1  1197                 )
 1200  1198               ) {
 1201    -1                 // For native select fields, get text from content for all options with selected attribute separated by a space when multiple, but don't process if another widget role is present unless it matches role="combobox".
 1202    -1                 // Reference: https://github.com/WhatSock/w3c-alternative-text-computation/issues/7
 1203    -1                 name = getObjectValue(nRole, node, false, false, true, true);
   -1  1199                 if (isRangeWidgetRole) {
   -1  1200                   // For range widgets, append aria-valuetext if non-empty, or aria-valuenow if non-empty, or node.value if applicable.
   -1  1201                   name = getObjectValue(nRole, node, true);
   -1  1202                 } else if (
   -1  1203                   isEditWidgetRole ||
   -1  1204                   (nRole === "combobox" && isNativeFormField)
   -1  1205                 ) {
   -1  1206                   // For simulated edit widgets, append text from content if applicable, or node.value if applicable.
   -1  1207                   name = getObjectValue(nRole, node, false, true);
   -1  1208                 } else if (isSelectWidgetRole) {
   -1  1209                   // For simulated select widgets, append same naming computation algorithm for all child nodes including aria-selected="true" separated by a space when multiple.
   -1  1210                   // Also filter nodes so that only valid child roles of relevant parent role that include aria-selected="true" are included.
   -1  1211                   name = getObjectValue(nRole, node, false, false, true);
   -1  1212                 } else if (
   -1  1213                   isNativeFormField &&
   -1  1214                   ["input", "textarea"].indexOf(nTag) !== -1 &&
   -1  1215                   (!isWidgetRole || isEditWidgetRole)
   -1  1216                 ) {
   -1  1217                   // For native edit fields, append node.value when applicable.
   -1  1218                   name = getObjectValue(nRole, node, false, false, false, true);
   -1  1219                 } else if (
   -1  1220                   isNativeFormField &&
   -1  1221                   nTag === "select" &&
   -1  1222                   (!isWidgetRole || nRole === "combobox")
   -1  1223                 ) {
   -1  1224                   // For native select fields, get text from content for all options with selected attribute separated by a space when multiple, but don't process if another widget role is present unless it matches role="combobox".
   -1  1225                   // Reference: https://github.com/WhatSock/w3c-alternative-text-computation/issues/7
   -1  1226                   name = getObjectValue(nRole, node, false, false, true, true);
   -1  1227                 }
   -1  1228 
   -1  1229                 // Check for blank value, since whitespace chars alone are not valid as a name
   -1  1230                 name = trim(name);
 1204  1231               }
 1205  1232 
 1206    -1               // Check for blank value, since whitespace chars alone are not valid as a name
 1207    -1               name = trim(name);
   -1  1233               if (trim(name)) {
   -1  1234                 hasName = true;
   -1  1235               }
 1208  1236             }
 1209  1237 
 1210    -1             if (trim(name)) {
 1211    -1               hasName = true;
   -1  1238             // Otherwise, if current node has a non-empty aria-label then set as name and process no deeper within the branch.
   -1  1239             if (!hasName && trim(aLabel) && !isSeparatChildFormField) {
   -1  1240               name = aLabel;
   -1  1241 
   -1  1242               // Check for blank value, since whitespace chars alone are not valid as a name
   -1  1243               if (trim(name)) {
   -1  1244                 hasName = true;
   -1  1245                 if (node === refNode) {
   -1  1246                   // If name is non-empty and both the current and refObject nodes match, then don't process any deeper within the branch.
   -1  1247                   skip = true;
   -1  1248                 }
   -1  1249               }
 1212  1250             }
 1213    -1           }
 1214  1251 
 1215    -1           // Otherwise, if current node has a non-empty aria-label then set as name and process no deeper within the branch.
 1216    -1           if (!hasName && trim(aLabel) && !isSeparatChildFormField) {
 1217    -1             name = aLabel;
   -1  1252             // Otherwise, if name is still empty and the current node matches the ref node and is a standard form field with a non-empty associated label element, process label with same naming computation algorithm.
   -1  1253             if (!hasName && node === refNode && isNativeFormField) {
   -1  1254               // Logic modified to match issue
   -1  1255               // https://github.com/WhatSock/w3c-alternative-text-computation/issues/12 */
   -1  1256               var labels = document.querySelectorAll("label");
   -1  1257               var implicitLabel = getParent(node, "label") || false;
   -1  1258               var explicitLabel =
   -1  1259                 node.id &&
   -1  1260                 document.querySelectorAll('label[for="' + node.id + '"]').length
   -1  1261                   ? document.querySelector('label[for="' + node.id + '"]')
   -1  1262                   : false;
   -1  1263               var implicitI = 0;
   -1  1264               var explicitI = 0;
   -1  1265               for (i = 0; i < labels.length; i++) {
   -1  1266                 if (labels[i] === implicitLabel) {
   -1  1267                   implicitI = i;
   -1  1268                 } else if (labels[i] === explicitLabel) {
   -1  1269                   explicitI = i;
   -1  1270                 }
   -1  1271               }
   -1  1272               var isImplicitFirst =
   -1  1273                 implicitLabel &&
   -1  1274                 implicitLabel.nodeType === 1 &&
   -1  1275                 explicitLabel &&
   -1  1276                 explicitLabel.nodeType === 1 &&
   -1  1277                 implicitI < explicitI
   -1  1278                   ? true
   -1  1279                   : false;
   -1  1280 
   -1  1281               if (explicitLabel) {
   -1  1282                 var eLblName = trim(
   -1  1283                   walk(explicitLabel, true, skip, [node], false, {
   -1  1284                     ref: ownedBy,
   -1  1285                     top: explicitLabel
   -1  1286                   }).name
   -1  1287                 );
   -1  1288               }
   -1  1289               if (implicitLabel && implicitLabel !== explicitLabel) {
   -1  1290                 var iLblName = trim(
   -1  1291                   walk(implicitLabel, true, skip, [node], false, {
   -1  1292                     ref: ownedBy,
   -1  1293                     top: implicitLabel
   -1  1294                   }).name
   -1  1295                 );
   -1  1296               }
 1218  1297 
 1219    -1             // Check for blank value, since whitespace chars alone are not valid as a name
 1220    -1             if (trim(name)) {
 1221    -1               hasName = true;
 1222    -1               if (node === refNode) {
 1223    -1                 // If name is non-empty and both the current and refObject nodes match, then don't process any deeper within the branch.
 1224    -1                 skip = true;
   -1  1298               if (iLblName && eLblName && isImplicitFirst) {
   -1  1299                 name = iLblName + " " + eLblName;
   -1  1300               } else if (eLblName && iLblName) {
   -1  1301                 name = eLblName + " " + iLblName;
   -1  1302               } else if (eLblName) {
   -1  1303                 name = eLblName;
   -1  1304               } else if (iLblName) {
   -1  1305                 name = iLblName;
 1225  1306               }
 1226    -1             }
 1227    -1           }
 1228  1307 
 1229    -1           // Otherwise, if name is still empty and the current node matches the ref node and is a standard form field with a non-empty associated label element, process label with same naming computation algorithm.
 1230    -1           if (!hasName && node === refNode && isNativeFormField) {
 1231    -1             // Logic modified to match issue
 1232    -1             // https://github.com/WhatSock/w3c-alternative-text-computation/issues/12 */
 1233    -1             var labels = document.querySelectorAll("label");
 1234    -1             var implicitLabel = getParent(node, "label") || false;
 1235    -1             var explicitLabel =
 1236    -1               node.id &&
 1237    -1               document.querySelectorAll('label[for="' + node.id + '"]').length
 1238    -1                 ? document.querySelector('label[for="' + node.id + '"]')
 1239    -1                 : false;
 1240    -1             var implicitI = 0;
 1241    -1             var explicitI = 0;
 1242    -1             for (i = 0; i < labels.length; i++) {
 1243    -1               if (labels[i] === implicitLabel) {
 1244    -1                 implicitI = i;
 1245    -1               } else if (labels[i] === explicitLabel) {
 1246    -1                 explicitI = i;
   -1  1308               if (trim(name)) {
   -1  1309                 hasName = true;
 1247  1310               }
 1248  1311             }
 1249    -1             var isImplicitFirst =
 1250    -1               implicitLabel &&
 1251    -1               implicitLabel.nodeType === 1 &&
 1252    -1               explicitLabel &&
 1253    -1               explicitLabel.nodeType === 1 &&
 1254    -1               implicitI < explicitI
   -1  1312 
   -1  1313             // Process native form field buttons in accordance with the HTML AAM
   -1  1314             // https://w3c.github.io/html-aam/#accessible-name-and-description-computation
   -1  1315             var btnType =
   -1  1316               (isNativeButton && node.getAttribute("type")) || false;
   -1  1317             var btnValue =
   -1  1318               (btnType && trim(node.getAttribute("value"))) || false;
   -1  1319 
   -1  1320             var rolePresentation =
   -1  1321               !hasName &&
   -1  1322               nRole &&
   -1  1323               presentationRoles.indexOf(nRole) !== -1 &&
   -1  1324               !isFocusable(node) &&
   -1  1325               !hasGlobalAttr(node)
 1255  1326                 ? true
 1256  1327                 : false;
   -1  1328             var nAlt = rolePresentation ? "" : trim(node.getAttribute("alt"));
 1257  1329 
 1258    -1             if (explicitLabel) {
 1259    -1               var eLblName = trim(
 1260    -1                 walk(explicitLabel, true, skip, [node], false, {
 1261    -1                   ref: ownedBy,
 1262    -1                   top: explicitLabel
 1263    -1                 }).name
 1264    -1               );
 1265    -1             }
 1266    -1             if (implicitLabel && implicitLabel !== explicitLabel) {
 1267    -1               var iLblName = trim(
 1268    -1                 walk(implicitLabel, true, skip, [node], false, {
 1269    -1                   ref: ownedBy,
 1270    -1                   top: implicitLabel
 1271    -1                 }).name
 1272    -1               );
   -1  1330             // Otherwise, if name is still empty and current node is a standard non-presentational img or image button with a non-empty alt attribute, set alt attribute value as the accessible name.
   -1  1331             if (
   -1  1332               !hasName &&
   -1  1333               !rolePresentation &&
   -1  1334               (nTag === "img" || btnType === "image") &&
   -1  1335               nAlt
   -1  1336             ) {
   -1  1337               // Check for blank value, since whitespace chars alone are not valid as a name
   -1  1338               name = trim(nAlt);
   -1  1339               if (trim(name)) {
   -1  1340                 hasName = true;
   -1  1341               }
 1273  1342             }
 1274  1343 
 1275    -1             if (iLblName && eLblName && isImplicitFirst) {
 1276    -1               name = iLblName + " " + eLblName;
 1277    -1             } else if (eLblName && iLblName) {
 1278    -1               name = eLblName + " " + iLblName;
 1279    -1             } else if (eLblName) {
 1280    -1               name = eLblName;
 1281    -1             } else if (iLblName) {
 1282    -1               name = iLblName;
   -1  1344             if (
   -1  1345               !hasName &&
   -1  1346               node === refNode &&
   -1  1347               btnType &&
   -1  1348               ["button", "image", "submit", "reset"].indexOf(btnType) !== -1
   -1  1349             ) {
   -1  1350               if (btnValue) {
   -1  1351                 name = btnValue;
   -1  1352               } else {
   -1  1353                 switch (btnType) {
   -1  1354                   case "submit":
   -1  1355                   case "image":
   -1  1356                     name = "Submit Query";
   -1  1357                     break;
   -1  1358                   case "reset":
   -1  1359                     name = "Reset";
   -1  1360                     break;
   -1  1361                   default:
   -1  1362                     name = "";
   -1  1363                 }
   -1  1364               }
   -1  1365               if (trim(name)) {
   -1  1366                 hasName = true;
   -1  1367               }
 1283  1368             }
 1284  1369 
 1285    -1             if (trim(name)) {
 1286    -1               hasName = true;
   -1  1370             if (
   -1  1371               hasName &&
   -1  1372               node === refNode &&
   -1  1373               btnType &&
   -1  1374               ["button", "submit", "reset"].indexOf(btnType) !== -1 &&
   -1  1375               btnValue &&
   -1  1376               btnValue !== name &&
   -1  1377               !result.desc
   -1  1378             ) {
   -1  1379               result.desc = btnValue;
 1287  1380             }
 1288    -1           }
 1289  1381 
 1290    -1           // Process native form field buttons in accordance with the HTML AAM
 1291    -1           // https://w3c.github.io/html-aam/#accessible-name-and-description-computation
 1292    -1           var btnType = (isNativeButton && node.getAttribute("type")) || false;
 1293    -1           var btnValue = (btnType && trim(node.getAttribute("value"))) || false;
 1294    -1 
 1295    -1           var rolePresentation =
 1296    -1             !hasName &&
 1297    -1             nRole &&
 1298    -1             presentationRoles.indexOf(nRole) !== -1 &&
 1299    -1             !isFocusable(node) &&
 1300    -1             !hasGlobalAttr(node)
 1301    -1               ? true
 1302    -1               : false;
 1303    -1           var nAlt = rolePresentation ? "" : trim(node.getAttribute("alt"));
 1304    -1 
 1305    -1           // Otherwise, if name is still empty and current node is a standard non-presentational img or image button with a non-empty alt attribute, set alt attribute value as the accessible name.
 1306    -1           if (
 1307    -1             !hasName &&
 1308    -1             !rolePresentation &&
 1309    -1             (nTag === "img" || btnType === "image") &&
 1310    -1             nAlt
 1311    -1           ) {
 1312    -1             // Check for blank value, since whitespace chars alone are not valid as a name
 1313    -1             name = trim(nAlt);
 1314    -1             if (trim(name)) {
 1315    -1               hasName = true;
   -1  1382             // Otherwise, if current node is the same as rootNode and is non-presentational and includes a non-empty title attribute and is not a separate embedded form field, store title attribute value as the accessible name if name is still empty, or the description if not.
   -1  1383             if (
   -1  1384               node === rootNode &&
   -1  1385               !rolePresentation &&
   -1  1386               trim(nTitle) &&
   -1  1387               !isSeparatChildFormField
   -1  1388             ) {
   -1  1389               result.title = trim(nTitle);
 1316  1390             }
 1317    -1           }
 1318  1391 
 1319    -1           if (
 1320    -1             !hasName &&
 1321    -1             node === refNode &&
 1322    -1             btnType &&
 1323    -1             ["button", "image", "submit", "reset"].indexOf(btnType) !== -1
 1324    -1           ) {
 1325    -1             if (btnValue) {
 1326    -1               name = btnValue;
 1327    -1             } else {
 1328    -1               switch (btnType) {
 1329    -1                 case "submit":
 1330    -1                 case "image":
 1331    -1                   name = "Submit Query";
 1332    -1                   break;
 1333    -1                 case "reset":
 1334    -1                   name = "Reset";
 1335    -1                   break;
 1336    -1                 default:
 1337    -1                   name = "";
   -1  1392             // Check for non-empty value of aria-owns, follow each ID ref, then process with same naming computation.
   -1  1393             // Also abort aria-owns processing if contained on an element that does not support child elements.
   -1  1394             if (aOwns && !isNativeFormField && nTag !== "img") {
   -1  1395               ids = aOwns.split(/\s+/);
   -1  1396               parts = [];
   -1  1397               for (i = 0; i < ids.length; i++) {
   -1  1398                 element = document.getElementById(ids[i]);
   -1  1399                 // Abort processing if the referenced node has already been traversed
   -1  1400                 if (element && owns.indexOf(ids[i]) === -1) {
   -1  1401                   owns.push(ids[i]);
   -1  1402                   var oBy = { ref: ownedBy, top: ownedBy.top };
   -1  1403                   oBy[ids[i]] = {
   -1  1404                     refNode: refNode,
   -1  1405                     node: node,
   -1  1406                     target: element
   -1  1407                   };
   -1  1408                   if (!isParentHidden(element, document.body, true)) {
   -1  1409                     parts.push(walk(element, true, skip, [], false, oBy).name);
   -1  1410                   }
   -1  1411                 }
 1338  1412               }
 1339    -1             }
 1340    -1             if (trim(name)) {
 1341    -1               hasName = true;
   -1  1413               // Join without adding whitespace since this is already handled by parsing individual nodes within the algorithm steps.
   -1  1414               ariaO = parts.join("");
 1342  1415             }
 1343  1416           }
 1344  1417 
 1345    -1           if (
 1346    -1             hasName &&
 1347    -1             node === refNode &&
 1348    -1             btnType &&
 1349    -1             ["button", "submit", "reset"].indexOf(btnType) !== -1 &&
 1350    -1             btnValue &&
 1351    -1             btnValue !== name &&
 1352    -1             !result.desc
 1353    -1           ) {
 1354    -1             result.desc = btnValue;
   -1  1418           // Otherwise, process text node
   -1  1419           else if (node.nodeType === 3) {
   -1  1420             name = node.data;
 1355  1421           }
 1356  1422 
 1357    -1           // Otherwise, if current node is the same as rootNode and is non-presentational and includes a non-empty title attribute and is not a separate embedded form field, store title attribute value as the accessible name if name is still empty, or the description if not.
   -1  1423           // Prepend and append the current CSS pseudo element text, plus normalize all whitespace such as newline characters and others into flat spaces.
   -1  1424           name = cssO.before + name.replace(/\s+/g, " ") + cssO.after;
   -1  1425 
 1358  1426           if (
 1359    -1             node === rootNode &&
 1360    -1             !rolePresentation &&
 1361    -1             trim(nTitle) &&
 1362    -1             !isSeparatChildFormField
   -1  1427             name.length &&
   -1  1428             !hasParentLabelOrHidden(node, ownedBy.top, ownedBy, ignoreHidden)
 1363  1429           ) {
 1364    -1             result.title = trim(nTitle);
   -1  1430             result.name = name;
 1365  1431           }
 1366  1432 
 1367    -1           // Check for non-empty value of aria-owns, follow each ID ref, then process with same naming computation.
 1368    -1           // Also abort aria-owns processing if contained on an element that does not support child elements.
 1369    -1           if (aOwns && !isNativeFormField && nTag !== "img") {
 1370    -1             ids = aOwns.split(/\s+/);
 1371    -1             parts = [];
 1372    -1             for (i = 0; i < ids.length; i++) {
 1373    -1               element = document.getElementById(ids[i]);
 1374    -1               // Abort processing if the referenced node has already been traversed
 1375    -1               if (element && owns.indexOf(ids[i]) === -1) {
 1376    -1                 owns.push(ids[i]);
 1377    -1                 var oBy = { ref: ownedBy, top: ownedBy.top };
 1378    -1                 oBy[ids[i]] = {
 1379    -1                   refNode: refNode,
 1380    -1                   node: node,
 1381    -1                   target: element
 1382    -1                 };
 1383    -1                 if (!isParentHidden(element, document.body, true)) {
 1384    -1                   parts.push(walk(element, true, skip, [], false, oBy).name);
 1385    -1                 }
 1386    -1               }
 1387    -1             }
 1388    -1             // Join without adding whitespace since this is already handled by parsing individual nodes within the algorithm steps.
 1389    -1             ariaO = parts.join("");
 1390    -1           }
 1391    -1         }
   -1  1433           result.owns = ariaO;
 1392  1434 
 1393    -1         // Otherwise, process text node
 1394    -1         else if (node.nodeType === 3) {
 1395    -1           name = node.data;
 1396    -1         }
   -1  1435           return result;
   -1  1436         },
   -1  1437         refNode
   -1  1438       );
 1397  1439 
 1398    -1         // Prepend and append the current CSS pseudo element text, plus normalize all whitespace such as newline characters and others into flat spaces.
 1399    -1         name = cssO.before + name.replace(/\s+/g, " ") + cssO.after;
   -1  1440       // Prepend and append the refObj CSS pseudo element text, plus normalize whitespace chars into flat spaces.
   -1  1441       fullResult.name =
   -1  1442         cssOP.before + fullResult.name.replace(/\s+/g, " ") + cssOP.after;
 1400  1443 
   -1  1444       return fullResult;
   -1  1445     };
   -1  1446 
   -1  1447     var getRole = function(node) {
   -1  1448       var role = node && node.getAttribute ? node.getAttribute("role") : "";
   -1  1449       if (!trim(role)) {
   -1  1450         return "";
   -1  1451       }
   -1  1452       var inList = function(list) {
   -1  1453         return trim(role).length > 0 && list.roles.indexOf(role) >= 0;
   -1  1454       };
   -1  1455       var roles = role.split(/\s+/);
   -1  1456       for (var i = 0; i < roles.length; i++) {
   -1  1457         role = roles[i];
 1401  1458         if (
 1402    -1           name.length &&
 1403    -1           !hasParentLabelOrHidden(node, ownedBy.top, ownedBy, ignoreHidden)
   -1  1459           inList(list1) ||
   -1  1460           inList(list2) ||
   -1  1461           inList(list3) ||
   -1  1462           presentationRoles.indexOf(role) !== -1
 1404  1463         ) {
 1405    -1           result.name = name;
   -1  1464           return role;
 1406  1465         }
 1407    -1 
 1408    -1         result.owns = ariaO;
 1409    -1 
 1410    -1         return result;
 1411    -1       },
 1412    -1       refNode
 1413    -1     );
 1414    -1 
 1415    -1     // Prepend and append the refObj CSS pseudo element text, plus normalize whitespace chars into flat spaces.
 1416    -1     fullResult.name =
 1417    -1       cssOP.before + fullResult.name.replace(/\s+/g, " ") + cssOP.after;
 1418    -1 
 1419    -1     return fullResult;
 1420    -1   };
 1421    -1 
 1422    -1   var getRole = function(node) {
 1423    -1     var role = node && node.getAttribute ? node.getAttribute("role") : "";
 1424    -1     if (!trim(role)) {
   -1  1466       }
 1425  1467       return "";
 1426    -1     }
 1427    -1     var inList = function(list) {
 1428    -1       return trim(role).length > 0 && list.roles.indexOf(role) >= 0;
 1429  1468     };
 1430    -1     var roles = role.split(/\s+/);
 1431    -1     for (var i = 0; i < roles.length; i++) {
 1432    -1       role = roles[i];
   -1  1469 
   -1  1470     var isFocusable = function(node) {
   -1  1471       var nodeName = node.nodeName.toLowerCase();
   -1  1472       if (node.getAttribute("tabindex")) {
   -1  1473         return true;
   -1  1474       }
   -1  1475       if (nodeName === "a" && node.getAttribute("href")) {
   -1  1476         return true;
   -1  1477       }
 1433  1478       if (
 1434    -1         inList(list1) ||
 1435    -1         inList(list2) ||
 1436    -1         inList(list3) ||
 1437    -1         presentationRoles.indexOf(role) !== -1
   -1  1479         ["button", "input", "select", "textarea"].indexOf(nodeName) !== -1 &&
   -1  1480         node.getAttribute("type") !== "hidden"
 1438  1481       ) {
 1439    -1         return role;
   -1  1482         return true;
 1440  1483       }
 1441    -1     }
 1442    -1     return "";
 1443    -1   };
 1444    -1 
 1445    -1   var isFocusable = function(node) {
 1446    -1     var nodeName = node.nodeName.toLowerCase();
 1447    -1     if (node.getAttribute("tabindex")) {
 1448    -1       return true;
 1449    -1     }
 1450    -1     if (nodeName === "a" && node.getAttribute("href")) {
 1451    -1       return true;
 1452    -1     }
 1453    -1     if (
 1454    -1       ["button", "input", "select", "textarea"].indexOf(nodeName) !== -1 &&
 1455    -1       node.getAttribute("type") !== "hidden"
 1456    -1     ) {
 1457    -1       return true;
 1458    -1     }
 1459    -1     return false;
 1460    -1   };
   -1  1484       return false;
   -1  1485     };
 1461  1486 
 1462    -1   // ARIA Role Exception Rule Set 1.1
 1463    -1   // The following Role Exception Rule Set is based on the following ARIA Working Group discussion involving all relevant browser venders.
 1464    -1   // https://lists.w3.org/Archives/Public/public-aria/2017Jun/0057.html
   -1  1487     // ARIA Role Exception Rule Set 1.1
   -1  1488     // The following Role Exception Rule Set is based on the following ARIA Working Group discussion involving all relevant browser venders.
   -1  1489     // https://lists.w3.org/Archives/Public/public-aria/2017Jun/0057.html
   -1  1490 
   -1  1491     // Always include name from content when the referenced node matches list1, as well as when child nodes match those within list3
   -1  1492     // Note: gridcell was added to list1 to account for focusable gridcells that match the ARIA 1.0 paradigm for interactive grids.
   -1  1493     var list1 = {
   -1  1494       roles: [
   -1  1495         "button",
   -1  1496         "checkbox",
   -1  1497         "link",
   -1  1498         "option",
   -1  1499         "radio",
   -1  1500         "switch",
   -1  1501         "tab",
   -1  1502         "treeitem",
   -1  1503         "menuitem",
   -1  1504         "menuitemcheckbox",
   -1  1505         "menuitemradio",
   -1  1506         "cell",
   -1  1507         "gridcell",
   -1  1508         "columnheader",
   -1  1509         "rowheader",
   -1  1510         "tooltip",
   -1  1511         "heading"
   -1  1512       ],
   -1  1513       tags: [
   -1  1514         "a",
   -1  1515         "button",
   -1  1516         "summary",
   -1  1517         "input",
   -1  1518         "h1",
   -1  1519         "h2",
   -1  1520         "h3",
   -1  1521         "h4",
   -1  1522         "h5",
   -1  1523         "h6",
   -1  1524         "menuitem",
   -1  1525         "option",
   -1  1526         "td",
   -1  1527         "th"
   -1  1528       ]
   -1  1529     };
   -1  1530     // Never include name from content when current node matches list2
   -1  1531     var list2 = {
   -1  1532       roles: [
   -1  1533         "application",
   -1  1534         "alert",
   -1  1535         "log",
   -1  1536         "marquee",
   -1  1537         "timer",
   -1  1538         "alertdialog",
   -1  1539         "dialog",
   -1  1540         "banner",
   -1  1541         "complementary",
   -1  1542         "form",
   -1  1543         "main",
   -1  1544         "navigation",
   -1  1545         "region",
   -1  1546         "search",
   -1  1547         "article",
   -1  1548         "document",
   -1  1549         "feed",
   -1  1550         "figure",
   -1  1551         "img",
   -1  1552         "math",
   -1  1553         "toolbar",
   -1  1554         "menu",
   -1  1555         "menubar",
   -1  1556         "grid",
   -1  1557         "listbox",
   -1  1558         "radiogroup",
   -1  1559         "textbox",
   -1  1560         "searchbox",
   -1  1561         "spinbutton",
   -1  1562         "scrollbar",
   -1  1563         "slider",
   -1  1564         "tablist",
   -1  1565         "tabpanel",
   -1  1566         "tree",
   -1  1567         "treegrid",
   -1  1568         "separator"
   -1  1569       ],
   -1  1570       tags: [
   -1  1571         "article",
   -1  1572         "aside",
   -1  1573         "body",
   -1  1574         "select",
   -1  1575         "datalist",
   -1  1576         "optgroup",
   -1  1577         "dialog",
   -1  1578         "figure",
   -1  1579         "footer",
   -1  1580         "form",
   -1  1581         "header",
   -1  1582         "hr",
   -1  1583         "img",
   -1  1584         "textarea",
   -1  1585         "input",
   -1  1586         "main",
   -1  1587         "math",
   -1  1588         "menu",
   -1  1589         "nav",
   -1  1590         "section"
   -1  1591       ]
   -1  1592     };
   -1  1593     // As an override of list2, conditionally include name from content if current node is focusable, or if the current node matches list3 while the referenced parent node matches list1.
   -1  1594     var list3 = {
   -1  1595       roles: [
   -1  1596         "term",
   -1  1597         "definition",
   -1  1598         "directory",
   -1  1599         "list",
   -1  1600         "group",
   -1  1601         "note",
   -1  1602         "status",
   -1  1603         "table",
   -1  1604         "rowgroup",
   -1  1605         "row",
   -1  1606         "contentinfo"
   -1  1607       ],
   -1  1608       tags: [
   -1  1609         "dl",
   -1  1610         "ul",
   -1  1611         "ol",
   -1  1612         "dd",
   -1  1613         "details",
   -1  1614         "output",
   -1  1615         "table",
   -1  1616         "thead",
   -1  1617         "tbody",
   -1  1618         "tfoot",
   -1  1619         "tr"
   -1  1620       ]
   -1  1621     };
 1465  1622 
 1466    -1   // Always include name from content when the referenced node matches list1, as well as when child nodes match those within list3
 1467    -1   // Note: gridcell was added to list1 to account for focusable gridcells that match the ARIA 1.0 paradigm for interactive grids.
 1468    -1   var list1 = {
 1469    -1     roles: [
   -1  1623     var nativeFormFields = ["button", "input", "select", "textarea"];
   -1  1624     var rangeWidgetRoles = ["scrollbar", "slider", "spinbutton"];
   -1  1625     var editWidgetRoles = ["searchbox", "textbox"];
   -1  1626     var selectWidgetRoles = ["grid", "listbox", "tablist", "tree", "treegrid"];
   -1  1627     var otherWidgetRoles = [
 1470  1628       "button",
 1471  1629       "checkbox",
 1472  1630       "link",
 1473    -1       "option",
 1474    -1       "radio",
 1475  1631       "switch",
 1476    -1       "tab",
 1477    -1       "treeitem",
   -1  1632       "option",
   -1  1633       "menu",
   -1  1634       "menubar",
 1478  1635       "menuitem",
 1479  1636       "menuitemcheckbox",
 1480  1637       "menuitemradio",
 1481    -1       "cell",
 1482    -1       "gridcell",
 1483    -1       "columnheader",
 1484    -1       "rowheader",
 1485    -1       "tooltip",
 1486    -1       "heading"
 1487    -1     ],
 1488    -1     tags: [
 1489    -1       "a",
 1490    -1       "button",
 1491    -1       "summary",
 1492    -1       "input",
   -1  1638       "radio",
   -1  1639       "tab",
   -1  1640       "treeitem",
   -1  1641       "gridcell"
   -1  1642     ];
   -1  1643     var presentationRoles = ["presentation", "none"];
   -1  1644 
   -1  1645     var hasGlobalAttr = function(node) {
   -1  1646       var globalPropsAndStates = [
   -1  1647         "busy",
   -1  1648         "controls",
   -1  1649         "current",
   -1  1650         "describedby",
   -1  1651         "details",
   -1  1652         "disabled",
   -1  1653         "dropeffect",
   -1  1654         "errormessage",
   -1  1655         "flowto",
   -1  1656         "grabbed",
   -1  1657         "haspopup",
   -1  1658         "invalid",
   -1  1659         "keyshortcuts",
   -1  1660         "live",
   -1  1661         "owns",
   -1  1662         "roledescription"
   -1  1663       ];
   -1  1664       for (var i = 0; i < globalPropsAndStates.length; i++) {
   -1  1665         var a = trim(node.getAttribute("aria-" + globalPropsAndStates[i]));
   -1  1666         if (a) {
   -1  1667           return true;
   -1  1668         }
   -1  1669       }
   -1  1670       return false;
   -1  1671     };
   -1  1672 
   -1  1673     var isHidden = function(node, refNode) {
   -1  1674       var hidden = function(node) {
   -1  1675         if (!node || node.nodeType !== 1 || node === refNode) {
   -1  1676           return false;
   -1  1677         }
   -1  1678         if (node.getAttribute("aria-hidden") === "true") {
   -1  1679           return true;
   -1  1680         }
   -1  1681         if (node.getAttribute("hidden")) {
   -1  1682           return true;
   -1  1683         }
   -1  1684         var style = getStyleObject(node);
   -1  1685         if (style["display"] === "none" || style["visibility"] === "hidden") {
   -1  1686           return true;
   -1  1687         }
   -1  1688         return false;
   -1  1689       };
   -1  1690       return hidden(node);
   -1  1691     };
   -1  1692 
   -1  1693     var isParentHidden = function(node, refNode, skipOwned, skipCurrent) {
   -1  1694       while (node && node !== refNode) {
   -1  1695         if (!skipCurrent && node.nodeType === 1 && isHidden(node, refNode)) {
   -1  1696           return true;
   -1  1697         } else skipCurrent = false;
   -1  1698         node = node.parentNode;
   -1  1699       }
   -1  1700       return false;
   -1  1701     };
   -1  1702 
   -1  1703     var getStyleObject = function(node) {
   -1  1704       var style = {};
   -1  1705       if (document.defaultView && document.defaultView.getComputedStyle) {
   -1  1706         style = document.defaultView.getComputedStyle(node, "");
   -1  1707       } else if (node.currentStyle) {
   -1  1708         style = node.currentStyle;
   -1  1709       }
   -1  1710       return style;
   -1  1711     };
   -1  1712 
   -1  1713     var cleanCSSText = function(node, text) {
   -1  1714       var s = text;
   -1  1715       if (s.indexOf("attr(") !== -1) {
   -1  1716         var m = s.match(/attr\((.|\n|\r\n)*?\)/g);
   -1  1717         for (var i = 0; i < m.length; i++) {
   -1  1718           var b = m[i].slice(5, -1);
   -1  1719           b = node.getAttribute(b) || "";
   -1  1720           s = s.replace(m[i], b);
   -1  1721         }
   -1  1722       }
   -1  1723       return s || text;
   -1  1724     };
   -1  1725 
   -1  1726     var isBlockLevelElement = function(node, cssObj) {
   -1  1727       var styleObject = cssObj || getStyleObject(node);
   -1  1728       for (var prop in blockStyles) {
   -1  1729         var values = blockStyles[prop];
   -1  1730         for (var i = 0; i < values.length; i++) {
   -1  1731           if (
   -1  1732             styleObject[prop] &&
   -1  1733             ((values[i].indexOf("!") === 0 &&
   -1  1734               [values[i].slice(1), "inherit", "initial", "unset"].indexOf(
   -1  1735                 styleObject[prop]
   -1  1736               ) === -1) ||
   -1  1737               styleObject[prop].indexOf(values[i]) !== -1)
   -1  1738           ) {
   -1  1739             return true;
   -1  1740           }
   -1  1741         }
   -1  1742       }
   -1  1743       if (
   -1  1744         !cssObj &&
   -1  1745         node.nodeName &&
   -1  1746         blockElements.indexOf(node.nodeName.toLowerCase()) !== -1
   -1  1747       ) {
   -1  1748         return true;
   -1  1749       }
   -1  1750       return false;
   -1  1751     };
   -1  1752 
   -1  1753     // CSS Block Styles indexed from:
   -1  1754     // https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
   -1  1755     var blockStyles = {
   -1  1756       display: ["block", "grid", "table", "flow-root", "flex"],
   -1  1757       position: ["absolute", "fixed"],
   -1  1758       float: ["left", "right", "inline"],
   -1  1759       clear: ["left", "right", "both", "inline"],
   -1  1760       overflow: ["hidden", "scroll", "auto"],
   -1  1761       "column-count": ["!auto"],
   -1  1762       "column-width": ["!auto"],
   -1  1763       "column-span": ["all"],
   -1  1764       contain: ["layout", "content", "strict"]
   -1  1765     };
   -1  1766 
   -1  1767     // HTML5 Block Elements indexed from:
   -1  1768     // https://github.com/webmodules/block-elements
   -1  1769     // Note: 'br' was added to this array because it impacts visual display and should thus add a space .
   -1  1770     // Reference issue: https://github.com/w3c/accname/issues/4
   -1  1771     // Note: Added in 1.13, td, th, tr, and legend
   -1  1772     var blockElements = [
   -1  1773       "address",
   -1  1774       "article",
   -1  1775       "aside",
   -1  1776       "blockquote",
   -1  1777       "br",
   -1  1778       "canvas",
   -1  1779       "dd",
   -1  1780       "div",
   -1  1781       "dl",
   -1  1782       "dt",
   -1  1783       "fieldset",
   -1  1784       "figcaption",
   -1  1785       "figure",
   -1  1786       "footer",
   -1  1787       "form",
 1493  1788       "h1",
 1494  1789       "h2",
 1495  1790       "h3",
 1496  1791       "h4",
 1497  1792       "h5",
 1498  1793       "h6",
 1499    -1       "menuitem",
 1500    -1       "option",
 1501    -1       "td",
 1502    -1       "th"
 1503    -1     ]
 1504    -1   };
 1505    -1   // Never include name from content when current node matches list2
 1506    -1   var list2 = {
 1507    -1     roles: [
 1508    -1       "application",
 1509    -1       "alert",
 1510    -1       "log",
 1511    -1       "marquee",
 1512    -1       "timer",
 1513    -1       "alertdialog",
 1514    -1       "dialog",
 1515    -1       "banner",
 1516    -1       "complementary",
 1517    -1       "form",
 1518    -1       "main",
 1519    -1       "navigation",
 1520    -1       "region",
 1521    -1       "search",
 1522    -1       "article",
 1523    -1       "document",
 1524    -1       "feed",
 1525    -1       "figure",
 1526    -1       "img",
 1527    -1       "math",
 1528    -1       "toolbar",
 1529    -1       "menu",
 1530    -1       "menubar",
 1531    -1       "grid",
 1532    -1       "listbox",
 1533    -1       "radiogroup",
 1534    -1       "textbox",
 1535    -1       "searchbox",
 1536    -1       "spinbutton",
 1537    -1       "scrollbar",
 1538    -1       "slider",
 1539    -1       "tablist",
 1540    -1       "tabpanel",
 1541    -1       "tree",
 1542    -1       "treegrid",
 1543    -1       "separator"
 1544    -1     ],
 1545    -1     tags: [
 1546    -1       "article",
 1547    -1       "aside",
 1548    -1       "body",
 1549    -1       "select",
 1550    -1       "datalist",
 1551    -1       "optgroup",
 1552    -1       "dialog",
 1553    -1       "figure",
 1554    -1       "footer",
 1555    -1       "form",
 1556  1794       "header",
   -1  1795       "hgroup",
 1557  1796       "hr",
 1558    -1       "img",
 1559    -1       "textarea",
 1560    -1       "input",
   -1  1797       "legend",
   -1  1798       "li",
 1561  1799       "main",
 1562    -1       "math",
 1563    -1       "menu",
 1564  1800       "nav",
 1565    -1       "section"
 1566    -1     ]
 1567    -1   };
 1568    -1   // As an override of list2, conditionally include name from content if current node is focusable, or if the current node matches list3 while the referenced parent node matches list1.
 1569    -1   var list3 = {
 1570    -1     roles: [
 1571    -1       "term",
 1572    -1       "definition",
 1573    -1       "directory",
 1574    -1       "list",
 1575    -1       "group",
 1576    -1       "note",
 1577    -1       "status",
 1578    -1       "table",
 1579    -1       "rowgroup",
 1580    -1       "row",
 1581    -1       "contentinfo"
 1582    -1     ],
 1583    -1     tags: [
 1584    -1       "dl",
 1585    -1       "ul",
   -1  1801       "noscript",
 1586  1802       "ol",
 1587    -1       "dd",
 1588    -1       "details",
 1589  1803       "output",
   -1  1804       "p",
   -1  1805       "pre",
   -1  1806       "section",
 1590  1807       "table",
 1591    -1       "thead",
 1592    -1       "tbody",
   -1  1808       "td",
 1593  1809       "tfoot",
 1594    -1       "tr"
 1595    -1     ]
 1596    -1   };
 1597    -1 
 1598    -1   var nativeFormFields = ["button", "input", "select", "textarea"];
 1599    -1   var rangeWidgetRoles = ["scrollbar", "slider", "spinbutton"];
 1600    -1   var editWidgetRoles = ["searchbox", "textbox"];
 1601    -1   var selectWidgetRoles = ["grid", "listbox", "tablist", "tree", "treegrid"];
 1602    -1   var otherWidgetRoles = [
 1603    -1     "button",
 1604    -1     "checkbox",
 1605    -1     "link",
 1606    -1     "switch",
 1607    -1     "option",
 1608    -1     "menu",
 1609    -1     "menubar",
 1610    -1     "menuitem",
 1611    -1     "menuitemcheckbox",
 1612    -1     "menuitemradio",
 1613    -1     "radio",
 1614    -1     "tab",
 1615    -1     "treeitem",
 1616    -1     "gridcell"
 1617    -1   ];
 1618    -1   var presentationRoles = ["presentation", "none"];
 1619    -1 
 1620    -1   var hasGlobalAttr = function(node) {
 1621    -1     var globalPropsAndStates = [
 1622    -1       "busy",
 1623    -1       "controls",
 1624    -1       "current",
 1625    -1       "describedby",
 1626    -1       "details",
 1627    -1       "disabled",
 1628    -1       "dropeffect",
 1629    -1       "errormessage",
 1630    -1       "flowto",
 1631    -1       "grabbed",
 1632    -1       "haspopup",
 1633    -1       "invalid",
 1634    -1       "keyshortcuts",
 1635    -1       "live",
 1636    -1       "owns",
 1637    -1       "roledescription"
   -1  1810       "th",
   -1  1811       "tr",
   -1  1812       "ul",
   -1  1813       "video"
 1638  1814     ];
 1639    -1     for (var i = 0; i < globalPropsAndStates.length; i++) {
 1640    -1       var a = trim(node.getAttribute("aria-" + globalPropsAndStates[i]));
 1641    -1       if (a) {
 1642    -1         return true;
 1643    -1       }
 1644    -1     }
 1645    -1     return false;
 1646    -1   };
 1647    -1 
 1648    -1   var isHidden = function(node, refNode) {
 1649    -1     var hidden = function(node) {
 1650    -1       if (!node || node.nodeType !== 1 || node === refNode) {
 1651    -1         return false;
 1652    -1       }
 1653    -1       if (node.getAttribute("aria-hidden") === "true") {
 1654    -1         return true;
 1655    -1       }
 1656    -1       if (node.getAttribute("hidden")) {
 1657    -1         return true;
 1658    -1       }
 1659    -1       var style = getStyleObject(node);
 1660    -1       if (style["display"] === "none" || style["visibility"] === "hidden") {
 1661    -1         return true;
 1662    -1       }
 1663    -1       return false;
 1664    -1     };
 1665    -1     return hidden(node);
 1666    -1   };
 1667    -1 
 1668    -1   var isParentHidden = function(node, refNode, skipOwned, skipCurrent) {
 1669    -1     while (node && node !== refNode) {
 1670    -1       if (!skipCurrent && node.nodeType === 1 && isHidden(node, refNode)) {
 1671    -1         return true;
 1672    -1       } else skipCurrent = false;
 1673    -1       node = node.parentNode;
 1674    -1     }
 1675    -1     return false;
 1676    -1   };
 1677    -1 
 1678    -1   var getStyleObject = function(node) {
 1679    -1     var style = {};
 1680    -1     if (document.defaultView && document.defaultView.getComputedStyle) {
 1681    -1       style = document.defaultView.getComputedStyle(node, "");
 1682    -1     } else if (node.currentStyle) {
 1683    -1       style = node.currentStyle;
 1684    -1     }
 1685    -1     return style;
 1686    -1   };
 1687    -1 
 1688    -1   var cleanCSSText = function(node, text) {
 1689    -1     var s = text;
 1690    -1     if (s.indexOf("attr(") !== -1) {
 1691    -1       var m = s.match(/attr\((.|\n|\r\n)*?\)/g);
 1692    -1       for (var i = 0; i < m.length; i++) {
 1693    -1         var b = m[i].slice(5, -1);
 1694    -1         b = node.getAttribute(b) || "";
 1695    -1         s = s.replace(m[i], b);
 1696    -1       }
 1697    -1     }
 1698    -1     return s || text;
 1699    -1   };
 1700  1815 
 1701    -1   var isBlockLevelElement = function(node, cssObj) {
 1702    -1     var styleObject = cssObj || getStyleObject(node);
 1703    -1     for (var prop in blockStyles) {
 1704    -1       var values = blockStyles[prop];
 1705    -1       for (var i = 0; i < values.length; i++) {
 1706    -1         if (
 1707    -1           styleObject[prop] &&
 1708    -1           ((values[i].indexOf("!") === 0 &&
 1709    -1             [values[i].slice(1), "inherit", "initial", "unset"].indexOf(
 1710    -1               styleObject[prop]
 1711    -1             ) === -1) ||
 1712    -1             styleObject[prop].indexOf(values[i]) !== -1)
 1713    -1         ) {
 1714    -1           return true;
 1715    -1         }
 1716    -1       }
 1717    -1     }
 1718    -1     if (
 1719    -1       !cssObj &&
 1720    -1       node.nodeName &&
 1721    -1       blockElements.indexOf(node.nodeName.toLowerCase()) !== -1
   -1  1816     var getObjectValue = function(
   -1  1817       role,
   -1  1818       node,
   -1  1819       isRange,
   -1  1820       isEdit,
   -1  1821       isSelect,
   -1  1822       isNative
 1722  1823     ) {
 1723    -1       return true;
 1724    -1     }
 1725    -1     return false;
 1726    -1   };
 1727    -1 
 1728    -1   // CSS Block Styles indexed from:
 1729    -1   // https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
 1730    -1   var blockStyles = {
 1731    -1     display: ["block", "grid", "table", "flow-root", "flex"],
 1732    -1     position: ["absolute", "fixed"],
 1733    -1     float: ["left", "right", "inline"],
 1734    -1     clear: ["left", "right", "both", "inline"],
 1735    -1     overflow: ["hidden", "scroll", "auto"],
 1736    -1     "column-count": ["!auto"],
 1737    -1     "column-width": ["!auto"],
 1738    -1     "column-span": ["all"],
 1739    -1     contain: ["layout", "content", "strict"]
 1740    -1   };
 1741    -1 
 1742    -1   // HTML5 Block Elements indexed from:
 1743    -1   // https://github.com/webmodules/block-elements
 1744    -1   // Note: 'br' was added to this array because it impacts visual display and should thus add a space .
 1745    -1   // Reference issue: https://github.com/w3c/accname/issues/4
 1746    -1   // Note: Added in 1.13, td, th, tr, and legend
 1747    -1   var blockElements = [
 1748    -1     "address",
 1749    -1     "article",
 1750    -1     "aside",
 1751    -1     "blockquote",
 1752    -1     "br",
 1753    -1     "canvas",
 1754    -1     "dd",
 1755    -1     "div",
 1756    -1     "dl",
 1757    -1     "dt",
 1758    -1     "fieldset",
 1759    -1     "figcaption",
 1760    -1     "figure",
 1761    -1     "footer",
 1762    -1     "form",
 1763    -1     "h1",
 1764    -1     "h2",
 1765    -1     "h3",
 1766    -1     "h4",
 1767    -1     "h5",
 1768    -1     "h6",
 1769    -1     "header",
 1770    -1     "hgroup",
 1771    -1     "hr",
 1772    -1     "legend",
 1773    -1     "li",
 1774    -1     "main",
 1775    -1     "nav",
 1776    -1     "noscript",
 1777    -1     "ol",
 1778    -1     "output",
 1779    -1     "p",
 1780    -1     "pre",
 1781    -1     "section",
 1782    -1     "table",
 1783    -1     "td",
 1784    -1     "tfoot",
 1785    -1     "th",
 1786    -1     "tr",
 1787    -1     "ul",
 1788    -1     "video"
 1789    -1   ];
 1790    -1 
 1791    -1   var getObjectValue = function(
 1792    -1     role,
 1793    -1     node,
 1794    -1     isRange,
 1795    -1     isEdit,
 1796    -1     isSelect,
 1797    -1     isNative
 1798    -1   ) {
 1799    -1     var val = "";
 1800    -1     var bypass = false;
 1801    -1 
 1802    -1     if (isRange && !isNative) {
 1803    -1       val =
 1804    -1         node.getAttribute("aria-valuetext") ||
 1805    -1         node.getAttribute("aria-valuenow") ||
 1806    -1         "";
 1807    -1     } else if (isEdit && !isNative) {
 1808    -1       val = getText(node) || "";
 1809    -1     } else if (isSelect && !isNative) {
 1810    -1       var childRoles = [];
 1811    -1       if (role === "grid" || role === "treegrid") {
 1812    -1         childRoles = ["gridcell", "rowheader", "columnheader"];
 1813    -1       } else if (role === "listbox") {
 1814    -1         childRoles = ["option"];
 1815    -1       } else if (role === "tablist") {
 1816    -1         childRoles = ["tab"];
 1817    -1       } else if (role === "tree") {
 1818    -1         childRoles = ["treeitem"];
 1819    -1       }
 1820    -1       val = joinSelectedParts(
 1821    -1         node,
 1822    -1         node.querySelectorAll('*[aria-selected="true"]'),
 1823    -1         false,
 1824    -1         childRoles
 1825    -1       );
 1826    -1       bypass = true;
 1827    -1     }
 1828    -1     val = trim(val);
 1829    -1     if (!val && (isRange || isEdit) && node.value) {
 1830    -1       val = node.value;
 1831    -1     }
 1832    -1     if (!bypass && !val && isNative) {
 1833    -1       if (isSelect) {
   -1  1824       var val = "";
   -1  1825       var bypass = false;
   -1  1826 
   -1  1827       if (isRange && !isNative) {
   -1  1828         val =
   -1  1829           node.getAttribute("aria-valuetext") ||
   -1  1830           node.getAttribute("aria-valuenow") ||
   -1  1831           "";
   -1  1832       } else if (isEdit && !isNative) {
   -1  1833         val = getText(node) || "";
   -1  1834       } else if (isSelect && !isNative) {
   -1  1835         var childRoles = [];
   -1  1836         if (role === "grid" || role === "treegrid") {
   -1  1837           childRoles = ["gridcell", "rowheader", "columnheader"];
   -1  1838         } else if (role === "listbox") {
   -1  1839           childRoles = ["option"];
   -1  1840         } else if (role === "tablist") {
   -1  1841           childRoles = ["tab"];
   -1  1842         } else if (role === "tree") {
   -1  1843           childRoles = ["treeitem"];
   -1  1844         }
 1834  1845         val = joinSelectedParts(
 1835  1846           node,
 1836    -1           node.querySelectorAll("option[selected]"),
 1837    -1           true
   -1  1847           node.querySelectorAll('*[aria-selected="true"]'),
   -1  1848           false,
   -1  1849           childRoles
 1838  1850         );
 1839    -1       } else {
   -1  1851         bypass = true;
   -1  1852       }
   -1  1853       val = trim(val);
   -1  1854       if (!val && (isRange || isEdit) && node.value) {
 1840  1855         val = node.value;
 1841  1856       }
 1842    -1     }
   -1  1857       if (!bypass && !val && isNative) {
   -1  1858         if (isSelect) {
   -1  1859           val = joinSelectedParts(
   -1  1860             node,
   -1  1861             node.querySelectorAll("option[selected]"),
   -1  1862             true
   -1  1863           );
   -1  1864         } else {
   -1  1865           val = node.value;
   -1  1866         }
   -1  1867       }
 1843  1868 
 1844    -1     return val;
 1845    -1   };
   -1  1869       return val;
   -1  1870     };
 1846  1871 
 1847    -1   var addSpacing = function(s) {
 1848    -1     return trim(s).length ? " " + s + " " : " ";
 1849    -1   };
   -1  1872     var addSpacing = function(s) {
   -1  1873       return trim(s).length ? " " + s + " " : " ";
   -1  1874     };
 1850  1875 
 1851    -1   var joinSelectedParts = function(node, nOA, isNative, childRoles) {
 1852    -1     if (!nOA || !nOA.length) {
 1853    -1       return "";
 1854    -1     }
 1855    -1     var parts = [];
 1856    -1     for (var i = 0; i < nOA.length; i++) {
 1857    -1       var role = getRole(nOA[i]);
 1858    -1       var isValidChildRole = !childRoles || childRoles.indexOf(role) !== -1;
 1859    -1       if (isValidChildRole) {
 1860    -1         parts.push(
 1861    -1           isNative
 1862    -1             ? getText(nOA[i])
 1863    -1             : walk(nOA[i], true, false, [], false, { top: nOA[i] }).name
 1864    -1         );
   -1  1876     var joinSelectedParts = function(node, nOA, isNative, childRoles) {
   -1  1877       if (!nOA || !nOA.length) {
   -1  1878         return "";
 1865  1879       }
 1866    -1     }
 1867    -1     return parts.join(" ");
 1868    -1   };
   -1  1880       var parts = [];
   -1  1881       for (var i = 0; i < nOA.length; i++) {
   -1  1882         var role = getRole(nOA[i]);
   -1  1883         var isValidChildRole = !childRoles || childRoles.indexOf(role) !== -1;
   -1  1884         if (isValidChildRole) {
   -1  1885           parts.push(
   -1  1886             isNative
   -1  1887               ? getText(nOA[i])
   -1  1888               : walk(nOA[i], true, false, [], false, { top: nOA[i] }).name
   -1  1889           );
   -1  1890         }
   -1  1891       }
   -1  1892       return parts.join(" ");
   -1  1893     };
 1869  1894 
 1870    -1   var getPseudoElStyleObj = function(node, position) {
 1871    -1     var styleObj = {};
 1872    -1     for (var prop in blockStyles) {
 1873    -1       styleObj[prop] = document.defaultView
   -1  1895     var getPseudoElStyleObj = function(node, position) {
   -1  1896       var styleObj = {};
   -1  1897       for (var prop in blockStyles) {
   -1  1898         styleObj[prop] = document.defaultView
   -1  1899           .getComputedStyle(node, position)
   -1  1900           .getPropertyValue(prop);
   -1  1901       }
   -1  1902       styleObj["content"] = document.defaultView
 1874  1903         .getComputedStyle(node, position)
 1875    -1         .getPropertyValue(prop);
 1876    -1     }
 1877    -1     styleObj["content"] = document.defaultView
 1878    -1       .getComputedStyle(node, position)
 1879    -1       .getPropertyValue("content")
 1880    -1       .replace(/^"|\\|"$/g, "");
 1881    -1     return styleObj;
 1882    -1   };
   -1  1904         .getPropertyValue("content")
   -1  1905         .replace(/^"|\\|"$/g, "");
   -1  1906       return styleObj;
   -1  1907     };
 1883  1908 
 1884    -1   var getText = function(node, position) {
 1885    -1     if (!position && node.nodeType === 1) {
 1886    -1       return node.innerText || node.textContent || "";
 1887    -1     }
 1888    -1     var styles = getPseudoElStyleObj(node, position);
 1889    -1     var text = styles["content"];
 1890    -1     if (!text || text === "none") {
 1891    -1       return "";
 1892    -1     }
 1893    -1     if (isBlockLevelElement({}, styles)) {
 1894    -1       if (position === ":before") {
 1895    -1         text += " ";
 1896    -1       } else if (position === ":after") {
 1897    -1         text = " " + text;
   -1  1909     var getText = function(node, position) {
   -1  1910       if (!position && node.nodeType === 1) {
   -1  1911         return node.innerText || node.textContent || "";
 1898  1912       }
 1899    -1     }
 1900    -1     return text;
 1901    -1   };
 1902    -1 
 1903    -1   var getCSSText = function(node, refNode) {
 1904    -1     if (
 1905    -1       (node && node.nodeType !== 1) ||
 1906    -1       node === refNode ||
 1907    -1       ["input", "select", "textarea", "img", "iframe"].indexOf(
 1908    -1         node.nodeName.toLowerCase()
 1909    -1       ) !== -1
 1910    -1     ) {
 1911    -1       return { before: "", after: "" };
 1912    -1     }
 1913    -1     if (document.defaultView && document.defaultView.getComputedStyle) {
 1914    -1       return {
 1915    -1         before: cleanCSSText(node, getText(node, ":before")),
 1916    -1         after: cleanCSSText(node, getText(node, ":after"))
 1917    -1       };
 1918    -1     } else {
 1919    -1       return { before: "", after: "" };
 1920    -1     }
 1921    -1   };
 1922    -1 
 1923    -1   var getParent = function(node, nTag) {
 1924    -1     while (node) {
 1925    -1       node = node.parentNode;
 1926    -1       if (node && node.nodeName && node.nodeName.toLowerCase() === nTag) {
 1927    -1         return node;
   -1  1913       var styles = getPseudoElStyleObj(node, position);
   -1  1914       var text = styles["content"];
   -1  1915       if (!text || text === "none") {
   -1  1916         return "";
 1928  1917       }
 1929    -1     }
 1930    -1     return {};
 1931    -1   };
   -1  1918       if (isBlockLevelElement({}, styles)) {
   -1  1919         if (position === ":before") {
   -1  1920           text += " ";
   -1  1921         } else if (position === ":after") {
   -1  1922           text = " " + text;
   -1  1923         }
   -1  1924       }
   -1  1925       return text;
   -1  1926     };
 1932  1927 
 1933    -1   var hasParentLabelOrHidden = function(node, refNode, ownedBy, ignoreHidden) {
 1934    -1     var trackNodes = [];
 1935    -1     while (node && node !== refNode) {
   -1  1928     var getCSSText = function(node, refNode) {
 1936  1929       if (
 1937    -1         node.id &&
 1938    -1         ownedBy &&
 1939    -1         ownedBy[node.id] &&
 1940    -1         ownedBy[node.id].node &&
 1941    -1         trackNodes.indexOf(node) === -1
   -1  1930         (node && node.nodeType !== 1) ||
   -1  1931         node === refNode ||
   -1  1932         ["input", "select", "textarea", "img", "iframe"].indexOf(
   -1  1933           node.nodeName.toLowerCase()
   -1  1934         ) !== -1
 1942  1935       ) {
 1943    -1         trackNodes.push(node);
 1944    -1         node = ownedBy[node.id].node;
   -1  1936         return { before: "", after: "" };
   -1  1937       }
   -1  1938       if (document.defaultView && document.defaultView.getComputedStyle) {
   -1  1939         return {
   -1  1940           before: cleanCSSText(node, getText(node, ":before")),
   -1  1941           after: cleanCSSText(node, getText(node, ":after"))
   -1  1942         };
 1945  1943       } else {
   -1  1944         return { before: "", after: "" };
   -1  1945       }
   -1  1946     };
   -1  1947 
   -1  1948     var getParent = function(node, nTag) {
   -1  1949       while (node) {
 1946  1950         node = node.parentNode;
   -1  1951         if (node && node.nodeName && node.nodeName.toLowerCase() === nTag) {
   -1  1952           return node;
   -1  1953         }
 1947  1954       }
 1948    -1       if (node && node.getAttribute) {
   -1  1955       return {};
   -1  1956     };
   -1  1957 
   -1  1958     var hasParentLabelOrHidden = function(
   -1  1959       node,
   -1  1960       refNode,
   -1  1961       ownedBy,
   -1  1962       ignoreHidden
   -1  1963     ) {
   -1  1964       var trackNodes = [];
   -1  1965       while (node && node !== refNode) {
 1949  1966         if (
 1950    -1           trim(node.getAttribute("aria-label")) ||
 1951    -1           (!ignoreHidden && isHidden(node, refNode))
   -1  1967           node.id &&
   -1  1968           ownedBy &&
   -1  1969           ownedBy[node.id] &&
   -1  1970           ownedBy[node.id].node &&
   -1  1971           trackNodes.indexOf(node) === -1
 1952  1972         ) {
 1953    -1           return true;
   -1  1973           trackNodes.push(node);
   -1  1974           node = ownedBy[node.id].node;
   -1  1975         } else {
   -1  1976           node = node.parentNode;
   -1  1977         }
   -1  1978         if (node && node.getAttribute) {
   -1  1979           if (
   -1  1980             trim(node.getAttribute("aria-label")) ||
   -1  1981             (!ignoreHidden && isHidden(node, refNode))
   -1  1982           ) {
   -1  1983             return true;
   -1  1984           }
 1954  1985         }
 1955  1986       }
 1956    -1     }
 1957    -1     return false;
 1958    -1   };
   -1  1987       return false;
   -1  1988     };
 1959  1989 
 1960    -1   var trim = function(str) {
 1961    -1     if (typeof str !== "string") {
 1962    -1       return "";
 1963    -1     }
 1964    -1     return str.replace(/^\s+|\s+$/g, "");
 1965    -1   };
   -1  1990     var trim = function(str) {
   -1  1991       if (typeof str !== "string") {
   -1  1992         return "";
   -1  1993       }
   -1  1994       return str.replace(/^\s+|\s+$/g, "");
   -1  1995     };
 1966  1996 
 1967    -1   if (isParentHidden(node, document.body, true)) {
 1968    -1     return props;
 1969    -1   }
   -1  1997     if (isParentHidden(node, document.body, true)) {
   -1  1998       return props;
   -1  1999     }
 1970  2000 
 1971    -1   // Compute accessible Name and Description properties value for node
 1972    -1   var accProps = walk(node, false, false, [], false, { top: node });
   -1  2001     // Compute accessible Name and Description properties value for node
   -1  2002     var accProps = walk(node, false, false, [], false, { top: node });
 1973  2003 
 1974    -1   var accName = trim(accProps.name.replace(/\s+/g, " "));
 1975    -1   var accDesc = trim(accProps.title.replace(/\s+/g, " "));
   -1  2004     var accName = trim(accProps.name.replace(/\s+/g, " "));
   -1  2005     var accDesc = trim(accProps.title.replace(/\s+/g, " "));
 1976  2006 
 1977    -1   if (accName === accDesc) {
 1978    -1     // If both Name and Description properties match, then clear the Description property value.
 1979    -1     accDesc = "";
 1980    -1   }
   -1  2007     if (accName === accDesc) {
   -1  2008       // If both Name and Description properties match, then clear the Description property value.
   -1  2009       accDesc = "";
   -1  2010     }
 1981  2011 
 1982    -1   props.name = accName;
 1983    -1   props.desc = accDesc;
   -1  2012     props.name = accName;
   -1  2013     props.desc = accDesc;
 1984  2014 
 1985    -1   // Clear track variables
 1986    -1   nodes = [];
 1987    -1   owns = [];
   -1  2015     // Clear track variables
   -1  2016     nodes = [];
   -1  2017     owns = [];
   -1  2018   } catch (e) {
   -1  2019     props.error = e;
   -1  2020   }
 1988  2021 
 1989  2022   if (fnc && typeof fnc === "function") {
 1990    -1     return fnc.apply(node, [node, props]);
   -1  2023     return fnc.apply(node, [props, node]);
 1991  2024   } else {
 1992  2025     return props;
 1993  2026   }
@@ -1995,17 +2028,28 @@ var calcNames = function(node, fnc, preventVisualARIASelfCSSRef) {
 1995  2028 
 1996  2029 // Customize returned string for testable statements
 1997  2030 
 1998    -1 var getNames = function(node) {
   -1  2031 window.getAccNameMsg = getNames = function(node) {
 1999  2032   var props = calcNames(node);
 2000    -1   return (
 2001    -1     'accName: "' +
 2002    -1     props.name +
 2003    -1     '"\n\naccDesc: "' +
 2004    -1     props.desc +
 2005    -1     '"\n\n(Running AccName Computation Prototype version: ' +
 2006    -1     currentVersion +
 2007    -1     ")"
 2008    -1   );
   -1  2033   if (props.error) {
   -1  2034     return (
   -1  2035       props.error +
   -1  2036       "\n\n" +
   -1  2037       "An error has been thrown in AccName Prototype version " +
   -1  2038       window.getAccNameVersion +
   -1  2039       ". Please copy this error message and the HTML markup that caused it, and submit both as a new GitHub issue at\n" +
   -1  2040       "https://github.com/whatsock/w3c-alternative-text-computation"
   -1  2041     );
   -1  2042   } else {
   -1  2043     return (
   -1  2044       'accName: "' +
   -1  2045       props.name +
   -1  2046       '"\n\naccDesc: "' +
   -1  2047       props.desc +
   -1  2048       '"\n\n(Running AccName Computation Prototype version: ' +
   -1  2049       window.getAccNameVersion +
   -1  2050       ")"
   -1  2051     );
   -1  2052   }
 2009  2053 };
 2010  2054 
 2011  2055 if (typeof module === "object" && module.exports) {