what's the longest word you can make with our names? hazard is pretty cool. diazoma is longer, doesn't need my middle name and you can make both our first names from it. also it won't look as bad in court.
Created
November 8, 2017 06:37
-
-
Save 1wheel/26739ecfb8b14a9685c2d6e330289c84 to your computer and use it in GitHub Desktop.
middle-name
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
console.clear() | |
var letter2count = d3.nest() | |
.key(d => d) | |
.rollup(d => d.length) | |
.object('adamrichardzoia'.split('')) | |
// .object('adamzoia'.split('')) | |
d3.loadData('words.csv', 'yob-2016.csv', (err, res) => { | |
words = res[0] | |
names = res[1] | |
var validWords = words.filter(d => { | |
if (!d.word.includes('z')) return | |
var byLetter = d3.nestBy(d.word.split(''), d => d) | |
return byLetter.every(d => d.length <= letter2count[d.key]) | |
}) | |
d3.select('.words').html('') | |
.appendMany('span', _.sortBy(validWords, d => d.word.length)) | |
.text(d => ' ' + d.word) | |
.st({marginRight: 10, width: 80, display: 'inline-block'}) | |
var validWords = names.filter(d => { | |
if (!d.word.includes('z')) return | |
d.word = d.word.toLowerCase() | |
var byLetter = d3.nestBy(d.word.split(''), d => d) | |
return byLetter.every(d => d.length <= letter2count[d.key]) | |
}) | |
d3.select('.names').html('') | |
.appendMany('span', _.sortBy(validWords, d => d.word.length)) | |
.text(d => ' ' + d.word) | |
.st({marginRight: 10, width: 80, display: 'inline-block'}) | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @license | |
* Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE | |
*/ | |
;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function i(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n);); | |
return n}function o(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function f(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function c(n,t){return!(null==n||!n.length)&&-1<d(n,t,0)}function a(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function l(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function s(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r]; | |
return n}function h(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);return r}function p(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function _(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function v(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function g(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function d(n,t,r){if(t===t)n:{ | |
--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=g(n,b,r);return n}function y(n,t,r,e){--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function b(n){return n!==n}function x(n,t){var r=null==n?0:n.length;return r?k(n,t)/r:P}function j(n){return function(t){return null==t?F:t[n]}}function w(n){return function(t){return null==n?F:n[t]}}function m(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function A(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c; | |
return n}function k(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==F&&(r=r===F?i:r+i)}return r}function E(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function O(n,t){return l(t,function(t){return[t,n[t]]})}function S(n){return function(t){return n(t)}}function I(n,t){return l(t,function(t){return n[t]})}function R(n,t){return n.has(t)}function z(n,t){for(var r=-1,e=n.length;++r<e&&-1<d(t,n[r],0););return r}function W(n,t){for(var r=n.length;r--&&-1<d(t,n[r],0););return r}function B(n){ | |
return"\\"+Tn[n]}function L(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function U(n,t){return function(r){return n(t(r))}}function C(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&"__lodash_placeholder__"!==o||(n[r]="__lodash_placeholder__",i[u++]=r)}return i}function D(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function T(n){if(Bn.test(n)){ | |
for(var t=zn.lastIndex=0;zn.test(n);)++t;n=t}else n=tt(n);return n}function $(n){return Bn.test(n)?n.match(zn)||[]:n.split("")}var F,N=1/0,P=NaN,Z=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],q=/\b__p\+='';/g,V=/\b(__p\+=)''\+/g,K=/(__e\(.*?\)|\b__t\))\+'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,H=/[&<>"']/g,J=RegExp(G.source),Y=RegExp(H.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,nn=/<%=([\s\S]+?)%>/g,tn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rn=/^\w*$/,en=/^\./,un=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,on=/[\\^$.*+?()[\]{}|]/g,fn=RegExp(on.source),cn=/^\s+|\s+$/g,an=/^\s+/,ln=/\s+$/,sn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,hn=/\{\n\/\* \[wrapped with (.+)\] \*/,pn=/,? & /,_n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,vn=/\\(\\)?/g,gn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dn=/\w*$/,yn=/^[-+]0x[0-9a-f]+$/i,bn=/^0b[01]+$/i,xn=/^\[object .+?Constructor\]$/,jn=/^0o[0-7]+$/i,wn=/^(?:0|[1-9]\d*)$/,mn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,kn=/['\n\r\u2028\u2029\\]/g,En="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",On="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+En,Sn="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",In=RegExp("['\u2019]","g"),Rn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),zn=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+Sn+En,"g"),Wn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)|\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)|\\d+",On].join("|"),"g"),Bn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Ln=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Un="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Cn={}; | |
Cn["[object Float32Array]"]=Cn["[object Float64Array]"]=Cn["[object Int8Array]"]=Cn["[object Int16Array]"]=Cn["[object Int32Array]"]=Cn["[object Uint8Array]"]=Cn["[object Uint8ClampedArray]"]=Cn["[object Uint16Array]"]=Cn["[object Uint32Array]"]=true,Cn["[object Arguments]"]=Cn["[object Array]"]=Cn["[object ArrayBuffer]"]=Cn["[object Boolean]"]=Cn["[object DataView]"]=Cn["[object Date]"]=Cn["[object Error]"]=Cn["[object Function]"]=Cn["[object Map]"]=Cn["[object Number]"]=Cn["[object Object]"]=Cn["[object RegExp]"]=Cn["[object Set]"]=Cn["[object String]"]=Cn["[object WeakMap]"]=false; | |
var Dn={};Dn["[object Arguments]"]=Dn["[object Array]"]=Dn["[object ArrayBuffer]"]=Dn["[object DataView]"]=Dn["[object Boolean]"]=Dn["[object Date]"]=Dn["[object Float32Array]"]=Dn["[object Float64Array]"]=Dn["[object Int8Array]"]=Dn["[object Int16Array]"]=Dn["[object Int32Array]"]=Dn["[object Map]"]=Dn["[object Number]"]=Dn["[object Object]"]=Dn["[object RegExp]"]=Dn["[object Set]"]=Dn["[object String]"]=Dn["[object Symbol]"]=Dn["[object Uint8Array]"]=Dn["[object Uint8ClampedArray]"]=Dn["[object Uint16Array]"]=Dn["[object Uint32Array]"]=true, | |
Dn["[object Error]"]=Dn["[object Function]"]=Dn["[object WeakMap]"]=false;var Mn,Tn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$n=parseFloat,Fn=parseInt,Nn=typeof global=="object"&&global&&global.Object===Object&&global,Pn=typeof self=="object"&&self&&self.Object===Object&&self,Zn=Nn||Pn||Function("return this")(),qn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vn=qn&&typeof module=="object"&&module&&!module.nodeType&&module,Kn=Vn&&Vn.exports===qn,Gn=Kn&&Nn.process; | |
n:{try{Mn=Gn&&Gn.binding&&Gn.binding("util");break n}catch(n){}Mn=void 0}var Hn=Mn&&Mn.isArrayBuffer,Jn=Mn&&Mn.isDate,Yn=Mn&&Mn.isMap,Qn=Mn&&Mn.isRegExp,Xn=Mn&&Mn.isSet,nt=Mn&&Mn.isTypedArray,tt=j("length"),rt=w({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I", | |
"\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C", | |
"\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i", | |
"\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S", | |
"\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe", | |
"\u0149":"'n","\u017f":"s"}),et=w({"&":"&","<":"<",">":">",'"':""","'":"'"}),ut=w({"&":"&","<":"<",">":">",""":'"',"'":"'"}),it=function w(En){function On(n){if(xu(n)&&!af(n)&&!(n instanceof Mn)){if(n instanceof zn)return n;if(ci.call(n,"__wrapped__"))return Pe(n)}return new zn(n)}function Sn(){}function zn(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=F}function Mn(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1, | |
this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Pn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function qn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Pn;++t<r;)this.add(n[t])}function Vn(n){ | |
this.size=(this.__data__=new Nn(n)).size}function Gn(n,t){var r,e=af(n),u=!e&&cf(n),i=!e&&!u&&sf(n),o=!e&&!u&&!i&&gf(n),u=(e=e||u||i||o)?E(n.length,ri):[],f=u.length;for(r in n)!t&&!ci.call(n,r)||e&&("length"==r||i&&("offset"==r||"parent"==r)||o&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||Re(r,f))||u.push(r);return u}function tt(n){var t=n.length;return t?n[cr(0,t-1)]:F}function ot(n,t){return Te(Mr(n),gt(t,0,n.length))}function ft(n){return Te(Mr(n))}function ct(n,t,r){(r===F||hu(n[t],r))&&(r!==F||t in n)||_t(n,t,r); | |
}function at(n,t,r){var e=n[t];ci.call(n,t)&&hu(e,r)&&(r!==F||t in n)||_t(n,t,r)}function lt(n,t){for(var r=n.length;r--;)if(hu(n[r][0],t))return r;return-1}function st(n,t,r,e){return oo(n,function(n,u,i){t(e,n,r(n),i)}),e}function ht(n,t){return n&&Tr(t,Lu(t),n)}function pt(n,t){return n&&Tr(t,Uu(t),n)}function _t(n,t,r){"__proto__"==t&&Ei?Ei(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function vt(n,t){for(var r=-1,e=t.length,u=Hu(e),i=null==n;++r<e;)u[r]=i?F:Wu(n,t[r]);return u; | |
}function gt(n,t,r){return n===n&&(r!==F&&(n=n<=r?n:r),t!==F&&(n=n>=t?n:t)),n}function dt(n,t,r,e,i,o){var f,c=1&t,a=2&t,l=4&t;if(r&&(f=i?r(n,e,i,o):r(n)),f!==F)return f;if(!bu(n))return n;if(e=af(n)){if(f=Ee(n),!c)return Mr(n,f)}else{var s=yo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(sf(n))return Wr(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Oe(n),!c)return a?Fr(n,pt(f,n)):$r(n,ht(f,n))}else{if(!Dn[s])return i?n:{};f=Se(n,s,dt,c)}}if(o||(o=new Vn), | |
i=o.get(n))return i;o.set(n,f);var a=l?a?ye:de:a?Uu:Lu,p=e?F:a(n);return u(p||n,function(e,u){p&&(u=e,e=n[u]),at(f,u,dt(e,t,r,u,n,o))}),f}function yt(n){var t=Lu(n);return function(r){return bt(r,n,t)}}function bt(n,t,r){var e=r.length;if(null==n)return!e;for(n=ni(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===F&&!(u in n)||!i(o))return false}return true}function xt(n,t,r){if(typeof n!="function")throw new ei("Expected a function");return jo(function(){n.apply(F,r)},t)}function jt(n,t,r,e){var u=-1,i=c,o=true,f=n.length,s=[],h=t.length; | |
if(!f)return s;r&&(t=l(t,S(r))),e?(i=a,o=false):200<=t.length&&(i=R,o=false,t=new qn(t));n:for(;++u<f;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(o&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function wt(n,t){var r=true;return oo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function mt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===F?o===o&&!Au(o):r(o,f)))var f=o,c=i}return c}function At(n,t){var r=[];return oo(n,function(n,e,u){ | |
t(n,e,u)&&r.push(n)}),r}function kt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=Ie),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?kt(f,t-1,r,e,u):s(u,f):e||(u[u.length]=f)}return u}function Et(n,t){return n&&co(n,t,Lu)}function Ot(n,t){return n&&ao(n,t,Lu)}function St(n,t){return f(t,function(t){return gu(n[t])})}function It(n,t){t=Rr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[$e(t[r++])];return r&&r==e?n:F}function Rt(n,t,r){return t=t(n),af(n)?t:s(t,r(n))}function zt(n){if(null==n)n=n===F?"[object Undefined]":"[object Null]";else if(ki&&ki in ni(n)){ | |
var t=ci.call(n,ki),r=n[ki];try{n[ki]=F;var e=true}catch(n){}var u=si.call(n);e&&(t?n[ki]=r:delete n[ki]),n=u}else n=si.call(n);return n}function Wt(n,t){return n>t}function Bt(n,t){return null!=n&&ci.call(n,t)}function Lt(n,t){return null!=n&&t in ni(n)}function Ut(n,t,r){for(var e=r?a:c,u=n[0].length,i=n.length,o=i,f=Hu(i),s=1/0,h=[];o--;){var p=n[o];o&&t&&(p=l(p,S(t))),s=Mi(p.length,s),f[o]=!r&&(t||120<=u&&120<=p.length)?new qn(o&&p):F}var p=n[0],_=-1,v=f[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0; | |
if(v?!R(v,d):!e(h,d,r)){for(o=i;--o;){var y=f[o];if(y?!R(y,d):!e(n[o],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Ct(n,t,r){var e={};return Et(n,function(n,u,i){t(e,r(n),u,i)}),e}function Dt(n,t,e){return t=Rr(t,n),n=2>t.length?n:It(n,vr(t,0,-1)),t=null==n?n:n[$e(Ge(t))],null==t?F:r(t,n,e)}function Mt(n){return xu(n)&&"[object Arguments]"==zt(n)}function Tt(n){return xu(n)&&"[object ArrayBuffer]"==zt(n)}function $t(n){return xu(n)&&"[object Date]"==zt(n)}function Ft(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!xu(n)&&!xu(t))t=n!==n&&t!==t;else n:{ | |
var i=af(n),o=af(t),f=i?"[object Array]":yo(n),c=o?"[object Array]":yo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&sf(n)){if(!sf(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Vn),t=i||gf(n)?_e(n,t,r,e,Ft,u):ve(n,t,f,r,e,Ft,u);else{if(!(1&r)&&(i=a&&ci.call(n,"__wrapped__"),f=o&&ci.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Vn),t=Ft(n,t,r,e,u);break n}if(c)t:if(u||(u=new Vn), | |
i=1&r,f=de(n),o=f.length,c=de(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:ci.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===F?h!==p&&!Ft(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l)}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)), | |
u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Nt(n){return xu(n)&&"[object Map]"==yo(n)}function Pt(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=ni(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===F&&!(c in n))return false}else{if(f=new Vn,e)var s=e(a,l,c,n,t,f);if(s===F?!Ft(l,a,3,e,f):!s)return false}}return true}function Zt(n){return!(!bu(n)||li&&li in n)&&(gu(n)?_i:xn).test(Fe(n))}function qt(n){ | |
return xu(n)&&"[object RegExp]"==zt(n)}function Vt(n){return xu(n)&&"[object Set]"==yo(n)}function Kt(n){return xu(n)&&yu(n.length)&&!!Cn[zt(n)]}function Gt(n){return typeof n=="function"?n:null==n?Nu:typeof n=="object"?af(n)?Xt(n[0],n[1]):Qt(n):Vu(n)}function Ht(n){if(!Le(n))return Ci(n);var t,r=[];for(t in ni(n))ci.call(n,t)&&"constructor"!=t&&r.push(t);return r}function Jt(n,t){return n<t}function Yt(n,t){var r=-1,e=pu(n)?Hu(n.length):[];return oo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Qt(n){ | |
var t=me(n);return 1==t.length&&t[0][2]?Ue(t[0][0],t[0][1]):function(r){return r===n||Pt(r,n,t)}}function Xt(n,t){return We(n)&&t===t&&!bu(t)?Ue($e(n),t):function(r){var e=Wu(r,n);return e===F&&e===t?Bu(r,n):Ft(t,e,3)}}function nr(n,t,r,e,u){n!==t&&co(t,function(i,o){if(bu(i)){u||(u=new Vn);var f=u,c=n[o],a=t[o],l=f.get(a);if(l)ct(n,o,l);else{var l=e?e(c,a,o+"",n,t,f):F,s=l===F;if(s){var h=af(a),p=!h&&sf(a),_=!h&&!p&&gf(a),l=a;h||p||_?af(c)?l=c:_u(c)?l=Mr(c):p?(s=false,l=Wr(a,true)):_?(s=false,l=Lr(a,true)):l=[]:wu(a)||cf(a)?(l=c, | |
cf(c)?l=Ru(c):(!bu(c)||r&&gu(c))&&(l=Oe(a))):s=false}s&&(f.set(a,l),nr(l,a,r,e,f),f.delete(a)),ct(n,o,l)}}else f=e?e(n[o],i,o+"",n,t,u):F,f===F&&(f=i),ct(n,o,f)},Uu)}function tr(n,t){var r=n.length;if(r)return t+=0>t?r:0,Re(t,r)?n[t]:F}function rr(n,t,r){var e=-1;return t=l(t.length?t:[Nu],S(je())),n=Yt(n,function(n){return{a:l(t,function(t){return t(n)}),b:++e,c:n}}),A(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Ur(u[e],i[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1); | |
break n}}e=n.b-t.b}return e})}function er(n,t){return ur(n,t,function(t,r){return Bu(n,r)})}function ur(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=It(n,o);r(f,o)&&pr(i,Rr(o,n),f)}return i}function ir(n){return function(t){return It(t,n)}}function or(n,t,r,e){var u=e?y:d,i=-1,o=t.length,f=n;for(n===t&&(t=Mr(t)),r&&(f=l(n,S(r)));++i<o;)for(var c=0,a=t[i],a=r?r(a):a;-1<(c=u(f,a,c,e));)f!==n&&wi.call(f,c,1),wi.call(n,c,1);return n}function fr(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r]; | |
if(r==e||u!==i){var i=u;Re(u)?wi.call(n,u,1):mr(n,u)}}}function cr(n,t){return n+zi(Fi()*(t-n+1))}function ar(n,t){var r="";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=zi(t/2))&&(n+=n);while(t);return r}function lr(n,t){return wo(Ce(n,t,Nu),n+"")}function sr(n){return tt(Du(n))}function hr(n,t){var r=Du(n);return Te(r,gt(t,0,r.length))}function pr(n,t,r,e){if(!bu(n))return n;t=Rr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=$e(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):F; | |
a===F&&(a=bu(l)?l:Re(t[u+1])?[]:{})}at(f,c,a),f=f[c]}return n}function _r(n){return Te(Du(n))}function vr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Hu(u);++e<u;)r[e]=n[e+t];return r}function gr(n,t){var r;return oo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function dr(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t=="number"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!Au(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return yr(n,t,Nu,r); | |
}function yr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=Au(t),a=t===F;u<i;){var l=zi((u+i)/2),s=r(n[l]),h=s!==F,p=null===s,_=s===s,v=Au(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Mi(i,4294967294)}function br(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r],f=t?t(o):o;if(!r||!hu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function xr(n){return typeof n=="number"?n:Au(n)?P:+n}function jr(n){if(typeof n=="string")return n; | |
if(af(n))return l(n,jr)+"";if(Au(n))return uo?uo.call(n):"";var t=n+"";return"0"==t&&1/n==-N?"-0":t}function wr(n,t,r){var e=-1,u=c,i=n.length,o=true,f=[],l=f;if(r)o=false,u=a;else if(200<=i){if(u=t?null:po(n))return D(u);o=false,u=R,l=new qn}else l=t?[]:f;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(o&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;t&&l.push(h),f.push(s)}else u(l,h,r)||(l!==f&&l.push(h),f.push(s))}return f}function mr(n,t){return t=Rr(t,n),n=2>t.length?n:It(n,vr(t,0,-1)), | |
null==n||delete n[$e(Ge(t))]}function Ar(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?vr(n,e?0:i,e?i+1:u):vr(n,e?i+1:0,e?u:i)}function kr(n,t){var r=n;return r instanceof Mn&&(r=r.value()),h(t,function(n,t){return t.func.apply(t.thisArg,s([n],t.args))},r)}function Er(n,t,r){var e=n.length;if(2>e)return e?wr(n[0]):[];for(var u=-1,i=Hu(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=jt(i[u]||o,n[f],t,r));return wr(kt(i,1),t,r)}function Or(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:F); | |
return o}function Sr(n){return _u(n)?n:[]}function Ir(n){return typeof n=="function"?n:Nu}function Rr(n,t){return af(n)?n:We(n,t)?[n]:mo(zu(n))}function zr(n,t,r){var e=n.length;return r=r===F?e:r,!t&&r>=e?n:vr(n,t,r)}function Wr(n,t){if(t)return n.slice();var r=n.length,r=yi?yi(r):new n.constructor(r);return n.copy(r),r}function Br(n){var t=new n.constructor(n.byteLength);return new di(t).set(new di(n)),t}function Lr(n,t){return new n.constructor(t?Br(n.buffer):n.buffer,n.byteOffset,n.length)}function Ur(n,t){ | |
if(n!==t){var r=n!==F,e=null===n,u=n===n,i=Au(n),o=t!==F,f=null===t,c=t===t,a=Au(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Cr(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Di(i-o,0),l=Hu(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l}function Dr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Di(i-f,0),s=Hu(l+a); | |
for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Mr(n,t){var r=-1,e=n.length;for(t||(t=Hu(e));++r<e;)t[r]=n[r];return t}function Tr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):F;c===F&&(c=n[f]),u?_t(r,f,c):at(r,f,c)}return r}function $r(n,t){return Tr(n,vo(n),t)}function Fr(n,t){return Tr(n,go(n),t)}function Nr(n,t){return function(r,u){var i=af(r)?e:st,o=t?t():{};return i(r,n,je(u,2),o); | |
}}function Pr(n){return lr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:F,o=2<u?r[2]:F,i=3<n.length&&typeof i=="function"?(u--,i):F;for(o&&ze(r[0],r[1],o)&&(i=3>u?F:i,u=1),t=ni(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Zr(n,t){return function(r,e){if(null==r)return r;if(!pu(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=ni(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function qr(n){return function(t,r,e){var u=-1,i=ni(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break; | |
}return t}}function Vr(n,t,r){function e(){return(this&&this!==Zn&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Hr(n);return e}function Kr(n){return function(t){t=zu(t);var r=Bn.test(t)?$(t):F,e=r?r[0]:t.charAt(0);return t=r?zr(r,1).join(""):t.slice(1),e[n]()+t}}function Gr(n){return function(t){return h($u(Tu(t).replace(In,"")),n,"")}}function Hr(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3: | |
return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=io(n.prototype),t=n.apply(r,t);return bu(t)?t:r}}function Jr(n,t,e){function u(){for(var o=arguments.length,f=Hu(o),c=o,a=xe(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:C(f,a),o-=c.length,o<e?fe(n,t,Xr,u.placeholder,F,f,c,F,F,e-o):r(this&&this!==Zn&&this instanceof u?i:n,this,f); | |
}var i=Hr(n);return u}function Yr(n){return function(t,r,e){var u=ni(t);if(!pu(t)){var i=je(r,3);t=Lu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:F}}function Qr(n){return ge(function(t){var r=t.length,e=r,u=zn.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!="function")throw new ei("Expected a function");if(u&&!o&&"wrapper"==be(i))var o=new zn([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=be(i),f="wrapper"==u?_o(i):F,o=f&&Be(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[be(f[0])].apply(o,f[3]):1==i.length&&Be(i)?o[u]():o.thru(i); | |
return function(){var n=arguments,e=n[0];if(o&&1==n.length&&af(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Xr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Hu(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=xe(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Cr(y,e,u,_)),i&&(y=Dr(y,i,o,_)),d-=x,_&&d<a)return j=C(y,j),fe(n,t,Xr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Mi(f.length,x),m=Mr(y);w--;){ | |
var A=f[w];y[w]=Re(A,x)?m[A]:F}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==Zn&&this instanceof l&&(b=g||Hr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?F:Hr(n);return l}function ne(n,t){return function(r,e){return Ct(r,n,t(e))}}function te(n,t){return function(r,e){var u;if(r===F&&e===F)return t;if(r!==F&&(u=r),e!==F){if(u===F)return e;typeof r=="string"||typeof e=="string"?(r=jr(r),e=jr(e)):(r=xr(r),e=xr(e)),u=n(r,e)}return u}}function re(n){return ge(function(t){ | |
return t=l(t,S(je())),lr(function(e){var u=this;return n(t,function(n){return r(n,u,e)})})})}function ee(n,t){t=t===F?" ":jr(t);var r=t.length;return 2>r?r?ar(t,n):t:(r=ar(t,Ri(n/T(t))),Bn.test(t)?zr($(r),0,n).join(""):r.slice(0,n))}function ue(n,t,e,u){function i(){for(var t=-1,c=arguments.length,a=-1,l=u.length,s=Hu(l+c),h=this&&this!==Zn&&this instanceof i?f:n;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++t];return r(h,o?e:this,s)}var o=1&t,f=Hr(n);return i}function ie(n){return function(t,r,e){ | |
e&&typeof e!="number"&&ze(t,r,e)&&(r=e=F),t=Eu(t),r===F?(r=t,t=0):r=Eu(r),e=e===F?t<r?1:-1:Eu(e);var u=-1;r=Di(Ri((r-t)/(e||1)),0);for(var i=Hu(r);r--;)i[n?r:++u]=t,t+=e;return i}}function oe(n){return function(t,r){return typeof t=="string"&&typeof r=="string"||(t=Iu(t),r=Iu(r)),n(t,r)}}function fe(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:F;o=l?F:o;var h=l?i:F;return i=l?F:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(F,u),Be(n)&&xo(r,u),r.placeholder=e,De(r,n,t)}function ce(n){ | |
var t=Xu[n];return function(n,r){if(n=Iu(n),r=null==r?0:Mi(Ou(r),292)){var e=(zu(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(zu(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function ae(n){return function(t){var r=yo(t);return"[object Map]"==r?L(t):"[object Set]"==r?M(t):O(t,n(t))}}function le(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!="function")throw new ei("Expected a function");var a=e?e.length:0;if(a||(t&=-97,e=u=F),o=o===F?o:Di(Ou(o),0),f=f===F?f:Ou(f),a-=u?u.length:0,64&t){ | |
var l=e,s=u;e=u=F}var h=c?F:_o(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Cr(e,r,h[4]):r,i[4]=e?C(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Dr(e,r,h[6]):r,i[6]=e?C(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Mi(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1], | |
r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===F?c?0:n.length:Di(i[9]-a,0),!f&&24&t&&(t&=-25),De((h?lo:xo)(t&&1!=t?8==t||16==t?Jr(n,t,f):32!=t&&33!=t||u.length?Xr.apply(F,i):ue(n,t,r,e):Vr(n,t,r),i),n,t)}function se(n,t,r,e){return n===F||hu(n,ii[r])&&!ci.call(e,r)?t:n}function he(n,t,r,e,u,i){return bu(n)&&bu(t)&&(i.set(t,n),nr(n,t,F,he,i),i.delete(t)),n}function pe(n){return wu(n)?F:n}function _e(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;var c=-1,a=true,l=2&r?new qn:F; | |
for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],h=t[c];if(e)var p=o?e(h,s,c,t,n,i):e(s,h,c,n,t,i);if(p!==F){if(p)continue;a=false;break}if(l){if(!_(t,function(n,t){if(!R(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==h&&!u(s,h,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function ve(n,t,r,e,u,i,o){switch(r){case"[object DataView]":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case"[object ArrayBuffer]":if(n.byteLength!=t.byteLength||!i(new di(n),new di(t)))break; | |
return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return hu(+n,+t);case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var f=L;case"[object Set]":if(f||(f=D),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=_e(f(n),f(t),e,u,i,o),o.delete(n),t);case"[object Symbol]":if(eo)return eo.call(n)==eo.call(t)}return false}function ge(n){return wo(Ce(n,F,Ve),n+"")}function de(n){ | |
return Rt(n,Lu,vo)}function ye(n){return Rt(n,Uu,go)}function be(n){for(var t=n.name+"",r=Ji[t],e=ci.call(Ji,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function xe(n){return(ci.call(On,"placeholder")?On:n).placeholder}function je(){var n=On.iteratee||Pu,n=n===Pu?Gt:n;return arguments.length?n(arguments[0],arguments[1]):n}function we(n,t){var r=n.__data__,e=typeof t;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t)?r[typeof t=="string"?"string":"hash"]:r.map; | |
}function me(n){for(var t=Lu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!bu(u)]}return t}function Ae(n,t){var r=null==n?F:n[t];return Zt(r)?r:F}function ke(n,t,r){t=Rr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=$e(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&yu(u)&&Re(o,u)&&(af(n)||cf(n)))}function Ee(n){var t=n.length,r=n.constructor(t);return t&&"string"==typeof n[0]&&ci.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Oe(n){ | |
return typeof n.constructor!="function"||Le(n)?{}:io(bi(n))}function Se(r,e,u,i){var o=r.constructor;switch(e){case"[object ArrayBuffer]":return Br(r);case"[object Boolean]":case"[object Date]":return new o(+r);case"[object DataView]":return e=i?Br(r.buffer):r.buffer,new r.constructor(e,r.byteOffset,r.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]": | |
case"[object Uint16Array]":case"[object Uint32Array]":return Lr(r,i);case"[object Map]":return e=i?u(L(r),1):L(r),h(e,n,new r.constructor);case"[object Number]":case"[object String]":return new o(r);case"[object RegExp]":return e=new r.constructor(r.source,dn.exec(r)),e.lastIndex=r.lastIndex,e;case"[object Set]":return e=i?u(D(r),1):D(r),h(e,t,new r.constructor);case"[object Symbol]":return eo?ni(eo.call(r)):{}}}function Ie(n){return af(n)||cf(n)||!!(mi&&n&&n[mi])}function Re(n,t){return t=null==t?9007199254740991:t, | |
!!t&&(typeof n=="number"||wn.test(n))&&-1<n&&0==n%1&&n<t}function ze(n,t,r){if(!bu(r))return false;var e=typeof t;return!!("number"==e?pu(r)&&Re(t,r.length):"string"==e&&t in r)&&hu(r[t],n)}function We(n,t){if(af(n))return false;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!Au(n))||(rn.test(n)||!tn.test(n)||null!=t&&n in ni(t))}function Be(n){var t=be(n),r=On[t];return typeof r=="function"&&t in Mn.prototype&&(n===r||(t=_o(r),!!t&&n===t[0]))}function Le(n){var t=n&&n.constructor; | |
return n===(typeof t=="function"&&t.prototype||ii)}function Ue(n,t){return function(r){return null!=r&&(r[n]===t&&(t!==F||n in ni(r)))}}function Ce(n,t,e){return t=Di(t===F?n.length-1:t,0),function(){for(var u=arguments,i=-1,o=Di(u.length-t,0),f=Hu(o);++i<o;)f[i]=u[t+i];for(i=-1,o=Hu(t+1);++i<t;)o[i]=u[i];return o[t]=e(f),r(n,this,o)}}function De(n,t,r){var e=t+"";t=wo;var u,i=Ne;return u=(u=e.match(hn))?u[1].split(pn):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?"& ":"")+r[u],r=r.join(2<i?", ":" "), | |
e=e.replace(sn,"{\n/* [wrapped with "+r+"] */\n")),t(n,e)}function Me(n){var t=0,r=0;return function(){var e=Ti(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(F,arguments)}}function Te(n,t){var r=-1,e=n.length,u=e-1;for(t=t===F?e:t;++r<t;){var e=cr(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function $e(n){if(typeof n=="string"||Au(n))return n;var t=n+"";return"0"==t&&1/n==-N?"-0":t}function Fe(n){if(null!=n){try{return fi.call(n)}catch(n){}return n+""}return""; | |
}function Ne(n,t){return u(Z,function(r){var e="_."+r[0];t&r[1]&&!c(n,e)&&n.push(e)}),n.sort()}function Pe(n){if(n instanceof Mn)return n.clone();var t=new zn(n.__wrapped__,n.__chain__);return t.__actions__=Mr(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ze(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Ou(r),0>r&&(r=Di(e+r,0)),g(n,je(t,3),r)):-1}function qe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==F&&(u=Ou(r),u=0>r?Di(e+u,0):Mi(u,e-1)), | |
g(n,je(t,3),u,true)}function Ve(n){return(null==n?0:n.length)?kt(n,1):[]}function Ke(n){return n&&n.length?n[0]:F}function Ge(n){var t=null==n?0:n.length;return t?n[t-1]:F}function He(n,t){return n&&n.length&&t&&t.length?or(n,t):n}function Je(n){return null==n?n:Ni.call(n)}function Ye(n){if(!n||!n.length)return[];var t=0;return n=f(n,function(n){if(_u(n))return t=Di(n.length,t),true}),E(t,function(t){return l(n,j(t))})}function Qe(n,t){if(!n||!n.length)return[];var e=Ye(n);return null==t?e:l(e,function(n){ | |
return r(t,F,n)})}function Xe(n){return n=On(n),n.__chain__=true,n}function nu(n,t){return t(n)}function tu(){return this}function ru(n,t){return(af(n)?u:oo)(n,je(t,3))}function eu(n,t){return(af(n)?i:fo)(n,je(t,3))}function uu(n,t){return(af(n)?l:Yt)(n,je(t,3))}function iu(n,t,r){return t=r?F:t,t=n&&null==t?n.length:t,le(n,128,F,F,F,F,t)}function ou(n,t){var r;if(typeof t!="function")throw new ei("Expected a function");return n=Ou(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=F), | |
r}}function fu(n,t,r){return t=r?F:t,n=le(n,8,F,F,F,F,F,t),n.placeholder=fu.placeholder,n}function cu(n,t,r){return t=r?F:t,n=le(n,16,F,F,F,F,F,t),n.placeholder=cu.placeholder,n}function au(n,t,r){function e(t){var r=c,e=a;return c=a=F,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===F||r>=t||0>r||g&&n>=l}function i(){var n=Jo();if(u(n))return o(n);var r,e=jo;r=n-_,n=t-(n-p),r=g?Mi(n,l-r):n,h=e(i,r)}function o(n){return h=F,d&&c?e(n):(c=a=F,s)}function f(){var n=Jo(),r=u(n);if(c=arguments, | |
a=this,p=n,r){if(h===F)return _=n=p,h=jo(i,t),v?e(n):s;if(g)return h=jo(i,t),e(p)}return h===F&&(h=jo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ei("Expected a function");return t=Iu(t)||0,bu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Di(Iu(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==F&&ho(h),_=0,c=p=a=h=F},f.flush=function(){return h===F?s:o(Jo())},f}function lu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e), | |
r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ei("Expected a function");return r.cache=new(lu.Cache||Pn),r}function su(n){if(typeof n!="function")throw new ei("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function hu(n,t){return n===t||n!==n&&t!==t}function pu(n){return null!=n&&yu(n.length)&&!gu(n); | |
}function _u(n){return xu(n)&&pu(n)}function vu(n){if(!xu(n))return false;var t=zt(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!wu(n)}function gu(n){return!!bu(n)&&(n=zt(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function du(n){return typeof n=="number"&&n==Ou(n)}function yu(n){return typeof n=="number"&&-1<n&&0==n%1&&9007199254740991>=n}function bu(n){var t=typeof n;return null!=n&&("object"==t||"function"==t); | |
}function xu(n){return null!=n&&typeof n=="object"}function ju(n){return typeof n=="number"||xu(n)&&"[object Number]"==zt(n)}function wu(n){return!(!xu(n)||"[object Object]"!=zt(n))&&(n=bi(n),null===n||(n=ci.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&fi.call(n)==hi))}function mu(n){return typeof n=="string"||!af(n)&&xu(n)&&"[object String]"==zt(n)}function Au(n){return typeof n=="symbol"||xu(n)&&"[object Symbol]"==zt(n)}function ku(n){if(!n)return[];if(pu(n))return mu(n)?$(n):Mr(n); | |
if(Ai&&n[Ai]){n=n[Ai]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=yo(n),("[object Map]"==t?L:"[object Set]"==t?D:Du)(n)}function Eu(n){return n?(n=Iu(n),n===N||n===-N?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Ou(n){n=Eu(n);var t=n%1;return n===n?t?n-t:n:0}function Su(n){return n?gt(Ou(n),0,4294967295):0}function Iu(n){if(typeof n=="number")return n;if(Au(n))return P;if(bu(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,n=bu(n)?n+"":n),typeof n!="string")return 0===n?n:+n; | |
n=n.replace(cn,"");var t=bn.test(n);return t||jn.test(n)?Fn(n.slice(2),t?2:8):yn.test(n)?P:+n}function Ru(n){return Tr(n,Uu(n))}function zu(n){return null==n?"":jr(n)}function Wu(n,t,r){return n=null==n?F:It(n,t),n===F?r:n}function Bu(n,t){return null!=n&&ke(n,t,Lt)}function Lu(n){return pu(n)?Gn(n):Ht(n)}function Uu(n){if(pu(n))n=Gn(n,true);else if(bu(n)){var t,r=Le(n),e=[];for(t in n)("constructor"!=t||!r&&ci.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in ni(n))t.push(r);n=t}return n}function Cu(n,t){ | |
if(null==n)return{};var r=l(ye(n),function(n){return[n]});return t=je(t),ur(n,r,function(n,r){return t(n,r[0])})}function Du(n){return null==n?[]:I(n,Lu(n))}function Mu(n){return Nf(zu(n).toLowerCase())}function Tu(n){return(n=zu(n))&&n.replace(mn,rt).replace(Rn,"")}function $u(n,t,r){return n=zu(n),t=r?F:t,t===F?Ln.test(n)?n.match(Wn)||[]:n.match(_n)||[]:n.match(t)||[]}function Fu(n){return function(){return n}}function Nu(n){return n}function Pu(n){return Gt(typeof n=="function"?n:dt(n,1))}function Zu(n,t,r){ | |
var e=Lu(t),i=St(t,e);null!=r||bu(t)&&(i.length||!e.length)||(r=t,t=n,n=this,i=St(t,Lu(t)));var o=!(bu(r)&&"chain"in r&&!r.chain),f=gu(n);return u(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Mr(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,s([this.value()],arguments))})}),n}function qu(){}function Vu(n){return We(n)?j($e(n)):ir(n)}function Ku(){return[]}function Gu(){ | |
return false}En=null==En?Zn:it.defaults(Zn.Object(),En,it.pick(Zn,Un));var Hu=En.Array,Ju=En.Date,Yu=En.Error,Qu=En.Function,Xu=En.Math,ni=En.Object,ti=En.RegExp,ri=En.String,ei=En.TypeError,ui=Hu.prototype,ii=ni.prototype,oi=En["__core-js_shared__"],fi=Qu.prototype.toString,ci=ii.hasOwnProperty,ai=0,li=function(){var n=/[^.]+$/.exec(oi&&oi.keys&&oi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),si=ii.toString,hi=fi.call(ni),pi=Zn._,_i=ti("^"+fi.call(ci).replace(on,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),vi=Kn?En.Buffer:F,gi=En.Symbol,di=En.Uint8Array,yi=vi?vi.f:F,bi=U(ni.getPrototypeOf,ni),xi=ni.create,ji=ii.propertyIsEnumerable,wi=ui.splice,mi=gi?gi.isConcatSpreadable:F,Ai=gi?gi.iterator:F,ki=gi?gi.toStringTag:F,Ei=function(){ | |
try{var n=Ae(ni,"defineProperty");return n({},"",{}),n}catch(n){}}(),Oi=En.clearTimeout!==Zn.clearTimeout&&En.clearTimeout,Si=Ju&&Ju.now!==Zn.Date.now&&Ju.now,Ii=En.setTimeout!==Zn.setTimeout&&En.setTimeout,Ri=Xu.ceil,zi=Xu.floor,Wi=ni.getOwnPropertySymbols,Bi=vi?vi.isBuffer:F,Li=En.isFinite,Ui=ui.join,Ci=U(ni.keys,ni),Di=Xu.max,Mi=Xu.min,Ti=Ju.now,$i=En.parseInt,Fi=Xu.random,Ni=ui.reverse,Pi=Ae(En,"DataView"),Zi=Ae(En,"Map"),qi=Ae(En,"Promise"),Vi=Ae(En,"Set"),Ki=Ae(En,"WeakMap"),Gi=Ae(ni,"create"),Hi=Ki&&new Ki,Ji={},Yi=Fe(Pi),Qi=Fe(Zi),Xi=Fe(qi),no=Fe(Vi),to=Fe(Ki),ro=gi?gi.prototype:F,eo=ro?ro.valueOf:F,uo=ro?ro.toString:F,io=function(){ | |
function n(){}return function(t){return bu(t)?xi?xi(t):(n.prototype=t,t=new n,n.prototype=F,t):{}}}();On.templateSettings={escape:Q,evaluate:X,interpolate:nn,variable:"",imports:{_:On}},On.prototype=Sn.prototype,On.prototype.constructor=On,zn.prototype=io(Sn.prototype),zn.prototype.constructor=zn,Mn.prototype=io(Sn.prototype),Mn.prototype.constructor=Mn,Tn.prototype.clear=function(){this.__data__=Gi?Gi(null):{},this.size=0},Tn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n], | |
this.size-=n?1:0,n},Tn.prototype.get=function(n){var t=this.__data__;return Gi?(n=t[n],"__lodash_hash_undefined__"===n?F:n):ci.call(t,n)?t[n]:F},Tn.prototype.has=function(n){var t=this.__data__;return Gi?t[n]!==F:ci.call(t,n)},Tn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Gi&&t===F?"__lodash_hash_undefined__":t,this},Nn.prototype.clear=function(){this.__data__=[],this.size=0},Nn.prototype.delete=function(n){var t=this.__data__;return n=lt(t,n),!(0>n)&&(n==t.length-1?t.pop():wi.call(t,n,1), | |
--this.size,true)},Nn.prototype.get=function(n){var t=this.__data__;return n=lt(t,n),0>n?F:t[n][1]},Nn.prototype.has=function(n){return-1<lt(this.__data__,n)},Nn.prototype.set=function(n,t){var r=this.__data__,e=lt(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Pn.prototype.clear=function(){this.size=0,this.__data__={hash:new Tn,map:new(Zi||Nn),string:new Tn}},Pn.prototype.delete=function(n){return n=we(this,n).delete(n),this.size-=n?1:0,n},Pn.prototype.get=function(n){return we(this,n).get(n); | |
},Pn.prototype.has=function(n){return we(this,n).has(n)},Pn.prototype.set=function(n,t){var r=we(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},qn.prototype.add=qn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},qn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.clear=function(){this.__data__=new Nn,this.size=0},Vn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Vn.prototype.get=function(n){ | |
return this.__data__.get(n)},Vn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Nn){var e=r.__data__;if(!Zi||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Pn(e)}return r.set(n,t),this.size=r.size,this};var oo=Zr(Et),fo=Zr(Ot,true),co=qr(),ao=qr(true),lo=Hi?function(n,t){return Hi.set(n,t),n}:Nu,so=Ei?function(n,t){return Ei(n,"toString",{configurable:true,enumerable:false,value:Fu(t),writable:true})}:Nu,ho=Oi||function(n){ | |
return Zn.clearTimeout(n)},po=Vi&&1/D(new Vi([,-0]))[1]==N?function(n){return new Vi(n)}:qu,_o=Hi?function(n){return Hi.get(n)}:qu,vo=Wi?function(n){return null==n?[]:(n=ni(n),f(Wi(n),function(t){return ji.call(n,t)}))}:Ku,go=Wi?function(n){for(var t=[];n;)s(t,vo(n)),n=bi(n);return t}:Ku,yo=zt;(Pi&&"[object DataView]"!=yo(new Pi(new ArrayBuffer(1)))||Zi&&"[object Map]"!=yo(new Zi)||qi&&"[object Promise]"!=yo(qi.resolve())||Vi&&"[object Set]"!=yo(new Vi)||Ki&&"[object WeakMap]"!=yo(new Ki))&&(yo=function(n){ | |
var t=zt(n);if(n=(n="[object Object]"==t?n.constructor:F)?Fe(n):"")switch(n){case Yi:return"[object DataView]";case Qi:return"[object Map]";case Xi:return"[object Promise]";case no:return"[object Set]";case to:return"[object WeakMap]"}return t});var bo=oi?gu:Gu,xo=Me(lo),jo=Ii||function(n,t){return Zn.setTimeout(n,t)},wo=Me(so),mo=function(n){n=lu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return en.test(n)&&t.push(""),n.replace(un,function(n,r,e,u){ | |
t.push(e?u.replace(vn,"$1"):r||n)}),t}),Ao=lr(function(n,t){return _u(n)?jt(n,kt(t,1,_u,true)):[]}),ko=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),je(r,2)):[]}),Eo=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),F,r):[]}),Oo=lr(function(n){var t=l(n,Sr);return t.length&&t[0]===n[0]?Ut(t):[]}),So=lr(function(n){var t=Ge(n),r=l(n,Sr);return t===Ge(r)?t=F:r.pop(),r.length&&r[0]===n[0]?Ut(r,je(t,2)):[]}),Io=lr(function(n){var t=Ge(n),r=l(n,Sr);return(t=typeof t=="function"?t:F)&&r.pop(), | |
r.length&&r[0]===n[0]?Ut(r,F,t):[]}),Ro=lr(He),zo=ge(function(n,t){var r=null==n?0:n.length,e=vt(n,t);return fr(n,l(t,function(n){return Re(n,r)?+n:n}).sort(Ur)),e}),Wo=lr(function(n){return wr(kt(n,1,_u,true))}),Bo=lr(function(n){var t=Ge(n);return _u(t)&&(t=F),wr(kt(n,1,_u,true),je(t,2))}),Lo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return wr(kt(n,1,_u,true),F,t)}),Uo=lr(function(n,t){return _u(n)?jt(n,t):[]}),Co=lr(function(n){return Er(f(n,_u))}),Do=lr(function(n){var t=Ge(n);return _u(t)&&(t=F), | |
Er(f(n,_u),je(t,2))}),Mo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return Er(f(n,_u),F,t)}),To=lr(Ye),$o=lr(function(n){var t=n.length,t=1<t?n[t-1]:F,t=typeof t=="function"?(n.pop(),t):F;return Qe(n,t)}),Fo=ge(function(n){function t(t){return vt(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Mn&&Re(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:nu,args:[t],thisArg:F}),new zn(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(F), | |
n})):this.thru(t)}),No=Nr(function(n,t,r){ci.call(n,r)?++n[r]:_t(n,r,1)}),Po=Yr(Ze),Zo=Yr(qe),qo=Nr(function(n,t,r){ci.call(n,r)?n[r].push(t):_t(n,r,[t])}),Vo=lr(function(n,t,e){var u=-1,i=typeof t=="function",o=pu(n)?Hu(n.length):[];return oo(n,function(n){o[++u]=i?r(t,n,e):Dt(n,t,e)}),o}),Ko=Nr(function(n,t,r){_t(n,r,t)}),Go=Nr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ho=lr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&ze(n,t[0],t[1])?t=[]:2<r&&ze(t[0],t[1],t[2])&&(t=[t[0]]), | |
rr(n,kt(t,1),[])}),Jo=Si||function(){return Zn.Date.now()},Yo=lr(function(n,t,r){var e=1;if(r.length)var u=C(r,xe(Yo)),e=32|e;return le(n,e,t,r,u)}),Qo=lr(function(n,t,r){var e=3;if(r.length)var u=C(r,xe(Qo)),e=32|e;return le(t,e,n,r,u)}),Xo=lr(function(n,t){return xt(n,1,t)}),nf=lr(function(n,t,r){return xt(n,Iu(t)||0,r)});lu.Cache=Pn;var tf=lr(function(n,t){t=1==t.length&&af(t[0])?l(t[0],S(je())):l(kt(t,1),S(je()));var e=t.length;return lr(function(u){for(var i=-1,o=Mi(u.length,e);++i<o;)u[i]=t[i].call(this,u[i]); | |
return r(n,this,u)})}),rf=lr(function(n,t){return le(n,32,F,t,C(t,xe(rf)))}),ef=lr(function(n,t){return le(n,64,F,t,C(t,xe(ef)))}),uf=ge(function(n,t){return le(n,256,F,F,F,t)}),of=oe(Wt),ff=oe(function(n,t){return n>=t}),cf=Mt(function(){return arguments}())?Mt:function(n){return xu(n)&&ci.call(n,"callee")&&!ji.call(n,"callee")},af=Hu.isArray,lf=Hn?S(Hn):Tt,sf=Bi||Gu,hf=Jn?S(Jn):$t,pf=Yn?S(Yn):Nt,_f=Qn?S(Qn):qt,vf=Xn?S(Xn):Vt,gf=nt?S(nt):Kt,df=oe(Jt),yf=oe(function(n,t){return n<=t}),bf=Pr(function(n,t){ | |
if(Le(t)||pu(t))Tr(t,Lu(t),n);else for(var r in t)ci.call(t,r)&&at(n,r,t[r])}),xf=Pr(function(n,t){Tr(t,Uu(t),n)}),jf=Pr(function(n,t,r,e){Tr(t,Uu(t),n,e)}),wf=Pr(function(n,t,r,e){Tr(t,Lu(t),n,e)}),mf=ge(vt),Af=lr(function(n){return n.push(F,se),r(jf,F,n)}),kf=lr(function(n){return n.push(F,he),r(Rf,F,n)}),Ef=ne(function(n,t,r){n[t]=r},Fu(Nu)),Of=ne(function(n,t,r){ci.call(n,t)?n[t].push(r):n[t]=[r]},je),Sf=lr(Dt),If=Pr(function(n,t,r){nr(n,t,r)}),Rf=Pr(function(n,t,r,e){nr(n,t,r,e)}),zf=ge(function(n,t){ | |
var r={};if(null==n)return r;var e=false;t=l(t,function(t){return t=Rr(t,n),e||(e=1<t.length),t}),Tr(n,ye(n),r),e&&(r=dt(r,7,pe));for(var u=t.length;u--;)mr(r,t[u]);return r}),Wf=ge(function(n,t){return null==n?{}:er(n,t)}),Bf=ae(Lu),Lf=ae(Uu),Uf=Gr(function(n,t,r){return t=t.toLowerCase(),n+(r?Mu(t):t)}),Cf=Gr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Df=Gr(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Mf=Kr("toLowerCase"),Tf=Gr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase(); | |
}),$f=Gr(function(n,t,r){return n+(r?" ":"")+Nf(t)}),Ff=Gr(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Nf=Kr("toUpperCase"),Pf=lr(function(n,t){try{return r(n,F,t)}catch(n){return vu(n)?n:new Yu(n)}}),Zf=ge(function(n,t){return u(t,function(t){t=$e(t),_t(n,t,Yo(n[t],n))}),n}),qf=Qr(),Vf=Qr(true),Kf=lr(function(n,t){return function(r){return Dt(r,n,t)}}),Gf=lr(function(n,t){return function(r){return Dt(n,r,t)}}),Hf=re(l),Jf=re(o),Yf=re(_),Qf=ie(),Xf=ie(true),nc=te(function(n,t){return n+t},0),tc=ce("ceil"),rc=te(function(n,t){ | |
return n/t},1),ec=ce("floor"),uc=te(function(n,t){return n*t},1),ic=ce("round"),oc=te(function(n,t){return n-t},0);return On.after=function(n,t){if(typeof t!="function")throw new ei("Expected a function");return n=Ou(n),function(){if(1>--n)return t.apply(this,arguments)}},On.ary=iu,On.assign=bf,On.assignIn=xf,On.assignInWith=jf,On.assignWith=wf,On.at=mf,On.before=ou,On.bind=Yo,On.bindAll=Zf,On.bindKey=Qo,On.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return af(n)?n:[n]}, | |
On.chain=Xe,On.chunk=function(n,t,r){if(t=(r?ze(n,t,r):t===F)?1:Di(Ou(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Hu(Ri(r/t));e<r;)i[u++]=vr(n,e,e+=t);return i},On.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){var i=n[t];i&&(u[e++]=i)}return u},On.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Hu(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return s(af(r)?Mr(r):[r],kt(t,1))},On.cond=function(n){var t=null==n?0:n.length,e=je();return n=t?l(n,function(n){ | |
if("function"!=typeof n[1])throw new ei("Expected a function");return[e(n[0]),n[1]]}):[],lr(function(e){for(var u=-1;++u<t;){var i=n[u];if(r(i[0],this,e))return r(i[1],this,e)}})},On.conforms=function(n){return yt(dt(n,1))},On.constant=Fu,On.countBy=No,On.create=function(n,t){var r=io(n);return null==t?r:ht(r,t)},On.curry=fu,On.curryRight=cu,On.debounce=au,On.defaults=Af,On.defaultsDeep=kf,On.defer=Xo,On.delay=nf,On.difference=Ao,On.differenceBy=ko,On.differenceWith=Eo,On.drop=function(n,t,r){var e=null==n?0:n.length; | |
return e?(t=r||t===F?1:Ou(t),vr(n,0>t?0:t,e)):[]},On.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0,0>t?0:t)):[]},On.dropRightWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true,true):[]},On.dropWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true):[]},On.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&ze(n,t,r)&&(r=0,e=u),u=n.length,r=Ou(r),0>r&&(r=-r>u?0:u+r),e=e===F||e>u?u:Ou(e),0>e&&(e+=u),e=r>e?0:Su(e);r<e;)n[r++]=t; | |
return n},On.filter=function(n,t){return(af(n)?f:At)(n,je(t,3))},On.flatMap=function(n,t){return kt(uu(n,t),1)},On.flatMapDeep=function(n,t){return kt(uu(n,t),N)},On.flatMapDepth=function(n,t,r){return r=r===F?1:Ou(r),kt(uu(n,t),r)},On.flatten=Ve,On.flattenDeep=function(n){return(null==n?0:n.length)?kt(n,N):[]},On.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===F?1:Ou(t),kt(n,t)):[]},On.flip=function(n){return le(n,512)},On.flow=qf,On.flowRight=Vf,On.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){ | |
var u=n[t];e[u[0]]=u[1]}return e},On.functions=function(n){return null==n?[]:St(n,Lu(n))},On.functionsIn=function(n){return null==n?[]:St(n,Uu(n))},On.groupBy=qo,On.initial=function(n){return(null==n?0:n.length)?vr(n,0,-1):[]},On.intersection=Oo,On.intersectionBy=So,On.intersectionWith=Io,On.invert=Ef,On.invertBy=Of,On.invokeMap=Vo,On.iteratee=Pu,On.keyBy=Ko,On.keys=Lu,On.keysIn=Uu,On.map=uu,On.mapKeys=function(n,t){var r={};return t=je(t,3),Et(n,function(n,e,u){_t(r,t(n,e,u),n)}),r},On.mapValues=function(n,t){ | |
var r={};return t=je(t,3),Et(n,function(n,e,u){_t(r,e,t(n,e,u))}),r},On.matches=function(n){return Qt(dt(n,1))},On.matchesProperty=function(n,t){return Xt(n,dt(t,1))},On.memoize=lu,On.merge=If,On.mergeWith=Rf,On.method=Kf,On.methodOf=Gf,On.mixin=Zu,On.negate=su,On.nthArg=function(n){return n=Ou(n),lr(function(t){return tr(t,n)})},On.omit=zf,On.omitBy=function(n,t){return Cu(n,su(je(t)))},On.once=function(n){return ou(2,n)},On.orderBy=function(n,t,r,e){return null==n?[]:(af(t)||(t=null==t?[]:[t]), | |
r=e?F:r,af(r)||(r=null==r?[]:[r]),rr(n,t,r))},On.over=Hf,On.overArgs=tf,On.overEvery=Jf,On.overSome=Yf,On.partial=rf,On.partialRight=ef,On.partition=Go,On.pick=Wf,On.pickBy=Cu,On.property=Vu,On.propertyOf=function(n){return function(t){return null==n?F:It(n,t)}},On.pull=Ro,On.pullAll=He,On.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?or(n,t,je(r,2)):n},On.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?or(n,t,F,r):n},On.pullAt=zo,On.range=Qf,On.rangeRight=Xf,On.rearg=uf,On.reject=function(n,t){ | |
return(af(n)?f:At)(n,su(je(t,3)))},On.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=je(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),u.push(e))}return fr(n,u),r},On.rest=function(n,t){if(typeof n!="function")throw new ei("Expected a function");return t=t===F?t:Ou(t),lr(n,t)},On.reverse=Je,On.sampleSize=function(n,t,r){return t=(r?ze(n,t,r):t===F)?1:Ou(t),(af(n)?ot:hr)(n,t)},On.set=function(n,t,r){return null==n?n:pr(n,t,r)},On.setWith=function(n,t,r,e){return e=typeof e=="function"?e:F, | |
null==n?n:pr(n,t,r,e)},On.shuffle=function(n){return(af(n)?ft:_r)(n)},On.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!="number"&&ze(n,t,r)?(t=0,r=e):(t=null==t?0:Ou(t),r=r===F?e:Ou(r)),vr(n,t,r)):[]},On.sortBy=Ho,On.sortedUniq=function(n){return n&&n.length?br(n):[]},On.sortedUniqBy=function(n,t){return n&&n.length?br(n,je(t,2)):[]},On.split=function(n,t,r){return r&&typeof r!="number"&&ze(n,t,r)&&(t=r=F),r=r===F?4294967295:r>>>0,r?(n=zu(n))&&(typeof t=="string"||null!=t&&!_f(t))&&(t=jr(t), | |
!t&&Bn.test(n))?zr($(n),0,r):n.split(t,r):[]},On.spread=function(n,t){if(typeof n!="function")throw new ei("Expected a function");return t=null==t?0:Di(Ou(t),0),lr(function(e){var u=e[t];return e=zr(e,0,t),u&&s(e,u),r(n,this,e)})},On.tail=function(n){var t=null==n?0:n.length;return t?vr(n,1,t):[]},On.take=function(n,t,r){return n&&n.length?(t=r||t===F?1:Ou(t),vr(n,0,0>t?0:t)):[]},On.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0>t?0:t,e)):[]},On.takeRightWhile=function(n,t){ | |
return n&&n.length?Ar(n,je(t,3),false,true):[]},On.takeWhile=function(n,t){return n&&n.length?Ar(n,je(t,3)):[]},On.tap=function(n,t){return t(n),n},On.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ei("Expected a function");return bu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),au(n,t,{leading:e,maxWait:t,trailing:u})},On.thru=nu,On.toArray=ku,On.toPairs=Bf,On.toPairsIn=Lf,On.toPath=function(n){return af(n)?l(n,$e):Au(n)?[n]:Mr(mo(zu(n)))},On.toPlainObject=Ru, | |
On.transform=function(n,t,r){var e=af(n),i=e||sf(n)||gf(n);if(t=je(t,4),null==r){var o=n&&n.constructor;r=i?e?new o:[]:bu(n)&&gu(o)?io(bi(n)):{}}return(i?u:Et)(n,function(n,e,u){return t(r,n,e,u)}),r},On.unary=function(n){return iu(n,1)},On.union=Wo,On.unionBy=Bo,On.unionWith=Lo,On.uniq=function(n){return n&&n.length?wr(n):[]},On.uniqBy=function(n,t){return n&&n.length?wr(n,je(t,2)):[]},On.uniqWith=function(n,t){return t=typeof t=="function"?t:F,n&&n.length?wr(n,F,t):[]},On.unset=function(n,t){return null==n||mr(n,t); | |
},On.unzip=Ye,On.unzipWith=Qe,On.update=function(n,t,r){return null==n?n:pr(n,t,Ir(r)(It(n,t)),void 0)},On.updateWith=function(n,t,r,e){return e=typeof e=="function"?e:F,null!=n&&(n=pr(n,t,Ir(r)(It(n,t)),e)),n},On.values=Du,On.valuesIn=function(n){return null==n?[]:I(n,Uu(n))},On.without=Uo,On.words=$u,On.wrap=function(n,t){return rf(Ir(t),n)},On.xor=Co,On.xorBy=Do,On.xorWith=Mo,On.zip=To,On.zipObject=function(n,t){return Or(n||[],t||[],at)},On.zipObjectDeep=function(n,t){return Or(n||[],t||[],pr); | |
},On.zipWith=$o,On.entries=Bf,On.entriesIn=Lf,On.extend=xf,On.extendWith=jf,Zu(On,On),On.add=nc,On.attempt=Pf,On.camelCase=Uf,On.capitalize=Mu,On.ceil=tc,On.clamp=function(n,t,r){return r===F&&(r=t,t=F),r!==F&&(r=Iu(r),r=r===r?r:0),t!==F&&(t=Iu(t),t=t===t?t:0),gt(Iu(n),t,r)},On.clone=function(n){return dt(n,4)},On.cloneDeep=function(n){return dt(n,5)},On.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,5,t)},On.cloneWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,4,t)}, | |
On.conformsTo=function(n,t){return null==t||bt(n,t,Lu(t))},On.deburr=Tu,On.defaultTo=function(n,t){return null==n||n!==n?t:n},On.divide=rc,On.endsWith=function(n,t,r){n=zu(n),t=jr(t);var e=n.length,e=r=r===F?e:gt(Ou(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},On.eq=hu,On.escape=function(n){return(n=zu(n))&&Y.test(n)?n.replace(H,et):n},On.escapeRegExp=function(n){return(n=zu(n))&&fn.test(n)?n.replace(on,"\\$&"):n},On.every=function(n,t,r){var e=af(n)?o:wt;return r&&ze(n,t,r)&&(t=F),e(n,je(t,3)); | |
},On.find=Po,On.findIndex=Ze,On.findKey=function(n,t){return v(n,je(t,3),Et)},On.findLast=Zo,On.findLastIndex=qe,On.findLastKey=function(n,t){return v(n,je(t,3),Ot)},On.floor=ec,On.forEach=ru,On.forEachRight=eu,On.forIn=function(n,t){return null==n?n:co(n,je(t,3),Uu)},On.forInRight=function(n,t){return null==n?n:ao(n,je(t,3),Uu)},On.forOwn=function(n,t){return n&&Et(n,je(t,3))},On.forOwnRight=function(n,t){return n&&Ot(n,je(t,3))},On.get=Wu,On.gt=of,On.gte=ff,On.has=function(n,t){return null!=n&&ke(n,t,Bt); | |
},On.hasIn=Bu,On.head=Ke,On.identity=Nu,On.includes=function(n,t,r,e){return n=pu(n)?n:Du(n),r=r&&!e?Ou(r):0,e=n.length,0>r&&(r=Di(e+r,0)),mu(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<d(n,t,r)},On.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Ou(r),0>r&&(r=Di(e+r,0)),d(n,t,r)):-1},On.inRange=function(n,t,r){return t=Eu(t),r===F?(r=t,t=0):r=Eu(r),n=Iu(n),n>=Mi(t,r)&&n<Di(t,r)},On.invoke=Sf,On.isArguments=cf,On.isArray=af,On.isArrayBuffer=lf,On.isArrayLike=pu,On.isArrayLikeObject=_u, | |
On.isBoolean=function(n){return true===n||false===n||xu(n)&&"[object Boolean]"==zt(n)},On.isBuffer=sf,On.isDate=hf,On.isElement=function(n){return xu(n)&&1===n.nodeType&&!wu(n)},On.isEmpty=function(n){if(null==n)return true;if(pu(n)&&(af(n)||typeof n=="string"||typeof n.splice=="function"||sf(n)||gf(n)||cf(n)))return!n.length;var t=yo(n);if("[object Map]"==t||"[object Set]"==t)return!n.size;if(Le(n))return!Ht(n).length;for(var r in n)if(ci.call(n,r))return false;return true},On.isEqual=function(n,t){return Ft(n,t); | |
},On.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:F)?r(n,t):F;return e===F?Ft(n,t,F,r):!!e},On.isError=vu,On.isFinite=function(n){return typeof n=="number"&&Li(n)},On.isFunction=gu,On.isInteger=du,On.isLength=yu,On.isMap=pf,On.isMatch=function(n,t){return n===t||Pt(n,t,me(t))},On.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:F,Pt(n,t,me(t),r)},On.isNaN=function(n){return ju(n)&&n!=+n},On.isNative=function(n){if(bo(n))throw new Yu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill."); | |
return Zt(n)},On.isNil=function(n){return null==n},On.isNull=function(n){return null===n},On.isNumber=ju,On.isObject=bu,On.isObjectLike=xu,On.isPlainObject=wu,On.isRegExp=_f,On.isSafeInteger=function(n){return du(n)&&-9007199254740991<=n&&9007199254740991>=n},On.isSet=vf,On.isString=mu,On.isSymbol=Au,On.isTypedArray=gf,On.isUndefined=function(n){return n===F},On.isWeakMap=function(n){return xu(n)&&"[object WeakMap]"==yo(n)},On.isWeakSet=function(n){return xu(n)&&"[object WeakSet]"==zt(n)},On.join=function(n,t){ | |
return null==n?"":Ui.call(n,t)},On.kebabCase=Cf,On.last=Ge,On.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==F&&(u=Ou(r),u=0>u?Di(e+u,0):Mi(u,e-1)),t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=g(n,b,u,true);return n},On.lowerCase=Df,On.lowerFirst=Mf,On.lt=df,On.lte=yf,On.max=function(n){return n&&n.length?mt(n,Nu,Wt):F},On.maxBy=function(n,t){return n&&n.length?mt(n,je(t,2),Wt):F},On.mean=function(n){return x(n,Nu)},On.meanBy=function(n,t){return x(n,je(t,2))},On.min=function(n){ | |
return n&&n.length?mt(n,Nu,Jt):F},On.minBy=function(n,t){return n&&n.length?mt(n,je(t,2),Jt):F},On.stubArray=Ku,On.stubFalse=Gu,On.stubObject=function(){return{}},On.stubString=function(){return""},On.stubTrue=function(){return true},On.multiply=uc,On.nth=function(n,t){return n&&n.length?tr(n,Ou(t)):F},On.noConflict=function(){return Zn._===this&&(Zn._=pi),this},On.noop=qu,On.now=Jo,On.pad=function(n,t,r){n=zu(n);var e=(t=Ou(t))?T(n):0;return!t||e>=t?n:(t=(t-e)/2,ee(zi(t),r)+n+ee(Ri(t),r))},On.padEnd=function(n,t,r){ | |
n=zu(n);var e=(t=Ou(t))?T(n):0;return t&&e<t?n+ee(t-e,r):n},On.padStart=function(n,t,r){n=zu(n);var e=(t=Ou(t))?T(n):0;return t&&e<t?ee(t-e,r)+n:n},On.parseInt=function(n,t,r){return r||null==t?t=0:t&&(t=+t),$i(zu(n).replace(an,""),t||0)},On.random=function(n,t,r){if(r&&typeof r!="boolean"&&ze(n,t,r)&&(t=r=F),r===F&&(typeof t=="boolean"?(r=t,t=F):typeof n=="boolean"&&(r=n,n=F)),n===F&&t===F?(n=0,t=1):(n=Eu(n),t===F?(t=n,n=0):t=Eu(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Fi(),Mi(n+r*(t-n+$n("1e-"+((r+"").length-1))),t)):cr(n,t); | |
},On.reduce=function(n,t,r){var e=af(n)?h:m,u=3>arguments.length;return e(n,je(t,4),r,u,oo)},On.reduceRight=function(n,t,r){var e=af(n)?p:m,u=3>arguments.length;return e(n,je(t,4),r,u,fo)},On.repeat=function(n,t,r){return t=(r?ze(n,t,r):t===F)?1:Ou(t),ar(zu(n),t)},On.replace=function(){var n=arguments,t=zu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},On.result=function(n,t,r){t=Rr(t,n);var e=-1,u=t.length;for(u||(u=1,n=F);++e<u;){var i=null==n?F:n[$e(t[e])];i===F&&(e=u,i=r),n=gu(i)?i.call(n):i; | |
}return n},On.round=ic,On.runInContext=w,On.sample=function(n){return(af(n)?tt:sr)(n)},On.size=function(n){if(null==n)return 0;if(pu(n))return mu(n)?T(n):n.length;var t=yo(n);return"[object Map]"==t||"[object Set]"==t?n.size:Ht(n).length},On.snakeCase=Tf,On.some=function(n,t,r){var e=af(n)?_:gr;return r&&ze(n,t,r)&&(t=F),e(n,je(t,3))},On.sortedIndex=function(n,t){return dr(n,t)},On.sortedIndexBy=function(n,t,r){return yr(n,t,je(r,2))},On.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){ | |
var e=dr(n,t);if(e<r&&hu(n[e],t))return e}return-1},On.sortedLastIndex=function(n,t){return dr(n,t,true)},On.sortedLastIndexBy=function(n,t,r){return yr(n,t,je(r,2),true)},On.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=dr(n,t,true)-1;if(hu(n[r],t))return r}return-1},On.startCase=$f,On.startsWith=function(n,t,r){return n=zu(n),r=null==r?0:gt(Ou(r),0,n.length),t=jr(t),n.slice(r,r+t.length)==t},On.subtract=oc,On.sum=function(n){return n&&n.length?k(n,Nu):0},On.sumBy=function(n,t){return n&&n.length?k(n,je(t,2)):0; | |
},On.template=function(n,t,r){var e=On.templateSettings;r&&ze(n,t,r)&&(t=F),n=zu(n),t=jf({},t,e,se),r=jf({},t.imports,e.imports,se);var u,i,o=Lu(r),f=I(r,o),c=0;r=t.interpolate||An;var a="__p+='";r=ti((t.escape||An).source+"|"+r.source+"|"+(r===nn?gn:An).source+"|"+(t.evaluate||An).source+"|$","g");var l="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(kn,B),r&&(u=true,a+="'+__e("+r+")+'"),f&&(i=true,a+="';"+f+";\n__p+='"), | |
e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=t.variable)||(a="with(obj){"+a+"}"),a=(i?a.replace(q,""):a).replace(V,"$1").replace(K,"$1;"),a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=Pf(function(){return Qu(o,l+"return "+a).apply(F,f)}),t.source=a,vu(t))throw t;return t},On.times=function(n,t){if(n=Ou(n),1>n||9007199254740991<n)return[]; | |
var r=4294967295,e=Mi(n,4294967295);for(t=je(t),n-=4294967295,e=E(e,t);++r<n;)t(r);return e},On.toFinite=Eu,On.toInteger=Ou,On.toLength=Su,On.toLower=function(n){return zu(n).toLowerCase()},On.toNumber=Iu,On.toSafeInteger=function(n){return n?gt(Ou(n),-9007199254740991,9007199254740991):0===n?n:0},On.toString=zu,On.toUpper=function(n){return zu(n).toUpperCase()},On.trim=function(n,t,r){return(n=zu(n))&&(r||t===F)?n.replace(cn,""):n&&(t=jr(t))?(n=$(n),r=$(t),t=z(n,r),r=W(n,r)+1,zr(n,t,r).join("")):n; | |
},On.trimEnd=function(n,t,r){return(n=zu(n))&&(r||t===F)?n.replace(ln,""):n&&(t=jr(t))?(n=$(n),t=W(n,$(t))+1,zr(n,0,t).join("")):n},On.trimStart=function(n,t,r){return(n=zu(n))&&(r||t===F)?n.replace(an,""):n&&(t=jr(t))?(n=$(n),t=z(n,$(t)),zr(n,t).join("")):n},On.truncate=function(n,t){var r=30,e="...";if(bu(t))var u="separator"in t?t.separator:u,r="length"in t?Ou(t.length):r,e="omission"in t?jr(t.omission):e;n=zu(n);var i=n.length;if(Bn.test(n))var o=$(n),i=o.length;if(r>=i)return n;if(i=r-T(e),1>i)return e; | |
if(r=o?zr(o,0,i).join(""):n.slice(0,i),u===F)return r+e;if(o&&(i+=r.length-i),_f(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=ti(u.source,zu(dn.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===F?i:c)}}else n.indexOf(jr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},On.unescape=function(n){return(n=zu(n))&&J.test(n)?n.replace(G,ut):n},On.uniqueId=function(n){var t=++ai;return zu(n)+t},On.upperCase=Ff,On.upperFirst=Nf,On.each=ru,On.eachRight=eu,On.first=Ke, | |
Zu(On,function(){var n={};return Et(On,function(t,r){ci.call(On.prototype,r)||(n[r]=t)}),n}(),{chain:false}),On.VERSION="4.17.4",u("bind bindKey curry curryRight partial partialRight".split(" "),function(n){On[n].placeholder=On}),u(["drop","take"],function(n,t){Mn.prototype[n]=function(r){r=r===F?1:Di(Ou(r),0);var e=this.__filtered__&&!t?new Mn(this):this.clone();return e.__filtered__?e.__takeCount__=Mi(r,e.__takeCount__):e.__views__.push({size:Mi(r,4294967295),type:n+(0>e.__dir__?"Right":"")}),e},Mn.prototype[n+"Right"]=function(t){ | |
return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;Mn.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:je(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");Mn.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Mn.prototype[n]=function(){return this.__filtered__?new Mn(this):this[r](1); | |
}}),Mn.prototype.compact=function(){return this.filter(Nu)},Mn.prototype.find=function(n){return this.filter(n).head()},Mn.prototype.findLast=function(n){return this.reverse().find(n)},Mn.prototype.invokeMap=lr(function(n,t){return typeof n=="function"?new Mn(this):this.map(function(r){return Dt(r,n,t)})}),Mn.prototype.reject=function(n){return this.filter(su(je(n)))},Mn.prototype.slice=function(n,t){n=Ou(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Mn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)), | |
t!==F&&(t=Ou(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Mn.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Mn.prototype.toArray=function(){return this.take(4294967295)},Et(Mn.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=On[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(On.prototype[t]=function(){function t(n){return n=u.apply(On,s([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Mn,a=f[0],l=c||af(o); | |
l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=i&&!h,c=c&&!p;return!i&&l?(o=c?o:new Mn(this),o=n.apply(o,f),o.__actions__.push({func:nu,args:[t],thisArg:F}),new zn(o,h)):a&&c?n.apply(this,f):(o=this.thru(t),a?e?o.value()[0]:o.value():o)})}),u("pop push shift sort splice unshift".split(" "),function(n){var t=ui[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);On.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){ | |
var u=this.value();return t.apply(af(u)?u:[],n)}return this[r](function(r){return t.apply(af(r)?r:[],n)})}}),Et(Mn.prototype,function(n,t){var r=On[t];if(r){var e=r.name+"";(Ji[e]||(Ji[e]=[])).push({name:t,func:r})}}),Ji[Xr(F,2).name]=[{name:"wrapper",func:F}],Mn.prototype.clone=function(){var n=new Mn(this.__wrapped__);return n.__actions__=Mr(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Mr(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Mr(this.__views__), | |
n},Mn.prototype.reverse=function(){if(this.__filtered__){var n=new Mn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Mn.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=af(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Mi(n,f+s);break;case"takeRight":f=Di(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o, | |
o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Mi(n,this.__takeCount__),!e||!u&&i==n&&l==n)return kr(t,this.__actions__);e=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},On.prototype.at=Fo,On.prototype.chain=function(){return Xe(this)},On.prototype.commit=function(){return new zn(this.value(),this.__chain__)},On.prototype.next=function(){this.__values__===F&&(this.__values__=ku(this.value())); | |
var n=this.__index__>=this.__values__.length;return{done:n,value:n?F:this.__values__[this.__index__++]}},On.prototype.plant=function(n){for(var t,r=this;r instanceof Sn;){var e=Pe(r);e.__index__=0,e.__values__=F,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},On.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Mn?(this.__actions__.length&&(n=new Mn(this)),n=n.reverse(),n.__actions__.push({func:nu,args:[Je],thisArg:F}),new zn(n,this.__chain__)):this.thru(Je); | |
},On.prototype.toJSON=On.prototype.valueOf=On.prototype.value=function(){return kr(this.__wrapped__,this.__actions__)},On.prototype.first=On.prototype.head,Ai&&(On.prototype[Ai]=tu),On}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=it, define(function(){return it})):Vn?((Vn.exports=it)._=it,qn._=it):Zn._=it}).call(this);(function (global, factory) { | |
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | |
typeof define === 'function' && define.amd ? define(['exports'], factory) : | |
(factory((global.d3 = global.d3 || {}))); | |
}(this, (function (exports) { 'use strict'; | |
var version = "4.10.2"; | |
var ascending = function(a, b) { | |
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; | |
}; | |
var bisector = function(compare) { | |
if (compare.length === 1) compare = ascendingComparator(compare); | |
return { | |
left: function(a, x, lo, hi) { | |
if (lo == null) lo = 0; | |
if (hi == null) hi = a.length; | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (compare(a[mid], x) < 0) lo = mid + 1; | |
else hi = mid; | |
} | |
return lo; | |
}, | |
right: function(a, x, lo, hi) { | |
if (lo == null) lo = 0; | |
if (hi == null) hi = a.length; | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (compare(a[mid], x) > 0) hi = mid; | |
else lo = mid + 1; | |
} | |
return lo; | |
} | |
}; | |
}; | |
function ascendingComparator(f) { | |
return function(d, x) { | |
return ascending(f(d), x); | |
}; | |
} | |
var ascendingBisect = bisector(ascending); | |
var bisectRight = ascendingBisect.right; | |
var bisectLeft = ascendingBisect.left; | |
var pairs = function(array, f) { | |
if (f == null) f = pair; | |
var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); | |
while (i < n) pairs[i] = f(p, p = array[++i]); | |
return pairs; | |
}; | |
function pair(a, b) { | |
return [a, b]; | |
} | |
var cross = function(values0, values1, reduce) { | |
var n0 = values0.length, | |
n1 = values1.length, | |
values = new Array(n0 * n1), | |
i0, | |
i1, | |
i, | |
value0; | |
if (reduce == null) reduce = pair; | |
for (i0 = i = 0; i0 < n0; ++i0) { | |
for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { | |
values[i] = reduce(value0, values1[i1]); | |
} | |
} | |
return values; | |
}; | |
var descending = function(a, b) { | |
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; | |
}; | |
var number = function(x) { | |
return x === null ? NaN : +x; | |
}; | |
var variance = function(values, valueof) { | |
var n = values.length, | |
m = 0, | |
i = -1, | |
mean = 0, | |
value, | |
delta, | |
sum = 0; | |
if (valueof == null) { | |
while (++i < n) { | |
if (!isNaN(value = number(values[i]))) { | |
delta = value - mean; | |
mean += delta / ++m; | |
sum += delta * (value - mean); | |
} | |
} | |
} | |
else { | |
while (++i < n) { | |
if (!isNaN(value = number(valueof(values[i], i, values)))) { | |
delta = value - mean; | |
mean += delta / ++m; | |
sum += delta * (value - mean); | |
} | |
} | |
} | |
if (m > 1) return sum / (m - 1); | |
}; | |
var deviation = function(array, f) { | |
var v = variance(array, f); | |
return v ? Math.sqrt(v) : v; | |
}; | |
var extent = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
min, | |
max; | |
if (valueof == null) { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = values[i]) != null && value >= value) { | |
min = max = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = values[i]) != null) { | |
if (min > value) min = value; | |
if (max < value) max = value; | |
} | |
} | |
} | |
} | |
} | |
else { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = valueof(values[i], i, values)) != null && value >= value) { | |
min = max = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = valueof(values[i], i, values)) != null) { | |
if (min > value) min = value; | |
if (max < value) max = value; | |
} | |
} | |
} | |
} | |
} | |
return [min, max]; | |
}; | |
var array = Array.prototype; | |
var slice = array.slice; | |
var map = array.map; | |
var constant = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var identity = function(x) { | |
return x; | |
}; | |
var range = function(start, stop, step) { | |
start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; | |
var i = -1, | |
n = Math.max(0, Math.ceil((stop - start) / step)) | 0, | |
range = new Array(n); | |
while (++i < n) { | |
range[i] = start + i * step; | |
} | |
return range; | |
}; | |
var e10 = Math.sqrt(50); | |
var e5 = Math.sqrt(10); | |
var e2 = Math.sqrt(2); | |
var ticks = function(start, stop, count) { | |
var reverse = stop < start, | |
i = -1, | |
n, | |
ticks, | |
step; | |
if (reverse) n = start, start = stop, stop = n; | |
if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; | |
if (step > 0) { | |
start = Math.ceil(start / step); | |
stop = Math.floor(stop / step); | |
ticks = new Array(n = Math.ceil(stop - start + 1)); | |
while (++i < n) ticks[i] = (start + i) * step; | |
} else { | |
start = Math.floor(start * step); | |
stop = Math.ceil(stop * step); | |
ticks = new Array(n = Math.ceil(start - stop + 1)); | |
while (++i < n) ticks[i] = (start - i) / step; | |
} | |
if (reverse) ticks.reverse(); | |
return ticks; | |
}; | |
function tickIncrement(start, stop, count) { | |
var step = (stop - start) / Math.max(0, count), | |
power = Math.floor(Math.log(step) / Math.LN10), | |
error = step / Math.pow(10, power); | |
return power >= 0 | |
? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) | |
: -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); | |
} | |
function tickStep(start, stop, count) { | |
var step0 = Math.abs(stop - start) / Math.max(0, count), | |
step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), | |
error = step0 / step1; | |
if (error >= e10) step1 *= 10; | |
else if (error >= e5) step1 *= 5; | |
else if (error >= e2) step1 *= 2; | |
return stop < start ? -step1 : step1; | |
} | |
var sturges = function(values) { | |
return Math.ceil(Math.log(values.length) / Math.LN2) + 1; | |
}; | |
var histogram = function() { | |
var value = identity, | |
domain = extent, | |
threshold = sturges; | |
function histogram(data) { | |
var i, | |
n = data.length, | |
x, | |
values = new Array(n); | |
for (i = 0; i < n; ++i) { | |
values[i] = value(data[i], i, data); | |
} | |
var xz = domain(values), | |
x0 = xz[0], | |
x1 = xz[1], | |
tz = threshold(values, x0, x1); | |
// Convert number of thresholds into uniform thresholds. | |
if (!Array.isArray(tz)) { | |
tz = tickStep(x0, x1, tz); | |
tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive | |
} | |
// Remove any thresholds outside the domain. | |
var m = tz.length; | |
while (tz[0] <= x0) tz.shift(), --m; | |
while (tz[m - 1] > x1) tz.pop(), --m; | |
var bins = new Array(m + 1), | |
bin; | |
// Initialize bins. | |
for (i = 0; i <= m; ++i) { | |
bin = bins[i] = []; | |
bin.x0 = i > 0 ? tz[i - 1] : x0; | |
bin.x1 = i < m ? tz[i] : x1; | |
} | |
// Assign data to bins by value, ignoring any outside the domain. | |
for (i = 0; i < n; ++i) { | |
x = values[i]; | |
if (x0 <= x && x <= x1) { | |
bins[bisectRight(tz, x, 0, m)].push(data[i]); | |
} | |
} | |
return bins; | |
} | |
histogram.value = function(_) { | |
return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; | |
}; | |
histogram.domain = function(_) { | |
return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; | |
}; | |
histogram.thresholds = function(_) { | |
return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; | |
}; | |
return histogram; | |
}; | |
var quantile = function(values, p, valueof) { | |
if (valueof == null) valueof = number; | |
if (!(n = values.length)) return; | |
if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); | |
if (p >= 1) return +valueof(values[n - 1], n - 1, values); | |
var n, | |
i = (n - 1) * p, | |
i0 = Math.floor(i), | |
value0 = +valueof(values[i0], i0, values), | |
value1 = +valueof(values[i0 + 1], i0 + 1, values); | |
return value0 + (value1 - value0) * (i - i0); | |
}; | |
var freedmanDiaconis = function(values, min, max) { | |
values = map.call(values, number).sort(ascending); | |
return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3))); | |
}; | |
var scott = function(values, min, max) { | |
return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); | |
}; | |
var max = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
max; | |
if (valueof == null) { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = values[i]) != null && value >= value) { | |
max = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = values[i]) != null && value > max) { | |
max = value; | |
} | |
} | |
} | |
} | |
} | |
else { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = valueof(values[i], i, values)) != null && value >= value) { | |
max = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = valueof(values[i], i, values)) != null && value > max) { | |
max = value; | |
} | |
} | |
} | |
} | |
} | |
return max; | |
}; | |
var mean = function(values, valueof) { | |
var n = values.length, | |
m = n, | |
i = -1, | |
value, | |
sum = 0; | |
if (valueof == null) { | |
while (++i < n) { | |
if (!isNaN(value = number(values[i]))) sum += value; | |
else --m; | |
} | |
} | |
else { | |
while (++i < n) { | |
if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; | |
else --m; | |
} | |
} | |
if (m) return sum / m; | |
}; | |
var median = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
numbers = []; | |
if (valueof == null) { | |
while (++i < n) { | |
if (!isNaN(value = number(values[i]))) { | |
numbers.push(value); | |
} | |
} | |
} | |
else { | |
while (++i < n) { | |
if (!isNaN(value = number(valueof(values[i], i, values)))) { | |
numbers.push(value); | |
} | |
} | |
} | |
return quantile(numbers.sort(ascending), 0.5); | |
}; | |
var merge = function(arrays) { | |
var n = arrays.length, | |
m, | |
i = -1, | |
j = 0, | |
merged, | |
array; | |
while (++i < n) j += arrays[i].length; | |
merged = new Array(j); | |
while (--n >= 0) { | |
array = arrays[n]; | |
m = array.length; | |
while (--m >= 0) { | |
merged[--j] = array[m]; | |
} | |
} | |
return merged; | |
}; | |
var min = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
min; | |
if (valueof == null) { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = values[i]) != null && value >= value) { | |
min = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = values[i]) != null && min > value) { | |
min = value; | |
} | |
} | |
} | |
} | |
} | |
else { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = valueof(values[i], i, values)) != null && value >= value) { | |
min = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = valueof(values[i], i, values)) != null && min > value) { | |
min = value; | |
} | |
} | |
} | |
} | |
} | |
return min; | |
}; | |
var permute = function(array, indexes) { | |
var i = indexes.length, permutes = new Array(i); | |
while (i--) permutes[i] = array[indexes[i]]; | |
return permutes; | |
}; | |
var scan = function(values, compare) { | |
if (!(n = values.length)) return; | |
var n, | |
i = 0, | |
j = 0, | |
xi, | |
xj = values[j]; | |
if (compare == null) compare = ascending; | |
while (++i < n) { | |
if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { | |
xj = xi, j = i; | |
} | |
} | |
if (compare(xj, xj) === 0) return j; | |
}; | |
var shuffle = function(array, i0, i1) { | |
var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), | |
t, | |
i; | |
while (m) { | |
i = Math.random() * m-- | 0; | |
t = array[m + i0]; | |
array[m + i0] = array[i + i0]; | |
array[i + i0] = t; | |
} | |
return array; | |
}; | |
var sum = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
sum = 0; | |
if (valueof == null) { | |
while (++i < n) { | |
if (value = +values[i]) sum += value; // Note: zero and null are equivalent. | |
} | |
} | |
else { | |
while (++i < n) { | |
if (value = +valueof(values[i], i, values)) sum += value; | |
} | |
} | |
return sum; | |
}; | |
var transpose = function(matrix) { | |
if (!(n = matrix.length)) return []; | |
for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { | |
for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { | |
row[j] = matrix[j][i]; | |
} | |
} | |
return transpose; | |
}; | |
function length(d) { | |
return d.length; | |
} | |
var zip = function() { | |
return transpose(arguments); | |
}; | |
var slice$1 = Array.prototype.slice; | |
var identity$1 = function(x) { | |
return x; | |
}; | |
var top = 1; | |
var right = 2; | |
var bottom = 3; | |
var left = 4; | |
var epsilon = 1e-6; | |
function translateX(x) { | |
return "translate(" + (x + 0.5) + ",0)"; | |
} | |
function translateY(y) { | |
return "translate(0," + (y + 0.5) + ")"; | |
} | |
function number$1(scale) { | |
return function(d) { | |
return +scale(d); | |
}; | |
} | |
function center(scale) { | |
var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset. | |
if (scale.round()) offset = Math.round(offset); | |
return function(d) { | |
return +scale(d) + offset; | |
}; | |
} | |
function entering() { | |
return !this.__axis; | |
} | |
function axis(orient, scale) { | |
var tickArguments = [], | |
tickValues = null, | |
tickFormat = null, | |
tickSizeInner = 6, | |
tickSizeOuter = 6, | |
tickPadding = 3, | |
k = orient === top || orient === left ? -1 : 1, | |
x = orient === left || orient === right ? "x" : "y", | |
transform = orient === top || orient === bottom ? translateX : translateY; | |
function axis(context) { | |
var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, | |
format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$1) : tickFormat, | |
spacing = Math.max(tickSizeInner, 0) + tickPadding, | |
range = scale.range(), | |
range0 = +range[0] + 0.5, | |
range1 = +range[range.length - 1] + 0.5, | |
position = (scale.bandwidth ? center : number$1)(scale.copy()), | |
selection = context.selection ? context.selection() : context, | |
path = selection.selectAll(".domain").data([null]), | |
tick = selection.selectAll(".tick").data(values, scale).order(), | |
tickExit = tick.exit(), | |
tickEnter = tick.enter().append("g").attr("class", "tick"), | |
line = tick.select("line"), | |
text = tick.select("text"); | |
path = path.merge(path.enter().insert("path", ".tick") | |
.attr("class", "domain") | |
.attr("stroke", "#000")); | |
tick = tick.merge(tickEnter); | |
line = line.merge(tickEnter.append("line") | |
.attr("stroke", "#000") | |
.attr(x + "2", k * tickSizeInner)); | |
text = text.merge(tickEnter.append("text") | |
.attr("fill", "#000") | |
.attr(x, k * spacing) | |
.attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); | |
if (context !== selection) { | |
path = path.transition(context); | |
tick = tick.transition(context); | |
line = line.transition(context); | |
text = text.transition(context); | |
tickExit = tickExit.transition(context) | |
.attr("opacity", epsilon) | |
.attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); }); | |
tickEnter | |
.attr("opacity", epsilon) | |
.attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); }); | |
} | |
tickExit.remove(); | |
path | |
.attr("d", orient === left || orient == right | |
? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter | |
: "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter); | |
tick | |
.attr("opacity", 1) | |
.attr("transform", function(d) { return transform(position(d)); }); | |
line | |
.attr(x + "2", k * tickSizeInner); | |
text | |
.attr(x, k * spacing) | |
.text(format); | |
selection.filter(entering) | |
.attr("fill", "none") | |
.attr("font-size", 10) | |
.attr("font-family", "sans-serif") | |
.attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); | |
selection | |
.each(function() { this.__axis = position; }); | |
} | |
axis.scale = function(_) { | |
return arguments.length ? (scale = _, axis) : scale; | |
}; | |
axis.ticks = function() { | |
return tickArguments = slice$1.call(arguments), axis; | |
}; | |
axis.tickArguments = function(_) { | |
return arguments.length ? (tickArguments = _ == null ? [] : slice$1.call(_), axis) : tickArguments.slice(); | |
}; | |
axis.tickValues = function(_) { | |
return arguments.length ? (tickValues = _ == null ? null : slice$1.call(_), axis) : tickValues && tickValues.slice(); | |
}; | |
axis.tickFormat = function(_) { | |
return arguments.length ? (tickFormat = _, axis) : tickFormat; | |
}; | |
axis.tickSize = function(_) { | |
return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; | |
}; | |
axis.tickSizeInner = function(_) { | |
return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; | |
}; | |
axis.tickSizeOuter = function(_) { | |
return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; | |
}; | |
axis.tickPadding = function(_) { | |
return arguments.length ? (tickPadding = +_, axis) : tickPadding; | |
}; | |
return axis; | |
} | |
function axisTop(scale) { | |
return axis(top, scale); | |
} | |
function axisRight(scale) { | |
return axis(right, scale); | |
} | |
function axisBottom(scale) { | |
return axis(bottom, scale); | |
} | |
function axisLeft(scale) { | |
return axis(left, scale); | |
} | |
var noop = {value: function() {}}; | |
function dispatch() { | |
for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { | |
if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t); | |
_[t] = []; | |
} | |
return new Dispatch(_); | |
} | |
function Dispatch(_) { | |
this._ = _; | |
} | |
function parseTypenames(typenames, types) { | |
return typenames.trim().split(/^|\s+/).map(function(t) { | |
var name = "", i = t.indexOf("."); | |
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); | |
if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); | |
return {type: t, name: name}; | |
}); | |
} | |
Dispatch.prototype = dispatch.prototype = { | |
constructor: Dispatch, | |
on: function(typename, callback) { | |
var _ = this._, | |
T = parseTypenames(typename + "", _), | |
t, | |
i = -1, | |
n = T.length; | |
// If no callback was specified, return the callback of the given type and name. | |
if (arguments.length < 2) { | |
while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; | |
return; | |
} | |
// If a type was specified, set the callback for the given type and name. | |
// Otherwise, if a null callback was specified, remove callbacks of the given name. | |
if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); | |
while (++i < n) { | |
if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); | |
else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); | |
} | |
return this; | |
}, | |
copy: function() { | |
var copy = {}, _ = this._; | |
for (var t in _) copy[t] = _[t].slice(); | |
return new Dispatch(copy); | |
}, | |
call: function(type, that) { | |
if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; | |
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); | |
for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); | |
}, | |
apply: function(type, that, args) { | |
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); | |
for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); | |
} | |
}; | |
function get(type, name) { | |
for (var i = 0, n = type.length, c; i < n; ++i) { | |
if ((c = type[i]).name === name) { | |
return c.value; | |
} | |
} | |
} | |
function set(type, name, callback) { | |
for (var i = 0, n = type.length; i < n; ++i) { | |
if (type[i].name === name) { | |
type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); | |
break; | |
} | |
} | |
if (callback != null) type.push({name: name, value: callback}); | |
return type; | |
} | |
var xhtml = "http://www.w3.org/1999/xhtml"; | |
var namespaces = { | |
svg: "http://www.w3.org/2000/svg", | |
xhtml: xhtml, | |
xlink: "http://www.w3.org/1999/xlink", | |
xml: "http://www.w3.org/XML/1998/namespace", | |
xmlns: "http://www.w3.org/2000/xmlns/" | |
}; | |
var namespace = function(name) { | |
var prefix = name += "", i = prefix.indexOf(":"); | |
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); | |
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; | |
}; | |
function creatorInherit(name) { | |
return function() { | |
var document = this.ownerDocument, | |
uri = this.namespaceURI; | |
return uri === xhtml && document.documentElement.namespaceURI === xhtml | |
? document.createElement(name) | |
: document.createElementNS(uri, name); | |
}; | |
} | |
function creatorFixed(fullname) { | |
return function() { | |
return this.ownerDocument.createElementNS(fullname.space, fullname.local); | |
}; | |
} | |
var creator = function(name) { | |
var fullname = namespace(name); | |
return (fullname.local | |
? creatorFixed | |
: creatorInherit)(fullname); | |
}; | |
var nextId = 0; | |
function local$1() { | |
return new Local; | |
} | |
function Local() { | |
this._ = "@" + (++nextId).toString(36); | |
} | |
Local.prototype = local$1.prototype = { | |
constructor: Local, | |
get: function(node) { | |
var id = this._; | |
while (!(id in node)) if (!(node = node.parentNode)) return; | |
return node[id]; | |
}, | |
set: function(node, value) { | |
return node[this._] = value; | |
}, | |
remove: function(node) { | |
return this._ in node && delete node[this._]; | |
}, | |
toString: function() { | |
return this._; | |
} | |
}; | |
var matcher = function(selector) { | |
return function() { | |
return this.matches(selector); | |
}; | |
}; | |
if (typeof document !== "undefined") { | |
var element = document.documentElement; | |
if (!element.matches) { | |
var vendorMatches = element.webkitMatchesSelector | |
|| element.msMatchesSelector | |
|| element.mozMatchesSelector | |
|| element.oMatchesSelector; | |
matcher = function(selector) { | |
return function() { | |
return vendorMatches.call(this, selector); | |
}; | |
}; | |
} | |
} | |
var matcher$1 = matcher; | |
var filterEvents = {}; | |
exports.event = null; | |
if (typeof document !== "undefined") { | |
var element$1 = document.documentElement; | |
if (!("onmouseenter" in element$1)) { | |
filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; | |
} | |
} | |
function filterContextListener(listener, index, group) { | |
listener = contextListener(listener, index, group); | |
return function(event) { | |
var related = event.relatedTarget; | |
if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { | |
listener.call(this, event); | |
} | |
}; | |
} | |
function contextListener(listener, index, group) { | |
return function(event1) { | |
var event0 = exports.event; // Events can be reentrant (e.g., focus). | |
exports.event = event1; | |
try { | |
listener.call(this, this.__data__, index, group); | |
} finally { | |
exports.event = event0; | |
} | |
}; | |
} | |
function parseTypenames$1(typenames) { | |
return typenames.trim().split(/^|\s+/).map(function(t) { | |
var name = "", i = t.indexOf("."); | |
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); | |
return {type: t, name: name}; | |
}); | |
} | |
function onRemove(typename) { | |
return function() { | |
var on = this.__on; | |
if (!on) return; | |
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { | |
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { | |
this.removeEventListener(o.type, o.listener, o.capture); | |
} else { | |
on[++i] = o; | |
} | |
} | |
if (++i) on.length = i; | |
else delete this.__on; | |
}; | |
} | |
function onAdd(typename, value, capture) { | |
var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; | |
return function(d, i, group) { | |
var on = this.__on, o, listener = wrap(value, i, group); | |
if (on) for (var j = 0, m = on.length; j < m; ++j) { | |
if ((o = on[j]).type === typename.type && o.name === typename.name) { | |
this.removeEventListener(o.type, o.listener, o.capture); | |
this.addEventListener(o.type, o.listener = listener, o.capture = capture); | |
o.value = value; | |
return; | |
} | |
} | |
this.addEventListener(typename.type, listener, capture); | |
o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; | |
if (!on) this.__on = [o]; | |
else on.push(o); | |
}; | |
} | |
var selection_on = function(typename, value, capture) { | |
var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; | |
if (arguments.length < 2) { | |
var on = this.node().__on; | |
if (on) for (var j = 0, m = on.length, o; j < m; ++j) { | |
for (i = 0, o = on[j]; i < n; ++i) { | |
if ((t = typenames[i]).type === o.type && t.name === o.name) { | |
return o.value; | |
} | |
} | |
} | |
return; | |
} | |
on = value ? onAdd : onRemove; | |
if (capture == null) capture = false; | |
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); | |
return this; | |
}; | |
function customEvent(event1, listener, that, args) { | |
var event0 = exports.event; | |
event1.sourceEvent = exports.event; | |
exports.event = event1; | |
try { | |
return listener.apply(that, args); | |
} finally { | |
exports.event = event0; | |
} | |
} | |
var sourceEvent = function() { | |
var current = exports.event, source; | |
while (source = current.sourceEvent) current = source; | |
return current; | |
}; | |
var point = function(node, event) { | |
var svg = node.ownerSVGElement || node; | |
if (svg.createSVGPoint) { | |
var point = svg.createSVGPoint(); | |
point.x = event.clientX, point.y = event.clientY; | |
point = point.matrixTransform(node.getScreenCTM().inverse()); | |
return [point.x, point.y]; | |
} | |
var rect = node.getBoundingClientRect(); | |
return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; | |
}; | |
var mouse = function(node) { | |
var event = sourceEvent(); | |
if (event.changedTouches) event = event.changedTouches[0]; | |
return point(node, event); | |
}; | |
function none() {} | |
var selector = function(selector) { | |
return selector == null ? none : function() { | |
return this.querySelector(selector); | |
}; | |
}; | |
var selection_select = function(select) { | |
if (typeof select !== "function") select = selector(select); | |
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { | |
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { | |
if ("__data__" in node) subnode.__data__ = node.__data__; | |
subgroup[i] = subnode; | |
} | |
} | |
} | |
return new Selection(subgroups, this._parents); | |
}; | |
function empty$1() { | |
return []; | |
} | |
var selectorAll = function(selector) { | |
return selector == null ? empty$1 : function() { | |
return this.querySelectorAll(selector); | |
}; | |
}; | |
var selection_selectAll = function(select) { | |
if (typeof select !== "function") select = selectorAll(select); | |
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { | |
if (node = group[i]) { | |
subgroups.push(select.call(node, node.__data__, i, group)); | |
parents.push(node); | |
} | |
} | |
} | |
return new Selection(subgroups, parents); | |
}; | |
var selection_filter = function(match) { | |
if (typeof match !== "function") match = matcher$1(match); | |
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { | |
if ((node = group[i]) && match.call(node, node.__data__, i, group)) { | |
subgroup.push(node); | |
} | |
} | |
} | |
return new Selection(subgroups, this._parents); | |
}; | |
var sparse = function(update) { | |
return new Array(update.length); | |
}; | |
var selection_enter = function() { | |
return new Selection(this._enter || this._groups.map(sparse), this._parents); | |
}; | |
function EnterNode(parent, datum) { | |
this.ownerDocument = parent.ownerDocument; | |
this.namespaceURI = parent.namespaceURI; | |
this._next = null; | |
this._parent = parent; | |
this.__data__ = datum; | |
} | |
EnterNode.prototype = { | |
constructor: EnterNode, | |
appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, | |
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, | |
querySelector: function(selector) { return this._parent.querySelector(selector); }, | |
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } | |
}; | |
var constant$1 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var keyPrefix = "$"; // Protect against keys like “__proto__”. | |
function bindIndex(parent, group, enter, update, exit, data) { | |
var i = 0, | |
node, | |
groupLength = group.length, | |
dataLength = data.length; | |
// Put any non-null nodes that fit into update. | |
// Put any null nodes into enter. | |
// Put any remaining data into enter. | |
for (; i < dataLength; ++i) { | |
if (node = group[i]) { | |
node.__data__ = data[i]; | |
update[i] = node; | |
} else { | |
enter[i] = new EnterNode(parent, data[i]); | |
} | |
} | |
// Put any non-null nodes that don’t fit into exit. | |
for (; i < groupLength; ++i) { | |
if (node = group[i]) { | |
exit[i] = node; | |
} | |
} | |
} | |
function bindKey(parent, group, enter, update, exit, data, key) { | |
var i, | |
node, | |
nodeByKeyValue = {}, | |
groupLength = group.length, | |
dataLength = data.length, | |
keyValues = new Array(groupLength), | |
keyValue; | |
// Compute the key for each node. | |
// If multiple nodes have the same key, the duplicates are added to exit. | |
for (i = 0; i < groupLength; ++i) { | |
if (node = group[i]) { | |
keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); | |
if (keyValue in nodeByKeyValue) { | |
exit[i] = node; | |
} else { | |
nodeByKeyValue[keyValue] = node; | |
} | |
} | |
} | |
// Compute the key for each datum. | |
// If there a node associated with this key, join and add it to update. | |
// If there is not (or the key is a duplicate), add it to enter. | |
for (i = 0; i < dataLength; ++i) { | |
keyValue = keyPrefix + key.call(parent, data[i], i, data); | |
if (node = nodeByKeyValue[keyValue]) { | |
update[i] = node; | |
node.__data__ = data[i]; | |
nodeByKeyValue[keyValue] = null; | |
} else { | |
enter[i] = new EnterNode(parent, data[i]); | |
} | |
} | |
// Add any remaining nodes that were not bound to data to exit. | |
for (i = 0; i < groupLength; ++i) { | |
if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { | |
exit[i] = node; | |
} | |
} | |
} | |
var selection_data = function(value, key) { | |
if (!value) { | |
data = new Array(this.size()), j = -1; | |
this.each(function(d) { data[++j] = d; }); | |
return data; | |
} | |
var bind = key ? bindKey : bindIndex, | |
parents = this._parents, | |
groups = this._groups; | |
if (typeof value !== "function") value = constant$1(value); | |
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { | |
var parent = parents[j], | |
group = groups[j], | |
groupLength = group.length, | |
data = value.call(parent, parent && parent.__data__, j, parents), | |
dataLength = data.length, | |
enterGroup = enter[j] = new Array(dataLength), | |
updateGroup = update[j] = new Array(dataLength), | |
exitGroup = exit[j] = new Array(groupLength); | |
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); | |
// Now connect the enter nodes to their following update node, such that | |
// appendChild can insert the materialized enter node before this node, | |
// rather than at the end of the parent node. | |
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { | |
if (previous = enterGroup[i0]) { | |
if (i0 >= i1) i1 = i0 + 1; | |
while (!(next = updateGroup[i1]) && ++i1 < dataLength); | |
previous._next = next || null; | |
} | |
} | |
} | |
update = new Selection(update, parents); | |
update._enter = enter; | |
update._exit = exit; | |
return update; | |
}; | |
var selection_exit = function() { | |
return new Selection(this._exit || this._groups.map(sparse), this._parents); | |
}; | |
var selection_merge = function(selection) { | |
for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { | |
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { | |
if (node = group0[i] || group1[i]) { | |
merge[i] = node; | |
} | |
} | |
} | |
for (; j < m0; ++j) { | |
merges[j] = groups0[j]; | |
} | |
return new Selection(merges, this._parents); | |
}; | |
var selection_order = function() { | |
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { | |
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { | |
if (node = group[i]) { | |
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next); | |
next = node; | |
} | |
} | |
} | |
return this; | |
}; | |
var selection_sort = function(compare) { | |
if (!compare) compare = ascending$1; | |
function compareNode(a, b) { | |
return a && b ? compare(a.__data__, b.__data__) : !a - !b; | |
} | |
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { | |
if (node = group[i]) { | |
sortgroup[i] = node; | |
} | |
} | |
sortgroup.sort(compareNode); | |
} | |
return new Selection(sortgroups, this._parents).order(); | |
}; | |
function ascending$1(a, b) { | |
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; | |
} | |
var selection_call = function() { | |
var callback = arguments[0]; | |
arguments[0] = this; | |
callback.apply(null, arguments); | |
return this; | |
}; | |
var selection_nodes = function() { | |
var nodes = new Array(this.size()), i = -1; | |
this.each(function() { nodes[++i] = this; }); | |
return nodes; | |
}; | |
var selection_node = function() { | |
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { | |
for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { | |
var node = group[i]; | |
if (node) return node; | |
} | |
} | |
return null; | |
}; | |
var selection_size = function() { | |
var size = 0; | |
this.each(function() { ++size; }); | |
return size; | |
}; | |
var selection_empty = function() { | |
return !this.node(); | |
}; | |
var selection_each = function(callback) { | |
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { | |
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { | |
if (node = group[i]) callback.call(node, node.__data__, i, group); | |
} | |
} | |
return this; | |
}; | |
function attrRemove(name) { | |
return function() { | |
this.removeAttribute(name); | |
}; | |
} | |
function attrRemoveNS(fullname) { | |
return function() { | |
this.removeAttributeNS(fullname.space, fullname.local); | |
}; | |
} | |
function attrConstant(name, value) { | |
return function() { | |
this.setAttribute(name, value); | |
}; | |
} | |
function attrConstantNS(fullname, value) { | |
return function() { | |
this.setAttributeNS(fullname.space, fullname.local, value); | |
}; | |
} | |
function attrFunction(name, value) { | |
return function() { | |
var v = value.apply(this, arguments); | |
if (v == null) this.removeAttribute(name); | |
else this.setAttribute(name, v); | |
}; | |
} | |
function attrFunctionNS(fullname, value) { | |
return function() { | |
var v = value.apply(this, arguments); | |
if (v == null) this.removeAttributeNS(fullname.space, fullname.local); | |
else this.setAttributeNS(fullname.space, fullname.local, v); | |
}; | |
} | |
var selection_attr = function(name, value) { | |
var fullname = namespace(name); | |
if (arguments.length < 2) { | |
var node = this.node(); | |
return fullname.local | |
? node.getAttributeNS(fullname.space, fullname.local) | |
: node.getAttribute(fullname); | |
} | |
return this.each((value == null | |
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" | |
? (fullname.local ? attrFunctionNS : attrFunction) | |
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); | |
}; | |
var defaultView = function(node) { | |
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node | |
|| (node.document && node) // node is a Window | |
|| node.defaultView; // node is a Document | |
}; | |
function styleRemove(name) { | |
return function() { | |
this.style.removeProperty(name); | |
}; | |
} | |
function styleConstant(name, value, priority) { | |
return function() { | |
this.style.setProperty(name, value, priority); | |
}; | |
} | |
function styleFunction(name, value, priority) { | |
return function() { | |
var v = value.apply(this, arguments); | |
if (v == null) this.style.removeProperty(name); | |
else this.style.setProperty(name, v, priority); | |
}; | |
} | |
var selection_style = function(name, value, priority) { | |
return arguments.length > 1 | |
? this.each((value == null | |
? styleRemove : typeof value === "function" | |
? styleFunction | |
: styleConstant)(name, value, priority == null ? "" : priority)) | |
: styleValue(this.node(), name); | |
}; | |
function styleValue(node, name) { | |
return node.style.getPropertyValue(name) | |
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name); | |
} | |
function propertyRemove(name) { | |
return function() { | |
delete this[name]; | |
}; | |
} | |
function propertyConstant(name, value) { | |
return function() { | |
this[name] = value; | |
}; | |
} | |
function propertyFunction(name, value) { | |
return function() { | |
var v = value.apply(this, arguments); | |
if (v == null) delete this[name]; | |
else this[name] = v; | |
}; | |
} | |
var selection_property = function(name, value) { | |
return arguments.length > 1 | |
? this.each((value == null | |
? propertyRemove : typeof value === "function" | |
? propertyFunction | |
: propertyConstant)(name, value)) | |
: this.node()[name]; | |
}; | |
function classArray(string) { | |
return string.trim().split(/^|\s+/); | |
} | |
function classList(node) { | |
return node.classList || new ClassList(node); | |
} | |
function ClassList(node) { | |
this._node = node; | |
this._names = classArray(node.getAttribute("class") || ""); | |
} | |
ClassList.prototype = { | |
add: function(name) { | |
var i = this._names.indexOf(name); | |
if (i < 0) { | |
this._names.push(name); | |
this._node.setAttribute("class", this._names.join(" ")); | |
} | |
}, | |
remove: function(name) { | |
var i = this._names.indexOf(name); | |
if (i >= 0) { | |
this._names.splice(i, 1); | |
this._node.setAttribute("class", this._names.join(" ")); | |
} | |
}, | |
contains: function(name) { | |
return this._names.indexOf(name) >= 0; | |
} | |
}; | |
function classedAdd(node, names) { | |
var list = classList(node), i = -1, n = names.length; | |
while (++i < n) list.add(names[i]); | |
} | |
function classedRemove(node, names) { | |
var list = classList(node), i = -1, n = names.length; | |
while (++i < n) list.remove(names[i]); | |
} | |
function classedTrue(names) { | |
return function() { | |
classedAdd(this, names); | |
}; | |
} | |
function classedFalse(names) { | |
return function() { | |
classedRemove(this, names); | |
}; | |
} | |
function classedFunction(names, value) { | |
return function() { | |
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); | |
}; | |
} | |
var selection_classed = function(name, value) { | |
var names = classArray(name + ""); | |
if (arguments.length < 2) { | |
var list = classList(this.node()), i = -1, n = names.length; | |
while (++i < n) if (!list.contains(names[i])) return false; | |
return true; | |
} | |
return this.each((typeof value === "function" | |
? classedFunction : value | |
? classedTrue | |
: classedFalse)(names, value)); | |
}; | |
function textRemove() { | |
this.textContent = ""; | |
} | |
function textConstant(value) { | |
return function() { | |
this.textContent = value; | |
}; | |
} | |
function textFunction(value) { | |
return function() { | |
var v = value.apply(this, arguments); | |
this.textContent = v == null ? "" : v; | |
}; | |
} | |
var selection_text = function(value) { | |
return arguments.length | |
? this.each(value == null | |
? textRemove : (typeof value === "function" | |
? textFunction | |
: textConstant)(value)) | |
: this.node().textContent; | |
}; | |
function htmlRemove() { | |
this.innerHTML = ""; | |
} | |
function htmlConstant(value) { | |
return function() { | |
this.innerHTML = value; | |
}; | |
} | |
function htmlFunction(value) { | |
return function() { | |
var v = value.apply(this, arguments); | |
this.innerHTML = v == null ? "" : v; | |
}; | |
} | |
var selection_html = function(value) { | |
return arguments.length | |
? this.each(value == null | |
? htmlRemove : (typeof value === "function" | |
? htmlFunction | |
: htmlConstant)(value)) | |
: this.node().innerHTML; | |
}; | |
function raise() { | |
if (this.nextSibling) this.parentNode.appendChild(this); | |
} | |
var selection_raise = function() { | |
return this.each(raise); | |
}; | |
function lower() { | |
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); | |
} | |
var selection_lower = function() { | |
return this.each(lower); | |
}; | |
var selection_append = function(name) { | |
var create = typeof name === "function" ? name : creator(name); | |
return this.select(function() { | |
return this.appendChild(create.apply(this, arguments)); | |
}); | |
}; | |
function constantNull() { | |
return null; | |
} | |
var selection_insert = function(name, before) { | |
var create = typeof name === "function" ? name : creator(name), | |
select = before == null ? constantNull : typeof before === "function" ? before : selector(before); | |
return this.select(function() { | |
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); | |
}); | |
}; | |
function remove() { | |
var parent = this.parentNode; | |
if (parent) parent.removeChild(this); | |
} | |
var selection_remove = function() { | |
return this.each(remove); | |
}; | |
var selection_datum = function(value) { | |
return arguments.length | |
? this.property("__data__", value) | |
: this.node().__data__; | |
}; | |
function dispatchEvent(node, type, params) { | |
var window = defaultView(node), | |
event = window.CustomEvent; | |
if (typeof event === "function") { | |
event = new event(type, params); | |
} else { | |
event = window.document.createEvent("Event"); | |
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; | |
else event.initEvent(type, false, false); | |
} | |
node.dispatchEvent(event); | |
} | |
function dispatchConstant(type, params) { | |
return function() { | |
return dispatchEvent(this, type, params); | |
}; | |
} | |
function dispatchFunction(type, params) { | |
return function() { | |
return dispatchEvent(this, type, params.apply(this, arguments)); | |
}; | |
} | |
var selection_dispatch = function(type, params) { | |
return this.each((typeof params === "function" | |
? dispatchFunction | |
: dispatchConstant)(type, params)); | |
}; | |
var root = [null]; | |
function Selection(groups, parents) { | |
this._groups = groups; | |
this._parents = parents; | |
} | |
function selection() { | |
return new Selection([[document.documentElement]], root); | |
} | |
Selection.prototype = selection.prototype = { | |
constructor: Selection, | |
select: selection_select, | |
selectAll: selection_selectAll, | |
filter: selection_filter, | |
data: selection_data, | |
enter: selection_enter, | |
exit: selection_exit, | |
merge: selection_merge, | |
order: selection_order, | |
sort: selection_sort, | |
call: selection_call, | |
nodes: selection_nodes, | |
node: selection_node, | |
size: selection_size, | |
empty: selection_empty, | |
each: selection_each, | |
attr: selection_attr, | |
style: selection_style, | |
property: selection_property, | |
classed: selection_classed, | |
text: selection_text, | |
html: selection_html, | |
raise: selection_raise, | |
lower: selection_lower, | |
append: selection_append, | |
insert: selection_insert, | |
remove: selection_remove, | |
datum: selection_datum, | |
on: selection_on, | |
dispatch: selection_dispatch | |
}; | |
var select = function(selector) { | |
return typeof selector === "string" | |
? new Selection([[document.querySelector(selector)]], [document.documentElement]) | |
: new Selection([[selector]], root); | |
}; | |
var selectAll = function(selector) { | |
return typeof selector === "string" | |
? new Selection([document.querySelectorAll(selector)], [document.documentElement]) | |
: new Selection([selector == null ? [] : selector], root); | |
}; | |
var touch = function(node, touches, identifier) { | |
if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; | |
for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { | |
if ((touch = touches[i]).identifier === identifier) { | |
return point(node, touch); | |
} | |
} | |
return null; | |
}; | |
var touches = function(node, touches) { | |
if (touches == null) touches = sourceEvent().touches; | |
for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) { | |
points[i] = point(node, touches[i]); | |
} | |
return points; | |
}; | |
function nopropagation() { | |
exports.event.stopImmediatePropagation(); | |
} | |
var noevent = function() { | |
exports.event.preventDefault(); | |
exports.event.stopImmediatePropagation(); | |
}; | |
var dragDisable = function(view) { | |
var root = view.document.documentElement, | |
selection$$1 = select(view).on("dragstart.drag", noevent, true); | |
if ("onselectstart" in root) { | |
selection$$1.on("selectstart.drag", noevent, true); | |
} else { | |
root.__noselect = root.style.MozUserSelect; | |
root.style.MozUserSelect = "none"; | |
} | |
}; | |
function yesdrag(view, noclick) { | |
var root = view.document.documentElement, | |
selection$$1 = select(view).on("dragstart.drag", null); | |
if (noclick) { | |
selection$$1.on("click.drag", noevent, true); | |
setTimeout(function() { selection$$1.on("click.drag", null); }, 0); | |
} | |
if ("onselectstart" in root) { | |
selection$$1.on("selectstart.drag", null); | |
} else { | |
root.style.MozUserSelect = root.__noselect; | |
delete root.__noselect; | |
} | |
} | |
var constant$2 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { | |
this.target = target; | |
this.type = type; | |
this.subject = subject; | |
this.identifier = id; | |
this.active = active; | |
this.x = x; | |
this.y = y; | |
this.dx = dx; | |
this.dy = dy; | |
this._ = dispatch; | |
} | |
DragEvent.prototype.on = function() { | |
var value = this._.on.apply(this._, arguments); | |
return value === this._ ? this : value; | |
}; | |
// Ignore right-click, since that should open the context menu. | |
function defaultFilter$1() { | |
return !exports.event.button; | |
} | |
function defaultContainer() { | |
return this.parentNode; | |
} | |
function defaultSubject(d) { | |
return d == null ? {x: exports.event.x, y: exports.event.y} : d; | |
} | |
function touchable() { | |
return "ontouchstart" in this; | |
} | |
var drag = function() { | |
var filter = defaultFilter$1, | |
container = defaultContainer, | |
subject = defaultSubject, | |
gestures = {}, | |
listeners = dispatch("start", "drag", "end"), | |
active = 0, | |
mousedownx, | |
mousedowny, | |
mousemoving, | |
touchending, | |
clickDistance2 = 0; | |
function drag(selection$$1) { | |
selection$$1 | |
.on("mousedown.drag", mousedowned) | |
.filter(touchable) | |
.on("touchstart.drag", touchstarted) | |
.on("touchmove.drag", touchmoved) | |
.on("touchend.drag touchcancel.drag", touchended) | |
.style("touch-action", "none") | |
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); | |
} | |
function mousedowned() { | |
if (touchending || !filter.apply(this, arguments)) return; | |
var gesture = beforestart("mouse", container.apply(this, arguments), mouse, this, arguments); | |
if (!gesture) return; | |
select(exports.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); | |
dragDisable(exports.event.view); | |
nopropagation(); | |
mousemoving = false; | |
mousedownx = exports.event.clientX; | |
mousedowny = exports.event.clientY; | |
gesture("start"); | |
} | |
function mousemoved() { | |
noevent(); | |
if (!mousemoving) { | |
var dx = exports.event.clientX - mousedownx, dy = exports.event.clientY - mousedowny; | |
mousemoving = dx * dx + dy * dy > clickDistance2; | |
} | |
gestures.mouse("drag"); | |
} | |
function mouseupped() { | |
select(exports.event.view).on("mousemove.drag mouseup.drag", null); | |
yesdrag(exports.event.view, mousemoving); | |
noevent(); | |
gestures.mouse("end"); | |
} | |
function touchstarted() { | |
if (!filter.apply(this, arguments)) return; | |
var touches$$1 = exports.event.changedTouches, | |
c = container.apply(this, arguments), | |
n = touches$$1.length, i, gesture; | |
for (i = 0; i < n; ++i) { | |
if (gesture = beforestart(touches$$1[i].identifier, c, touch, this, arguments)) { | |
nopropagation(); | |
gesture("start"); | |
} | |
} | |
} | |
function touchmoved() { | |
var touches$$1 = exports.event.changedTouches, | |
n = touches$$1.length, i, gesture; | |
for (i = 0; i < n; ++i) { | |
if (gesture = gestures[touches$$1[i].identifier]) { | |
noevent(); | |
gesture("drag"); | |
} | |
} | |
} | |
function touchended() { | |
var touches$$1 = exports.event.changedTouches, | |
n = touches$$1.length, i, gesture; | |
if (touchending) clearTimeout(touchending); | |
touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! | |
for (i = 0; i < n; ++i) { | |
if (gesture = gestures[touches$$1[i].identifier]) { | |
nopropagation(); | |
gesture("end"); | |
} | |
} | |
} | |
function beforestart(id, container, point, that, args) { | |
var p = point(container, id), s, dx, dy, | |
sublisteners = listeners.copy(); | |
if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { | |
if ((exports.event.subject = s = subject.apply(that, args)) == null) return false; | |
dx = s.x - p[0] || 0; | |
dy = s.y - p[1] || 0; | |
return true; | |
})) return; | |
return function gesture(type) { | |
var p0 = p, n; | |
switch (type) { | |
case "start": gestures[id] = gesture, n = active++; break; | |
case "end": delete gestures[id], --active; // nobreak | |
case "drag": p = point(container, id), n = active; break; | |
} | |
customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); | |
}; | |
} | |
drag.filter = function(_) { | |
return arguments.length ? (filter = typeof _ === "function" ? _ : constant$2(!!_), drag) : filter; | |
}; | |
drag.container = function(_) { | |
return arguments.length ? (container = typeof _ === "function" ? _ : constant$2(_), drag) : container; | |
}; | |
drag.subject = function(_) { | |
return arguments.length ? (subject = typeof _ === "function" ? _ : constant$2(_), drag) : subject; | |
}; | |
drag.on = function() { | |
var value = listeners.on.apply(listeners, arguments); | |
return value === listeners ? drag : value; | |
}; | |
drag.clickDistance = function(_) { | |
return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); | |
}; | |
return drag; | |
}; | |
var define = function(constructor, factory, prototype) { | |
constructor.prototype = factory.prototype = prototype; | |
prototype.constructor = constructor; | |
}; | |
function extend(parent, definition) { | |
var prototype = Object.create(parent.prototype); | |
for (var key in definition) prototype[key] = definition[key]; | |
return prototype; | |
} | |
function Color() {} | |
var darker = 0.7; | |
var brighter = 1 / darker; | |
var reI = "\\s*([+-]?\\d+)\\s*"; | |
var reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*"; | |
var reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*"; | |
var reHex3 = /^#([0-9a-f]{3})$/; | |
var reHex6 = /^#([0-9a-f]{6})$/; | |
var reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"); | |
var reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"); | |
var reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"); | |
var reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"); | |
var reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"); | |
var reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); | |
var named = { | |
aliceblue: 0xf0f8ff, | |
antiquewhite: 0xfaebd7, | |
aqua: 0x00ffff, | |
aquamarine: 0x7fffd4, | |
azure: 0xf0ffff, | |
beige: 0xf5f5dc, | |
bisque: 0xffe4c4, | |
black: 0x000000, | |
blanchedalmond: 0xffebcd, | |
blue: 0x0000ff, | |
blueviolet: 0x8a2be2, | |
brown: 0xa52a2a, | |
burlywood: 0xdeb887, | |
cadetblue: 0x5f9ea0, | |
chartreuse: 0x7fff00, | |
chocolate: 0xd2691e, | |
coral: 0xff7f50, | |
cornflowerblue: 0x6495ed, | |
cornsilk: 0xfff8dc, | |
crimson: 0xdc143c, | |
cyan: 0x00ffff, | |
darkblue: 0x00008b, | |
darkcyan: 0x008b8b, | |
darkgoldenrod: 0xb8860b, | |
darkgray: 0xa9a9a9, | |
darkgreen: 0x006400, | |
darkgrey: 0xa9a9a9, | |
darkkhaki: 0xbdb76b, | |
darkmagenta: 0x8b008b, | |
darkolivegreen: 0x556b2f, | |
darkorange: 0xff8c00, | |
darkorchid: 0x9932cc, | |
darkred: 0x8b0000, | |
darksalmon: 0xe9967a, | |
darkseagreen: 0x8fbc8f, | |
darkslateblue: 0x483d8b, | |
darkslategray: 0x2f4f4f, | |
darkslategrey: 0x2f4f4f, | |
darkturquoise: 0x00ced1, | |
darkviolet: 0x9400d3, | |
deeppink: 0xff1493, | |
deepskyblue: 0x00bfff, | |
dimgray: 0x696969, | |
dimgrey: 0x696969, | |
dodgerblue: 0x1e90ff, | |
firebrick: 0xb22222, | |
floralwhite: 0xfffaf0, | |
forestgreen: 0x228b22, | |
fuchsia: 0xff00ff, | |
gainsboro: 0xdcdcdc, | |
ghostwhite: 0xf8f8ff, | |
gold: 0xffd700, | |
goldenrod: 0xdaa520, | |
gray: 0x808080, | |
green: 0x008000, | |
greenyellow: 0xadff2f, | |
grey: 0x808080, | |
honeydew: 0xf0fff0, | |
hotpink: 0xff69b4, | |
indianred: 0xcd5c5c, | |
indigo: 0x4b0082, | |
ivory: 0xfffff0, | |
khaki: 0xf0e68c, | |
lavender: 0xe6e6fa, | |
lavenderblush: 0xfff0f5, | |
lawngreen: 0x7cfc00, | |
lemonchiffon: 0xfffacd, | |
lightblue: 0xadd8e6, | |
lightcoral: 0xf08080, | |
lightcyan: 0xe0ffff, | |
lightgoldenrodyellow: 0xfafad2, | |
lightgray: 0xd3d3d3, | |
lightgreen: 0x90ee90, | |
lightgrey: 0xd3d3d3, | |
lightpink: 0xffb6c1, | |
lightsalmon: 0xffa07a, | |
lightseagreen: 0x20b2aa, | |
lightskyblue: 0x87cefa, | |
lightslategray: 0x778899, | |
lightslategrey: 0x778899, | |
lightsteelblue: 0xb0c4de, | |
lightyellow: 0xffffe0, | |
lime: 0x00ff00, | |
limegreen: 0x32cd32, | |
linen: 0xfaf0e6, | |
magenta: 0xff00ff, | |
maroon: 0x800000, | |
mediumaquamarine: 0x66cdaa, | |
mediumblue: 0x0000cd, | |
mediumorchid: 0xba55d3, | |
mediumpurple: 0x9370db, | |
mediumseagreen: 0x3cb371, | |
mediumslateblue: 0x7b68ee, | |
mediumspringgreen: 0x00fa9a, | |
mediumturquoise: 0x48d1cc, | |
mediumvioletred: 0xc71585, | |
midnightblue: 0x191970, | |
mintcream: 0xf5fffa, | |
mistyrose: 0xffe4e1, | |
moccasin: 0xffe4b5, | |
navajowhite: 0xffdead, | |
navy: 0x000080, | |
oldlace: 0xfdf5e6, | |
olive: 0x808000, | |
olivedrab: 0x6b8e23, | |
orange: 0xffa500, | |
orangered: 0xff4500, | |
orchid: 0xda70d6, | |
palegoldenrod: 0xeee8aa, | |
palegreen: 0x98fb98, | |
paleturquoise: 0xafeeee, | |
palevioletred: 0xdb7093, | |
papayawhip: 0xffefd5, | |
peachpuff: 0xffdab9, | |
peru: 0xcd853f, | |
pink: 0xffc0cb, | |
plum: 0xdda0dd, | |
powderblue: 0xb0e0e6, | |
purple: 0x800080, | |
rebeccapurple: 0x663399, | |
red: 0xff0000, | |
rosybrown: 0xbc8f8f, | |
royalblue: 0x4169e1, | |
saddlebrown: 0x8b4513, | |
salmon: 0xfa8072, | |
sandybrown: 0xf4a460, | |
seagreen: 0x2e8b57, | |
seashell: 0xfff5ee, | |
sienna: 0xa0522d, | |
silver: 0xc0c0c0, | |
skyblue: 0x87ceeb, | |
slateblue: 0x6a5acd, | |
slategray: 0x708090, | |
slategrey: 0x708090, | |
snow: 0xfffafa, | |
springgreen: 0x00ff7f, | |
steelblue: 0x4682b4, | |
tan: 0xd2b48c, | |
teal: 0x008080, | |
thistle: 0xd8bfd8, | |
tomato: 0xff6347, | |
turquoise: 0x40e0d0, | |
violet: 0xee82ee, | |
wheat: 0xf5deb3, | |
white: 0xffffff, | |
whitesmoke: 0xf5f5f5, | |
yellow: 0xffff00, | |
yellowgreen: 0x9acd32 | |
}; | |
define(Color, color, { | |
displayable: function() { | |
return this.rgb().displayable(); | |
}, | |
toString: function() { | |
return this.rgb() + ""; | |
} | |
}); | |
function color(format) { | |
var m; | |
format = (format + "").trim().toLowerCase(); | |
return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00 | |
: (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000 | |
: (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) | |
: (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) | |
: (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) | |
: (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) | |
: (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) | |
: (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) | |
: named.hasOwnProperty(format) ? rgbn(named[format]) | |
: format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) | |
: null; | |
} | |
function rgbn(n) { | |
return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); | |
} | |
function rgba(r, g, b, a) { | |
if (a <= 0) r = g = b = NaN; | |
return new Rgb(r, g, b, a); | |
} | |
function rgbConvert(o) { | |
if (!(o instanceof Color)) o = color(o); | |
if (!o) return new Rgb; | |
o = o.rgb(); | |
return new Rgb(o.r, o.g, o.b, o.opacity); | |
} | |
function rgb(r, g, b, opacity) { | |
return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); | |
} | |
function Rgb(r, g, b, opacity) { | |
this.r = +r; | |
this.g = +g; | |
this.b = +b; | |
this.opacity = +opacity; | |
} | |
define(Rgb, rgb, extend(Color, { | |
brighter: function(k) { | |
k = k == null ? brighter : Math.pow(brighter, k); | |
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); | |
}, | |
darker: function(k) { | |
k = k == null ? darker : Math.pow(darker, k); | |
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); | |
}, | |
rgb: function() { | |
return this; | |
}, | |
displayable: function() { | |
return (0 <= this.r && this.r <= 255) | |
&& (0 <= this.g && this.g <= 255) | |
&& (0 <= this.b && this.b <= 255) | |
&& (0 <= this.opacity && this.opacity <= 1); | |
}, | |
toString: function() { | |
var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); | |
return (a === 1 ? "rgb(" : "rgba(") | |
+ Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " | |
+ Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " | |
+ Math.max(0, Math.min(255, Math.round(this.b) || 0)) | |
+ (a === 1 ? ")" : ", " + a + ")"); | |
} | |
})); | |
function hsla(h, s, l, a) { | |
if (a <= 0) h = s = l = NaN; | |
else if (l <= 0 || l >= 1) h = s = NaN; | |
else if (s <= 0) h = NaN; | |
return new Hsl(h, s, l, a); | |
} | |
function hslConvert(o) { | |
if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); | |
if (!(o instanceof Color)) o = color(o); | |
if (!o) return new Hsl; | |
if (o instanceof Hsl) return o; | |
o = o.rgb(); | |
var r = o.r / 255, | |
g = o.g / 255, | |
b = o.b / 255, | |
min = Math.min(r, g, b), | |
max = Math.max(r, g, b), | |
h = NaN, | |
s = max - min, | |
l = (max + min) / 2; | |
if (s) { | |
if (r === max) h = (g - b) / s + (g < b) * 6; | |
else if (g === max) h = (b - r) / s + 2; | |
else h = (r - g) / s + 4; | |
s /= l < 0.5 ? max + min : 2 - max - min; | |
h *= 60; | |
} else { | |
s = l > 0 && l < 1 ? 0 : h; | |
} | |
return new Hsl(h, s, l, o.opacity); | |
} | |
function hsl(h, s, l, opacity) { | |
return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); | |
} | |
function Hsl(h, s, l, opacity) { | |
this.h = +h; | |
this.s = +s; | |
this.l = +l; | |
this.opacity = +opacity; | |
} | |
define(Hsl, hsl, extend(Color, { | |
brighter: function(k) { | |
k = k == null ? brighter : Math.pow(brighter, k); | |
return new Hsl(this.h, this.s, this.l * k, this.opacity); | |
}, | |
darker: function(k) { | |
k = k == null ? darker : Math.pow(darker, k); | |
return new Hsl(this.h, this.s, this.l * k, this.opacity); | |
}, | |
rgb: function() { | |
var h = this.h % 360 + (this.h < 0) * 360, | |
s = isNaN(h) || isNaN(this.s) ? 0 : this.s, | |
l = this.l, | |
m2 = l + (l < 0.5 ? l : 1 - l) * s, | |
m1 = 2 * l - m2; | |
return new Rgb( | |
hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), | |
hsl2rgb(h, m1, m2), | |
hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), | |
this.opacity | |
); | |
}, | |
displayable: function() { | |
return (0 <= this.s && this.s <= 1 || isNaN(this.s)) | |
&& (0 <= this.l && this.l <= 1) | |
&& (0 <= this.opacity && this.opacity <= 1); | |
} | |
})); | |
/* From FvD 13.37, CSS Color Module Level 3 */ | |
function hsl2rgb(h, m1, m2) { | |
return (h < 60 ? m1 + (m2 - m1) * h / 60 | |
: h < 180 ? m2 | |
: h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 | |
: m1) * 255; | |
} | |
var deg2rad = Math.PI / 180; | |
var rad2deg = 180 / Math.PI; | |
var Kn = 18; | |
var Xn = 0.950470; | |
var Yn = 1; | |
var Zn = 1.088830; | |
var t0 = 4 / 29; | |
var t1 = 6 / 29; | |
var t2 = 3 * t1 * t1; | |
var t3 = t1 * t1 * t1; | |
function labConvert(o) { | |
if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); | |
if (o instanceof Hcl) { | |
var h = o.h * deg2rad; | |
return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); | |
} | |
if (!(o instanceof Rgb)) o = rgbConvert(o); | |
var b = rgb2xyz(o.r), | |
a = rgb2xyz(o.g), | |
l = rgb2xyz(o.b), | |
x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), | |
y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn), | |
z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn); | |
return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); | |
} | |
function lab(l, a, b, opacity) { | |
return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); | |
} | |
function Lab(l, a, b, opacity) { | |
this.l = +l; | |
this.a = +a; | |
this.b = +b; | |
this.opacity = +opacity; | |
} | |
define(Lab, lab, extend(Color, { | |
brighter: function(k) { | |
return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity); | |
}, | |
darker: function(k) { | |
return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity); | |
}, | |
rgb: function() { | |
var y = (this.l + 16) / 116, | |
x = isNaN(this.a) ? y : y + this.a / 500, | |
z = isNaN(this.b) ? y : y - this.b / 200; | |
y = Yn * lab2xyz(y); | |
x = Xn * lab2xyz(x); | |
z = Zn * lab2xyz(z); | |
return new Rgb( | |
xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB | |
xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z), | |
xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z), | |
this.opacity | |
); | |
} | |
})); | |
function xyz2lab(t) { | |
return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; | |
} | |
function lab2xyz(t) { | |
return t > t1 ? t * t * t : t2 * (t - t0); | |
} | |
function xyz2rgb(x) { | |
return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); | |
} | |
function rgb2xyz(x) { | |
return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); | |
} | |
function hclConvert(o) { | |
if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); | |
if (!(o instanceof Lab)) o = labConvert(o); | |
var h = Math.atan2(o.b, o.a) * rad2deg; | |
return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); | |
} | |
function hcl(h, c, l, opacity) { | |
return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); | |
} | |
function Hcl(h, c, l, opacity) { | |
this.h = +h; | |
this.c = +c; | |
this.l = +l; | |
this.opacity = +opacity; | |
} | |
define(Hcl, hcl, extend(Color, { | |
brighter: function(k) { | |
return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity); | |
}, | |
darker: function(k) { | |
return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity); | |
}, | |
rgb: function() { | |
return labConvert(this).rgb(); | |
} | |
})); | |
var A = -0.14861; | |
var B = +1.78277; | |
var C = -0.29227; | |
var D = -0.90649; | |
var E = +1.97294; | |
var ED = E * D; | |
var EB = E * B; | |
var BC_DA = B * C - D * A; | |
function cubehelixConvert(o) { | |
if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); | |
if (!(o instanceof Rgb)) o = rgbConvert(o); | |
var r = o.r / 255, | |
g = o.g / 255, | |
b = o.b / 255, | |
l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), | |
bl = b - l, | |
k = (E * (g - l) - C * bl) / D, | |
s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 | |
h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; | |
return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); | |
} | |
function cubehelix(h, s, l, opacity) { | |
return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); | |
} | |
function Cubehelix(h, s, l, opacity) { | |
this.h = +h; | |
this.s = +s; | |
this.l = +l; | |
this.opacity = +opacity; | |
} | |
define(Cubehelix, cubehelix, extend(Color, { | |
brighter: function(k) { | |
k = k == null ? brighter : Math.pow(brighter, k); | |
return new Cubehelix(this.h, this.s, this.l * k, this.opacity); | |
}, | |
darker: function(k) { | |
k = k == null ? darker : Math.pow(darker, k); | |
return new Cubehelix(this.h, this.s, this.l * k, this.opacity); | |
}, | |
rgb: function() { | |
var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, | |
l = +this.l, | |
a = isNaN(this.s) ? 0 : this.s * l * (1 - l), | |
cosh = Math.cos(h), | |
sinh = Math.sin(h); | |
return new Rgb( | |
255 * (l + a * (A * cosh + B * sinh)), | |
255 * (l + a * (C * cosh + D * sinh)), | |
255 * (l + a * (E * cosh)), | |
this.opacity | |
); | |
} | |
})); | |
function basis(t1, v0, v1, v2, v3) { | |
var t2 = t1 * t1, t3 = t2 * t1; | |
return ((1 - 3 * t1 + 3 * t2 - t3) * v0 | |
+ (4 - 6 * t2 + 3 * t3) * v1 | |
+ (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 | |
+ t3 * v3) / 6; | |
} | |
var basis$1 = function(values) { | |
var n = values.length - 1; | |
return function(t) { | |
var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), | |
v1 = values[i], | |
v2 = values[i + 1], | |
v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, | |
v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; | |
return basis((t - i / n) * n, v0, v1, v2, v3); | |
}; | |
}; | |
var basisClosed = function(values) { | |
var n = values.length; | |
return function(t) { | |
var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), | |
v0 = values[(i + n - 1) % n], | |
v1 = values[i % n], | |
v2 = values[(i + 1) % n], | |
v3 = values[(i + 2) % n]; | |
return basis((t - i / n) * n, v0, v1, v2, v3); | |
}; | |
}; | |
var constant$3 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
function linear(a, d) { | |
return function(t) { | |
return a + t * d; | |
}; | |
} | |
function exponential(a, b, y) { | |
return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { | |
return Math.pow(a + t * b, y); | |
}; | |
} | |
function hue(a, b) { | |
var d = b - a; | |
return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$3(isNaN(a) ? b : a); | |
} | |
function gamma(y) { | |
return (y = +y) === 1 ? nogamma : function(a, b) { | |
return b - a ? exponential(a, b, y) : constant$3(isNaN(a) ? b : a); | |
}; | |
} | |
function nogamma(a, b) { | |
var d = b - a; | |
return d ? linear(a, d) : constant$3(isNaN(a) ? b : a); | |
} | |
var interpolateRgb = ((function rgbGamma(y) { | |
var color$$1 = gamma(y); | |
function rgb$$1(start, end) { | |
var r = color$$1((start = rgb(start)).r, (end = rgb(end)).r), | |
g = color$$1(start.g, end.g), | |
b = color$$1(start.b, end.b), | |
opacity = nogamma(start.opacity, end.opacity); | |
return function(t) { | |
start.r = r(t); | |
start.g = g(t); | |
start.b = b(t); | |
start.opacity = opacity(t); | |
return start + ""; | |
}; | |
} | |
rgb$$1.gamma = rgbGamma; | |
return rgb$$1; | |
}))(1); | |
function rgbSpline(spline) { | |
return function(colors) { | |
var n = colors.length, | |
r = new Array(n), | |
g = new Array(n), | |
b = new Array(n), | |
i, color$$1; | |
for (i = 0; i < n; ++i) { | |
color$$1 = rgb(colors[i]); | |
r[i] = color$$1.r || 0; | |
g[i] = color$$1.g || 0; | |
b[i] = color$$1.b || 0; | |
} | |
r = spline(r); | |
g = spline(g); | |
b = spline(b); | |
color$$1.opacity = 1; | |
return function(t) { | |
color$$1.r = r(t); | |
color$$1.g = g(t); | |
color$$1.b = b(t); | |
return color$$1 + ""; | |
}; | |
}; | |
} | |
var rgbBasis = rgbSpline(basis$1); | |
var rgbBasisClosed = rgbSpline(basisClosed); | |
var array$1 = function(a, b) { | |
var nb = b ? b.length : 0, | |
na = a ? Math.min(nb, a.length) : 0, | |
x = new Array(nb), | |
c = new Array(nb), | |
i; | |
for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]); | |
for (; i < nb; ++i) c[i] = b[i]; | |
return function(t) { | |
for (i = 0; i < na; ++i) c[i] = x[i](t); | |
return c; | |
}; | |
}; | |
var date = function(a, b) { | |
var d = new Date; | |
return a = +a, b -= a, function(t) { | |
return d.setTime(a + b * t), d; | |
}; | |
}; | |
var reinterpolate = function(a, b) { | |
return a = +a, b -= a, function(t) { | |
return a + b * t; | |
}; | |
}; | |
var object = function(a, b) { | |
var i = {}, | |
c = {}, | |
k; | |
if (a === null || typeof a !== "object") a = {}; | |
if (b === null || typeof b !== "object") b = {}; | |
for (k in b) { | |
if (k in a) { | |
i[k] = interpolateValue(a[k], b[k]); | |
} else { | |
c[k] = b[k]; | |
} | |
} | |
return function(t) { | |
for (k in i) c[k] = i[k](t); | |
return c; | |
}; | |
}; | |
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; | |
var reB = new RegExp(reA.source, "g"); | |
function zero(b) { | |
return function() { | |
return b; | |
}; | |
} | |
function one(b) { | |
return function(t) { | |
return b(t) + ""; | |
}; | |
} | |
var interpolateString = function(a, b) { | |
var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b | |
am, // current match in a | |
bm, // current match in b | |
bs, // string preceding current number in b, if any | |
i = -1, // index in s | |
s = [], // string constants and placeholders | |
q = []; // number interpolators | |
// Coerce inputs to strings. | |
a = a + "", b = b + ""; | |
// Interpolate pairs of numbers in a & b. | |
while ((am = reA.exec(a)) | |
&& (bm = reB.exec(b))) { | |
if ((bs = bm.index) > bi) { // a string precedes the next number in b | |
bs = b.slice(bi, bs); | |
if (s[i]) s[i] += bs; // coalesce with previous string | |
else s[++i] = bs; | |
} | |
if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match | |
if (s[i]) s[i] += bm; // coalesce with previous string | |
else s[++i] = bm; | |
} else { // interpolate non-matching numbers | |
s[++i] = null; | |
q.push({i: i, x: reinterpolate(am, bm)}); | |
} | |
bi = reB.lastIndex; | |
} | |
// Add remains of b. | |
if (bi < b.length) { | |
bs = b.slice(bi); | |
if (s[i]) s[i] += bs; // coalesce with previous string | |
else s[++i] = bs; | |
} | |
// Special optimization for only a single match. | |
// Otherwise, interpolate each of the numbers and rejoin the string. | |
return s.length < 2 ? (q[0] | |
? one(q[0].x) | |
: zero(b)) | |
: (b = q.length, function(t) { | |
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); | |
return s.join(""); | |
}); | |
}; | |
var interpolateValue = function(a, b) { | |
var t = typeof b, c; | |
return b == null || t === "boolean" ? constant$3(b) | |
: (t === "number" ? reinterpolate | |
: t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) | |
: b instanceof color ? interpolateRgb | |
: b instanceof Date ? date | |
: Array.isArray(b) ? array$1 | |
: typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object | |
: reinterpolate)(a, b); | |
}; | |
var interpolateRound = function(a, b) { | |
return a = +a, b -= a, function(t) { | |
return Math.round(a + b * t); | |
}; | |
}; | |
var degrees = 180 / Math.PI; | |
var identity$2 = { | |
translateX: 0, | |
translateY: 0, | |
rotate: 0, | |
skewX: 0, | |
scaleX: 1, | |
scaleY: 1 | |
}; | |
var decompose = function(a, b, c, d, e, f) { | |
var scaleX, scaleY, skewX; | |
if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; | |
if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; | |
if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; | |
if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; | |
return { | |
translateX: e, | |
translateY: f, | |
rotate: Math.atan2(b, a) * degrees, | |
skewX: Math.atan(skewX) * degrees, | |
scaleX: scaleX, | |
scaleY: scaleY | |
}; | |
}; | |
var cssNode; | |
var cssRoot; | |
var cssView; | |
var svgNode; | |
function parseCss(value) { | |
if (value === "none") return identity$2; | |
if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; | |
cssNode.style.transform = value; | |
value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); | |
cssRoot.removeChild(cssNode); | |
value = value.slice(7, -1).split(","); | |
return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); | |
} | |
function parseSvg(value) { | |
if (value == null) return identity$2; | |
if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); | |
svgNode.setAttribute("transform", value); | |
if (!(value = svgNode.transform.baseVal.consolidate())) return identity$2; | |
value = value.matrix; | |
return decompose(value.a, value.b, value.c, value.d, value.e, value.f); | |
} | |
function interpolateTransform(parse, pxComma, pxParen, degParen) { | |
function pop(s) { | |
return s.length ? s.pop() + " " : ""; | |
} | |
function translate(xa, ya, xb, yb, s, q) { | |
if (xa !== xb || ya !== yb) { | |
var i = s.push("translate(", null, pxComma, null, pxParen); | |
q.push({i: i - 4, x: reinterpolate(xa, xb)}, {i: i - 2, x: reinterpolate(ya, yb)}); | |
} else if (xb || yb) { | |
s.push("translate(" + xb + pxComma + yb + pxParen); | |
} | |
} | |
function rotate(a, b, s, q) { | |
if (a !== b) { | |
if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path | |
q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: reinterpolate(a, b)}); | |
} else if (b) { | |
s.push(pop(s) + "rotate(" + b + degParen); | |
} | |
} | |
function skewX(a, b, s, q) { | |
if (a !== b) { | |
q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: reinterpolate(a, b)}); | |
} else if (b) { | |
s.push(pop(s) + "skewX(" + b + degParen); | |
} | |
} | |
function scale(xa, ya, xb, yb, s, q) { | |
if (xa !== xb || ya !== yb) { | |
var i = s.push(pop(s) + "scale(", null, ",", null, ")"); | |
q.push({i: i - 4, x: reinterpolate(xa, xb)}, {i: i - 2, x: reinterpolate(ya, yb)}); | |
} else if (xb !== 1 || yb !== 1) { | |
s.push(pop(s) + "scale(" + xb + "," + yb + ")"); | |
} | |
} | |
return function(a, b) { | |
var s = [], // string constants and placeholders | |
q = []; // number interpolators | |
a = parse(a), b = parse(b); | |
translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); | |
rotate(a.rotate, b.rotate, s, q); | |
skewX(a.skewX, b.skewX, s, q); | |
scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); | |
a = b = null; // gc | |
return function(t) { | |
var i = -1, n = q.length, o; | |
while (++i < n) s[(o = q[i]).i] = o.x(t); | |
return s.join(""); | |
}; | |
}; | |
} | |
var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); | |
var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); | |
var rho = Math.SQRT2; | |
var rho2 = 2; | |
var rho4 = 4; | |
var epsilon2 = 1e-12; | |
function cosh(x) { | |
return ((x = Math.exp(x)) + 1 / x) / 2; | |
} | |
function sinh(x) { | |
return ((x = Math.exp(x)) - 1 / x) / 2; | |
} | |
function tanh(x) { | |
return ((x = Math.exp(2 * x)) - 1) / (x + 1); | |
} | |
// p0 = [ux0, uy0, w0] | |
// p1 = [ux1, uy1, w1] | |
var interpolateZoom = function(p0, p1) { | |
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], | |
ux1 = p1[0], uy1 = p1[1], w1 = p1[2], | |
dx = ux1 - ux0, | |
dy = uy1 - uy0, | |
d2 = dx * dx + dy * dy, | |
i, | |
S; | |
// Special case for u0 ≅ u1. | |
if (d2 < epsilon2) { | |
S = Math.log(w1 / w0) / rho; | |
i = function(t) { | |
return [ | |
ux0 + t * dx, | |
uy0 + t * dy, | |
w0 * Math.exp(rho * t * S) | |
]; | |
}; | |
} | |
// General case. | |
else { | |
var d1 = Math.sqrt(d2), | |
b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), | |
b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), | |
r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), | |
r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); | |
S = (r1 - r0) / rho; | |
i = function(t) { | |
var s = t * S, | |
coshr0 = cosh(r0), | |
u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); | |
return [ | |
ux0 + u * dx, | |
uy0 + u * dy, | |
w0 * coshr0 / cosh(rho * s + r0) | |
]; | |
}; | |
} | |
i.duration = S * 1000; | |
return i; | |
}; | |
function hsl$1(hue$$1) { | |
return function(start, end) { | |
var h = hue$$1((start = hsl(start)).h, (end = hsl(end)).h), | |
s = nogamma(start.s, end.s), | |
l = nogamma(start.l, end.l), | |
opacity = nogamma(start.opacity, end.opacity); | |
return function(t) { | |
start.h = h(t); | |
start.s = s(t); | |
start.l = l(t); | |
start.opacity = opacity(t); | |
return start + ""; | |
}; | |
} | |
} | |
var hsl$2 = hsl$1(hue); | |
var hslLong = hsl$1(nogamma); | |
function lab$1(start, end) { | |
var l = nogamma((start = lab(start)).l, (end = lab(end)).l), | |
a = nogamma(start.a, end.a), | |
b = nogamma(start.b, end.b), | |
opacity = nogamma(start.opacity, end.opacity); | |
return function(t) { | |
start.l = l(t); | |
start.a = a(t); | |
start.b = b(t); | |
start.opacity = opacity(t); | |
return start + ""; | |
}; | |
} | |
function hcl$1(hue$$1) { | |
return function(start, end) { | |
var h = hue$$1((start = hcl(start)).h, (end = hcl(end)).h), | |
c = nogamma(start.c, end.c), | |
l = nogamma(start.l, end.l), | |
opacity = nogamma(start.opacity, end.opacity); | |
return function(t) { | |
start.h = h(t); | |
start.c = c(t); | |
start.l = l(t); | |
start.opacity = opacity(t); | |
return start + ""; | |
}; | |
} | |
} | |
var hcl$2 = hcl$1(hue); | |
var hclLong = hcl$1(nogamma); | |
function cubehelix$1(hue$$1) { | |
return (function cubehelixGamma(y) { | |
y = +y; | |
function cubehelix$$1(start, end) { | |
var h = hue$$1((start = cubehelix(start)).h, (end = cubehelix(end)).h), | |
s = nogamma(start.s, end.s), | |
l = nogamma(start.l, end.l), | |
opacity = nogamma(start.opacity, end.opacity); | |
return function(t) { | |
start.h = h(t); | |
start.s = s(t); | |
start.l = l(Math.pow(t, y)); | |
start.opacity = opacity(t); | |
return start + ""; | |
}; | |
} | |
cubehelix$$1.gamma = cubehelixGamma; | |
return cubehelix$$1; | |
})(1); | |
} | |
var cubehelix$2 = cubehelix$1(hue); | |
var cubehelixLong = cubehelix$1(nogamma); | |
var quantize = function(interpolator, n) { | |
var samples = new Array(n); | |
for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); | |
return samples; | |
}; | |
var frame = 0; | |
var timeout = 0; | |
var interval = 0; | |
var pokeDelay = 1000; | |
var taskHead; | |
var taskTail; | |
var clockLast = 0; | |
var clockNow = 0; | |
var clockSkew = 0; | |
var clock = typeof performance === "object" && performance.now ? performance : Date; | |
var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; | |
function now() { | |
return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); | |
} | |
function clearNow() { | |
clockNow = 0; | |
} | |
function Timer() { | |
this._call = | |
this._time = | |
this._next = null; | |
} | |
Timer.prototype = timer.prototype = { | |
constructor: Timer, | |
restart: function(callback, delay, time) { | |
if (typeof callback !== "function") throw new TypeError("callback is not a function"); | |
time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); | |
if (!this._next && taskTail !== this) { | |
if (taskTail) taskTail._next = this; | |
else taskHead = this; | |
taskTail = this; | |
} | |
this._call = callback; | |
this._time = time; | |
sleep(); | |
}, | |
stop: function() { | |
if (this._call) { | |
this._call = null; | |
this._time = Infinity; | |
sleep(); | |
} | |
} | |
}; | |
function timer(callback, delay, time) { | |
var t = new Timer; | |
t.restart(callback, delay, time); | |
return t; | |
} | |
function timerFlush() { | |
now(); // Get the current time, if not already set. | |
++frame; // Pretend we’ve set an alarm, if we haven’t already. | |
var t = taskHead, e; | |
while (t) { | |
if ((e = clockNow - t._time) >= 0) t._call.call(null, e); | |
t = t._next; | |
} | |
--frame; | |
} | |
function wake() { | |
clockNow = (clockLast = clock.now()) + clockSkew; | |
frame = timeout = 0; | |
try { | |
timerFlush(); | |
} finally { | |
frame = 0; | |
nap(); | |
clockNow = 0; | |
} | |
} | |
function poke() { | |
var now = clock.now(), delay = now - clockLast; | |
if (delay > pokeDelay) clockSkew -= delay, clockLast = now; | |
} | |
function nap() { | |
var t0, t1 = taskHead, t2, time = Infinity; | |
while (t1) { | |
if (t1._call) { | |
if (time > t1._time) time = t1._time; | |
t0 = t1, t1 = t1._next; | |
} else { | |
t2 = t1._next, t1._next = null; | |
t1 = t0 ? t0._next = t2 : taskHead = t2; | |
} | |
} | |
taskTail = t0; | |
sleep(time); | |
} | |
function sleep(time) { | |
if (frame) return; // Soonest alarm already set, or will be. | |
if (timeout) timeout = clearTimeout(timeout); | |
var delay = time - clockNow; // Strictly less than if we recomputed clockNow. | |
if (delay > 24) { | |
if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); | |
if (interval) interval = clearInterval(interval); | |
} else { | |
if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); | |
frame = 1, setFrame(wake); | |
} | |
} | |
var timeout$1 = function(callback, delay, time) { | |
var t = new Timer; | |
delay = delay == null ? 0 : +delay; | |
t.restart(function(elapsed) { | |
t.stop(); | |
callback(elapsed + delay); | |
}, delay, time); | |
return t; | |
}; | |
var interval$1 = function(callback, delay, time) { | |
var t = new Timer, total = delay; | |
if (delay == null) return t.restart(callback, delay, time), t; | |
delay = +delay, time = time == null ? now() : +time; | |
t.restart(function tick(elapsed) { | |
elapsed += total; | |
t.restart(tick, total += delay, time); | |
callback(elapsed); | |
}, delay, time); | |
return t; | |
}; | |
var emptyOn = dispatch("start", "end", "interrupt"); | |
var emptyTween = []; | |
var CREATED = 0; | |
var SCHEDULED = 1; | |
var STARTING = 2; | |
var STARTED = 3; | |
var RUNNING = 4; | |
var ENDING = 5; | |
var ENDED = 6; | |
var schedule = function(node, name, id, index, group, timing) { | |
var schedules = node.__transition; | |
if (!schedules) node.__transition = {}; | |
else if (id in schedules) return; | |
create(node, id, { | |
name: name, | |
index: index, // For context during callback. | |
group: group, // For context during callback. | |
on: emptyOn, | |
tween: emptyTween, | |
time: timing.time, | |
delay: timing.delay, | |
duration: timing.duration, | |
ease: timing.ease, | |
timer: null, | |
state: CREATED | |
}); | |
}; | |
function init(node, id) { | |
var schedule = node.__transition; | |
if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error("too late"); | |
return schedule; | |
} | |
function set$1(node, id) { | |
var schedule = node.__transition; | |
if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error("too late"); | |
return schedule; | |
} | |
function get$1(node, id) { | |
var schedule = node.__transition; | |
if (!schedule || !(schedule = schedule[id])) throw new Error("too late"); | |
return schedule; | |
} | |
function create(node, id, self) { | |
var schedules = node.__transition, | |
tween; | |
// Initialize the self timer when the transition is created. | |
// Note the actual delay is not known until the first callback! | |
schedules[id] = self; | |
self.timer = timer(schedule, 0, self.time); | |
function schedule(elapsed) { | |
self.state = SCHEDULED; | |
self.timer.restart(start, self.delay, self.time); | |
// If the elapsed delay is less than our first sleep, start immediately. | |
if (self.delay <= elapsed) start(elapsed - self.delay); | |
} | |
function start(elapsed) { | |
var i, j, n, o; | |
// If the state is not SCHEDULED, then we previously errored on start. | |
if (self.state !== SCHEDULED) return stop(); | |
for (i in schedules) { | |
o = schedules[i]; | |
if (o.name !== self.name) continue; | |
// While this element already has a starting transition during this frame, | |
// defer starting an interrupting transition until that transition has a | |
// chance to tick (and possibly end); see d3/d3-transition#54! | |
if (o.state === STARTED) return timeout$1(start); | |
// Interrupt the active transition, if any. | |
// Dispatch the interrupt event. | |
if (o.state === RUNNING) { | |
o.state = ENDED; | |
o.timer.stop(); | |
o.on.call("interrupt", node, node.__data__, o.index, o.group); | |
delete schedules[i]; | |
} | |
// Cancel any pre-empted transitions. No interrupt event is dispatched | |
// because the cancelled transitions never started. Note that this also | |
// removes this transition from the pending list! | |
else if (+i < id) { | |
o.state = ENDED; | |
o.timer.stop(); | |
delete schedules[i]; | |
} | |
} | |
// Defer the first tick to end of the current frame; see d3/d3#1576. | |
// Note the transition may be canceled after start and before the first tick! | |
// Note this must be scheduled before the start event; see d3/d3-transition#16! | |
// Assuming this is successful, subsequent callbacks go straight to tick. | |
timeout$1(function() { | |
if (self.state === STARTED) { | |
self.state = RUNNING; | |
self.timer.restart(tick, self.delay, self.time); | |
tick(elapsed); | |
} | |
}); | |
// Dispatch the start event. | |
// Note this must be done before the tween are initialized. | |
self.state = STARTING; | |
self.on.call("start", node, node.__data__, self.index, self.group); | |
if (self.state !== STARTING) return; // interrupted | |
self.state = STARTED; | |
// Initialize the tween, deleting null tween. | |
tween = new Array(n = self.tween.length); | |
for (i = 0, j = -1; i < n; ++i) { | |
if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { | |
tween[++j] = o; | |
} | |
} | |
tween.length = j + 1; | |
} | |
function tick(elapsed) { | |
var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), | |
i = -1, | |
n = tween.length; | |
while (++i < n) { | |
tween[i].call(null, t); | |
} | |
// Dispatch the end event. | |
if (self.state === ENDING) { | |
self.on.call("end", node, node.__data__, self.index, self.group); | |
stop(); | |
} | |
} | |
function stop() { | |
self.state = ENDED; | |
self.timer.stop(); | |
delete schedules[id]; | |
for (var i in schedules) return; // eslint-disable-line no-unused-vars | |
delete node.__transition; | |
} | |
} | |
var interrupt = function(node, name) { | |
var schedules = node.__transition, | |
schedule, | |
active, | |
empty = true, | |
i; | |
if (!schedules) return; | |
name = name == null ? null : name + ""; | |
for (i in schedules) { | |
if ((schedule = schedules[i]).name !== name) { empty = false; continue; } | |
active = schedule.state > STARTING && schedule.state < ENDING; | |
schedule.state = ENDED; | |
schedule.timer.stop(); | |
if (active) schedule.on.call("interrupt", node, node.__data__, schedule.index, schedule.group); | |
delete schedules[i]; | |
} | |
if (empty) delete node.__transition; | |
}; | |
var selection_interrupt = function(name) { | |
return this.each(function() { | |
interrupt(this, name); | |
}); | |
}; | |
function tweenRemove(id, name) { | |
var tween0, tween1; | |
return function() { | |
var schedule = set$1(this, id), | |
tween = schedule.tween; | |
// If this node shared tween with the previous node, | |
// just assign the updated shared tween and we’re done! | |
// Otherwise, copy-on-write. | |
if (tween !== tween0) { | |
tween1 = tween0 = tween; | |
for (var i = 0, n = tween1.length; i < n; ++i) { | |
if (tween1[i].name === name) { | |
tween1 = tween1.slice(); | |
tween1.splice(i, 1); | |
break; | |
} | |
} | |
} | |
schedule.tween = tween1; | |
}; | |
} | |
function tweenFunction(id, name, value) { | |
var tween0, tween1; | |
if (typeof value !== "function") throw new Error; | |
return function() { | |
var schedule = set$1(this, id), | |
tween = schedule.tween; | |
// If this node shared tween with the previous node, | |
// just assign the updated shared tween and we’re done! | |
// Otherwise, copy-on-write. | |
if (tween !== tween0) { | |
tween1 = (tween0 = tween).slice(); | |
for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { | |
if (tween1[i].name === name) { | |
tween1[i] = t; | |
break; | |
} | |
} | |
if (i === n) tween1.push(t); | |
} | |
schedule.tween = tween1; | |
}; | |
} | |
var transition_tween = function(name, value) { | |
var id = this._id; | |
name += ""; | |
if (arguments.length < 2) { | |
var tween = get$1(this.node(), id).tween; | |
for (var i = 0, n = tween.length, t; i < n; ++i) { | |
if ((t = tween[i]).name === name) { | |
return t.value; | |
} | |
} | |
return null; | |
} | |
return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); | |
}; | |
function tweenValue(transition, name, value) { | |
var id = transition._id; | |
transition.each(function() { | |
var schedule = set$1(this, id); | |
(schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); | |
}); | |
return function(node) { | |
return get$1(node, id).value[name]; | |
}; | |
} | |
var interpolate$$1 = function(a, b) { | |
var c; | |
return (typeof b === "number" ? reinterpolate | |
: b instanceof color ? interpolateRgb | |
: (c = color(b)) ? (b = c, interpolateRgb) | |
: interpolateString)(a, b); | |
}; | |
function attrRemove$1(name) { | |
return function() { | |
this.removeAttribute(name); | |
}; | |
} | |
function attrRemoveNS$1(fullname) { | |
return function() { | |
this.removeAttributeNS(fullname.space, fullname.local); | |
}; | |
} | |
function attrConstant$1(name, interpolate$$1, value1) { | |
var value00, | |
interpolate0; | |
return function() { | |
var value0 = this.getAttribute(name); | |
return value0 === value1 ? null | |
: value0 === value00 ? interpolate0 | |
: interpolate0 = interpolate$$1(value00 = value0, value1); | |
}; | |
} | |
function attrConstantNS$1(fullname, interpolate$$1, value1) { | |
var value00, | |
interpolate0; | |
return function() { | |
var value0 = this.getAttributeNS(fullname.space, fullname.local); | |
return value0 === value1 ? null | |
: value0 === value00 ? interpolate0 | |
: interpolate0 = interpolate$$1(value00 = value0, value1); | |
}; | |
} | |
function attrFunction$1(name, interpolate$$1, value) { | |
var value00, | |
value10, | |
interpolate0; | |
return function() { | |
var value0, value1 = value(this); | |
if (value1 == null) return void this.removeAttribute(name); | |
value0 = this.getAttribute(name); | |
return value0 === value1 ? null | |
: value0 === value00 && value1 === value10 ? interpolate0 | |
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1); | |
}; | |
} | |
function attrFunctionNS$1(fullname, interpolate$$1, value) { | |
var value00, | |
value10, | |
interpolate0; | |
return function() { | |
var value0, value1 = value(this); | |
if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); | |
value0 = this.getAttributeNS(fullname.space, fullname.local); | |
return value0 === value1 ? null | |
: value0 === value00 && value1 === value10 ? interpolate0 | |
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1); | |
}; | |
} | |
var transition_attr = function(name, value) { | |
var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate$$1; | |
return this.attrTween(name, typeof value === "function" | |
? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) | |
: value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) | |
: (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value + "")); | |
}; | |
function attrTweenNS(fullname, value) { | |
function tween() { | |
var node = this, i = value.apply(node, arguments); | |
return i && function(t) { | |
node.setAttributeNS(fullname.space, fullname.local, i(t)); | |
}; | |
} | |
tween._value = value; | |
return tween; | |
} | |
function attrTween(name, value) { | |
function tween() { | |
var node = this, i = value.apply(node, arguments); | |
return i && function(t) { | |
node.setAttribute(name, i(t)); | |
}; | |
} | |
tween._value = value; | |
return tween; | |
} | |
var transition_attrTween = function(name, value) { | |
var key = "attr." + name; | |
if (arguments.length < 2) return (key = this.tween(key)) && key._value; | |
if (value == null) return this.tween(key, null); | |
if (typeof value !== "function") throw new Error; | |
var fullname = namespace(name); | |
return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); | |
}; | |
function delayFunction(id, value) { | |
return function() { | |
init(this, id).delay = +value.apply(this, arguments); | |
}; | |
} | |
function delayConstant(id, value) { | |
return value = +value, function() { | |
init(this, id).delay = value; | |
}; | |
} | |
var transition_delay = function(value) { | |
var id = this._id; | |
return arguments.length | |
? this.each((typeof value === "function" | |
? delayFunction | |
: delayConstant)(id, value)) | |
: get$1(this.node(), id).delay; | |
}; | |
function durationFunction(id, value) { | |
return function() { | |
set$1(this, id).duration = +value.apply(this, arguments); | |
}; | |
} | |
function durationConstant(id, value) { | |
return value = +value, function() { | |
set$1(this, id).duration = value; | |
}; | |
} | |
var transition_duration = function(value) { | |
var id = this._id; | |
return arguments.length | |
? this.each((typeof value === "function" | |
? durationFunction | |
: durationConstant)(id, value)) | |
: get$1(this.node(), id).duration; | |
}; | |
function easeConstant(id, value) { | |
if (typeof value !== "function") throw new Error; | |
return function() { | |
set$1(this, id).ease = value; | |
}; | |
} | |
var transition_ease = function(value) { | |
var id = this._id; | |
return arguments.length | |
? this.each(easeConstant(id, value)) | |
: get$1(this.node(), id).ease; | |
}; | |
var transition_filter = function(match) { | |
if (typeof match !== "function") match = matcher$1(match); | |
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { | |
if ((node = group[i]) && match.call(node, node.__data__, i, group)) { | |
subgroup.push(node); | |
} | |
} | |
} | |
return new Transition(subgroups, this._parents, this._name, this._id); | |
}; | |
var transition_merge = function(transition) { | |
if (transition._id !== this._id) throw new Error; | |
for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { | |
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { | |
if (node = group0[i] || group1[i]) { | |
merge[i] = node; | |
} | |
} | |
} | |
for (; j < m0; ++j) { | |
merges[j] = groups0[j]; | |
} | |
return new Transition(merges, this._parents, this._name, this._id); | |
}; | |
function start(name) { | |
return (name + "").trim().split(/^|\s+/).every(function(t) { | |
var i = t.indexOf("."); | |
if (i >= 0) t = t.slice(0, i); | |
return !t || t === "start"; | |
}); | |
} | |
function onFunction(id, name, listener) { | |
var on0, on1, sit = start(name) ? init : set$1; | |
return function() { | |
var schedule = sit(this, id), | |
on = schedule.on; | |
// If this node shared a dispatch with the previous node, | |
// just assign the updated shared dispatch and we’re done! | |
// Otherwise, copy-on-write. | |
if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); | |
schedule.on = on1; | |
}; | |
} | |
var transition_on = function(name, listener) { | |
var id = this._id; | |
return arguments.length < 2 | |
? get$1(this.node(), id).on.on(name) | |
: this.each(onFunction(id, name, listener)); | |
}; | |
function removeFunction(id) { | |
return function() { | |
var parent = this.parentNode; | |
for (var i in this.__transition) if (+i !== id) return; | |
if (parent) parent.removeChild(this); | |
}; | |
} | |
var transition_remove = function() { | |
return this.on("end.remove", removeFunction(this._id)); | |
}; | |
var transition_select = function(select$$1) { | |
var name = this._name, | |
id = this._id; | |
if (typeof select$$1 !== "function") select$$1 = selector(select$$1); | |
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { | |
if ((node = group[i]) && (subnode = select$$1.call(node, node.__data__, i, group))) { | |
if ("__data__" in node) subnode.__data__ = node.__data__; | |
subgroup[i] = subnode; | |
schedule(subgroup[i], name, id, i, subgroup, get$1(node, id)); | |
} | |
} | |
} | |
return new Transition(subgroups, this._parents, name, id); | |
}; | |
var transition_selectAll = function(select$$1) { | |
var name = this._name, | |
id = this._id; | |
if (typeof select$$1 !== "function") select$$1 = selectorAll(select$$1); | |
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { | |
if (node = group[i]) { | |
for (var children = select$$1.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) { | |
if (child = children[k]) { | |
schedule(child, name, id, k, children, inherit); | |
} | |
} | |
subgroups.push(children); | |
parents.push(node); | |
} | |
} | |
} | |
return new Transition(subgroups, parents, name, id); | |
}; | |
var Selection$1 = selection.prototype.constructor; | |
var transition_selection = function() { | |
return new Selection$1(this._groups, this._parents); | |
}; | |
function styleRemove$1(name, interpolate$$2) { | |
var value00, | |
value10, | |
interpolate0; | |
return function() { | |
var value0 = styleValue(this, name), | |
value1 = (this.style.removeProperty(name), styleValue(this, name)); | |
return value0 === value1 ? null | |
: value0 === value00 && value1 === value10 ? interpolate0 | |
: interpolate0 = interpolate$$2(value00 = value0, value10 = value1); | |
}; | |
} | |
function styleRemoveEnd(name) { | |
return function() { | |
this.style.removeProperty(name); | |
}; | |
} | |
function styleConstant$1(name, interpolate$$2, value1) { | |
var value00, | |
interpolate0; | |
return function() { | |
var value0 = styleValue(this, name); | |
return value0 === value1 ? null | |
: value0 === value00 ? interpolate0 | |
: interpolate0 = interpolate$$2(value00 = value0, value1); | |
}; | |
} | |
function styleFunction$1(name, interpolate$$2, value) { | |
var value00, | |
value10, | |
interpolate0; | |
return function() { | |
var value0 = styleValue(this, name), | |
value1 = value(this); | |
if (value1 == null) value1 = (this.style.removeProperty(name), styleValue(this, name)); | |
return value0 === value1 ? null | |
: value0 === value00 && value1 === value10 ? interpolate0 | |
: interpolate0 = interpolate$$2(value00 = value0, value10 = value1); | |
}; | |
} | |
var transition_style = function(name, value, priority) { | |
var i = (name += "") === "transform" ? interpolateTransformCss : interpolate$$1; | |
return value == null ? this | |
.styleTween(name, styleRemove$1(name, i)) | |
.on("end.style." + name, styleRemoveEnd(name)) | |
: this.styleTween(name, typeof value === "function" | |
? styleFunction$1(name, i, tweenValue(this, "style." + name, value)) | |
: styleConstant$1(name, i, value + ""), priority); | |
}; | |
function styleTween(name, value, priority) { | |
function tween() { | |
var node = this, i = value.apply(node, arguments); | |
return i && function(t) { | |
node.style.setProperty(name, i(t), priority); | |
}; | |
} | |
tween._value = value; | |
return tween; | |
} | |
var transition_styleTween = function(name, value, priority) { | |
var key = "style." + (name += ""); | |
if (arguments.length < 2) return (key = this.tween(key)) && key._value; | |
if (value == null) return this.tween(key, null); | |
if (typeof value !== "function") throw new Error; | |
return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); | |
}; | |
function textConstant$1(value) { | |
return function() { | |
this.textContent = value; | |
}; | |
} | |
function textFunction$1(value) { | |
return function() { | |
var value1 = value(this); | |
this.textContent = value1 == null ? "" : value1; | |
}; | |
} | |
var transition_text = function(value) { | |
return this.tween("text", typeof value === "function" | |
? textFunction$1(tweenValue(this, "text", value)) | |
: textConstant$1(value == null ? "" : value + "")); | |
}; | |
var transition_transition = function() { | |
var name = this._name, | |
id0 = this._id, | |
id1 = newId(); | |
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { | |
if (node = group[i]) { | |
var inherit = get$1(node, id0); | |
schedule(node, name, id1, i, group, { | |
time: inherit.time + inherit.delay + inherit.duration, | |
delay: 0, | |
duration: inherit.duration, | |
ease: inherit.ease | |
}); | |
} | |
} | |
} | |
return new Transition(groups, this._parents, name, id1); | |
}; | |
var id = 0; | |
function Transition(groups, parents, name, id) { | |
this._groups = groups; | |
this._parents = parents; | |
this._name = name; | |
this._id = id; | |
} | |
function transition(name) { | |
return selection().transition(name); | |
} | |
function newId() { | |
return ++id; | |
} | |
var selection_prototype = selection.prototype; | |
Transition.prototype = transition.prototype = { | |
constructor: Transition, | |
select: transition_select, | |
selectAll: transition_selectAll, | |
filter: transition_filter, | |
merge: transition_merge, | |
selection: transition_selection, | |
transition: transition_transition, | |
call: selection_prototype.call, | |
nodes: selection_prototype.nodes, | |
node: selection_prototype.node, | |
size: selection_prototype.size, | |
empty: selection_prototype.empty, | |
each: selection_prototype.each, | |
on: transition_on, | |
attr: transition_attr, | |
attrTween: transition_attrTween, | |
style: transition_style, | |
styleTween: transition_styleTween, | |
text: transition_text, | |
remove: transition_remove, | |
tween: transition_tween, | |
delay: transition_delay, | |
duration: transition_duration, | |
ease: transition_ease | |
}; | |
function linear$1(t) { | |
return +t; | |
} | |
function quadIn(t) { | |
return t * t; | |
} | |
function quadOut(t) { | |
return t * (2 - t); | |
} | |
function quadInOut(t) { | |
return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; | |
} | |
function cubicIn(t) { | |
return t * t * t; | |
} | |
function cubicOut(t) { | |
return --t * t * t + 1; | |
} | |
function cubicInOut(t) { | |
return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; | |
} | |
var exponent = 3; | |
var polyIn = (function custom(e) { | |
e = +e; | |
function polyIn(t) { | |
return Math.pow(t, e); | |
} | |
polyIn.exponent = custom; | |
return polyIn; | |
})(exponent); | |
var polyOut = (function custom(e) { | |
e = +e; | |
function polyOut(t) { | |
return 1 - Math.pow(1 - t, e); | |
} | |
polyOut.exponent = custom; | |
return polyOut; | |
})(exponent); | |
var polyInOut = (function custom(e) { | |
e = +e; | |
function polyInOut(t) { | |
return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; | |
} | |
polyInOut.exponent = custom; | |
return polyInOut; | |
})(exponent); | |
var pi = Math.PI; | |
var halfPi = pi / 2; | |
function sinIn(t) { | |
return 1 - Math.cos(t * halfPi); | |
} | |
function sinOut(t) { | |
return Math.sin(t * halfPi); | |
} | |
function sinInOut(t) { | |
return (1 - Math.cos(pi * t)) / 2; | |
} | |
function expIn(t) { | |
return Math.pow(2, 10 * t - 10); | |
} | |
function expOut(t) { | |
return 1 - Math.pow(2, -10 * t); | |
} | |
function expInOut(t) { | |
return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2; | |
} | |
function circleIn(t) { | |
return 1 - Math.sqrt(1 - t * t); | |
} | |
function circleOut(t) { | |
return Math.sqrt(1 - --t * t); | |
} | |
function circleInOut(t) { | |
return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; | |
} | |
var b1 = 4 / 11; | |
var b2 = 6 / 11; | |
var b3 = 8 / 11; | |
var b4 = 3 / 4; | |
var b5 = 9 / 11; | |
var b6 = 10 / 11; | |
var b7 = 15 / 16; | |
var b8 = 21 / 22; | |
var b9 = 63 / 64; | |
var b0 = 1 / b1 / b1; | |
function bounceIn(t) { | |
return 1 - bounceOut(1 - t); | |
} | |
function bounceOut(t) { | |
return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; | |
} | |
function bounceInOut(t) { | |
return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; | |
} | |
var overshoot = 1.70158; | |
var backIn = (function custom(s) { | |
s = +s; | |
function backIn(t) { | |
return t * t * ((s + 1) * t - s); | |
} | |
backIn.overshoot = custom; | |
return backIn; | |
})(overshoot); | |
var backOut = (function custom(s) { | |
s = +s; | |
function backOut(t) { | |
return --t * t * ((s + 1) * t + s) + 1; | |
} | |
backOut.overshoot = custom; | |
return backOut; | |
})(overshoot); | |
var backInOut = (function custom(s) { | |
s = +s; | |
function backInOut(t) { | |
return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; | |
} | |
backInOut.overshoot = custom; | |
return backInOut; | |
})(overshoot); | |
var tau = 2 * Math.PI; | |
var amplitude = 1; | |
var period = 0.3; | |
var elasticIn = (function custom(a, p) { | |
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); | |
function elasticIn(t) { | |
return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p); | |
} | |
elasticIn.amplitude = function(a) { return custom(a, p * tau); }; | |
elasticIn.period = function(p) { return custom(a, p); }; | |
return elasticIn; | |
})(amplitude, period); | |
var elasticOut = (function custom(a, p) { | |
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); | |
function elasticOut(t) { | |
return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p); | |
} | |
elasticOut.amplitude = function(a) { return custom(a, p * tau); }; | |
elasticOut.period = function(p) { return custom(a, p); }; | |
return elasticOut; | |
})(amplitude, period); | |
var elasticInOut = (function custom(a, p) { | |
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); | |
function elasticInOut(t) { | |
return ((t = t * 2 - 1) < 0 | |
? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) | |
: 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2; | |
} | |
elasticInOut.amplitude = function(a) { return custom(a, p * tau); }; | |
elasticInOut.period = function(p) { return custom(a, p); }; | |
return elasticInOut; | |
})(amplitude, period); | |
var defaultTiming = { | |
time: null, // Set on use. | |
delay: 0, | |
duration: 250, | |
ease: cubicInOut | |
}; | |
function inherit(node, id) { | |
var timing; | |
while (!(timing = node.__transition) || !(timing = timing[id])) { | |
if (!(node = node.parentNode)) { | |
return defaultTiming.time = now(), defaultTiming; | |
} | |
} | |
return timing; | |
} | |
var selection_transition = function(name) { | |
var id, | |
timing; | |
if (name instanceof Transition) { | |
id = name._id, name = name._name; | |
} else { | |
id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; | |
} | |
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { | |
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { | |
if (node = group[i]) { | |
schedule(node, name, id, i, group, timing || inherit(node, id)); | |
} | |
} | |
} | |
return new Transition(groups, this._parents, name, id); | |
}; | |
selection.prototype.interrupt = selection_interrupt; | |
selection.prototype.transition = selection_transition; | |
var root$1 = [null]; | |
var active = function(node, name) { | |
var schedules = node.__transition, | |
schedule, | |
i; | |
if (schedules) { | |
name = name == null ? null : name + ""; | |
for (i in schedules) { | |
if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) { | |
return new Transition([[node]], root$1, name, +i); | |
} | |
} | |
} | |
return null; | |
}; | |
var constant$4 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var BrushEvent = function(target, type, selection) { | |
this.target = target; | |
this.type = type; | |
this.selection = selection; | |
}; | |
function nopropagation$1() { | |
exports.event.stopImmediatePropagation(); | |
} | |
var noevent$1 = function() { | |
exports.event.preventDefault(); | |
exports.event.stopImmediatePropagation(); | |
}; | |
var MODE_DRAG = {name: "drag"}; | |
var MODE_SPACE = {name: "space"}; | |
var MODE_HANDLE = {name: "handle"}; | |
var MODE_CENTER = {name: "center"}; | |
var X = { | |
name: "x", | |
handles: ["e", "w"].map(type), | |
input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; }, | |
output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } | |
}; | |
var Y = { | |
name: "y", | |
handles: ["n", "s"].map(type), | |
input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; }, | |
output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } | |
}; | |
var XY = { | |
name: "xy", | |
handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(type), | |
input: function(xy) { return xy; }, | |
output: function(xy) { return xy; } | |
}; | |
var cursors = { | |
overlay: "crosshair", | |
selection: "move", | |
n: "ns-resize", | |
e: "ew-resize", | |
s: "ns-resize", | |
w: "ew-resize", | |
nw: "nwse-resize", | |
ne: "nesw-resize", | |
se: "nwse-resize", | |
sw: "nesw-resize" | |
}; | |
var flipX = { | |
e: "w", | |
w: "e", | |
nw: "ne", | |
ne: "nw", | |
se: "sw", | |
sw: "se" | |
}; | |
var flipY = { | |
n: "s", | |
s: "n", | |
nw: "sw", | |
ne: "se", | |
se: "ne", | |
sw: "nw" | |
}; | |
var signsX = { | |
overlay: +1, | |
selection: +1, | |
n: null, | |
e: +1, | |
s: null, | |
w: -1, | |
nw: -1, | |
ne: +1, | |
se: +1, | |
sw: -1 | |
}; | |
var signsY = { | |
overlay: +1, | |
selection: +1, | |
n: -1, | |
e: null, | |
s: +1, | |
w: null, | |
nw: -1, | |
ne: -1, | |
se: +1, | |
sw: +1 | |
}; | |
function type(t) { | |
return {type: t}; | |
} | |
// Ignore right-click, since that should open the context menu. | |
function defaultFilter() { | |
return !exports.event.button; | |
} | |
function defaultExtent() { | |
var svg = this.ownerSVGElement || this; | |
return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; | |
} | |
// Like d3.local, but with the name “__brush” rather than auto-generated. | |
function local$$1(node) { | |
while (!node.__brush) if (!(node = node.parentNode)) return; | |
return node.__brush; | |
} | |
function empty(extent) { | |
return extent[0][0] === extent[1][0] | |
|| extent[0][1] === extent[1][1]; | |
} | |
function brushSelection(node) { | |
var state = node.__brush; | |
return state ? state.dim.output(state.selection) : null; | |
} | |
function brushX() { | |
return brush$1(X); | |
} | |
function brushY() { | |
return brush$1(Y); | |
} | |
var brush = function() { | |
return brush$1(XY); | |
}; | |
function brush$1(dim) { | |
var extent = defaultExtent, | |
filter = defaultFilter, | |
listeners = dispatch(brush, "start", "brush", "end"), | |
handleSize = 6, | |
touchending; | |
function brush(group) { | |
var overlay = group | |
.property("__brush", initialize) | |
.selectAll(".overlay") | |
.data([type("overlay")]); | |
overlay.enter().append("rect") | |
.attr("class", "overlay") | |
.attr("pointer-events", "all") | |
.attr("cursor", cursors.overlay) | |
.merge(overlay) | |
.each(function() { | |
var extent = local$$1(this).extent; | |
select(this) | |
.attr("x", extent[0][0]) | |
.attr("y", extent[0][1]) | |
.attr("width", extent[1][0] - extent[0][0]) | |
.attr("height", extent[1][1] - extent[0][1]); | |
}); | |
group.selectAll(".selection") | |
.data([type("selection")]) | |
.enter().append("rect") | |
.attr("class", "selection") | |
.attr("cursor", cursors.selection) | |
.attr("fill", "#777") | |
.attr("fill-opacity", 0.3) | |
.attr("stroke", "#fff") | |
.attr("shape-rendering", "crispEdges"); | |
var handle = group.selectAll(".handle") | |
.data(dim.handles, function(d) { return d.type; }); | |
handle.exit().remove(); | |
handle.enter().append("rect") | |
.attr("class", function(d) { return "handle handle--" + d.type; }) | |
.attr("cursor", function(d) { return cursors[d.type]; }); | |
group | |
.each(redraw) | |
.attr("fill", "none") | |
.attr("pointer-events", "all") | |
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") | |
.on("mousedown.brush touchstart.brush", started); | |
} | |
brush.move = function(group, selection$$1) { | |
if (group.selection) { | |
group | |
.on("start.brush", function() { emitter(this, arguments).beforestart().start(); }) | |
.on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); }) | |
.tween("brush", function() { | |
var that = this, | |
state = that.__brush, | |
emit = emitter(that, arguments), | |
selection0 = state.selection, | |
selection1 = dim.input(typeof selection$$1 === "function" ? selection$$1.apply(this, arguments) : selection$$1, state.extent), | |
i = interpolateValue(selection0, selection1); | |
function tween(t) { | |
state.selection = t === 1 && empty(selection1) ? null : i(t); | |
redraw.call(that); | |
emit.brush(); | |
} | |
return selection0 && selection1 ? tween : tween(1); | |
}); | |
} else { | |
group | |
.each(function() { | |
var that = this, | |
args = arguments, | |
state = that.__brush, | |
selection1 = dim.input(typeof selection$$1 === "function" ? selection$$1.apply(that, args) : selection$$1, state.extent), | |
emit = emitter(that, args).beforestart(); | |
interrupt(that); | |
state.selection = selection1 == null || empty(selection1) ? null : selection1; | |
redraw.call(that); | |
emit.start().brush().end(); | |
}); | |
} | |
}; | |
function redraw() { | |
var group = select(this), | |
selection$$1 = local$$1(this).selection; | |
if (selection$$1) { | |
group.selectAll(".selection") | |
.style("display", null) | |
.attr("x", selection$$1[0][0]) | |
.attr("y", selection$$1[0][1]) | |
.attr("width", selection$$1[1][0] - selection$$1[0][0]) | |
.attr("height", selection$$1[1][1] - selection$$1[0][1]); | |
group.selectAll(".handle") | |
.style("display", null) | |
.attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection$$1[1][0] - handleSize / 2 : selection$$1[0][0] - handleSize / 2; }) | |
.attr("y", function(d) { return d.type[0] === "s" ? selection$$1[1][1] - handleSize / 2 : selection$$1[0][1] - handleSize / 2; }) | |
.attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection$$1[1][0] - selection$$1[0][0] + handleSize : handleSize; }) | |
.attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection$$1[1][1] - selection$$1[0][1] + handleSize : handleSize; }); | |
} | |
else { | |
group.selectAll(".selection,.handle") | |
.style("display", "none") | |
.attr("x", null) | |
.attr("y", null) | |
.attr("width", null) | |
.attr("height", null); | |
} | |
} | |
function emitter(that, args) { | |
return that.__brush.emitter || new Emitter(that, args); | |
} | |
function Emitter(that, args) { | |
this.that = that; | |
this.args = args; | |
this.state = that.__brush; | |
this.active = 0; | |
} | |
Emitter.prototype = { | |
beforestart: function() { | |
if (++this.active === 1) this.state.emitter = this, this.starting = true; | |
return this; | |
}, | |
start: function() { | |
if (this.starting) this.starting = false, this.emit("start"); | |
return this; | |
}, | |
brush: function() { | |
this.emit("brush"); | |
return this; | |
}, | |
end: function() { | |
if (--this.active === 0) delete this.state.emitter, this.emit("end"); | |
return this; | |
}, | |
emit: function(type) { | |
customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]); | |
} | |
}; | |
function started() { | |
if (exports.event.touches) { if (exports.event.changedTouches.length < exports.event.touches.length) return noevent$1(); } | |
else if (touchending) return; | |
if (!filter.apply(this, arguments)) return; | |
var that = this, | |
type = exports.event.target.__data__.type, | |
mode = (exports.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (exports.event.altKey ? MODE_CENTER : MODE_HANDLE), | |
signX = dim === Y ? null : signsX[type], | |
signY = dim === X ? null : signsY[type], | |
state = local$$1(that), | |
extent = state.extent, | |
selection$$1 = state.selection, | |
W = extent[0][0], w0, w1, | |
N = extent[0][1], n0, n1, | |
E = extent[1][0], e0, e1, | |
S = extent[1][1], s0, s1, | |
dx, | |
dy, | |
moving, | |
shifting = signX && signY && exports.event.shiftKey, | |
lockX, | |
lockY, | |
point0 = mouse(that), | |
point = point0, | |
emit = emitter(that, arguments).beforestart(); | |
if (type === "overlay") { | |
state.selection = selection$$1 = [ | |
[w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]], | |
[e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0] | |
]; | |
} else { | |
w0 = selection$$1[0][0]; | |
n0 = selection$$1[0][1]; | |
e0 = selection$$1[1][0]; | |
s0 = selection$$1[1][1]; | |
} | |
w1 = w0; | |
n1 = n0; | |
e1 = e0; | |
s1 = s0; | |
var group = select(that) | |
.attr("pointer-events", "none"); | |
var overlay = group.selectAll(".overlay") | |
.attr("cursor", cursors[type]); | |
if (exports.event.touches) { | |
group | |
.on("touchmove.brush", moved, true) | |
.on("touchend.brush touchcancel.brush", ended, true); | |
} else { | |
var view = select(exports.event.view) | |
.on("keydown.brush", keydowned, true) | |
.on("keyup.brush", keyupped, true) | |
.on("mousemove.brush", moved, true) | |
.on("mouseup.brush", ended, true); | |
dragDisable(exports.event.view); | |
} | |
nopropagation$1(); | |
interrupt(that); | |
redraw.call(that); | |
emit.start(); | |
function moved() { | |
var point1 = mouse(that); | |
if (shifting && !lockX && !lockY) { | |
if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true; | |
else lockX = true; | |
} | |
point = point1; | |
moving = true; | |
noevent$1(); | |
move(); | |
} | |
function move() { | |
var t; | |
dx = point[0] - point0[0]; | |
dy = point[1] - point0[1]; | |
switch (mode) { | |
case MODE_SPACE: | |
case MODE_DRAG: { | |
if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; | |
if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; | |
break; | |
} | |
case MODE_HANDLE: { | |
if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0; | |
else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx; | |
if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0; | |
else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy; | |
break; | |
} | |
case MODE_CENTER: { | |
if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX)); | |
if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY)); | |
break; | |
} | |
} | |
if (e1 < w1) { | |
signX *= -1; | |
t = w0, w0 = e0, e0 = t; | |
t = w1, w1 = e1, e1 = t; | |
if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); | |
} | |
if (s1 < n1) { | |
signY *= -1; | |
t = n0, n0 = s0, s0 = t; | |
t = n1, n1 = s1, s1 = t; | |
if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); | |
} | |
if (state.selection) selection$$1 = state.selection; // May be set by brush.move! | |
if (lockX) w1 = selection$$1[0][0], e1 = selection$$1[1][0]; | |
if (lockY) n1 = selection$$1[0][1], s1 = selection$$1[1][1]; | |
if (selection$$1[0][0] !== w1 | |
|| selection$$1[0][1] !== n1 | |
|| selection$$1[1][0] !== e1 | |
|| selection$$1[1][1] !== s1) { | |
state.selection = [[w1, n1], [e1, s1]]; | |
redraw.call(that); | |
emit.brush(); | |
} | |
} | |
function ended() { | |
nopropagation$1(); | |
if (exports.event.touches) { | |
if (exports.event.touches.length) return; | |
if (touchending) clearTimeout(touchending); | |
touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! | |
group.on("touchmove.brush touchend.brush touchcancel.brush", null); | |
} else { | |
yesdrag(exports.event.view, moving); | |
view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); | |
} | |
group.attr("pointer-events", "all"); | |
overlay.attr("cursor", cursors.overlay); | |
if (state.selection) selection$$1 = state.selection; // May be set by brush.move (on start)! | |
if (empty(selection$$1)) state.selection = null, redraw.call(that); | |
emit.end(); | |
} | |
function keydowned() { | |
switch (exports.event.keyCode) { | |
case 16: { // SHIFT | |
shifting = signX && signY; | |
break; | |
} | |
case 18: { // ALT | |
if (mode === MODE_HANDLE) { | |
if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; | |
if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; | |
mode = MODE_CENTER; | |
move(); | |
} | |
break; | |
} | |
case 32: { // SPACE; takes priority over ALT | |
if (mode === MODE_HANDLE || mode === MODE_CENTER) { | |
if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; | |
if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; | |
mode = MODE_SPACE; | |
overlay.attr("cursor", cursors.selection); | |
move(); | |
} | |
break; | |
} | |
default: return; | |
} | |
noevent$1(); | |
} | |
function keyupped() { | |
switch (exports.event.keyCode) { | |
case 16: { // SHIFT | |
if (shifting) { | |
lockX = lockY = shifting = false; | |
move(); | |
} | |
break; | |
} | |
case 18: { // ALT | |
if (mode === MODE_CENTER) { | |
if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; | |
if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; | |
mode = MODE_HANDLE; | |
move(); | |
} | |
break; | |
} | |
case 32: { // SPACE | |
if (mode === MODE_SPACE) { | |
if (exports.event.altKey) { | |
if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; | |
if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; | |
mode = MODE_CENTER; | |
} else { | |
if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; | |
if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; | |
mode = MODE_HANDLE; | |
} | |
overlay.attr("cursor", cursors[type]); | |
move(); | |
} | |
break; | |
} | |
default: return; | |
} | |
noevent$1(); | |
} | |
} | |
function initialize() { | |
var state = this.__brush || {selection: null}; | |
state.extent = extent.apply(this, arguments); | |
state.dim = dim; | |
return state; | |
} | |
brush.extent = function(_) { | |
return arguments.length ? (extent = typeof _ === "function" ? _ : constant$4([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent; | |
}; | |
brush.filter = function(_) { | |
return arguments.length ? (filter = typeof _ === "function" ? _ : constant$4(!!_), brush) : filter; | |
}; | |
brush.handleSize = function(_) { | |
return arguments.length ? (handleSize = +_, brush) : handleSize; | |
}; | |
brush.on = function() { | |
var value = listeners.on.apply(listeners, arguments); | |
return value === listeners ? brush : value; | |
}; | |
return brush; | |
} | |
var ascending$2 = function(a, b) { | |
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; | |
}; | |
var bisector$1 = function(compare) { | |
if (compare.length === 1) compare = ascendingComparator$1(compare); | |
return { | |
left: function(a, x, lo, hi) { | |
if (lo == null) lo = 0; | |
if (hi == null) hi = a.length; | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (compare(a[mid], x) < 0) lo = mid + 1; | |
else hi = mid; | |
} | |
return lo; | |
}, | |
right: function(a, x, lo, hi) { | |
if (lo == null) lo = 0; | |
if (hi == null) hi = a.length; | |
while (lo < hi) { | |
var mid = lo + hi >>> 1; | |
if (compare(a[mid], x) > 0) hi = mid; | |
else lo = mid + 1; | |
} | |
return lo; | |
} | |
}; | |
}; | |
function ascendingComparator$1(f) { | |
return function(d, x) { | |
return ascending$2(f(d), x); | |
}; | |
} | |
var ascendingBisect$1 = bisector$1(ascending$2); | |
var bisectRight$1 = ascendingBisect$1.right; | |
function pair$1(a, b) { | |
return [a, b]; | |
} | |
var number$2 = function(x) { | |
return x === null ? NaN : +x; | |
}; | |
var extent$1 = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
min, | |
max; | |
if (valueof == null) { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = values[i]) != null && value >= value) { | |
min = max = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = values[i]) != null) { | |
if (min > value) min = value; | |
if (max < value) max = value; | |
} | |
} | |
} | |
} | |
} | |
else { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = valueof(values[i], i, values)) != null && value >= value) { | |
min = max = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = valueof(values[i], i, values)) != null) { | |
if (min > value) min = value; | |
if (max < value) max = value; | |
} | |
} | |
} | |
} | |
} | |
return [min, max]; | |
}; | |
var identity$3 = function(x) { | |
return x; | |
}; | |
var sequence = function(start, stop, step) { | |
start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; | |
var i = -1, | |
n = Math.max(0, Math.ceil((stop - start) / step)) | 0, | |
range = new Array(n); | |
while (++i < n) { | |
range[i] = start + i * step; | |
} | |
return range; | |
}; | |
var e10$1 = Math.sqrt(50); | |
var e5$1 = Math.sqrt(10); | |
var e2$1 = Math.sqrt(2); | |
var ticks$1 = function(start, stop, count) { | |
var reverse, | |
i = -1, | |
n, | |
ticks, | |
step; | |
stop = +stop, start = +start, count = +count; | |
if (start === stop && count > 0) return [start]; | |
if (reverse = stop < start) n = start, start = stop, stop = n; | |
if ((step = tickIncrement$1(start, stop, count)) === 0 || !isFinite(step)) return []; | |
if (step > 0) { | |
start = Math.ceil(start / step); | |
stop = Math.floor(stop / step); | |
ticks = new Array(n = Math.ceil(stop - start + 1)); | |
while (++i < n) ticks[i] = (start + i) * step; | |
} else { | |
start = Math.floor(start * step); | |
stop = Math.ceil(stop * step); | |
ticks = new Array(n = Math.ceil(start - stop + 1)); | |
while (++i < n) ticks[i] = (start - i) / step; | |
} | |
if (reverse) ticks.reverse(); | |
return ticks; | |
}; | |
function tickIncrement$1(start, stop, count) { | |
var step = (stop - start) / Math.max(0, count), | |
power = Math.floor(Math.log(step) / Math.LN10), | |
error = step / Math.pow(10, power); | |
return power >= 0 | |
? (error >= e10$1 ? 10 : error >= e5$1 ? 5 : error >= e2$1 ? 2 : 1) * Math.pow(10, power) | |
: -Math.pow(10, -power) / (error >= e10$1 ? 10 : error >= e5$1 ? 5 : error >= e2$1 ? 2 : 1); | |
} | |
function tickStep$1(start, stop, count) { | |
var step0 = Math.abs(stop - start) / Math.max(0, count), | |
step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), | |
error = step0 / step1; | |
if (error >= e10$1) step1 *= 10; | |
else if (error >= e5$1) step1 *= 5; | |
else if (error >= e2$1) step1 *= 2; | |
return stop < start ? -step1 : step1; | |
} | |
var sturges$1 = function(values) { | |
return Math.ceil(Math.log(values.length) / Math.LN2) + 1; | |
}; | |
var threshold = function(values, p, valueof) { | |
if (valueof == null) valueof = number$2; | |
if (!(n = values.length)) return; | |
if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); | |
if (p >= 1) return +valueof(values[n - 1], n - 1, values); | |
var n, | |
i = (n - 1) * p, | |
i0 = Math.floor(i), | |
value0 = +valueof(values[i0], i0, values), | |
value1 = +valueof(values[i0 + 1], i0 + 1, values); | |
return value0 + (value1 - value0) * (i - i0); | |
}; | |
var merge$1 = function(arrays) { | |
var n = arrays.length, | |
m, | |
i = -1, | |
j = 0, | |
merged, | |
array; | |
while (++i < n) j += arrays[i].length; | |
merged = new Array(j); | |
while (--n >= 0) { | |
array = arrays[n]; | |
m = array.length; | |
while (--m >= 0) { | |
merged[--j] = array[m]; | |
} | |
} | |
return merged; | |
}; | |
var min$1 = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
min; | |
if (valueof == null) { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = values[i]) != null && value >= value) { | |
min = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = values[i]) != null && min > value) { | |
min = value; | |
} | |
} | |
} | |
} | |
} | |
else { | |
while (++i < n) { // Find the first comparable value. | |
if ((value = valueof(values[i], i, values)) != null && value >= value) { | |
min = value; | |
while (++i < n) { // Compare the remaining values. | |
if ((value = valueof(values[i], i, values)) != null && min > value) { | |
min = value; | |
} | |
} | |
} | |
} | |
} | |
return min; | |
}; | |
var sum$1 = function(values, valueof) { | |
var n = values.length, | |
i = -1, | |
value, | |
sum = 0; | |
if (valueof == null) { | |
while (++i < n) { | |
if (value = +values[i]) sum += value; // Note: zero and null are equivalent. | |
} | |
} | |
else { | |
while (++i < n) { | |
if (value = +valueof(values[i], i, values)) sum += value; | |
} | |
} | |
return sum; | |
}; | |
function length$1(d) { | |
return d.length; | |
} | |
var cos = Math.cos; | |
var sin = Math.sin; | |
var pi$1 = Math.PI; | |
var halfPi$1 = pi$1 / 2; | |
var tau$1 = pi$1 * 2; | |
var max$2 = Math.max; | |
function compareValue(compare) { | |
return function(a, b) { | |
return compare( | |
a.source.value + a.target.value, | |
b.source.value + b.target.value | |
); | |
}; | |
} | |
var chord = function() { | |
var padAngle = 0, | |
sortGroups = null, | |
sortSubgroups = null, | |
sortChords = null; | |
function chord(matrix) { | |
var n = matrix.length, | |
groupSums = [], | |
groupIndex = sequence(n), | |
subgroupIndex = [], | |
chords = [], | |
groups = chords.groups = new Array(n), | |
subgroups = new Array(n * n), | |
k, | |
x, | |
x0, | |
dx, | |
i, | |
j; | |
// Compute the sum. | |
k = 0, i = -1; while (++i < n) { | |
x = 0, j = -1; while (++j < n) { | |
x += matrix[i][j]; | |
} | |
groupSums.push(x); | |
subgroupIndex.push(sequence(n)); | |
k += x; | |
} | |
// Sort groups… | |
if (sortGroups) groupIndex.sort(function(a, b) { | |
return sortGroups(groupSums[a], groupSums[b]); | |
}); | |
// Sort subgroups… | |
if (sortSubgroups) subgroupIndex.forEach(function(d, i) { | |
d.sort(function(a, b) { | |
return sortSubgroups(matrix[i][a], matrix[i][b]); | |
}); | |
}); | |
// Convert the sum to scaling factor for [0, 2pi]. | |
// TODO Allow start and end angle to be specified? | |
// TODO Allow padding to be specified as percentage? | |
k = max$2(0, tau$1 - padAngle * n) / k; | |
dx = k ? padAngle : tau$1 / n; | |
// Compute the start and end angle for each group and subgroup. | |
// Note: Opera has a bug reordering object literal properties! | |
x = 0, i = -1; while (++i < n) { | |
x0 = x, j = -1; while (++j < n) { | |
var di = groupIndex[i], | |
dj = subgroupIndex[di][j], | |
v = matrix[di][dj], | |
a0 = x, | |
a1 = x += v * k; | |
subgroups[dj * n + di] = { | |
index: di, | |
subindex: dj, | |
startAngle: a0, | |
endAngle: a1, | |
value: v | |
}; | |
} | |
groups[di] = { | |
index: di, | |
startAngle: x0, | |
endAngle: x, | |
value: groupSums[di] | |
}; | |
x += dx; | |
} | |
// Generate chords for each (non-empty) subgroup-subgroup link. | |
i = -1; while (++i < n) { | |
j = i - 1; while (++j < n) { | |
var source = subgroups[j * n + i], | |
target = subgroups[i * n + j]; | |
if (source.value || target.value) { | |
chords.push(source.value < target.value | |
? {source: target, target: source} | |
: {source: source, target: target}); | |
} | |
} | |
} | |
return sortChords ? chords.sort(sortChords) : chords; | |
} | |
chord.padAngle = function(_) { | |
return arguments.length ? (padAngle = max$2(0, _), chord) : padAngle; | |
}; | |
chord.sortGroups = function(_) { | |
return arguments.length ? (sortGroups = _, chord) : sortGroups; | |
}; | |
chord.sortSubgroups = function(_) { | |
return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; | |
}; | |
chord.sortChords = function(_) { | |
return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; | |
}; | |
return chord; | |
}; | |
var slice$3 = Array.prototype.slice; | |
var constant$6 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var pi$2 = Math.PI; | |
var tau$2 = 2 * pi$2; | |
var epsilon$1 = 1e-6; | |
var tauEpsilon = tau$2 - epsilon$1; | |
function Path() { | |
this._x0 = this._y0 = // start of current subpath | |
this._x1 = this._y1 = null; // end of current subpath | |
this._ = ""; | |
} | |
function path() { | |
return new Path; | |
} | |
Path.prototype = path.prototype = { | |
constructor: Path, | |
moveTo: function(x, y) { | |
this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); | |
}, | |
closePath: function() { | |
if (this._x1 !== null) { | |
this._x1 = this._x0, this._y1 = this._y0; | |
this._ += "Z"; | |
} | |
}, | |
lineTo: function(x, y) { | |
this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); | |
}, | |
quadraticCurveTo: function(x1, y1, x, y) { | |
this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); | |
}, | |
bezierCurveTo: function(x1, y1, x2, y2, x, y) { | |
this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); | |
}, | |
arcTo: function(x1, y1, x2, y2, r) { | |
x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; | |
var x0 = this._x1, | |
y0 = this._y1, | |
x21 = x2 - x1, | |
y21 = y2 - y1, | |
x01 = x0 - x1, | |
y01 = y0 - y1, | |
l01_2 = x01 * x01 + y01 * y01; | |
// Is the radius negative? Error. | |
if (r < 0) throw new Error("negative radius: " + r); | |
// Is this path empty? Move to (x1,y1). | |
if (this._x1 === null) { | |
this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); | |
} | |
// Or, is (x1,y1) coincident with (x0,y0)? Do nothing. | |
else if (!(l01_2 > epsilon$1)) {} | |
// Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? | |
// Equivalently, is (x1,y1) coincident with (x2,y2)? | |
// Or, is the radius zero? Line to (x1,y1). | |
else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) { | |
this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); | |
} | |
// Otherwise, draw an arc! | |
else { | |
var x20 = x2 - x0, | |
y20 = y2 - y0, | |
l21_2 = x21 * x21 + y21 * y21, | |
l20_2 = x20 * x20 + y20 * y20, | |
l21 = Math.sqrt(l21_2), | |
l01 = Math.sqrt(l01_2), | |
l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), | |
t01 = l / l01, | |
t21 = l / l21; | |
// If the start tangent is not coincident with (x0,y0), line to. | |
if (Math.abs(t01 - 1) > epsilon$1) { | |
this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); | |
} | |
this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); | |
} | |
}, | |
arc: function(x, y, r, a0, a1, ccw) { | |
x = +x, y = +y, r = +r; | |
var dx = r * Math.cos(a0), | |
dy = r * Math.sin(a0), | |
x0 = x + dx, | |
y0 = y + dy, | |
cw = 1 ^ ccw, | |
da = ccw ? a0 - a1 : a1 - a0; | |
// Is the radius negative? Error. | |
if (r < 0) throw new Error("negative radius: " + r); | |
// Is this path empty? Move to (x0,y0). | |
if (this._x1 === null) { | |
this._ += "M" + x0 + "," + y0; | |
} | |
// Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). | |
else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) { | |
this._ += "L" + x0 + "," + y0; | |
} | |
// Is this arc empty? We’re done. | |
if (!r) return; | |
// Does the angle go the wrong way? Flip the direction. | |
if (da < 0) da = da % tau$2 + tau$2; | |
// Is this a complete circle? Draw two arcs to complete the circle. | |
if (da > tauEpsilon) { | |
this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); | |
} | |
// Is this arc non-empty? Draw an arc! | |
else if (da > epsilon$1) { | |
this._ += "A" + r + "," + r + ",0," + (+(da >= pi$2)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); | |
} | |
}, | |
rect: function(x, y, w, h) { | |
this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; | |
}, | |
toString: function() { | |
return this._; | |
} | |
}; | |
function defaultSource(d) { | |
return d.source; | |
} | |
function defaultTarget(d) { | |
return d.target; | |
} | |
function defaultRadius(d) { | |
return d.radius; | |
} | |
function defaultStartAngle(d) { | |
return d.startAngle; | |
} | |
function defaultEndAngle(d) { | |
return d.endAngle; | |
} | |
var ribbon = function() { | |
var source = defaultSource, | |
target = defaultTarget, | |
radius = defaultRadius, | |
startAngle = defaultStartAngle, | |
endAngle = defaultEndAngle, | |
context = null; | |
function ribbon() { | |
var buffer, | |
argv = slice$3.call(arguments), | |
s = source.apply(this, argv), | |
t = target.apply(this, argv), | |
sr = +radius.apply(this, (argv[0] = s, argv)), | |
sa0 = startAngle.apply(this, argv) - halfPi$1, | |
sa1 = endAngle.apply(this, argv) - halfPi$1, | |
sx0 = sr * cos(sa0), | |
sy0 = sr * sin(sa0), | |
tr = +radius.apply(this, (argv[0] = t, argv)), | |
ta0 = startAngle.apply(this, argv) - halfPi$1, | |
ta1 = endAngle.apply(this, argv) - halfPi$1; | |
if (!context) context = buffer = path(); | |
context.moveTo(sx0, sy0); | |
context.arc(0, 0, sr, sa0, sa1); | |
if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr? | |
context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0)); | |
context.arc(0, 0, tr, ta0, ta1); | |
} | |
context.quadraticCurveTo(0, 0, sx0, sy0); | |
context.closePath(); | |
if (buffer) return context = null, buffer + "" || null; | |
} | |
ribbon.radius = function(_) { | |
return arguments.length ? (radius = typeof _ === "function" ? _ : constant$6(+_), ribbon) : radius; | |
}; | |
ribbon.startAngle = function(_) { | |
return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : startAngle; | |
}; | |
ribbon.endAngle = function(_) { | |
return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$6(+_), ribbon) : endAngle; | |
}; | |
ribbon.source = function(_) { | |
return arguments.length ? (source = _, ribbon) : source; | |
}; | |
ribbon.target = function(_) { | |
return arguments.length ? (target = _, ribbon) : target; | |
}; | |
ribbon.context = function(_) { | |
return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; | |
}; | |
return ribbon; | |
}; | |
var prefix = "$"; | |
function Map() {} | |
Map.prototype = map$2.prototype = { | |
constructor: Map, | |
has: function(key) { | |
return (prefix + key) in this; | |
}, | |
get: function(key) { | |
return this[prefix + key]; | |
}, | |
set: function(key, value) { | |
this[prefix + key] = value; | |
return this; | |
}, | |
remove: function(key) { | |
var property = prefix + key; | |
return property in this && delete this[property]; | |
}, | |
clear: function() { | |
for (var property in this) if (property[0] === prefix) delete this[property]; | |
}, | |
keys: function() { | |
var keys = []; | |
for (var property in this) if (property[0] === prefix) keys.push(property.slice(1)); | |
return keys; | |
}, | |
values: function() { | |
var values = []; | |
for (var property in this) if (property[0] === prefix) values.push(this[property]); | |
return values; | |
}, | |
entries: function() { | |
var entries = []; | |
for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]}); | |
return entries; | |
}, | |
size: function() { | |
var size = 0; | |
for (var property in this) if (property[0] === prefix) ++size; | |
return size; | |
}, | |
empty: function() { | |
for (var property in this) if (property[0] === prefix) return false; | |
return true; | |
}, | |
each: function(f) { | |
for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this); | |
} | |
}; | |
function map$2(object, f) { | |
var map = new Map; | |
// Copy constructor. | |
if (object instanceof Map) object.each(function(value, key) { map.set(key, value); }); | |
// Index array by numeric index or specified key function. | |
else if (Array.isArray(object)) { | |
var i = -1, | |
n = object.length, | |
o; | |
if (f == null) while (++i < n) map.set(i, object[i]); | |
else while (++i < n) map.set(f(o = object[i], i, object), o); | |
} | |
// Convert object to map. | |
else if (object) for (var key in object) map.set(key, object[key]); | |
return map; | |
} | |
var nest = function() { | |
var keys = [], | |
sortKeys = [], | |
sortValues, | |
rollup, | |
nest; | |
function apply(array, depth, createResult, setResult) { | |
if (depth >= keys.length) { | |
if (sortValues != null) array.sort(sortValues); | |
return rollup != null ? rollup(array) : array; | |
} | |
var i = -1, | |
n = array.length, | |
key = keys[depth++], | |
keyValue, | |
value, | |
valuesByKey = map$2(), | |
values, | |
result = createResult(); | |
while (++i < n) { | |
if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) { | |
values.push(value); | |
} else { | |
valuesByKey.set(keyValue, [value]); | |
} | |
} | |
valuesByKey.each(function(values, key) { | |
setResult(result, key, apply(values, depth, createResult, setResult)); | |
}); | |
return result; | |
} | |
function entries(map, depth) { | |
if (++depth > keys.length) return map; | |
var array, sortKey = sortKeys[depth - 1]; | |
if (rollup != null && depth >= keys.length) array = map.entries(); | |
else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); }); | |
return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array; | |
} | |
return nest = { | |
object: function(array) { return apply(array, 0, createObject, setObject); }, | |
map: function(array) { return apply(array, 0, createMap, setMap); }, | |
entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); }, | |
key: function(d) { keys.push(d); return nest; }, | |
sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; }, | |
sortValues: function(order) { sortValues = order; return nest; }, | |
rollup: function(f) { rollup = f; return nest; } | |
}; | |
}; | |
function createObject() { | |
return {}; | |
} | |
function setObject(object, key, value) { | |
object[key] = value; | |
} | |
function createMap() { | |
return map$2(); | |
} | |
function setMap(map, key, value) { | |
map.set(key, value); | |
} | |
function Set() {} | |
var proto = map$2.prototype; | |
Set.prototype = set$2.prototype = { | |
constructor: Set, | |
has: proto.has, | |
add: function(value) { | |
value += ""; | |
this[prefix + value] = value; | |
return this; | |
}, | |
remove: proto.remove, | |
clear: proto.clear, | |
values: proto.keys, | |
size: proto.size, | |
empty: proto.empty, | |
each: proto.each | |
}; | |
function set$2(object, f) { | |
var set = new Set; | |
// Copy constructor. | |
if (object instanceof Set) object.each(function(value) { set.add(value); }); | |
// Otherwise, assume it’s an array. | |
else if (object) { | |
var i = -1, n = object.length; | |
if (f == null) while (++i < n) set.add(object[i]); | |
else while (++i < n) set.add(f(object[i], i, object)); | |
} | |
return set; | |
} | |
var d3keys = function(map) { | |
var keys = []; | |
for (var key in map) keys.push(key); | |
return keys; | |
}; | |
var values = function(map) { | |
var values = []; | |
for (var key in map) values.push(map[key]); | |
return values; | |
}; | |
var entries = function(map) { | |
var entries = []; | |
for (var key in map) entries.push({key: key, value: map[key]}); | |
return entries; | |
}; | |
var EOL = {}; | |
var EOF = {}; | |
var QUOTE = 34; | |
var NEWLINE = 10; | |
var RETURN = 13; | |
function objectConverter(columns) { | |
return new Function("d", "return {" + columns.map(function(name, i) { | |
return JSON.stringify(name) + ": d[" + i + "]"; | |
}).join(",") + "}"); | |
} | |
function customConverter(columns, f) { | |
var object = objectConverter(columns); | |
return function(row, i) { | |
return f(object(row), i, columns); | |
}; | |
} | |
// Compute unique columns in order of discovery. | |
function inferColumns(rows) { | |
var columnSet = Object.create(null), | |
columns = []; | |
rows.forEach(function(row) { | |
for (var column in row) { | |
if (!(column in columnSet)) { | |
columns.push(columnSet[column] = column); | |
} | |
} | |
}); | |
return columns; | |
} | |
var dsv = function(delimiter) { | |
var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), | |
DELIMITER = delimiter.charCodeAt(0); | |
function parse(text, f) { | |
var convert, columns, rows = parseRows(text, function(row, i) { | |
if (convert) return convert(row, i - 1); | |
columns = row, convert = f ? customConverter(row, f) : objectConverter(row); | |
}); | |
rows.columns = columns; | |
return rows; | |
} | |
function parseRows(text, f) { | |
var rows = [], // output rows | |
N = text.length, | |
I = 0, // current character index | |
n = 0, // current line number | |
t, // current token | |
eof = N <= 0, // current token followed by EOF? | |
eol = false; // current token followed by EOL? | |
// Strip the trailing newline. | |
if (text.charCodeAt(N - 1) === NEWLINE) --N; | |
if (text.charCodeAt(N - 1) === RETURN) --N; | |
function token() { | |
if (eof) return EOF; | |
if (eol) return eol = false, EOL; | |
// Unescape quotes. | |
var i, j = I, c; | |
if (text.charCodeAt(j) === QUOTE) { | |
while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); | |
if ((i = I) >= N) eof = true; | |
else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; | |
else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } | |
return text.slice(j + 1, i - 1).replace(/""/g, "\""); | |
} | |
// Find next delimiter or newline. | |
while (I < N) { | |
if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; | |
else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } | |
else if (c !== DELIMITER) continue; | |
return text.slice(j, i); | |
} | |
// Return last token before EOF. | |
return eof = true, text.slice(j, N); | |
} | |
while ((t = token()) !== EOF) { | |
var row = []; | |
while (t !== EOL && t !== EOF) row.push(t), t = token(); | |
if (f && (row = f(row, n++)) == null) continue; | |
rows.push(row); | |
} | |
return rows; | |
} | |
function format(rows, columns) { | |
if (columns == null) columns = inferColumns(rows); | |
return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) { | |
return columns.map(function(column) { | |
return formatValue(row[column]); | |
}).join(delimiter); | |
})).join("\n"); | |
} | |
function formatRows(rows) { | |
return rows.map(formatRow).join("\n"); | |
} | |
function formatRow(row) { | |
return row.map(formatValue).join(delimiter); | |
} | |
function formatValue(text) { | |
return text == null ? "" | |
: reFormat.test(text += "") ? "\"" + text.replace(/"/g, "\"\"") + "\"" | |
: text; | |
} | |
return { | |
parse: parse, | |
parseRows: parseRows, | |
format: format, | |
formatRows: formatRows | |
}; | |
}; | |
var csv = dsv(","); | |
var csvParse = csv.parse; | |
var csvParseRows = csv.parseRows; | |
var csvFormat = csv.format; | |
var csvFormatRows = csv.formatRows; | |
var tsv = dsv("\t"); | |
var tsvParse = tsv.parse; | |
var tsvParseRows = tsv.parseRows; | |
var tsvFormat = tsv.format; | |
var tsvFormatRows = tsv.formatRows; | |
var center$1 = function(x, y) { | |
var nodes; | |
if (x == null) x = 0; | |
if (y == null) y = 0; | |
function force() { | |
var i, | |
n = nodes.length, | |
node, | |
sx = 0, | |
sy = 0; | |
for (i = 0; i < n; ++i) { | |
node = nodes[i], sx += node.x, sy += node.y; | |
} | |
for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) { | |
node = nodes[i], node.x -= sx, node.y -= sy; | |
} | |
} | |
force.initialize = function(_) { | |
nodes = _; | |
}; | |
force.x = function(_) { | |
return arguments.length ? (x = +_, force) : x; | |
}; | |
force.y = function(_) { | |
return arguments.length ? (y = +_, force) : y; | |
}; | |
return force; | |
}; | |
var constant$7 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var jiggle = function() { | |
return (Math.random() - 0.5) * 1e-6; | |
}; | |
var tree_add = function(d) { | |
var x = +this._x.call(null, d), | |
y = +this._y.call(null, d); | |
return add(this.cover(x, y), x, y, d); | |
}; | |
function add(tree, x, y, d) { | |
if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points | |
var parent, | |
node = tree._root, | |
leaf = {data: d}, | |
x0 = tree._x0, | |
y0 = tree._y0, | |
x1 = tree._x1, | |
y1 = tree._y1, | |
xm, | |
ym, | |
xp, | |
yp, | |
right, | |
bottom, | |
i, | |
j; | |
// If the tree is empty, initialize the root as a leaf. | |
if (!node) return tree._root = leaf, tree; | |
// Find the existing leaf for the new point, or add it. | |
while (node.length) { | |
if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; | |
if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; | |
if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; | |
} | |
// Is the new point is exactly coincident with the existing point? | |
xp = +tree._x.call(null, node.data); | |
yp = +tree._y.call(null, node.data); | |
if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; | |
// Otherwise, split the leaf node until the old and new point are separated. | |
do { | |
parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); | |
if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; | |
if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; | |
} while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); | |
return parent[j] = node, parent[i] = leaf, tree; | |
} | |
function addAll(data) { | |
var d, i, n = data.length, | |
x, | |
y, | |
xz = new Array(n), | |
yz = new Array(n), | |
x0 = Infinity, | |
y0 = Infinity, | |
x1 = -Infinity, | |
y1 = -Infinity; | |
// Compute the points and their extent. | |
for (i = 0; i < n; ++i) { | |
if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; | |
xz[i] = x; | |
yz[i] = y; | |
if (x < x0) x0 = x; | |
if (x > x1) x1 = x; | |
if (y < y0) y0 = y; | |
if (y > y1) y1 = y; | |
} | |
// If there were no (valid) points, inherit the existing extent. | |
if (x1 < x0) x0 = this._x0, x1 = this._x1; | |
if (y1 < y0) y0 = this._y0, y1 = this._y1; | |
// Expand the tree to cover the new points. | |
this.cover(x0, y0).cover(x1, y1); | |
// Add the new points. | |
for (i = 0; i < n; ++i) { | |
add(this, xz[i], yz[i], data[i]); | |
} | |
return this; | |
} | |
var tree_cover = function(x, y) { | |
if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points | |
var x0 = this._x0, | |
y0 = this._y0, | |
x1 = this._x1, | |
y1 = this._y1; | |
// If the quadtree has no extent, initialize them. | |
// Integer extent are necessary so that if we later double the extent, | |
// the existing quadrant boundaries don’t change due to floating point error! | |
if (isNaN(x0)) { | |
x1 = (x0 = Math.floor(x)) + 1; | |
y1 = (y0 = Math.floor(y)) + 1; | |
} | |
// Otherwise, double repeatedly to cover. | |
else if (x0 > x || x > x1 || y0 > y || y > y1) { | |
var z = x1 - x0, | |
node = this._root, | |
parent, | |
i; | |
switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) { | |
case 0: { | |
do parent = new Array(4), parent[i] = node, node = parent; | |
while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1); | |
break; | |
} | |
case 1: { | |
do parent = new Array(4), parent[i] = node, node = parent; | |
while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1); | |
break; | |
} | |
case 2: { | |
do parent = new Array(4), parent[i] = node, node = parent; | |
while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y); | |
break; | |
} | |
case 3: { | |
do parent = new Array(4), parent[i] = node, node = parent; | |
while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y); | |
break; | |
} | |
} | |
if (this._root && this._root.length) this._root = node; | |
} | |
// If the quadtree covers the point already, just return. | |
else return this; | |
this._x0 = x0; | |
this._y0 = y0; | |
this._x1 = x1; | |
this._y1 = y1; | |
return this; | |
}; | |
var tree_data = function() { | |
var data = []; | |
this.visit(function(node) { | |
if (!node.length) do data.push(node.data); while (node = node.next) | |
}); | |
return data; | |
}; | |
var tree_extent = function(_) { | |
return arguments.length | |
? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) | |
: isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; | |
}; | |
var Quad = function(node, x0, y0, x1, y1) { | |
this.node = node; | |
this.x0 = x0; | |
this.y0 = y0; | |
this.x1 = x1; | |
this.y1 = y1; | |
}; | |
var tree_find = function(x, y, radius) { | |
var data, | |
x0 = this._x0, | |
y0 = this._y0, | |
x1, | |
y1, | |
x2, | |
y2, | |
x3 = this._x1, | |
y3 = this._y1, | |
quads = [], | |
node = this._root, | |
q, | |
i; | |
if (node) quads.push(new Quad(node, x0, y0, x3, y3)); | |
if (radius == null) radius = Infinity; | |
else { | |
x0 = x - radius, y0 = y - radius; | |
x3 = x + radius, y3 = y + radius; | |
radius *= radius; | |
} | |
while (q = quads.pop()) { | |
// Stop searching if this quadrant can’t contain a closer node. | |
if (!(node = q.node) | |
|| (x1 = q.x0) > x3 | |
|| (y1 = q.y0) > y3 | |
|| (x2 = q.x1) < x0 | |
|| (y2 = q.y1) < y0) continue; | |
// Bisect the current quadrant. | |
if (node.length) { | |
var xm = (x1 + x2) / 2, | |
ym = (y1 + y2) / 2; | |
quads.push( | |
new Quad(node[3], xm, ym, x2, y2), | |
new Quad(node[2], x1, ym, xm, y2), | |
new Quad(node[1], xm, y1, x2, ym), | |
new Quad(node[0], x1, y1, xm, ym) | |
); | |
// Visit the closest quadrant first. | |
if (i = (y >= ym) << 1 | (x >= xm)) { | |
q = quads[quads.length - 1]; | |
quads[quads.length - 1] = quads[quads.length - 1 - i]; | |
quads[quads.length - 1 - i] = q; | |
} | |
} | |
// Visit this point. (Visiting coincident points isn’t necessary!) | |
else { | |
var dx = x - +this._x.call(null, node.data), | |
dy = y - +this._y.call(null, node.data), | |
d2 = dx * dx + dy * dy; | |
if (d2 < radius) { | |
var d = Math.sqrt(radius = d2); | |
x0 = x - d, y0 = y - d; | |
x3 = x + d, y3 = y + d; | |
data = node.data; | |
} | |
} | |
} | |
return data; | |
}; | |
var tree_remove = function(d) { | |
if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points | |
var parent, | |
node = this._root, | |
retainer, | |
previous, | |
next, | |
x0 = this._x0, | |
y0 = this._y0, | |
x1 = this._x1, | |
y1 = this._y1, | |
x, | |
y, | |
xm, | |
ym, | |
right, | |
bottom, | |
i, | |
j; | |
// If the tree is empty, initialize the root as a leaf. | |
if (!node) return this; | |
// Find the leaf node for the point. | |
// While descending, also retain the deepest parent with a non-removed sibling. | |
if (node.length) while (true) { | |
if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; | |
if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; | |
if (!(parent = node, node = node[i = bottom << 1 | right])) return this; | |
if (!node.length) break; | |
if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; | |
} | |
// Find the point to remove. | |
while (node.data !== d) if (!(previous = node, node = node.next)) return this; | |
if (next = node.next) delete node.next; | |
// If there are multiple coincident points, remove just the point. | |
if (previous) return (next ? previous.next = next : delete previous.next), this; | |
// If this is the root point, remove it. | |
if (!parent) return this._root = next, this; | |
// Remove this leaf. | |
next ? parent[i] = next : delete parent[i]; | |
// If the parent now contains exactly one leaf, collapse superfluous parents. | |
if ((node = parent[0] || parent[1] || parent[2] || parent[3]) | |
&& node === (parent[3] || parent[2] || parent[1] || parent[0]) | |
&& !node.length) { | |
if (retainer) retainer[j] = node; | |
else this._root = node; | |
} | |
return this; | |
}; | |
function removeAll(data) { | |
for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); | |
return this; | |
} | |
var tree_root = function() { | |
return this._root; | |
}; | |
var tree_size = function() { | |
var size = 0; | |
this.visit(function(node) { | |
if (!node.length) do ++size; while (node = node.next) | |
}); | |
return size; | |
}; | |
var tree_visit = function(callback) { | |
var quads = [], q, node = this._root, child, x0, y0, x1, y1; | |
if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); | |
while (q = quads.pop()) { | |
if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { | |
var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; | |
if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); | |
if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); | |
if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); | |
if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); | |
} | |
} | |
return this; | |
}; | |
var tree_visitAfter = function(callback) { | |
var quads = [], next = [], q; | |
if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); | |
while (q = quads.pop()) { | |
var node = q.node; | |
if (node.length) { | |
var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; | |
if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); | |
if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); | |
if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); | |
if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); | |
} | |
next.push(q); | |
} | |
while (q = next.pop()) { | |
callback(q.node, q.x0, q.y0, q.x1, q.y1); | |
} | |
return this; | |
}; | |
function defaultX(d) { | |
return d[0]; | |
} | |
var tree_x = function(_) { | |
return arguments.length ? (this._x = _, this) : this._x; | |
}; | |
function defaultY(d) { | |
return d[1]; | |
} | |
var tree_y = function(_) { | |
return arguments.length ? (this._y = _, this) : this._y; | |
}; | |
function quadtree(nodes, x, y) { | |
var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); | |
return nodes == null ? tree : tree.addAll(nodes); | |
} | |
function Quadtree(x, y, x0, y0, x1, y1) { | |
this._x = x; | |
this._y = y; | |
this._x0 = x0; | |
this._y0 = y0; | |
this._x1 = x1; | |
this._y1 = y1; | |
this._root = undefined; | |
} | |
function leaf_copy(leaf) { | |
var copy = {data: leaf.data}, next = copy; | |
while (leaf = leaf.next) next = next.next = {data: leaf.data}; | |
return copy; | |
} | |
var treeProto = quadtree.prototype = Quadtree.prototype; | |
treeProto.copy = function() { | |
var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), | |
node = this._root, | |
nodes, | |
child; | |
if (!node) return copy; | |
if (!node.length) return copy._root = leaf_copy(node), copy; | |
nodes = [{source: node, target: copy._root = new Array(4)}]; | |
while (node = nodes.pop()) { | |
for (var i = 0; i < 4; ++i) { | |
if (child = node.source[i]) { | |
if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); | |
else node.target[i] = leaf_copy(child); | |
} | |
} | |
} | |
return copy; | |
}; | |
treeProto.add = tree_add; | |
treeProto.addAll = addAll; | |
treeProto.cover = tree_cover; | |
treeProto.data = tree_data; | |
treeProto.extent = tree_extent; | |
treeProto.find = tree_find; | |
treeProto.remove = tree_remove; | |
treeProto.removeAll = removeAll; | |
treeProto.root = tree_root; | |
treeProto.size = tree_size; | |
treeProto.visit = tree_visit; | |
treeProto.visitAfter = tree_visitAfter; | |
treeProto.x = tree_x; | |
treeProto.y = tree_y; | |
function x(d) { | |
return d.x + d.vx; | |
} | |
function y(d) { | |
return d.y + d.vy; | |
} | |
var collide = function(radius) { | |
var nodes, | |
radii, | |
strength = 1, | |
iterations = 1; | |
if (typeof radius !== "function") radius = constant$7(radius == null ? 1 : +radius); | |
function force() { | |
var i, n = nodes.length, | |
tree, | |
node, | |
xi, | |
yi, | |
ri, | |
ri2; | |
for (var k = 0; k < iterations; ++k) { | |
tree = quadtree(nodes, x, y).visitAfter(prepare); | |
for (i = 0; i < n; ++i) { | |
node = nodes[i]; | |
ri = radii[node.index], ri2 = ri * ri; | |
xi = node.x + node.vx; | |
yi = node.y + node.vy; | |
tree.visit(apply); | |
} | |
} | |
function apply(quad, x0, y0, x1, y1) { | |
var data = quad.data, rj = quad.r, r = ri + rj; | |
if (data) { | |
if (data.index > node.index) { | |
var x = xi - data.x - data.vx, | |
y = yi - data.y - data.vy, | |
l = x * x + y * y; | |
if (l < r * r) { | |
if (x === 0) x = jiggle(), l += x * x; | |
if (y === 0) y = jiggle(), l += y * y; | |
l = (r - (l = Math.sqrt(l))) / l * strength; | |
node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); | |
node.vy += (y *= l) * r; | |
data.vx -= x * (r = 1 - r); | |
data.vy -= y * r; | |
} | |
} | |
return; | |
} | |
return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; | |
} | |
} | |
function prepare(quad) { | |
if (quad.data) return quad.r = radii[quad.data.index]; | |
for (var i = quad.r = 0; i < 4; ++i) { | |
if (quad[i] && quad[i].r > quad.r) { | |
quad.r = quad[i].r; | |
} | |
} | |
} | |
function initialize() { | |
if (!nodes) return; | |
var i, n = nodes.length, node; | |
radii = new Array(n); | |
for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); | |
} | |
force.initialize = function(_) { | |
nodes = _; | |
initialize(); | |
}; | |
force.iterations = function(_) { | |
return arguments.length ? (iterations = +_, force) : iterations; | |
}; | |
force.strength = function(_) { | |
return arguments.length ? (strength = +_, force) : strength; | |
}; | |
force.radius = function(_) { | |
return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; | |
}; | |
return force; | |
}; | |
function index(d) { | |
return d.index; | |
} | |
function find(nodeById, nodeId) { | |
var node = nodeById.get(nodeId); | |
if (!node) throw new Error("missing: " + nodeId); | |
return node; | |
} | |
var link = function(links) { | |
var id = index, | |
strength = defaultStrength, | |
strengths, | |
distance = constant$7(30), | |
distances, | |
nodes, | |
count, | |
bias, | |
iterations = 1; | |
if (links == null) links = []; | |
function defaultStrength(link) { | |
return 1 / Math.min(count[link.source.index], count[link.target.index]); | |
} | |
function force(alpha) { | |
for (var k = 0, n = links.length; k < iterations; ++k) { | |
for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { | |
link = links[i], source = link.source, target = link.target; | |
x = target.x + target.vx - source.x - source.vx || jiggle(); | |
y = target.y + target.vy - source.y - source.vy || jiggle(); | |
l = Math.sqrt(x * x + y * y); | |
l = (l - distances[i]) / l * alpha * strengths[i]; | |
x *= l, y *= l; | |
target.vx -= x * (b = bias[i]); | |
target.vy -= y * b; | |
source.vx += x * (b = 1 - b); | |
source.vy += y * b; | |
} | |
} | |
} | |
function initialize() { | |
if (!nodes) return; | |
var i, | |
n = nodes.length, | |
m = links.length, | |
nodeById = map$2(nodes, id), | |
link; | |
for (i = 0, count = new Array(n); i < m; ++i) { | |
link = links[i], link.index = i; | |
if (typeof link.source !== "object") link.source = find(nodeById, link.source); | |
if (typeof link.target !== "object") link.target = find(nodeById, link.target); | |
count[link.source.index] = (count[link.source.index] || 0) + 1; | |
count[link.target.index] = (count[link.target.index] || 0) + 1; | |
} | |
for (i = 0, bias = new Array(m); i < m; ++i) { | |
link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); | |
} | |
strengths = new Array(m), initializeStrength(); | |
distances = new Array(m), initializeDistance(); | |
} | |
function initializeStrength() { | |
if (!nodes) return; | |
for (var i = 0, n = links.length; i < n; ++i) { | |
strengths[i] = +strength(links[i], i, links); | |
} | |
} | |
function initializeDistance() { | |
if (!nodes) return; | |
for (var i = 0, n = links.length; i < n; ++i) { | |
distances[i] = +distance(links[i], i, links); | |
} | |
} | |
force.initialize = function(_) { | |
nodes = _; | |
initialize(); | |
}; | |
force.links = function(_) { | |
return arguments.length ? (links = _, initialize(), force) : links; | |
}; | |
force.id = function(_) { | |
return arguments.length ? (id = _, force) : id; | |
}; | |
force.iterations = function(_) { | |
return arguments.length ? (iterations = +_, force) : iterations; | |
}; | |
force.strength = function(_) { | |
return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initializeStrength(), force) : strength; | |
}; | |
force.distance = function(_) { | |
return arguments.length ? (distance = typeof _ === "function" ? _ : constant$7(+_), initializeDistance(), force) : distance; | |
}; | |
return force; | |
}; | |
function x$1(d) { | |
return d.x; | |
} | |
function y$1(d) { | |
return d.y; | |
} | |
var initialRadius = 10; | |
var initialAngle = Math.PI * (3 - Math.sqrt(5)); | |
var simulation = function(nodes) { | |
var simulation, | |
alpha = 1, | |
alphaMin = 0.001, | |
alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), | |
alphaTarget = 0, | |
velocityDecay = 0.6, | |
forces = map$2(), | |
stepper = timer(step), | |
event = dispatch("tick", "end"); | |
if (nodes == null) nodes = []; | |
function step() { | |
tick(); | |
event.call("tick", simulation); | |
if (alpha < alphaMin) { | |
stepper.stop(); | |
event.call("end", simulation); | |
} | |
} | |
function tick() { | |
var i, n = nodes.length, node; | |
alpha += (alphaTarget - alpha) * alphaDecay; | |
forces.each(function(force) { | |
force(alpha); | |
}); | |
for (i = 0; i < n; ++i) { | |
node = nodes[i]; | |
if (node.fx == null) node.x += node.vx *= velocityDecay; | |
else node.x = node.fx, node.vx = 0; | |
if (node.fy == null) node.y += node.vy *= velocityDecay; | |
else node.y = node.fy, node.vy = 0; | |
} | |
} | |
function initializeNodes() { | |
for (var i = 0, n = nodes.length, node; i < n; ++i) { | |
node = nodes[i], node.index = i; | |
if (isNaN(node.x) || isNaN(node.y)) { | |
var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle; | |
node.x = radius * Math.cos(angle); | |
node.y = radius * Math.sin(angle); | |
} | |
if (isNaN(node.vx) || isNaN(node.vy)) { | |
node.vx = node.vy = 0; | |
} | |
} | |
} | |
function initializeForce(force) { | |
if (force.initialize) force.initialize(nodes); | |
return force; | |
} | |
initializeNodes(); | |
return simulation = { | |
tick: tick, | |
restart: function() { | |
return stepper.restart(step), simulation; | |
}, | |
stop: function() { | |
return stepper.stop(), simulation; | |
}, | |
nodes: function(_) { | |
return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes; | |
}, | |
alpha: function(_) { | |
return arguments.length ? (alpha = +_, simulation) : alpha; | |
}, | |
alphaMin: function(_) { | |
return arguments.length ? (alphaMin = +_, simulation) : alphaMin; | |
}, | |
alphaDecay: function(_) { | |
return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; | |
}, | |
alphaTarget: function(_) { | |
return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; | |
}, | |
velocityDecay: function(_) { | |
return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; | |
}, | |
force: function(name, _) { | |
return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); | |
}, | |
find: function(x, y, radius) { | |
var i = 0, | |
n = nodes.length, | |
dx, | |
dy, | |
d2, | |
node, | |
closest; | |
if (radius == null) radius = Infinity; | |
else radius *= radius; | |
for (i = 0; i < n; ++i) { | |
node = nodes[i]; | |
dx = x - node.x; | |
dy = y - node.y; | |
d2 = dx * dx + dy * dy; | |
if (d2 < radius) closest = node, radius = d2; | |
} | |
return closest; | |
}, | |
on: function(name, _) { | |
return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); | |
} | |
}; | |
}; | |
var manyBody = function() { | |
var nodes, | |
node, | |
alpha, | |
strength = constant$7(-30), | |
strengths, | |
distanceMin2 = 1, | |
distanceMax2 = Infinity, | |
theta2 = 0.81; | |
function force(_) { | |
var i, n = nodes.length, tree = quadtree(nodes, x$1, y$1).visitAfter(accumulate); | |
for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); | |
} | |
function initialize() { | |
if (!nodes) return; | |
var i, n = nodes.length, node; | |
strengths = new Array(n); | |
for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); | |
} | |
function accumulate(quad) { | |
var strength = 0, q, c, x$$1, y$$1, i; | |
// For internal nodes, accumulate forces from child quadrants. | |
if (quad.length) { | |
for (x$$1 = y$$1 = i = 0; i < 4; ++i) { | |
if ((q = quad[i]) && (c = q.value)) { | |
strength += c, x$$1 += c * q.x, y$$1 += c * q.y; | |
} | |
} | |
quad.x = x$$1 / strength; | |
quad.y = y$$1 / strength; | |
} | |
// For leaf nodes, accumulate forces from coincident quadrants. | |
else { | |
q = quad; | |
q.x = q.data.x; | |
q.y = q.data.y; | |
do strength += strengths[q.data.index]; | |
while (q = q.next); | |
} | |
quad.value = strength; | |
} | |
function apply(quad, x1, _, x2) { | |
if (!quad.value) return true; | |
var x$$1 = quad.x - node.x, | |
y$$1 = quad.y - node.y, | |
w = x2 - x1, | |
l = x$$1 * x$$1 + y$$1 * y$$1; | |
// Apply the Barnes-Hut approximation if possible. | |
// Limit forces for very close nodes; randomize direction if coincident. | |
if (w * w / theta2 < l) { | |
if (l < distanceMax2) { | |
if (x$$1 === 0) x$$1 = jiggle(), l += x$$1 * x$$1; | |
if (y$$1 === 0) y$$1 = jiggle(), l += y$$1 * y$$1; | |
if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); | |
node.vx += x$$1 * quad.value * alpha / l; | |
node.vy += y$$1 * quad.value * alpha / l; | |
} | |
return true; | |
} | |
// Otherwise, process points directly. | |
else if (quad.length || l >= distanceMax2) return; | |
// Limit forces for very close nodes; randomize direction if coincident. | |
if (quad.data !== node || quad.next) { | |
if (x$$1 === 0) x$$1 = jiggle(), l += x$$1 * x$$1; | |
if (y$$1 === 0) y$$1 = jiggle(), l += y$$1 * y$$1; | |
if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); | |
} | |
do if (quad.data !== node) { | |
w = strengths[quad.data.index] * alpha / l; | |
node.vx += x$$1 * w; | |
node.vy += y$$1 * w; | |
} while (quad = quad.next); | |
} | |
force.initialize = function(_) { | |
nodes = _; | |
initialize(); | |
}; | |
force.strength = function(_) { | |
return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; | |
}; | |
force.distanceMin = function(_) { | |
return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); | |
}; | |
force.distanceMax = function(_) { | |
return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); | |
}; | |
force.theta = function(_) { | |
return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); | |
}; | |
return force; | |
}; | |
var x$2 = function(x) { | |
var strength = constant$7(0.1), | |
nodes, | |
strengths, | |
xz; | |
if (typeof x !== "function") x = constant$7(x == null ? 0 : +x); | |
function force(alpha) { | |
for (var i = 0, n = nodes.length, node; i < n; ++i) { | |
node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; | |
} | |
} | |
function initialize() { | |
if (!nodes) return; | |
var i, n = nodes.length; | |
strengths = new Array(n); | |
xz = new Array(n); | |
for (i = 0; i < n; ++i) { | |
strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); | |
} | |
} | |
force.initialize = function(_) { | |
nodes = _; | |
initialize(); | |
}; | |
force.strength = function(_) { | |
return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; | |
}; | |
force.x = function(_) { | |
return arguments.length ? (x = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : x; | |
}; | |
return force; | |
}; | |
var y$2 = function(y) { | |
var strength = constant$7(0.1), | |
nodes, | |
strengths, | |
yz; | |
if (typeof y !== "function") y = constant$7(y == null ? 0 : +y); | |
function force(alpha) { | |
for (var i = 0, n = nodes.length, node; i < n; ++i) { | |
node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; | |
} | |
} | |
function initialize() { | |
if (!nodes) return; | |
var i, n = nodes.length; | |
strengths = new Array(n); | |
yz = new Array(n); | |
for (i = 0; i < n; ++i) { | |
strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); | |
} | |
} | |
force.initialize = function(_) { | |
nodes = _; | |
initialize(); | |
}; | |
force.strength = function(_) { | |
return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; | |
}; | |
force.y = function(_) { | |
return arguments.length ? (y = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : y; | |
}; | |
return force; | |
}; | |
// Computes the decimal coefficient and exponent of the specified number x with | |
// significant digits p, where x is positive and p is in [1, 21] or undefined. | |
// For example, formatDecimal(1.23) returns ["123", 0]. | |
var formatDecimal = function(x, p) { | |
if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity | |
var i, coefficient = x.slice(0, i); | |
// The string returned by toExponential either has the form \d\.\d+e[-+]\d+ | |
// (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). | |
return [ | |
coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, | |
+x.slice(i + 1) | |
]; | |
}; | |
var exponent$1 = function(x) { | |
return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; | |
}; | |
var formatGroup = function(grouping, thousands) { | |
return function(value, width) { | |
var i = value.length, | |
t = [], | |
j = 0, | |
g = grouping[0], | |
length = 0; | |
while (i > 0 && g > 0) { | |
if (length + g + 1 > width) g = Math.max(1, width - length); | |
t.push(value.substring(i -= g, i + g)); | |
if ((length += g + 1) > width) break; | |
g = grouping[j = (j + 1) % grouping.length]; | |
} | |
return t.reverse().join(thousands); | |
}; | |
}; | |
var formatNumerals = function(numerals) { | |
return function(value) { | |
return value.replace(/[0-9]/g, function(i) { | |
return numerals[+i]; | |
}); | |
}; | |
}; | |
var formatDefault = function(x, p) { | |
x = x.toPrecision(p); | |
out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) { | |
switch (x[i]) { | |
case ".": i0 = i1 = i; break; | |
case "0": if (i0 === 0) i0 = i; i1 = i; break; | |
case "e": break out; | |
default: if (i0 > 0) i0 = 0; break; | |
} | |
} | |
return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x; | |
}; | |
var prefixExponent; | |
var formatPrefixAuto = function(x, p) { | |
var d = formatDecimal(x, p); | |
if (!d) return x + ""; | |
var coefficient = d[0], | |
exponent = d[1], | |
i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, | |
n = coefficient.length; | |
return i === n ? coefficient | |
: i > n ? coefficient + new Array(i - n + 1).join("0") | |
: i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) | |
: "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! | |
}; | |
var formatRounded = function(x, p) { | |
var d = formatDecimal(x, p); | |
if (!d) return x + ""; | |
var coefficient = d[0], | |
exponent = d[1]; | |
return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient | |
: coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) | |
: coefficient + new Array(exponent - coefficient.length + 2).join("0"); | |
}; | |
var formatTypes = { | |
"": formatDefault, | |
"%": function(x, p) { return (x * 100).toFixed(p); }, | |
"b": function(x) { return Math.round(x).toString(2); }, | |
"c": function(x) { return x + ""; }, | |
"d": function(x) { return Math.round(x).toString(10); }, | |
"e": function(x, p) { return x.toExponential(p); }, | |
"f": function(x, p) { return x.toFixed(p); }, | |
"g": function(x, p) { return x.toPrecision(p); }, | |
"o": function(x) { return Math.round(x).toString(8); }, | |
"p": function(x, p) { return formatRounded(x * 100, p); }, | |
"r": formatRounded, | |
"s": formatPrefixAuto, | |
"X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, | |
"x": function(x) { return Math.round(x).toString(16); } | |
}; | |
// [[fill]align][sign][symbol][0][width][,][.precision][type] | |
var re = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i; | |
function formatSpecifier(specifier) { | |
return new FormatSpecifier(specifier); | |
} | |
formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof | |
function FormatSpecifier(specifier) { | |
if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); | |
var match, | |
fill = match[1] || " ", | |
align = match[2] || ">", | |
sign = match[3] || "-", | |
symbol = match[4] || "", | |
zero = !!match[5], | |
width = match[6] && +match[6], | |
comma = !!match[7], | |
precision = match[8] && +match[8].slice(1), | |
type = match[9] || ""; | |
// The "n" type is an alias for ",g". | |
if (type === "n") comma = true, type = "g"; | |
// Map invalid types to the default format. | |
else if (!formatTypes[type]) type = ""; | |
// If zero fill is specified, padding goes after sign and before digits. | |
if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; | |
this.fill = fill; | |
this.align = align; | |
this.sign = sign; | |
this.symbol = symbol; | |
this.zero = zero; | |
this.width = width; | |
this.comma = comma; | |
this.precision = precision; | |
this.type = type; | |
} | |
FormatSpecifier.prototype.toString = function() { | |
return this.fill | |
+ this.align | |
+ this.sign | |
+ this.symbol | |
+ (this.zero ? "0" : "") | |
+ (this.width == null ? "" : Math.max(1, this.width | 0)) | |
+ (this.comma ? "," : "") | |
+ (this.precision == null ? "" : "." + Math.max(0, this.precision | 0)) | |
+ this.type; | |
}; | |
var identity$4 = function(x) { | |
return x; | |
}; | |
var prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; | |
var formatLocale = function(locale) { | |
var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity$4, | |
currency = locale.currency, | |
decimal = locale.decimal, | |
numerals = locale.numerals ? formatNumerals(locale.numerals) : identity$4, | |
percent = locale.percent || "%"; | |
function newFormat(specifier) { | |
specifier = formatSpecifier(specifier); | |
var fill = specifier.fill, | |
align = specifier.align, | |
sign = specifier.sign, | |
symbol = specifier.symbol, | |
zero = specifier.zero, | |
width = specifier.width, | |
comma = specifier.comma, | |
precision = specifier.precision, | |
type = specifier.type; | |
// Compute the prefix and suffix. | |
// For SI-prefix, the suffix is lazily computed. | |
var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", | |
suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : ""; | |
// What format function should we use? | |
// Is this an integer type? | |
// Can this type generate exponential notation? | |
var formatType = formatTypes[type], | |
maybeSuffix = !type || /[defgprs%]/.test(type); | |
// Set the default precision if not specified, | |
// or clamp the specified precision to the supported range. | |
// For significant precision, it must be in [1, 21]. | |
// For fixed precision, it must be in [0, 20]. | |
precision = precision == null ? (type ? 6 : 12) | |
: /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) | |
: Math.max(0, Math.min(20, precision)); | |
function format(value) { | |
var valuePrefix = prefix, | |
valueSuffix = suffix, | |
i, n, c; | |
if (type === "c") { | |
valueSuffix = formatType(value) + valueSuffix; | |
value = ""; | |
} else { | |
value = +value; | |
// Perform the initial formatting. | |
var valueNegative = value < 0; | |
value = formatType(Math.abs(value), precision); | |
// If a negative value rounds to zero during formatting, treat as positive. | |
if (valueNegative && +value === 0) valueNegative = false; | |
// Compute the prefix and suffix. | |
valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; | |
valueSuffix = valueSuffix + (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + (valueNegative && sign === "(" ? ")" : ""); | |
// Break the formatted value into the integer “value” part that can be | |
// grouped, and fractional or exponential “suffix” part that is not. | |
if (maybeSuffix) { | |
i = -1, n = value.length; | |
while (++i < n) { | |
if (c = value.charCodeAt(i), 48 > c || c > 57) { | |
valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; | |
value = value.slice(0, i); | |
break; | |
} | |
} | |
} | |
} | |
// If the fill character is not "0", grouping is applied before padding. | |
if (comma && !zero) value = group(value, Infinity); | |
// Compute the padding. | |
var length = valuePrefix.length + value.length + valueSuffix.length, | |
padding = length < width ? new Array(width - length + 1).join(fill) : ""; | |
// If the fill character is "0", grouping is applied after padding. | |
if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; | |
// Reconstruct the final output based on the desired alignment. | |
switch (align) { | |
case "<": value = valuePrefix + value + valueSuffix + padding; break; | |
case "=": value = valuePrefix + padding + value + valueSuffix; break; | |
case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; | |
default: value = padding + valuePrefix + value + valueSuffix; break; | |
} | |
return numerals(value); | |
} | |
format.toString = function() { | |
return specifier + ""; | |
}; | |
return format; | |
} | |
function formatPrefix(specifier, value) { | |
var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), | |
e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3, | |
k = Math.pow(10, -e), | |
prefix = prefixes[8 + e / 3]; | |
return function(value) { | |
return f(k * value) + prefix; | |
}; | |
} | |
return { | |
format: newFormat, | |
formatPrefix: formatPrefix | |
}; | |
}; | |
var locale$1; | |
defaultLocale({ | |
decimal: ".", | |
thousands: ",", | |
grouping: [3], | |
currency: ["$", ""] | |
}); | |
function defaultLocale(definition) { | |
locale$1 = formatLocale(definition); | |
exports.format = locale$1.format; | |
exports.formatPrefix = locale$1.formatPrefix; | |
return locale$1; | |
} | |
var precisionFixed = function(step) { | |
return Math.max(0, -exponent$1(Math.abs(step))); | |
}; | |
var precisionPrefix = function(step, value) { | |
return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3 - exponent$1(Math.abs(step))); | |
}; | |
var precisionRound = function(step, max) { | |
step = Math.abs(step), max = Math.abs(max) - step; | |
return Math.max(0, exponent$1(max) - exponent$1(step)) + 1; | |
}; | |
// Adds floating point numbers with twice the normal precision. | |
// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and | |
// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) | |
// 305–363 (1997). | |
// Code adapted from GeographicLib by Charles F. F. Karney, | |
// http://geographiclib.sourceforge.net/ | |
var adder = function() { | |
return new Adder; | |
}; | |
function Adder() { | |
this.reset(); | |
} | |
Adder.prototype = { | |
constructor: Adder, | |
reset: function() { | |
this.s = // rounded value | |
this.t = 0; // exact error | |
}, | |
add: function(y) { | |
add$1(temp, y, this.t); | |
add$1(this, temp.s, this.s); | |
if (this.s) this.t += temp.t; | |
else this.s = temp.t; | |
}, | |
valueOf: function() { | |
return this.s; | |
} | |
}; | |
var temp = new Adder; | |
function add$1(adder, a, b) { | |
var x = adder.s = a + b, | |
bv = x - a, | |
av = x - bv; | |
adder.t = (a - av) + (b - bv); | |
} | |
var epsilon$2 = 1e-6; | |
var epsilon2$1 = 1e-12; | |
var pi$3 = Math.PI; | |
var halfPi$2 = pi$3 / 2; | |
var quarterPi = pi$3 / 4; | |
var tau$3 = pi$3 * 2; | |
var degrees$1 = 180 / pi$3; | |
var radians = pi$3 / 180; | |
var abs = Math.abs; | |
var atan = Math.atan; | |
var atan2 = Math.atan2; | |
var cos$1 = Math.cos; | |
var ceil = Math.ceil; | |
var exp = Math.exp; | |
var log = Math.log; | |
var pow = Math.pow; | |
var sin$1 = Math.sin; | |
var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; | |
var sqrt = Math.sqrt; | |
var tan = Math.tan; | |
function acos(x) { | |
return x > 1 ? 0 : x < -1 ? pi$3 : Math.acos(x); | |
} | |
function asin(x) { | |
return x > 1 ? halfPi$2 : x < -1 ? -halfPi$2 : Math.asin(x); | |
} | |
function haversin(x) { | |
return (x = sin$1(x / 2)) * x; | |
} | |
function noop$1() {} | |
function streamGeometry(geometry, stream) { | |
if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { | |
streamGeometryType[geometry.type](geometry, stream); | |
} | |
} | |
var streamObjectType = { | |
Feature: function(object, stream) { | |
streamGeometry(object.geometry, stream); | |
}, | |
FeatureCollection: function(object, stream) { | |
var features = object.features, i = -1, n = features.length; | |
while (++i < n) streamGeometry(features[i].geometry, stream); | |
} | |
}; | |
var streamGeometryType = { | |
Sphere: function(object, stream) { | |
stream.sphere(); | |
}, | |
Point: function(object, stream) { | |
object = object.coordinates; | |
stream.point(object[0], object[1], object[2]); | |
}, | |
MultiPoint: function(object, stream) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); | |
}, | |
LineString: function(object, stream) { | |
streamLine(object.coordinates, stream, 0); | |
}, | |
MultiLineString: function(object, stream) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) streamLine(coordinates[i], stream, 0); | |
}, | |
Polygon: function(object, stream) { | |
streamPolygon(object.coordinates, stream); | |
}, | |
MultiPolygon: function(object, stream) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) streamPolygon(coordinates[i], stream); | |
}, | |
GeometryCollection: function(object, stream) { | |
var geometries = object.geometries, i = -1, n = geometries.length; | |
while (++i < n) streamGeometry(geometries[i], stream); | |
} | |
}; | |
function streamLine(coordinates, stream, closed) { | |
var i = -1, n = coordinates.length - closed, coordinate; | |
stream.lineStart(); | |
while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); | |
stream.lineEnd(); | |
} | |
function streamPolygon(coordinates, stream) { | |
var i = -1, n = coordinates.length; | |
stream.polygonStart(); | |
while (++i < n) streamLine(coordinates[i], stream, 1); | |
stream.polygonEnd(); | |
} | |
var geoStream = function(object, stream) { | |
if (object && streamObjectType.hasOwnProperty(object.type)) { | |
streamObjectType[object.type](object, stream); | |
} else { | |
streamGeometry(object, stream); | |
} | |
}; | |
var areaRingSum = adder(); | |
var areaSum = adder(); | |
var lambda00; | |
var phi00; | |
var lambda0; | |
var cosPhi0; | |
var sinPhi0; | |
var areaStream = { | |
point: noop$1, | |
lineStart: noop$1, | |
lineEnd: noop$1, | |
polygonStart: function() { | |
areaRingSum.reset(); | |
areaStream.lineStart = areaRingStart; | |
areaStream.lineEnd = areaRingEnd; | |
}, | |
polygonEnd: function() { | |
var areaRing = +areaRingSum; | |
areaSum.add(areaRing < 0 ? tau$3 + areaRing : areaRing); | |
this.lineStart = this.lineEnd = this.point = noop$1; | |
}, | |
sphere: function() { | |
areaSum.add(tau$3); | |
} | |
}; | |
function areaRingStart() { | |
areaStream.point = areaPointFirst; | |
} | |
function areaRingEnd() { | |
areaPoint(lambda00, phi00); | |
} | |
function areaPointFirst(lambda, phi) { | |
areaStream.point = areaPoint; | |
lambda00 = lambda, phi00 = phi; | |
lambda *= radians, phi *= radians; | |
lambda0 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi); | |
} | |
function areaPoint(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
phi = phi / 2 + quarterPi; // half the angular distance from south pole | |
// Spherical excess E for a spherical triangle with vertices: south pole, | |
// previous point, current point. Uses a formula derived from Cagnoli’s | |
// theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). | |
var dLambda = lambda - lambda0, | |
sdLambda = dLambda >= 0 ? 1 : -1, | |
adLambda = sdLambda * dLambda, | |
cosPhi = cos$1(phi), | |
sinPhi = sin$1(phi), | |
k = sinPhi0 * sinPhi, | |
u = cosPhi0 * cosPhi + k * cos$1(adLambda), | |
v = k * sdLambda * sin$1(adLambda); | |
areaRingSum.add(atan2(v, u)); | |
// Advance the previous points. | |
lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; | |
} | |
var area = function(object) { | |
areaSum.reset(); | |
geoStream(object, areaStream); | |
return areaSum * 2; | |
}; | |
function spherical(cartesian) { | |
return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; | |
} | |
function cartesian(spherical) { | |
var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi); | |
return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)]; | |
} | |
function cartesianDot(a, b) { | |
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; | |
} | |
function cartesianCross(a, b) { | |
return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; | |
} | |
// TODO return a | |
function cartesianAddInPlace(a, b) { | |
a[0] += b[0], a[1] += b[1], a[2] += b[2]; | |
} | |
function cartesianScale(vector, k) { | |
return [vector[0] * k, vector[1] * k, vector[2] * k]; | |
} | |
// TODO return d | |
function cartesianNormalizeInPlace(d) { | |
var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); | |
d[0] /= l, d[1] /= l, d[2] /= l; | |
} | |
var lambda0$1; | |
var phi0; | |
var lambda1; | |
var phi1; | |
var lambda2; | |
var lambda00$1; | |
var phi00$1; | |
var p0; | |
var deltaSum = adder(); | |
var ranges; | |
var range$1; | |
var boundsStream = { | |
point: boundsPoint, | |
lineStart: boundsLineStart, | |
lineEnd: boundsLineEnd, | |
polygonStart: function() { | |
boundsStream.point = boundsRingPoint; | |
boundsStream.lineStart = boundsRingStart; | |
boundsStream.lineEnd = boundsRingEnd; | |
deltaSum.reset(); | |
areaStream.polygonStart(); | |
}, | |
polygonEnd: function() { | |
areaStream.polygonEnd(); | |
boundsStream.point = boundsPoint; | |
boundsStream.lineStart = boundsLineStart; | |
boundsStream.lineEnd = boundsLineEnd; | |
if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); | |
else if (deltaSum > epsilon$2) phi1 = 90; | |
else if (deltaSum < -epsilon$2) phi0 = -90; | |
range$1[0] = lambda0$1, range$1[1] = lambda1; | |
} | |
}; | |
function boundsPoint(lambda, phi) { | |
ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]); | |
if (phi < phi0) phi0 = phi; | |
if (phi > phi1) phi1 = phi; | |
} | |
function linePoint(lambda, phi) { | |
var p = cartesian([lambda * radians, phi * radians]); | |
if (p0) { | |
var normal = cartesianCross(p0, p), | |
equatorial = [normal[1], -normal[0], 0], | |
inflection = cartesianCross(equatorial, normal); | |
cartesianNormalizeInPlace(inflection); | |
inflection = spherical(inflection); | |
var delta = lambda - lambda2, | |
sign$$1 = delta > 0 ? 1 : -1, | |
lambdai = inflection[0] * degrees$1 * sign$$1, | |
phii, | |
antimeridian = abs(delta) > 180; | |
if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { | |
phii = inflection[1] * degrees$1; | |
if (phii > phi1) phi1 = phii; | |
} else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { | |
phii = -inflection[1] * degrees$1; | |
if (phii < phi0) phi0 = phii; | |
} else { | |
if (phi < phi0) phi0 = phi; | |
if (phi > phi1) phi1 = phi; | |
} | |
if (antimeridian) { | |
if (lambda < lambda2) { | |
if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; | |
} else { | |
if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; | |
} | |
} else { | |
if (lambda1 >= lambda0$1) { | |
if (lambda < lambda0$1) lambda0$1 = lambda; | |
if (lambda > lambda1) lambda1 = lambda; | |
} else { | |
if (lambda > lambda2) { | |
if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; | |
} else { | |
if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; | |
} | |
} | |
} | |
} else { | |
ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]); | |
} | |
if (phi < phi0) phi0 = phi; | |
if (phi > phi1) phi1 = phi; | |
p0 = p, lambda2 = lambda; | |
} | |
function boundsLineStart() { | |
boundsStream.point = linePoint; | |
} | |
function boundsLineEnd() { | |
range$1[0] = lambda0$1, range$1[1] = lambda1; | |
boundsStream.point = boundsPoint; | |
p0 = null; | |
} | |
function boundsRingPoint(lambda, phi) { | |
if (p0) { | |
var delta = lambda - lambda2; | |
deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); | |
} else { | |
lambda00$1 = lambda, phi00$1 = phi; | |
} | |
areaStream.point(lambda, phi); | |
linePoint(lambda, phi); | |
} | |
function boundsRingStart() { | |
areaStream.lineStart(); | |
} | |
function boundsRingEnd() { | |
boundsRingPoint(lambda00$1, phi00$1); | |
areaStream.lineEnd(); | |
if (abs(deltaSum) > epsilon$2) lambda0$1 = -(lambda1 = 180); | |
range$1[0] = lambda0$1, range$1[1] = lambda1; | |
p0 = null; | |
} | |
// Finds the left-right distance between two longitudes. | |
// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want | |
// the distance between ±180° to be 360°. | |
function angle(lambda0, lambda1) { | |
return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; | |
} | |
function rangeCompare(a, b) { | |
return a[0] - b[0]; | |
} | |
function rangeContains(range, x) { | |
return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; | |
} | |
var bounds = function(feature) { | |
var i, n, a, b, merged, deltaMax, delta; | |
phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); | |
ranges = []; | |
geoStream(feature, boundsStream); | |
// First, sort ranges by their minimum longitudes. | |
if (n = ranges.length) { | |
ranges.sort(rangeCompare); | |
// Then, merge any ranges that overlap. | |
for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { | |
b = ranges[i]; | |
if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { | |
if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; | |
if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; | |
} else { | |
merged.push(a = b); | |
} | |
} | |
// Finally, find the largest gap between the merged ranges. | |
// The final bounding box will be the inverse of this gap. | |
for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { | |
b = merged[i]; | |
if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; | |
} | |
} | |
ranges = range$1 = null; | |
return lambda0$1 === Infinity || phi0 === Infinity | |
? [[NaN, NaN], [NaN, NaN]] | |
: [[lambda0$1, phi0], [lambda1, phi1]]; | |
}; | |
var W0; | |
var W1; | |
var X0; | |
var Y0; | |
var Z0; | |
var X1; | |
var Y1; | |
var Z1; | |
var X2; | |
var Y2; | |
var Z2; | |
var lambda00$2; | |
var phi00$2; | |
var x0; | |
var y0; | |
var z0; // previous point | |
var centroidStream = { | |
sphere: noop$1, | |
point: centroidPoint, | |
lineStart: centroidLineStart, | |
lineEnd: centroidLineEnd, | |
polygonStart: function() { | |
centroidStream.lineStart = centroidRingStart; | |
centroidStream.lineEnd = centroidRingEnd; | |
}, | |
polygonEnd: function() { | |
centroidStream.lineStart = centroidLineStart; | |
centroidStream.lineEnd = centroidLineEnd; | |
} | |
}; | |
// Arithmetic mean of Cartesian vectors. | |
function centroidPoint(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
var cosPhi = cos$1(phi); | |
centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)); | |
} | |
function centroidPointCartesian(x, y, z) { | |
++W0; | |
X0 += (x - X0) / W0; | |
Y0 += (y - Y0) / W0; | |
Z0 += (z - Z0) / W0; | |
} | |
function centroidLineStart() { | |
centroidStream.point = centroidLinePointFirst; | |
} | |
function centroidLinePointFirst(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
var cosPhi = cos$1(phi); | |
x0 = cosPhi * cos$1(lambda); | |
y0 = cosPhi * sin$1(lambda); | |
z0 = sin$1(phi); | |
centroidStream.point = centroidLinePoint; | |
centroidPointCartesian(x0, y0, z0); | |
} | |
function centroidLinePoint(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
var cosPhi = cos$1(phi), | |
x = cosPhi * cos$1(lambda), | |
y = cosPhi * sin$1(lambda), | |
z = sin$1(phi), | |
w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); | |
W1 += w; | |
X1 += w * (x0 + (x0 = x)); | |
Y1 += w * (y0 + (y0 = y)); | |
Z1 += w * (z0 + (z0 = z)); | |
centroidPointCartesian(x0, y0, z0); | |
} | |
function centroidLineEnd() { | |
centroidStream.point = centroidPoint; | |
} | |
// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, | |
// J. Applied Mechanics 42, 239 (1975). | |
function centroidRingStart() { | |
centroidStream.point = centroidRingPointFirst; | |
} | |
function centroidRingEnd() { | |
centroidRingPoint(lambda00$2, phi00$2); | |
centroidStream.point = centroidPoint; | |
} | |
function centroidRingPointFirst(lambda, phi) { | |
lambda00$2 = lambda, phi00$2 = phi; | |
lambda *= radians, phi *= radians; | |
centroidStream.point = centroidRingPoint; | |
var cosPhi = cos$1(phi); | |
x0 = cosPhi * cos$1(lambda); | |
y0 = cosPhi * sin$1(lambda); | |
z0 = sin$1(phi); | |
centroidPointCartesian(x0, y0, z0); | |
} | |
function centroidRingPoint(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
var cosPhi = cos$1(phi), | |
x = cosPhi * cos$1(lambda), | |
y = cosPhi * sin$1(lambda), | |
z = sin$1(phi), | |
cx = y0 * z - z0 * y, | |
cy = z0 * x - x0 * z, | |
cz = x0 * y - y0 * x, | |
m = sqrt(cx * cx + cy * cy + cz * cz), | |
w = asin(m), // line weight = angle | |
v = m && -w / m; // area weight multiplier | |
X2 += v * cx; | |
Y2 += v * cy; | |
Z2 += v * cz; | |
W1 += w; | |
X1 += w * (x0 + (x0 = x)); | |
Y1 += w * (y0 + (y0 = y)); | |
Z1 += w * (z0 + (z0 = z)); | |
centroidPointCartesian(x0, y0, z0); | |
} | |
var centroid = function(object) { | |
W0 = W1 = | |
X0 = Y0 = Z0 = | |
X1 = Y1 = Z1 = | |
X2 = Y2 = Z2 = 0; | |
geoStream(object, centroidStream); | |
var x = X2, | |
y = Y2, | |
z = Z2, | |
m = x * x + y * y + z * z; | |
// If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. | |
if (m < epsilon2$1) { | |
x = X1, y = Y1, z = Z1; | |
// If the feature has zero length, fall back to arithmetic mean of point vectors. | |
if (W1 < epsilon$2) x = X0, y = Y0, z = Z0; | |
m = x * x + y * y + z * z; | |
// If the feature still has an undefined ccentroid, then return. | |
if (m < epsilon2$1) return [NaN, NaN]; | |
} | |
return [atan2(y, x) * degrees$1, asin(z / sqrt(m)) * degrees$1]; | |
}; | |
var constant$8 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var compose = function(a, b) { | |
function compose(x, y) { | |
return x = a(x, y), b(x[0], x[1]); | |
} | |
if (a.invert && b.invert) compose.invert = function(x, y) { | |
return x = b.invert(x, y), x && a.invert(x[0], x[1]); | |
}; | |
return compose; | |
}; | |
function rotationIdentity(lambda, phi) { | |
return [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi]; | |
} | |
rotationIdentity.invert = rotationIdentity; | |
function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { | |
return (deltaLambda %= tau$3) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) | |
: rotationLambda(deltaLambda)) | |
: (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) | |
: rotationIdentity); | |
} | |
function forwardRotationLambda(deltaLambda) { | |
return function(lambda, phi) { | |
return lambda += deltaLambda, [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi]; | |
}; | |
} | |
function rotationLambda(deltaLambda) { | |
var rotation = forwardRotationLambda(deltaLambda); | |
rotation.invert = forwardRotationLambda(-deltaLambda); | |
return rotation; | |
} | |
function rotationPhiGamma(deltaPhi, deltaGamma) { | |
var cosDeltaPhi = cos$1(deltaPhi), | |
sinDeltaPhi = sin$1(deltaPhi), | |
cosDeltaGamma = cos$1(deltaGamma), | |
sinDeltaGamma = sin$1(deltaGamma); | |
function rotation(lambda, phi) { | |
var cosPhi = cos$1(phi), | |
x = cos$1(lambda) * cosPhi, | |
y = sin$1(lambda) * cosPhi, | |
z = sin$1(phi), | |
k = z * cosDeltaPhi + x * sinDeltaPhi; | |
return [ | |
atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), | |
asin(k * cosDeltaGamma + y * sinDeltaGamma) | |
]; | |
} | |
rotation.invert = function(lambda, phi) { | |
var cosPhi = cos$1(phi), | |
x = cos$1(lambda) * cosPhi, | |
y = sin$1(lambda) * cosPhi, | |
z = sin$1(phi), | |
k = z * cosDeltaGamma - y * sinDeltaGamma; | |
return [ | |
atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), | |
asin(k * cosDeltaPhi - x * sinDeltaPhi) | |
]; | |
}; | |
return rotation; | |
} | |
var rotation = function(rotate) { | |
rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); | |
function forward(coordinates) { | |
coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); | |
return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; | |
} | |
forward.invert = function(coordinates) { | |
coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); | |
return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; | |
}; | |
return forward; | |
}; | |
// Generates a circle centered at [0°, 0°], with a given radius and precision. | |
function circleStream(stream, radius, delta, direction, t0, t1) { | |
if (!delta) return; | |
var cosRadius = cos$1(radius), | |
sinRadius = sin$1(radius), | |
step = direction * delta; | |
if (t0 == null) { | |
t0 = radius + direction * tau$3; | |
t1 = radius - step / 2; | |
} else { | |
t0 = circleRadius(cosRadius, t0); | |
t1 = circleRadius(cosRadius, t1); | |
if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$3; | |
} | |
for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { | |
point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]); | |
stream.point(point[0], point[1]); | |
} | |
} | |
// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. | |
function circleRadius(cosRadius, point) { | |
point = cartesian(point), point[0] -= cosRadius; | |
cartesianNormalizeInPlace(point); | |
var radius = acos(-point[1]); | |
return ((-point[2] < 0 ? -radius : radius) + tau$3 - epsilon$2) % tau$3; | |
} | |
var circle = function() { | |
var center = constant$8([0, 0]), | |
radius = constant$8(90), | |
precision = constant$8(6), | |
ring, | |
rotate, | |
stream = {point: point}; | |
function point(x, y) { | |
ring.push(x = rotate(x, y)); | |
x[0] *= degrees$1, x[1] *= degrees$1; | |
} | |
function circle() { | |
var c = center.apply(this, arguments), | |
r = radius.apply(this, arguments) * radians, | |
p = precision.apply(this, arguments) * radians; | |
ring = []; | |
rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; | |
circleStream(stream, r, p, 1); | |
c = {type: "Polygon", coordinates: [ring]}; | |
ring = rotate = null; | |
return c; | |
} | |
circle.center = function(_) { | |
return arguments.length ? (center = typeof _ === "function" ? _ : constant$8([+_[0], +_[1]]), circle) : center; | |
}; | |
circle.radius = function(_) { | |
return arguments.length ? (radius = typeof _ === "function" ? _ : constant$8(+_), circle) : radius; | |
}; | |
circle.precision = function(_) { | |
return arguments.length ? (precision = typeof _ === "function" ? _ : constant$8(+_), circle) : precision; | |
}; | |
return circle; | |
}; | |
var clipBuffer = function() { | |
var lines = [], | |
line; | |
return { | |
point: function(x, y) { | |
line.push([x, y]); | |
}, | |
lineStart: function() { | |
lines.push(line = []); | |
}, | |
lineEnd: noop$1, | |
rejoin: function() { | |
if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); | |
}, | |
result: function() { | |
var result = lines; | |
lines = []; | |
line = null; | |
return result; | |
} | |
}; | |
}; | |
var clipLine = function(a, b, x0, y0, x1, y1) { | |
var ax = a[0], | |
ay = a[1], | |
bx = b[0], | |
by = b[1], | |
t0 = 0, | |
t1 = 1, | |
dx = bx - ax, | |
dy = by - ay, | |
r; | |
r = x0 - ax; | |
if (!dx && r > 0) return; | |
r /= dx; | |
if (dx < 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} else if (dx > 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} | |
r = x1 - ax; | |
if (!dx && r < 0) return; | |
r /= dx; | |
if (dx < 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} else if (dx > 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} | |
r = y0 - ay; | |
if (!dy && r > 0) return; | |
r /= dy; | |
if (dy < 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} else if (dy > 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} | |
r = y1 - ay; | |
if (!dy && r < 0) return; | |
r /= dy; | |
if (dy < 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} else if (dy > 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} | |
if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; | |
if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; | |
return true; | |
}; | |
var pointEqual = function(a, b) { | |
return abs(a[0] - b[0]) < epsilon$2 && abs(a[1] - b[1]) < epsilon$2; | |
}; | |
function Intersection(point, points, other, entry) { | |
this.x = point; | |
this.z = points; | |
this.o = other; // another intersection | |
this.e = entry; // is an entry? | |
this.v = false; // visited | |
this.n = this.p = null; // next & previous | |
} | |
// A generalized polygon clipping algorithm: given a polygon that has been cut | |
// into its visible line segments, and rejoins the segments by interpolating | |
// along the clip edge. | |
var clipPolygon = function(segments, compareIntersection, startInside, interpolate, stream) { | |
var subject = [], | |
clip = [], | |
i, | |
n; | |
segments.forEach(function(segment) { | |
if ((n = segment.length - 1) <= 0) return; | |
var n, p0 = segment[0], p1 = segment[n], x; | |
// If the first and last points of a segment are coincident, then treat as a | |
// closed ring. TODO if all rings are closed, then the winding order of the | |
// exterior ring should be checked. | |
if (pointEqual(p0, p1)) { | |
stream.lineStart(); | |
for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); | |
stream.lineEnd(); | |
return; | |
} | |
subject.push(x = new Intersection(p0, segment, null, true)); | |
clip.push(x.o = new Intersection(p0, null, x, false)); | |
subject.push(x = new Intersection(p1, segment, null, false)); | |
clip.push(x.o = new Intersection(p1, null, x, true)); | |
}); | |
if (!subject.length) return; | |
clip.sort(compareIntersection); | |
link$1(subject); | |
link$1(clip); | |
for (i = 0, n = clip.length; i < n; ++i) { | |
clip[i].e = startInside = !startInside; | |
} | |
var start = subject[0], | |
points, | |
point; | |
while (1) { | |
// Find first unvisited intersection. | |
var current = start, | |
isSubject = true; | |
while (current.v) if ((current = current.n) === start) return; | |
points = current.z; | |
stream.lineStart(); | |
do { | |
current.v = current.o.v = true; | |
if (current.e) { | |
if (isSubject) { | |
for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); | |
} else { | |
interpolate(current.x, current.n.x, 1, stream); | |
} | |
current = current.n; | |
} else { | |
if (isSubject) { | |
points = current.p.z; | |
for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); | |
} else { | |
interpolate(current.x, current.p.x, -1, stream); | |
} | |
current = current.p; | |
} | |
current = current.o; | |
points = current.z; | |
isSubject = !isSubject; | |
} while (!current.v); | |
stream.lineEnd(); | |
} | |
}; | |
function link$1(array) { | |
if (!(n = array.length)) return; | |
var n, | |
i = 0, | |
a = array[0], | |
b; | |
while (++i < n) { | |
a.n = b = array[i]; | |
b.p = a; | |
a = b; | |
} | |
a.n = b = array[0]; | |
b.p = a; | |
} | |
var clipMax = 1e9; | |
var clipMin = -clipMax; | |
// TODO Use d3-polygon’s polygonContains here for the ring check? | |
// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? | |
function clipExtent(x0, y0, x1, y1) { | |
function visible(x, y) { | |
return x0 <= x && x <= x1 && y0 <= y && y <= y1; | |
} | |
function interpolate(from, to, direction, stream) { | |
var a = 0, a1 = 0; | |
if (from == null | |
|| (a = corner(from, direction)) !== (a1 = corner(to, direction)) | |
|| comparePoint(from, to) < 0 ^ direction > 0) { | |
do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); | |
while ((a = (a + direction + 4) % 4) !== a1); | |
} else { | |
stream.point(to[0], to[1]); | |
} | |
} | |
function corner(p, direction) { | |
return abs(p[0] - x0) < epsilon$2 ? direction > 0 ? 0 : 3 | |
: abs(p[0] - x1) < epsilon$2 ? direction > 0 ? 2 : 1 | |
: abs(p[1] - y0) < epsilon$2 ? direction > 0 ? 1 : 0 | |
: direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon | |
} | |
function compareIntersection(a, b) { | |
return comparePoint(a.x, b.x); | |
} | |
function comparePoint(a, b) { | |
var ca = corner(a, 1), | |
cb = corner(b, 1); | |
return ca !== cb ? ca - cb | |
: ca === 0 ? b[1] - a[1] | |
: ca === 1 ? a[0] - b[0] | |
: ca === 2 ? a[1] - b[1] | |
: b[0] - a[0]; | |
} | |
return function(stream) { | |
var activeStream = stream, | |
bufferStream = clipBuffer(), | |
segments, | |
polygon, | |
ring, | |
x__, y__, v__, // first point | |
x_, y_, v_, // previous point | |
first, | |
clean; | |
var clipStream = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: polygonStart, | |
polygonEnd: polygonEnd | |
}; | |
function point(x, y) { | |
if (visible(x, y)) activeStream.point(x, y); | |
} | |
function polygonInside() { | |
var winding = 0; | |
for (var i = 0, n = polygon.length; i < n; ++i) { | |
for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { | |
a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; | |
if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } | |
else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } | |
} | |
} | |
return winding; | |
} | |
// Buffer geometry within a polygon and then clip it en masse. | |
function polygonStart() { | |
activeStream = bufferStream, segments = [], polygon = [], clean = true; | |
} | |
function polygonEnd() { | |
var startInside = polygonInside(), | |
cleanInside = clean && startInside, | |
visible = (segments = merge$1(segments)).length; | |
if (cleanInside || visible) { | |
stream.polygonStart(); | |
if (cleanInside) { | |
stream.lineStart(); | |
interpolate(null, null, 1, stream); | |
stream.lineEnd(); | |
} | |
if (visible) { | |
clipPolygon(segments, compareIntersection, startInside, interpolate, stream); | |
} | |
stream.polygonEnd(); | |
} | |
activeStream = stream, segments = polygon = ring = null; | |
} | |
function lineStart() { | |
clipStream.point = linePoint; | |
if (polygon) polygon.push(ring = []); | |
first = true; | |
v_ = false; | |
x_ = y_ = NaN; | |
} | |
// TODO rather than special-case polygons, simply handle them separately. | |
// Ideally, coincident intersection points should be jittered to avoid | |
// clipping issues. | |
function lineEnd() { | |
if (segments) { | |
linePoint(x__, y__); | |
if (v__ && v_) bufferStream.rejoin(); | |
segments.push(bufferStream.result()); | |
} | |
clipStream.point = point; | |
if (v_) activeStream.lineEnd(); | |
} | |
function linePoint(x, y) { | |
var v = visible(x, y); | |
if (polygon) ring.push([x, y]); | |
if (first) { | |
x__ = x, y__ = y, v__ = v; | |
first = false; | |
if (v) { | |
activeStream.lineStart(); | |
activeStream.point(x, y); | |
} | |
} else { | |
if (v && v_) activeStream.point(x, y); | |
else { | |
var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], | |
b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; | |
if (clipLine(a, b, x0, y0, x1, y1)) { | |
if (!v_) { | |
activeStream.lineStart(); | |
activeStream.point(a[0], a[1]); | |
} | |
activeStream.point(b[0], b[1]); | |
if (!v) activeStream.lineEnd(); | |
clean = false; | |
} else if (v) { | |
activeStream.lineStart(); | |
activeStream.point(x, y); | |
clean = false; | |
} | |
} | |
} | |
x_ = x, y_ = y, v_ = v; | |
} | |
return clipStream; | |
}; | |
} | |
var extent$2 = function() { | |
var x0 = 0, | |
y0 = 0, | |
x1 = 960, | |
y1 = 500, | |
cache, | |
cacheStream, | |
clip; | |
return clip = { | |
stream: function(stream) { | |
return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream); | |
}, | |
extent: function(_) { | |
return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; | |
} | |
}; | |
}; | |
var sum$2 = adder(); | |
var polygonContains = function(polygon, point) { | |
var lambda = point[0], | |
phi = point[1], | |
normal = [sin$1(lambda), -cos$1(lambda), 0], | |
angle = 0, | |
winding = 0; | |
sum$2.reset(); | |
for (var i = 0, n = polygon.length; i < n; ++i) { | |
if (!(m = (ring = polygon[i]).length)) continue; | |
var ring, | |
m, | |
point0 = ring[m - 1], | |
lambda0 = point0[0], | |
phi0 = point0[1] / 2 + quarterPi, | |
sinPhi0 = sin$1(phi0), | |
cosPhi0 = cos$1(phi0); | |
for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { | |
var point1 = ring[j], | |
lambda1 = point1[0], | |
phi1 = point1[1] / 2 + quarterPi, | |
sinPhi1 = sin$1(phi1), | |
cosPhi1 = cos$1(phi1), | |
delta = lambda1 - lambda0, | |
sign$$1 = delta >= 0 ? 1 : -1, | |
absDelta = sign$$1 * delta, | |
antimeridian = absDelta > pi$3, | |
k = sinPhi0 * sinPhi1; | |
sum$2.add(atan2(k * sign$$1 * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta))); | |
angle += antimeridian ? delta + sign$$1 * tau$3 : delta; | |
// Are the longitudes either side of the point’s meridian (lambda), | |
// and are the latitudes smaller than the parallel (phi)? | |
if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { | |
var arc = cartesianCross(cartesian(point0), cartesian(point1)); | |
cartesianNormalizeInPlace(arc); | |
var intersection = cartesianCross(normal, arc); | |
cartesianNormalizeInPlace(intersection); | |
var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); | |
if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { | |
winding += antimeridian ^ delta >= 0 ? 1 : -1; | |
} | |
} | |
} | |
} | |
// First, determine whether the South pole is inside or outside: | |
// | |
// It is inside if: | |
// * the polygon winds around it in a clockwise direction. | |
// * the polygon does not (cumulatively) wind around it, but has a negative | |
// (counter-clockwise) area. | |
// | |
// Second, count the (signed) number of times a segment crosses a lambda | |
// from the point to the South pole. If it is zero, then the point is the | |
// same side as the South pole. | |
return (angle < -epsilon$2 || angle < epsilon$2 && sum$2 < -epsilon$2) ^ (winding & 1); | |
}; | |
var lengthSum = adder(); | |
var lambda0$2; | |
var sinPhi0$1; | |
var cosPhi0$1; | |
var lengthStream = { | |
sphere: noop$1, | |
point: noop$1, | |
lineStart: lengthLineStart, | |
lineEnd: noop$1, | |
polygonStart: noop$1, | |
polygonEnd: noop$1 | |
}; | |
function lengthLineStart() { | |
lengthStream.point = lengthPointFirst; | |
lengthStream.lineEnd = lengthLineEnd; | |
} | |
function lengthLineEnd() { | |
lengthStream.point = lengthStream.lineEnd = noop$1; | |
} | |
function lengthPointFirst(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
lambda0$2 = lambda, sinPhi0$1 = sin$1(phi), cosPhi0$1 = cos$1(phi); | |
lengthStream.point = lengthPoint; | |
} | |
function lengthPoint(lambda, phi) { | |
lambda *= radians, phi *= radians; | |
var sinPhi = sin$1(phi), | |
cosPhi = cos$1(phi), | |
delta = abs(lambda - lambda0$2), | |
cosDelta = cos$1(delta), | |
sinDelta = sin$1(delta), | |
x = cosPhi * sinDelta, | |
y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, | |
z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; | |
lengthSum.add(atan2(sqrt(x * x + y * y), z)); | |
lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; | |
} | |
var length$2 = function(object) { | |
lengthSum.reset(); | |
geoStream(object, lengthStream); | |
return +lengthSum; | |
}; | |
var coordinates = [null, null]; | |
var object$1 = {type: "LineString", coordinates: coordinates}; | |
var distance = function(a, b) { | |
coordinates[0] = a; | |
coordinates[1] = b; | |
return length$2(object$1); | |
}; | |
var containsObjectType = { | |
Feature: function(object, point) { | |
return containsGeometry(object.geometry, point); | |
}, | |
FeatureCollection: function(object, point) { | |
var features = object.features, i = -1, n = features.length; | |
while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; | |
return false; | |
} | |
}; | |
var containsGeometryType = { | |
Sphere: function() { | |
return true; | |
}, | |
Point: function(object, point) { | |
return containsPoint(object.coordinates, point); | |
}, | |
MultiPoint: function(object, point) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) if (containsPoint(coordinates[i], point)) return true; | |
return false; | |
}, | |
LineString: function(object, point) { | |
return containsLine(object.coordinates, point); | |
}, | |
MultiLineString: function(object, point) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) if (containsLine(coordinates[i], point)) return true; | |
return false; | |
}, | |
Polygon: function(object, point) { | |
return containsPolygon(object.coordinates, point); | |
}, | |
MultiPolygon: function(object, point) { | |
var coordinates = object.coordinates, i = -1, n = coordinates.length; | |
while (++i < n) if (containsPolygon(coordinates[i], point)) return true; | |
return false; | |
}, | |
GeometryCollection: function(object, point) { | |
var geometries = object.geometries, i = -1, n = geometries.length; | |
while (++i < n) if (containsGeometry(geometries[i], point)) return true; | |
return false; | |
} | |
}; | |
function containsGeometry(geometry, point) { | |
return geometry && containsGeometryType.hasOwnProperty(geometry.type) | |
? containsGeometryType[geometry.type](geometry, point) | |
: false; | |
} | |
function containsPoint(coordinates, point) { | |
return distance(coordinates, point) === 0; | |
} | |
function containsLine(coordinates, point) { | |
var ab = distance(coordinates[0], coordinates[1]), | |
ao = distance(coordinates[0], point), | |
ob = distance(point, coordinates[1]); | |
return ao + ob <= ab + epsilon$2; | |
} | |
function containsPolygon(coordinates, point) { | |
return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); | |
} | |
function ringRadians(ring) { | |
return ring = ring.map(pointRadians), ring.pop(), ring; | |
} | |
function pointRadians(point) { | |
return [point[0] * radians, point[1] * radians]; | |
} | |
var contains = function(object, point) { | |
return (object && containsObjectType.hasOwnProperty(object.type) | |
? containsObjectType[object.type] | |
: containsGeometry)(object, point); | |
}; | |
function graticuleX(y0, y1, dy) { | |
var y = sequence(y0, y1 - epsilon$2, dy).concat(y1); | |
return function(x) { return y.map(function(y) { return [x, y]; }); }; | |
} | |
function graticuleY(x0, x1, dx) { | |
var x = sequence(x0, x1 - epsilon$2, dx).concat(x1); | |
return function(y) { return x.map(function(x) { return [x, y]; }); }; | |
} | |
function graticule() { | |
var x1, x0, X1, X0, | |
y1, y0, Y1, Y0, | |
dx = 10, dy = dx, DX = 90, DY = 360, | |
x, y, X, Y, | |
precision = 2.5; | |
function graticule() { | |
return {type: "MultiLineString", coordinates: lines()}; | |
} | |
function lines() { | |
return sequence(ceil(X0 / DX) * DX, X1, DX).map(X) | |
.concat(sequence(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) | |
.concat(sequence(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon$2; }).map(x)) | |
.concat(sequence(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon$2; }).map(y)); | |
} | |
graticule.lines = function() { | |
return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); | |
}; | |
graticule.outline = function() { | |
return { | |
type: "Polygon", | |
coordinates: [ | |
X(X0).concat( | |
Y(Y1).slice(1), | |
X(X1).reverse().slice(1), | |
Y(Y0).reverse().slice(1)) | |
] | |
}; | |
}; | |
graticule.extent = function(_) { | |
if (!arguments.length) return graticule.extentMinor(); | |
return graticule.extentMajor(_).extentMinor(_); | |
}; | |
graticule.extentMajor = function(_) { | |
if (!arguments.length) return [[X0, Y0], [X1, Y1]]; | |
X0 = +_[0][0], X1 = +_[1][0]; | |
Y0 = +_[0][1], Y1 = +_[1][1]; | |
if (X0 > X1) _ = X0, X0 = X1, X1 = _; | |
if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; | |
return graticule.precision(precision); | |
}; | |
graticule.extentMinor = function(_) { | |
if (!arguments.length) return [[x0, y0], [x1, y1]]; | |
x0 = +_[0][0], x1 = +_[1][0]; | |
y0 = +_[0][1], y1 = +_[1][1]; | |
if (x0 > x1) _ = x0, x0 = x1, x1 = _; | |
if (y0 > y1) _ = y0, y0 = y1, y1 = _; | |
return graticule.precision(precision); | |
}; | |
graticule.step = function(_) { | |
if (!arguments.length) return graticule.stepMinor(); | |
return graticule.stepMajor(_).stepMinor(_); | |
}; | |
graticule.stepMajor = function(_) { | |
if (!arguments.length) return [DX, DY]; | |
DX = +_[0], DY = +_[1]; | |
return graticule; | |
}; | |
graticule.stepMinor = function(_) { | |
if (!arguments.length) return [dx, dy]; | |
dx = +_[0], dy = +_[1]; | |
return graticule; | |
}; | |
graticule.precision = function(_) { | |
if (!arguments.length) return precision; | |
precision = +_; | |
x = graticuleX(y0, y1, 90); | |
y = graticuleY(x0, x1, precision); | |
X = graticuleX(Y0, Y1, 90); | |
Y = graticuleY(X0, X1, precision); | |
return graticule; | |
}; | |
return graticule | |
.extentMajor([[-180, -90 + epsilon$2], [180, 90 - epsilon$2]]) | |
.extentMinor([[-180, -80 - epsilon$2], [180, 80 + epsilon$2]]); | |
} | |
function graticule10() { | |
return graticule()(); | |
} | |
var interpolate$1 = function(a, b) { | |
var x0 = a[0] * radians, | |
y0 = a[1] * radians, | |
x1 = b[0] * radians, | |
y1 = b[1] * radians, | |
cy0 = cos$1(y0), | |
sy0 = sin$1(y0), | |
cy1 = cos$1(y1), | |
sy1 = sin$1(y1), | |
kx0 = cy0 * cos$1(x0), | |
ky0 = cy0 * sin$1(x0), | |
kx1 = cy1 * cos$1(x1), | |
ky1 = cy1 * sin$1(x1), | |
d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), | |
k = sin$1(d); | |
var interpolate = d ? function(t) { | |
var B = sin$1(t *= d) / k, | |
A = sin$1(d - t) / k, | |
x = A * kx0 + B * kx1, | |
y = A * ky0 + B * ky1, | |
z = A * sy0 + B * sy1; | |
return [ | |
atan2(y, x) * degrees$1, | |
atan2(z, sqrt(x * x + y * y)) * degrees$1 | |
]; | |
} : function() { | |
return [x0 * degrees$1, y0 * degrees$1]; | |
}; | |
interpolate.distance = d; | |
return interpolate; | |
}; | |
var identity$5 = function(x) { | |
return x; | |
}; | |
var areaSum$1 = adder(); | |
var areaRingSum$1 = adder(); | |
var x00; | |
var y00; | |
var x0$1; | |
var y0$1; | |
var areaStream$1 = { | |
point: noop$1, | |
lineStart: noop$1, | |
lineEnd: noop$1, | |
polygonStart: function() { | |
areaStream$1.lineStart = areaRingStart$1; | |
areaStream$1.lineEnd = areaRingEnd$1; | |
}, | |
polygonEnd: function() { | |
areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop$1; | |
areaSum$1.add(abs(areaRingSum$1)); | |
areaRingSum$1.reset(); | |
}, | |
result: function() { | |
var area = areaSum$1 / 2; | |
areaSum$1.reset(); | |
return area; | |
} | |
}; | |
function areaRingStart$1() { | |
areaStream$1.point = areaPointFirst$1; | |
} | |
function areaPointFirst$1(x, y) { | |
areaStream$1.point = areaPoint$1; | |
x00 = x0$1 = x, y00 = y0$1 = y; | |
} | |
function areaPoint$1(x, y) { | |
areaRingSum$1.add(y0$1 * x - x0$1 * y); | |
x0$1 = x, y0$1 = y; | |
} | |
function areaRingEnd$1() { | |
areaPoint$1(x00, y00); | |
} | |
var x0$2 = Infinity; | |
var y0$2 = x0$2; | |
var x1 = -x0$2; | |
var y1 = x1; | |
var boundsStream$1 = { | |
point: boundsPoint$1, | |
lineStart: noop$1, | |
lineEnd: noop$1, | |
polygonStart: noop$1, | |
polygonEnd: noop$1, | |
result: function() { | |
var bounds = [[x0$2, y0$2], [x1, y1]]; | |
x1 = y1 = -(y0$2 = x0$2 = Infinity); | |
return bounds; | |
} | |
}; | |
function boundsPoint$1(x, y) { | |
if (x < x0$2) x0$2 = x; | |
if (x > x1) x1 = x; | |
if (y < y0$2) y0$2 = y; | |
if (y > y1) y1 = y; | |
} | |
// TODO Enforce positive area for exterior, negative area for interior? | |
var X0$1 = 0; | |
var Y0$1 = 0; | |
var Z0$1 = 0; | |
var X1$1 = 0; | |
var Y1$1 = 0; | |
var Z1$1 = 0; | |
var X2$1 = 0; | |
var Y2$1 = 0; | |
var Z2$1 = 0; | |
var x00$1; | |
var y00$1; | |
var x0$3; | |
var y0$3; | |
var centroidStream$1 = { | |
point: centroidPoint$1, | |
lineStart: centroidLineStart$1, | |
lineEnd: centroidLineEnd$1, | |
polygonStart: function() { | |
centroidStream$1.lineStart = centroidRingStart$1; | |
centroidStream$1.lineEnd = centroidRingEnd$1; | |
}, | |
polygonEnd: function() { | |
centroidStream$1.point = centroidPoint$1; | |
centroidStream$1.lineStart = centroidLineStart$1; | |
centroidStream$1.lineEnd = centroidLineEnd$1; | |
}, | |
result: function() { | |
var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] | |
: Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] | |
: Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] | |
: [NaN, NaN]; | |
X0$1 = Y0$1 = Z0$1 = | |
X1$1 = Y1$1 = Z1$1 = | |
X2$1 = Y2$1 = Z2$1 = 0; | |
return centroid; | |
} | |
}; | |
function centroidPoint$1(x, y) { | |
X0$1 += x; | |
Y0$1 += y; | |
++Z0$1; | |
} | |
function centroidLineStart$1() { | |
centroidStream$1.point = centroidPointFirstLine; | |
} | |
function centroidPointFirstLine(x, y) { | |
centroidStream$1.point = centroidPointLine; | |
centroidPoint$1(x0$3 = x, y0$3 = y); | |
} | |
function centroidPointLine(x, y) { | |
var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); | |
X1$1 += z * (x0$3 + x) / 2; | |
Y1$1 += z * (y0$3 + y) / 2; | |
Z1$1 += z; | |
centroidPoint$1(x0$3 = x, y0$3 = y); | |
} | |
function centroidLineEnd$1() { | |
centroidStream$1.point = centroidPoint$1; | |
} | |
function centroidRingStart$1() { | |
centroidStream$1.point = centroidPointFirstRing; | |
} | |
function centroidRingEnd$1() { | |
centroidPointRing(x00$1, y00$1); | |
} | |
function centroidPointFirstRing(x, y) { | |
centroidStream$1.point = centroidPointRing; | |
centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); | |
} | |
function centroidPointRing(x, y) { | |
var dx = x - x0$3, | |
dy = y - y0$3, | |
z = sqrt(dx * dx + dy * dy); | |
X1$1 += z * (x0$3 + x) / 2; | |
Y1$1 += z * (y0$3 + y) / 2; | |
Z1$1 += z; | |
z = y0$3 * x - x0$3 * y; | |
X2$1 += z * (x0$3 + x); | |
Y2$1 += z * (y0$3 + y); | |
Z2$1 += z * 3; | |
centroidPoint$1(x0$3 = x, y0$3 = y); | |
} | |
function PathContext(context) { | |
this._context = context; | |
} | |
PathContext.prototype = { | |
_radius: 4.5, | |
pointRadius: function(_) { | |
return this._radius = _, this; | |
}, | |
polygonStart: function() { | |
this._line = 0; | |
}, | |
polygonEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._line === 0) this._context.closePath(); | |
this._point = NaN; | |
}, | |
point: function(x, y) { | |
switch (this._point) { | |
case 0: { | |
this._context.moveTo(x, y); | |
this._point = 1; | |
break; | |
} | |
case 1: { | |
this._context.lineTo(x, y); | |
break; | |
} | |
default: { | |
this._context.moveTo(x + this._radius, y); | |
this._context.arc(x, y, this._radius, 0, tau$3); | |
break; | |
} | |
} | |
}, | |
result: noop$1 | |
}; | |
var lengthSum$1 = adder(); | |
var lengthRing; | |
var x00$2; | |
var y00$2; | |
var x0$4; | |
var y0$4; | |
var lengthStream$1 = { | |
point: noop$1, | |
lineStart: function() { | |
lengthStream$1.point = lengthPointFirst$1; | |
}, | |
lineEnd: function() { | |
if (lengthRing) lengthPoint$1(x00$2, y00$2); | |
lengthStream$1.point = noop$1; | |
}, | |
polygonStart: function() { | |
lengthRing = true; | |
}, | |
polygonEnd: function() { | |
lengthRing = null; | |
}, | |
result: function() { | |
var length = +lengthSum$1; | |
lengthSum$1.reset(); | |
return length; | |
} | |
}; | |
function lengthPointFirst$1(x, y) { | |
lengthStream$1.point = lengthPoint$1; | |
x00$2 = x0$4 = x, y00$2 = y0$4 = y; | |
} | |
function lengthPoint$1(x, y) { | |
x0$4 -= x, y0$4 -= y; | |
lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); | |
x0$4 = x, y0$4 = y; | |
} | |
function PathString() { | |
this._string = []; | |
} | |
PathString.prototype = { | |
_radius: 4.5, | |
_circle: circle$1(4.5), | |
pointRadius: function(_) { | |
if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; | |
return this; | |
}, | |
polygonStart: function() { | |
this._line = 0; | |
}, | |
polygonEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._line === 0) this._string.push("Z"); | |
this._point = NaN; | |
}, | |
point: function(x, y) { | |
switch (this._point) { | |
case 0: { | |
this._string.push("M", x, ",", y); | |
this._point = 1; | |
break; | |
} | |
case 1: { | |
this._string.push("L", x, ",", y); | |
break; | |
} | |
default: { | |
if (this._circle == null) this._circle = circle$1(this._radius); | |
this._string.push("M", x, ",", y, this._circle); | |
break; | |
} | |
} | |
}, | |
result: function() { | |
if (this._string.length) { | |
var result = this._string.join(""); | |
this._string = []; | |
return result; | |
} else { | |
return null; | |
} | |
} | |
}; | |
function circle$1(radius) { | |
return "m0," + radius | |
+ "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius | |
+ "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius | |
+ "z"; | |
} | |
var index$1 = function(projection, context) { | |
var pointRadius = 4.5, | |
projectionStream, | |
contextStream; | |
function path(object) { | |
if (object) { | |
if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); | |
geoStream(object, projectionStream(contextStream)); | |
} | |
return contextStream.result(); | |
} | |
path.area = function(object) { | |
geoStream(object, projectionStream(areaStream$1)); | |
return areaStream$1.result(); | |
}; | |
path.measure = function(object) { | |
geoStream(object, projectionStream(lengthStream$1)); | |
return lengthStream$1.result(); | |
}; | |
path.bounds = function(object) { | |
geoStream(object, projectionStream(boundsStream$1)); | |
return boundsStream$1.result(); | |
}; | |
path.centroid = function(object) { | |
geoStream(object, projectionStream(centroidStream$1)); | |
return centroidStream$1.result(); | |
}; | |
path.projection = function(_) { | |
return arguments.length ? (projectionStream = _ == null ? (projection = null, identity$5) : (projection = _).stream, path) : projection; | |
}; | |
path.context = function(_) { | |
if (!arguments.length) return context; | |
contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); | |
if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); | |
return path; | |
}; | |
path.pointRadius = function(_) { | |
if (!arguments.length) return pointRadius; | |
pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); | |
return path; | |
}; | |
return path.projection(projection).context(context); | |
}; | |
var clip = function(pointVisible, clipLine, interpolate, start) { | |
return function(rotate, sink) { | |
var line = clipLine(sink), | |
rotatedStart = rotate.invert(start[0], start[1]), | |
ringBuffer = clipBuffer(), | |
ringSink = clipLine(ringBuffer), | |
polygonStarted = false, | |
polygon, | |
segments, | |
ring; | |
var clip = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: function() { | |
clip.point = pointRing; | |
clip.lineStart = ringStart; | |
clip.lineEnd = ringEnd; | |
segments = []; | |
polygon = []; | |
}, | |
polygonEnd: function() { | |
clip.point = point; | |
clip.lineStart = lineStart; | |
clip.lineEnd = lineEnd; | |
segments = merge$1(segments); | |
var startInside = polygonContains(polygon, rotatedStart); | |
if (segments.length) { | |
if (!polygonStarted) sink.polygonStart(), polygonStarted = true; | |
clipPolygon(segments, compareIntersection, startInside, interpolate, sink); | |
} else if (startInside) { | |
if (!polygonStarted) sink.polygonStart(), polygonStarted = true; | |
sink.lineStart(); | |
interpolate(null, null, 1, sink); | |
sink.lineEnd(); | |
} | |
if (polygonStarted) sink.polygonEnd(), polygonStarted = false; | |
segments = polygon = null; | |
}, | |
sphere: function() { | |
sink.polygonStart(); | |
sink.lineStart(); | |
interpolate(null, null, 1, sink); | |
sink.lineEnd(); | |
sink.polygonEnd(); | |
} | |
}; | |
function point(lambda, phi) { | |
var point = rotate(lambda, phi); | |
if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi); | |
} | |
function pointLine(lambda, phi) { | |
var point = rotate(lambda, phi); | |
line.point(point[0], point[1]); | |
} | |
function lineStart() { | |
clip.point = pointLine; | |
line.lineStart(); | |
} | |
function lineEnd() { | |
clip.point = point; | |
line.lineEnd(); | |
} | |
function pointRing(lambda, phi) { | |
ring.push([lambda, phi]); | |
var point = rotate(lambda, phi); | |
ringSink.point(point[0], point[1]); | |
} | |
function ringStart() { | |
ringSink.lineStart(); | |
ring = []; | |
} | |
function ringEnd() { | |
pointRing(ring[0][0], ring[0][1]); | |
ringSink.lineEnd(); | |
var clean = ringSink.clean(), | |
ringSegments = ringBuffer.result(), | |
i, n = ringSegments.length, m, | |
segment, | |
point; | |
ring.pop(); | |
polygon.push(ring); | |
ring = null; | |
if (!n) return; | |
// No intersections. | |
if (clean & 1) { | |
segment = ringSegments[0]; | |
if ((m = segment.length - 1) > 0) { | |
if (!polygonStarted) sink.polygonStart(), polygonStarted = true; | |
sink.lineStart(); | |
for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); | |
sink.lineEnd(); | |
} | |
return; | |
} | |
// Rejoin connected segments. | |
// TODO reuse ringBuffer.rejoin()? | |
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); | |
segments.push(ringSegments.filter(validSegment)); | |
} | |
return clip; | |
}; | |
}; | |
function validSegment(segment) { | |
return segment.length > 1; | |
} | |
// Intersections are sorted along the clip edge. For both antimeridian cutting | |
// and circle clipping, the same comparison is used. | |
function compareIntersection(a, b) { | |
return ((a = a.x)[0] < 0 ? a[1] - halfPi$2 - epsilon$2 : halfPi$2 - a[1]) | |
- ((b = b.x)[0] < 0 ? b[1] - halfPi$2 - epsilon$2 : halfPi$2 - b[1]); | |
} | |
var clipAntimeridian = clip( | |
function() { return true; }, | |
clipAntimeridianLine, | |
clipAntimeridianInterpolate, | |
[-pi$3, -halfPi$2] | |
); | |
// Takes a line and cuts into visible segments. Return values: 0 - there were | |
// intersections or the line was empty; 1 - no intersections; 2 - there were | |
// intersections, and the first and last segments should be rejoined. | |
function clipAntimeridianLine(stream) { | |
var lambda0 = NaN, | |
phi0 = NaN, | |
sign0 = NaN, | |
clean; // no intersections | |
return { | |
lineStart: function() { | |
stream.lineStart(); | |
clean = 1; | |
}, | |
point: function(lambda1, phi1) { | |
var sign1 = lambda1 > 0 ? pi$3 : -pi$3, | |
delta = abs(lambda1 - lambda0); | |
if (abs(delta - pi$3) < epsilon$2) { // line crosses a pole | |
stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$2 : -halfPi$2); | |
stream.point(sign0, phi0); | |
stream.lineEnd(); | |
stream.lineStart(); | |
stream.point(sign1, phi0); | |
stream.point(lambda1, phi0); | |
clean = 0; | |
} else if (sign0 !== sign1 && delta >= pi$3) { // line crosses antimeridian | |
if (abs(lambda0 - sign0) < epsilon$2) lambda0 -= sign0 * epsilon$2; // handle degeneracies | |
if (abs(lambda1 - sign1) < epsilon$2) lambda1 -= sign1 * epsilon$2; | |
phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); | |
stream.point(sign0, phi0); | |
stream.lineEnd(); | |
stream.lineStart(); | |
stream.point(sign1, phi0); | |
clean = 0; | |
} | |
stream.point(lambda0 = lambda1, phi0 = phi1); | |
sign0 = sign1; | |
}, | |
lineEnd: function() { | |
stream.lineEnd(); | |
lambda0 = phi0 = NaN; | |
}, | |
clean: function() { | |
return 2 - clean; // if intersections, rejoin first and last segments | |
} | |
}; | |
} | |
function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { | |
var cosPhi0, | |
cosPhi1, | |
sinLambda0Lambda1 = sin$1(lambda0 - lambda1); | |
return abs(sinLambda0Lambda1) > epsilon$2 | |
? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) | |
- sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) | |
/ (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) | |
: (phi0 + phi1) / 2; | |
} | |
function clipAntimeridianInterpolate(from, to, direction, stream) { | |
var phi; | |
if (from == null) { | |
phi = direction * halfPi$2; | |
stream.point(-pi$3, phi); | |
stream.point(0, phi); | |
stream.point(pi$3, phi); | |
stream.point(pi$3, 0); | |
stream.point(pi$3, -phi); | |
stream.point(0, -phi); | |
stream.point(-pi$3, -phi); | |
stream.point(-pi$3, 0); | |
stream.point(-pi$3, phi); | |
} else if (abs(from[0] - to[0]) > epsilon$2) { | |
var lambda = from[0] < to[0] ? pi$3 : -pi$3; | |
phi = direction * lambda / 2; | |
stream.point(-lambda, phi); | |
stream.point(0, phi); | |
stream.point(lambda, phi); | |
} else { | |
stream.point(to[0], to[1]); | |
} | |
} | |
var clipCircle = function(radius, delta) { | |
var cr = cos$1(radius), | |
smallRadius = cr > 0, | |
notHemisphere = abs(cr) > epsilon$2; // TODO optimise for this common case | |
function interpolate(from, to, direction, stream) { | |
circleStream(stream, radius, delta, direction, from, to); | |
} | |
function visible(lambda, phi) { | |
return cos$1(lambda) * cos$1(phi) > cr; | |
} | |
// Takes a line and cuts into visible segments. Return values used for polygon | |
// clipping: 0 - there were intersections or the line was empty; 1 - no | |
// intersections 2 - there were intersections, and the first and last segments | |
// should be rejoined. | |
function clipLine(stream) { | |
var point0, // previous point | |
c0, // code for previous point | |
v0, // visibility of previous point | |
v00, // visibility of first point | |
clean; // no intersections | |
return { | |
lineStart: function() { | |
v00 = v0 = false; | |
clean = 1; | |
}, | |
point: function(lambda, phi) { | |
var point1 = [lambda, phi], | |
point2, | |
v = visible(lambda, phi), | |
c = smallRadius | |
? v ? 0 : code(lambda, phi) | |
: v ? code(lambda + (lambda < 0 ? pi$3 : -pi$3), phi) : 0; | |
if (!point0 && (v00 = v0 = v)) stream.lineStart(); | |
// Handle degeneracies. | |
// TODO ignore if not clipping polygons. | |
if (v !== v0) { | |
point2 = intersect(point0, point1); | |
if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { | |
point1[0] += epsilon$2; | |
point1[1] += epsilon$2; | |
v = visible(point1[0], point1[1]); | |
} | |
} | |
if (v !== v0) { | |
clean = 0; | |
if (v) { | |
// outside going in | |
stream.lineStart(); | |
point2 = intersect(point1, point0); | |
stream.point(point2[0], point2[1]); | |
} else { | |
// inside going out | |
point2 = intersect(point0, point1); | |
stream.point(point2[0], point2[1]); | |
stream.lineEnd(); | |
} | |
point0 = point2; | |
} else if (notHemisphere && point0 && smallRadius ^ v) { | |
var t; | |
// If the codes for two points are different, or are both zero, | |
// and there this segment intersects with the small circle. | |
if (!(c & c0) && (t = intersect(point1, point0, true))) { | |
clean = 0; | |
if (smallRadius) { | |
stream.lineStart(); | |
stream.point(t[0][0], t[0][1]); | |
stream.point(t[1][0], t[1][1]); | |
stream.lineEnd(); | |
} else { | |
stream.point(t[1][0], t[1][1]); | |
stream.lineEnd(); | |
stream.lineStart(); | |
stream.point(t[0][0], t[0][1]); | |
} | |
} | |
} | |
if (v && (!point0 || !pointEqual(point0, point1))) { | |
stream.point(point1[0], point1[1]); | |
} | |
point0 = point1, v0 = v, c0 = c; | |
}, | |
lineEnd: function() { | |
if (v0) stream.lineEnd(); | |
point0 = null; | |
}, | |
// Rejoin first and last segments if there were intersections and the first | |
// and last points were visible. | |
clean: function() { | |
return clean | ((v00 && v0) << 1); | |
} | |
}; | |
} | |
// Intersects the great circle between a and b with the clip circle. | |
function intersect(a, b, two) { | |
var pa = cartesian(a), | |
pb = cartesian(b); | |
// We have two planes, n1.p = d1 and n2.p = d2. | |
// Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). | |
var n1 = [1, 0, 0], // normal | |
n2 = cartesianCross(pa, pb), | |
n2n2 = cartesianDot(n2, n2), | |
n1n2 = n2[0], // cartesianDot(n1, n2), | |
determinant = n2n2 - n1n2 * n1n2; | |
// Two polar points. | |
if (!determinant) return !two && a; | |
var c1 = cr * n2n2 / determinant, | |
c2 = -cr * n1n2 / determinant, | |
n1xn2 = cartesianCross(n1, n2), | |
A = cartesianScale(n1, c1), | |
B = cartesianScale(n2, c2); | |
cartesianAddInPlace(A, B); | |
// Solve |p(t)|^2 = 1. | |
var u = n1xn2, | |
w = cartesianDot(A, u), | |
uu = cartesianDot(u, u), | |
t2 = w * w - uu * (cartesianDot(A, A) - 1); | |
if (t2 < 0) return; | |
var t = sqrt(t2), | |
q = cartesianScale(u, (-w - t) / uu); | |
cartesianAddInPlace(q, A); | |
q = spherical(q); | |
if (!two) return q; | |
// Two intersection points. | |
var lambda0 = a[0], | |
lambda1 = b[0], | |
phi0 = a[1], | |
phi1 = b[1], | |
z; | |
if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; | |
var delta = lambda1 - lambda0, | |
polar = abs(delta - pi$3) < epsilon$2, | |
meridian = polar || delta < epsilon$2; | |
if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; | |
// Check that the first point is between a and b. | |
if (meridian | |
? polar | |
? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon$2 ? phi0 : phi1) | |
: phi0 <= q[1] && q[1] <= phi1 | |
: delta > pi$3 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { | |
var q1 = cartesianScale(u, (-w + t) / uu); | |
cartesianAddInPlace(q1, A); | |
return [q, spherical(q1)]; | |
} | |
} | |
// Generates a 4-bit vector representing the location of a point relative to | |
// the small circle's bounding box. | |
function code(lambda, phi) { | |
var r = smallRadius ? radius : pi$3 - radius, | |
code = 0; | |
if (lambda < -r) code |= 1; // left | |
else if (lambda > r) code |= 2; // right | |
if (phi < -r) code |= 4; // below | |
else if (phi > r) code |= 8; // above | |
return code; | |
} | |
return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$3, radius - pi$3]); | |
}; | |
var transform = function(methods) { | |
return { | |
stream: transformer(methods) | |
}; | |
}; | |
function transformer(methods) { | |
return function(stream) { | |
var s = new TransformStream; | |
for (var key in methods) s[key] = methods[key]; | |
s.stream = stream; | |
return s; | |
}; | |
} | |
function TransformStream() {} | |
TransformStream.prototype = { | |
constructor: TransformStream, | |
point: function(x, y) { this.stream.point(x, y); }, | |
sphere: function() { this.stream.sphere(); }, | |
lineStart: function() { this.stream.lineStart(); }, | |
lineEnd: function() { this.stream.lineEnd(); }, | |
polygonStart: function() { this.stream.polygonStart(); }, | |
polygonEnd: function() { this.stream.polygonEnd(); } | |
}; | |
function fitExtent(projection, extent, object) { | |
var w = extent[1][0] - extent[0][0], | |
h = extent[1][1] - extent[0][1], | |
clip = projection.clipExtent && projection.clipExtent(); | |
projection | |
.scale(150) | |
.translate([0, 0]); | |
if (clip != null) projection.clipExtent(null); | |
geoStream(object, projection.stream(boundsStream$1)); | |
var b = boundsStream$1.result(), | |
k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), | |
x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, | |
y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; | |
if (clip != null) projection.clipExtent(clip); | |
return projection | |
.scale(k * 150) | |
.translate([x, y]); | |
} | |
function fitSize(projection, size, object) { | |
return fitExtent(projection, [[0, 0], size], object); | |
} | |
var maxDepth = 16; | |
var cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance) | |
var resample = function(project, delta2) { | |
return +delta2 ? resample$1(project, delta2) : resampleNone(project); | |
}; | |
function resampleNone(project) { | |
return transformer({ | |
point: function(x, y) { | |
x = project(x, y); | |
this.stream.point(x[0], x[1]); | |
} | |
}); | |
} | |
function resample$1(project, delta2) { | |
function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { | |
var dx = x1 - x0, | |
dy = y1 - y0, | |
d2 = dx * dx + dy * dy; | |
if (d2 > 4 * delta2 && depth--) { | |
var a = a0 + a1, | |
b = b0 + b1, | |
c = c0 + c1, | |
m = sqrt(a * a + b * b + c * c), | |
phi2 = asin(c /= m), | |
lambda2 = abs(abs(c) - 1) < epsilon$2 || abs(lambda0 - lambda1) < epsilon$2 ? (lambda0 + lambda1) / 2 : atan2(b, a), | |
p = project(lambda2, phi2), | |
x2 = p[0], | |
y2 = p[1], | |
dx2 = x2 - x0, | |
dy2 = y2 - y0, | |
dz = dy * dx2 - dx * dy2; | |
if (dz * dz / d2 > delta2 // perpendicular projected distance | |
|| abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end | |
|| a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance | |
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); | |
stream.point(x2, y2); | |
resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); | |
} | |
} | |
} | |
return function(stream) { | |
var lambda00, x00, y00, a00, b00, c00, // first point | |
lambda0, x0, y0, a0, b0, c0; // previous point | |
var resampleStream = { | |
point: point, | |
lineStart: lineStart, | |
lineEnd: lineEnd, | |
polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, | |
polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } | |
}; | |
function point(x, y) { | |
x = project(x, y); | |
stream.point(x[0], x[1]); | |
} | |
function lineStart() { | |
x0 = NaN; | |
resampleStream.point = linePoint; | |
stream.lineStart(); | |
} | |
function linePoint(lambda, phi) { | |
var c = cartesian([lambda, phi]), p = project(lambda, phi); | |
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); | |
stream.point(x0, y0); | |
} | |
function lineEnd() { | |
resampleStream.point = point; | |
stream.lineEnd(); | |
} | |
function ringStart() { | |
lineStart(); | |
resampleStream.point = ringPoint; | |
resampleStream.lineEnd = ringEnd; | |
} | |
function ringPoint(lambda, phi) { | |
linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; | |
resampleStream.point = linePoint; | |
} | |
function ringEnd() { | |
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); | |
resampleStream.lineEnd = lineEnd; | |
lineEnd(); | |
} | |
return resampleStream; | |
}; | |
} | |
var transformRadians = transformer({ | |
point: function(x, y) { | |
this.stream.point(x * radians, y * radians); | |
} | |
}); | |
function projection(project) { | |
return projectionMutator(function() { return project; })(); | |
} | |
function projectionMutator(projectAt) { | |
var project, | |
k = 150, // scale | |
x = 480, y = 250, // translate | |
dx, dy, lambda = 0, phi = 0, // center | |
deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate | |
theta = null, preclip = clipAntimeridian, // clip angle | |
x0 = null, y0, x1, y1, postclip = identity$5, // clip extent | |
delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision | |
cache, | |
cacheStream; | |
function projection(point) { | |
point = projectRotate(point[0] * radians, point[1] * radians); | |
return [point[0] * k + dx, dy - point[1] * k]; | |
} | |
function invert(point) { | |
point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k); | |
return point && [point[0] * degrees$1, point[1] * degrees$1]; | |
} | |
function projectTransform(x, y) { | |
return x = project(x, y), [x[0] * k + dx, dy - x[1] * k]; | |
} | |
projection.stream = function(stream) { | |
return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream)))); | |
}; | |
projection.clipAngle = function(_) { | |
return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees$1; | |
}; | |
projection.clipExtent = function(_) { | |
return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$5) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; | |
}; | |
projection.scale = function(_) { | |
return arguments.length ? (k = +_, recenter()) : k; | |
}; | |
projection.translate = function(_) { | |
return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; | |
}; | |
projection.center = function(_) { | |
return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees$1, phi * degrees$1]; | |
}; | |
projection.rotate = function(_) { | |
return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees$1, deltaPhi * degrees$1, deltaGamma * degrees$1]; | |
}; | |
projection.precision = function(_) { | |
return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); | |
}; | |
projection.fitExtent = function(extent, object) { | |
return fitExtent(projection, extent, object); | |
}; | |
projection.fitSize = function(size, object) { | |
return fitSize(projection, size, object); | |
}; | |
function recenter() { | |
projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project); | |
var center = project(lambda, phi); | |
dx = x - center[0] * k; | |
dy = y + center[1] * k; | |
return reset(); | |
} | |
function reset() { | |
cache = cacheStream = null; | |
return projection; | |
} | |
return function() { | |
project = projectAt.apply(this, arguments); | |
projection.invert = project.invert && invert; | |
return recenter(); | |
}; | |
} | |
function conicProjection(projectAt) { | |
var phi0 = 0, | |
phi1 = pi$3 / 3, | |
m = projectionMutator(projectAt), | |
p = m(phi0, phi1); | |
p.parallels = function(_) { | |
return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees$1, phi1 * degrees$1]; | |
}; | |
return p; | |
} | |
function cylindricalEqualAreaRaw(phi0) { | |
var cosPhi0 = cos$1(phi0); | |
function forward(lambda, phi) { | |
return [lambda * cosPhi0, sin$1(phi) / cosPhi0]; | |
} | |
forward.invert = function(x, y) { | |
return [x / cosPhi0, asin(y * cosPhi0)]; | |
}; | |
return forward; | |
} | |
function conicEqualAreaRaw(y0, y1) { | |
var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2; | |
// Are the parallels symmetrical around the Equator? | |
if (abs(n) < epsilon$2) return cylindricalEqualAreaRaw(y0); | |
var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; | |
function project(x, y) { | |
var r = sqrt(c - 2 * n * sin$1(y)) / n; | |
return [r * sin$1(x *= n), r0 - r * cos$1(x)]; | |
} | |
project.invert = function(x, y) { | |
var r0y = r0 - y; | |
return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; | |
}; | |
return project; | |
} | |
var conicEqualArea = function() { | |
return conicProjection(conicEqualAreaRaw) | |
.scale(155.424) | |
.center([0, 33.6442]); | |
}; | |
var albers = function() { | |
return conicEqualArea() | |
.parallels([29.5, 45.5]) | |
.scale(1070) | |
.translate([480, 250]) | |
.rotate([96, 0]) | |
.center([-0.6, 38.7]); | |
}; | |
// The projections must have mutually exclusive clip regions on the sphere, | |
// as this will avoid emitting interleaving lines and polygons. | |
function multiplex(streams) { | |
var n = streams.length; | |
return { | |
point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, | |
sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, | |
lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, | |
lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, | |
polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, | |
polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } | |
}; | |
} | |
// A composite projection for the United States, configured by default for | |
// 960×500. The projection also works quite well at 960×600 if you change the | |
// scale to 1285 and adjust the translate accordingly. The set of standard | |
// parallels for each region comes from USGS, which is published here: | |
// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers | |
var albersUsa = function() { | |
var cache, | |
cacheStream, | |
lower48 = albers(), lower48Point, | |
alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 | |
hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 | |
point, pointStream = {point: function(x, y) { point = [x, y]; }}; | |
function albersUsa(coordinates) { | |
var x = coordinates[0], y = coordinates[1]; | |
return point = null, | |
(lower48Point.point(x, y), point) | |
|| (alaskaPoint.point(x, y), point) | |
|| (hawaiiPoint.point(x, y), point); | |
} | |
albersUsa.invert = function(coordinates) { | |
var k = lower48.scale(), | |
t = lower48.translate(), | |
x = (coordinates[0] - t[0]) / k, | |
y = (coordinates[1] - t[1]) / k; | |
return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska | |
: y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii | |
: lower48).invert(coordinates); | |
}; | |
albersUsa.stream = function(stream) { | |
return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); | |
}; | |
albersUsa.precision = function(_) { | |
if (!arguments.length) return lower48.precision(); | |
lower48.precision(_), alaska.precision(_), hawaii.precision(_); | |
return reset(); | |
}; | |
albersUsa.scale = function(_) { | |
if (!arguments.length) return lower48.scale(); | |
lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); | |
return albersUsa.translate(lower48.translate()); | |
}; | |
albersUsa.translate = function(_) { | |
if (!arguments.length) return lower48.translate(); | |
var k = lower48.scale(), x = +_[0], y = +_[1]; | |
lower48Point = lower48 | |
.translate(_) | |
.clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) | |
.stream(pointStream); | |
alaskaPoint = alaska | |
.translate([x - 0.307 * k, y + 0.201 * k]) | |
.clipExtent([[x - 0.425 * k + epsilon$2, y + 0.120 * k + epsilon$2], [x - 0.214 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) | |
.stream(pointStream); | |
hawaiiPoint = hawaii | |
.translate([x - 0.205 * k, y + 0.212 * k]) | |
.clipExtent([[x - 0.214 * k + epsilon$2, y + 0.166 * k + epsilon$2], [x - 0.115 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) | |
.stream(pointStream); | |
return reset(); | |
}; | |
albersUsa.fitExtent = function(extent, object) { | |
return fitExtent(albersUsa, extent, object); | |
}; | |
albersUsa.fitSize = function(size, object) { | |
return fitSize(albersUsa, size, object); | |
}; | |
function reset() { | |
cache = cacheStream = null; | |
return albersUsa; | |
} | |
return albersUsa.scale(1070); | |
}; | |
function azimuthalRaw(scale) { | |
return function(x, y) { | |
var cx = cos$1(x), | |
cy = cos$1(y), | |
k = scale(cx * cy); | |
return [ | |
k * cy * sin$1(x), | |
k * sin$1(y) | |
]; | |
} | |
} | |
function azimuthalInvert(angle) { | |
return function(x, y) { | |
var z = sqrt(x * x + y * y), | |
c = angle(z), | |
sc = sin$1(c), | |
cc = cos$1(c); | |
return [ | |
atan2(x * sc, z * cc), | |
asin(z && y * sc / z) | |
]; | |
} | |
} | |
var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { | |
return sqrt(2 / (1 + cxcy)); | |
}); | |
azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { | |
return 2 * asin(z / 2); | |
}); | |
var azimuthalEqualArea = function() { | |
return projection(azimuthalEqualAreaRaw) | |
.scale(124.75) | |
.clipAngle(180 - 1e-3); | |
}; | |
var azimuthalEquidistantRaw = azimuthalRaw(function(c) { | |
return (c = acos(c)) && c / sin$1(c); | |
}); | |
azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { | |
return z; | |
}); | |
var azimuthalEquidistant = function() { | |
return projection(azimuthalEquidistantRaw) | |
.scale(79.4188) | |
.clipAngle(180 - 1e-3); | |
}; | |
function mercatorRaw(lambda, phi) { | |
return [lambda, log(tan((halfPi$2 + phi) / 2))]; | |
} | |
mercatorRaw.invert = function(x, y) { | |
return [x, 2 * atan(exp(y)) - halfPi$2]; | |
}; | |
var mercator = function() { | |
return mercatorProjection(mercatorRaw) | |
.scale(961 / tau$3); | |
}; | |
function mercatorProjection(project) { | |
var m = projection(project), | |
center = m.center, | |
scale = m.scale, | |
translate = m.translate, | |
clipExtent = m.clipExtent, | |
x0 = null, y0, x1, y1; // clip extent | |
m.scale = function(_) { | |
return arguments.length ? (scale(_), reclip()) : scale(); | |
}; | |
m.translate = function(_) { | |
return arguments.length ? (translate(_), reclip()) : translate(); | |
}; | |
m.center = function(_) { | |
return arguments.length ? (center(_), reclip()) : center(); | |
}; | |
m.clipExtent = function(_) { | |
return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; | |
}; | |
function reclip() { | |
var k = pi$3 * scale(), | |
t = m(rotation(m.rotate()).invert([0, 0])); | |
return clipExtent(x0 == null | |
? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw | |
? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] | |
: [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); | |
} | |
return reclip(); | |
} | |
function tany(y) { | |
return tan((halfPi$2 + y) / 2); | |
} | |
function conicConformalRaw(y0, y1) { | |
var cy0 = cos$1(y0), | |
n = y0 === y1 ? sin$1(y0) : log(cy0 / cos$1(y1)) / log(tany(y1) / tany(y0)), | |
f = cy0 * pow(tany(y0), n) / n; | |
if (!n) return mercatorRaw; | |
function project(x, y) { | |
if (f > 0) { if (y < -halfPi$2 + epsilon$2) y = -halfPi$2 + epsilon$2; } | |
else { if (y > halfPi$2 - epsilon$2) y = halfPi$2 - epsilon$2; } | |
var r = f / pow(tany(y), n); | |
return [r * sin$1(n * x), f - r * cos$1(n * x)]; | |
} | |
project.invert = function(x, y) { | |
var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); | |
return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi$2]; | |
}; | |
return project; | |
} | |
var conicConformal = function() { | |
return conicProjection(conicConformalRaw) | |
.scale(109.5) | |
.parallels([30, 30]); | |
}; | |
function equirectangularRaw(lambda, phi) { | |
return [lambda, phi]; | |
} | |
equirectangularRaw.invert = equirectangularRaw; | |
var equirectangular = function() { | |
return projection(equirectangularRaw) | |
.scale(152.63); | |
}; | |
function conicEquidistantRaw(y0, y1) { | |
var cy0 = cos$1(y0), | |
n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0), | |
g = cy0 / n + y0; | |
if (abs(n) < epsilon$2) return equirectangularRaw; | |
function project(x, y) { | |
var gy = g - y, nx = n * x; | |
return [gy * sin$1(nx), g - gy * cos$1(nx)]; | |
} | |
project.invert = function(x, y) { | |
var gy = g - y; | |
return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; | |
}; | |
return project; | |
} | |
var conicEquidistant = function() { | |
return conicProjection(conicEquidistantRaw) | |
.scale(131.154) | |
.center([0, 13.9389]); | |
}; | |
function gnomonicRaw(x, y) { | |
var cy = cos$1(y), k = cos$1(x) * cy; | |
return [cy * sin$1(x) / k, sin$1(y) / k]; | |
} | |
gnomonicRaw.invert = azimuthalInvert(atan); | |
var gnomonic = function() { | |
return projection(gnomonicRaw) | |
.scale(144.049) | |
.clipAngle(60); | |
}; | |
function scaleTranslate(kx, ky, tx, ty) { | |
return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity$5 : transformer({ | |
point: function(x, y) { | |
this.stream.point(x * kx + tx, y * ky + ty); | |
} | |
}); | |
} | |
var identity$6 = function() { | |
var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity$5, // scale, translate and reflect | |
x0 = null, y0, x1, y1, clip = identity$5, // clip extent | |
cache, | |
cacheStream, | |
projection; | |
function reset() { | |
cache = cacheStream = null; | |
return projection; | |
} | |
return projection = { | |
stream: function(stream) { | |
return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream)); | |
}, | |
clipExtent: function(_) { | |
return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$5) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; | |
}, | |
scale: function(_) { | |
return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k; | |
}, | |
translate: function(_) { | |
return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; | |
}, | |
reflectX: function(_) { | |
return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; | |
}, | |
reflectY: function(_) { | |
return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; | |
}, | |
fitExtent: function(extent, object) { | |
return fitExtent(projection, extent, object); | |
}, | |
fitSize: function(size, object) { | |
return fitSize(projection, size, object); | |
} | |
}; | |
}; | |
function orthographicRaw(x, y) { | |
return [cos$1(y) * sin$1(x), sin$1(y)]; | |
} | |
orthographicRaw.invert = azimuthalInvert(asin); | |
var orthographic = function() { | |
return projection(orthographicRaw) | |
.scale(249.5) | |
.clipAngle(90 + epsilon$2); | |
}; | |
function stereographicRaw(x, y) { | |
var cy = cos$1(y), k = 1 + cos$1(x) * cy; | |
return [cy * sin$1(x) / k, sin$1(y) / k]; | |
} | |
stereographicRaw.invert = azimuthalInvert(function(z) { | |
return 2 * atan(z); | |
}); | |
var stereographic = function() { | |
return projection(stereographicRaw) | |
.scale(250) | |
.clipAngle(142); | |
}; | |
function transverseMercatorRaw(lambda, phi) { | |
return [log(tan((halfPi$2 + phi) / 2)), -lambda]; | |
} | |
transverseMercatorRaw.invert = function(x, y) { | |
return [-y, 2 * atan(exp(x)) - halfPi$2]; | |
}; | |
var transverseMercator = function() { | |
var m = mercatorProjection(transverseMercatorRaw), | |
center = m.center, | |
rotate = m.rotate; | |
m.center = function(_) { | |
return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); | |
}; | |
m.rotate = function(_) { | |
return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); | |
}; | |
return rotate([0, 0, 90]) | |
.scale(159.155); | |
}; | |
function defaultSeparation(a, b) { | |
return a.parent === b.parent ? 1 : 2; | |
} | |
function meanX(children) { | |
return children.reduce(meanXReduce, 0) / children.length; | |
} | |
function meanXReduce(x, c) { | |
return x + c.x; | |
} | |
function maxY(children) { | |
return 1 + children.reduce(maxYReduce, 0); | |
} | |
function maxYReduce(y, c) { | |
return Math.max(y, c.y); | |
} | |
function leafLeft(node) { | |
var children; | |
while (children = node.children) node = children[0]; | |
return node; | |
} | |
function leafRight(node) { | |
var children; | |
while (children = node.children) node = children[children.length - 1]; | |
return node; | |
} | |
var cluster = function() { | |
var separation = defaultSeparation, | |
dx = 1, | |
dy = 1, | |
nodeSize = false; | |
function cluster(root) { | |
var previousNode, | |
x = 0; | |
// First walk, computing the initial x & y values. | |
root.eachAfter(function(node) { | |
var children = node.children; | |
if (children) { | |
node.x = meanX(children); | |
node.y = maxY(children); | |
} else { | |
node.x = previousNode ? x += separation(node, previousNode) : 0; | |
node.y = 0; | |
previousNode = node; | |
} | |
}); | |
var left = leafLeft(root), | |
right = leafRight(root), | |
x0 = left.x - separation(left, right) / 2, | |
x1 = right.x + separation(right, left) / 2; | |
// Second walk, normalizing x & y to the desired size. | |
return root.eachAfter(nodeSize ? function(node) { | |
node.x = (node.x - root.x) * dx; | |
node.y = (root.y - node.y) * dy; | |
} : function(node) { | |
node.x = (node.x - x0) / (x1 - x0) * dx; | |
node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; | |
}); | |
} | |
cluster.separation = function(x) { | |
return arguments.length ? (separation = x, cluster) : separation; | |
}; | |
cluster.size = function(x) { | |
return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); | |
}; | |
cluster.nodeSize = function(x) { | |
return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); | |
}; | |
return cluster; | |
}; | |
function count(node) { | |
var sum = 0, | |
children = node.children, | |
i = children && children.length; | |
if (!i) sum = 1; | |
else while (--i >= 0) sum += children[i].value; | |
node.value = sum; | |
} | |
var node_count = function() { | |
return this.eachAfter(count); | |
}; | |
var node_each = function(callback) { | |
var node = this, current, next = [node], children, i, n; | |
do { | |
current = next.reverse(), next = []; | |
while (node = current.pop()) { | |
callback(node), children = node.children; | |
if (children) for (i = 0, n = children.length; i < n; ++i) { | |
next.push(children[i]); | |
} | |
} | |
} while (next.length); | |
return this; | |
}; | |
var node_eachBefore = function(callback) { | |
var node = this, nodes = [node], children, i; | |
while (node = nodes.pop()) { | |
callback(node), children = node.children; | |
if (children) for (i = children.length - 1; i >= 0; --i) { | |
nodes.push(children[i]); | |
} | |
} | |
return this; | |
}; | |
var node_eachAfter = function(callback) { | |
var node = this, nodes = [node], next = [], children, i, n; | |
while (node = nodes.pop()) { | |
next.push(node), children = node.children; | |
if (children) for (i = 0, n = children.length; i < n; ++i) { | |
nodes.push(children[i]); | |
} | |
} | |
while (node = next.pop()) { | |
callback(node); | |
} | |
return this; | |
}; | |
var node_sum = function(value) { | |
return this.eachAfter(function(node) { | |
var sum = +value(node.data) || 0, | |
children = node.children, | |
i = children && children.length; | |
while (--i >= 0) sum += children[i].value; | |
node.value = sum; | |
}); | |
}; | |
var node_sort = function(compare) { | |
return this.eachBefore(function(node) { | |
if (node.children) { | |
node.children.sort(compare); | |
} | |
}); | |
}; | |
var node_path = function(end) { | |
var start = this, | |
ancestor = leastCommonAncestor(start, end), | |
nodes = [start]; | |
while (start !== ancestor) { | |
start = start.parent; | |
nodes.push(start); | |
} | |
var k = nodes.length; | |
while (end !== ancestor) { | |
nodes.splice(k, 0, end); | |
end = end.parent; | |
} | |
return nodes; | |
}; | |
function leastCommonAncestor(a, b) { | |
if (a === b) return a; | |
var aNodes = a.ancestors(), | |
bNodes = b.ancestors(), | |
c = null; | |
a = aNodes.pop(); | |
b = bNodes.pop(); | |
while (a === b) { | |
c = a; | |
a = aNodes.pop(); | |
b = bNodes.pop(); | |
} | |
return c; | |
} | |
var node_ancestors = function() { | |
var node = this, nodes = [node]; | |
while (node = node.parent) { | |
nodes.push(node); | |
} | |
return nodes; | |
}; | |
var node_descendants = function() { | |
var nodes = []; | |
this.each(function(node) { | |
nodes.push(node); | |
}); | |
return nodes; | |
}; | |
var node_leaves = function() { | |
var leaves = []; | |
this.eachBefore(function(node) { | |
if (!node.children) { | |
leaves.push(node); | |
} | |
}); | |
return leaves; | |
}; | |
var node_links = function() { | |
var root = this, links = []; | |
root.each(function(node) { | |
if (node !== root) { // Don’t include the root’s parent, if any. | |
links.push({source: node.parent, target: node}); | |
} | |
}); | |
return links; | |
}; | |
function hierarchy(data, children) { | |
var root = new Node(data), | |
valued = +data.value && (root.value = data.value), | |
node, | |
nodes = [root], | |
child, | |
childs, | |
i, | |
n; | |
if (children == null) children = defaultChildren; | |
while (node = nodes.pop()) { | |
if (valued) node.value = +node.data.value; | |
if ((childs = children(node.data)) && (n = childs.length)) { | |
node.children = new Array(n); | |
for (i = n - 1; i >= 0; --i) { | |
nodes.push(child = node.children[i] = new Node(childs[i])); | |
child.parent = node; | |
child.depth = node.depth + 1; | |
} | |
} | |
} | |
return root.eachBefore(computeHeight); | |
} | |
function node_copy() { | |
return hierarchy(this).eachBefore(copyData); | |
} | |
function defaultChildren(d) { | |
return d.children; | |
} | |
function copyData(node) { | |
node.data = node.data.data; | |
} | |
function computeHeight(node) { | |
var height = 0; | |
do node.height = height; | |
while ((node = node.parent) && (node.height < ++height)); | |
} | |
function Node(data) { | |
this.data = data; | |
this.depth = | |
this.height = 0; | |
this.parent = null; | |
} | |
Node.prototype = hierarchy.prototype = { | |
constructor: Node, | |
count: node_count, | |
each: node_each, | |
eachAfter: node_eachAfter, | |
eachBefore: node_eachBefore, | |
sum: node_sum, | |
sort: node_sort, | |
path: node_path, | |
ancestors: node_ancestors, | |
descendants: node_descendants, | |
leaves: node_leaves, | |
links: node_links, | |
copy: node_copy | |
}; | |
var slice$4 = Array.prototype.slice; | |
function shuffle$2(array) { | |
var m = array.length, | |
t, | |
i; | |
while (m) { | |
i = Math.random() * m-- | 0; | |
t = array[m]; | |
array[m] = array[i]; | |
array[i] = t; | |
} | |
return array; | |
} | |
var enclose = function(circles) { | |
var i = 0, n = (circles = shuffle$2(slice$4.call(circles))).length, B = [], p, e; | |
while (i < n) { | |
p = circles[i]; | |
if (e && enclosesWeak(e, p)) ++i; | |
else e = encloseBasis(B = extendBasis(B, p)), i = 0; | |
} | |
return e; | |
}; | |
function extendBasis(B, p) { | |
var i, j; | |
if (enclosesWeakAll(p, B)) return [p]; | |
// If we get here then B must have at least one element. | |
for (i = 0; i < B.length; ++i) { | |
if (enclosesNot(p, B[i]) | |
&& enclosesWeakAll(encloseBasis2(B[i], p), B)) { | |
return [B[i], p]; | |
} | |
} | |
// If we get here then B must have at least two elements. | |
for (i = 0; i < B.length - 1; ++i) { | |
for (j = i + 1; j < B.length; ++j) { | |
if (enclosesNot(encloseBasis2(B[i], B[j]), p) | |
&& enclosesNot(encloseBasis2(B[i], p), B[j]) | |
&& enclosesNot(encloseBasis2(B[j], p), B[i]) | |
&& enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { | |
return [B[i], B[j], p]; | |
} | |
} | |
} | |
// If we get here then something is very wrong. | |
throw new Error; | |
} | |
function enclosesNot(a, b) { | |
var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; | |
return dr < 0 || dr * dr < dx * dx + dy * dy; | |
} | |
function enclosesWeak(a, b) { | |
var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y; | |
return dr > 0 && dr * dr > dx * dx + dy * dy; | |
} | |
function enclosesWeakAll(a, B) { | |
for (var i = 0; i < B.length; ++i) { | |
if (!enclosesWeak(a, B[i])) { | |
return false; | |
} | |
} | |
return true; | |
} | |
function encloseBasis(B) { | |
switch (B.length) { | |
case 1: return encloseBasis1(B[0]); | |
case 2: return encloseBasis2(B[0], B[1]); | |
case 3: return encloseBasis3(B[0], B[1], B[2]); | |
} | |
} | |
function encloseBasis1(a) { | |
return { | |
x: a.x, | |
y: a.y, | |
r: a.r | |
}; | |
} | |
function encloseBasis2(a, b) { | |
var x1 = a.x, y1 = a.y, r1 = a.r, | |
x2 = b.x, y2 = b.y, r2 = b.r, | |
x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, | |
l = Math.sqrt(x21 * x21 + y21 * y21); | |
return { | |
x: (x1 + x2 + x21 / l * r21) / 2, | |
y: (y1 + y2 + y21 / l * r21) / 2, | |
r: (l + r1 + r2) / 2 | |
}; | |
} | |
function encloseBasis3(a, b, c) { | |
var x1 = a.x, y1 = a.y, r1 = a.r, | |
x2 = b.x, y2 = b.y, r2 = b.r, | |
x3 = c.x, y3 = c.y, r3 = c.r, | |
a2 = x1 - x2, | |
a3 = x1 - x3, | |
b2 = y1 - y2, | |
b3 = y1 - y3, | |
c2 = r2 - r1, | |
c3 = r3 - r1, | |
d1 = x1 * x1 + y1 * y1 - r1 * r1, | |
d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, | |
d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, | |
ab = a3 * b2 - a2 * b3, | |
xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, | |
xb = (b3 * c2 - b2 * c3) / ab, | |
ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, | |
yb = (a2 * c3 - a3 * c2) / ab, | |
A = xb * xb + yb * yb - 1, | |
B = 2 * (r1 + xa * xb + ya * yb), | |
C = xa * xa + ya * ya - r1 * r1, | |
r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); | |
return { | |
x: x1 + xa + xb * r, | |
y: y1 + ya + yb * r, | |
r: r | |
}; | |
} | |
function place(a, b, c) { | |
var ax = a.x, | |
ay = a.y, | |
da = b.r + c.r, | |
db = a.r + c.r, | |
dx = b.x - ax, | |
dy = b.y - ay, | |
dc = dx * dx + dy * dy; | |
if (dc) { | |
var x = 0.5 + ((db *= db) - (da *= da)) / (2 * dc), | |
y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc); | |
c.x = ax + x * dx + y * dy; | |
c.y = ay + x * dy - y * dx; | |
} else { | |
c.x = ax + db; | |
c.y = ay; | |
} | |
} | |
function intersects(a, b) { | |
var dx = b.x - a.x, | |
dy = b.y - a.y, | |
dr = a.r + b.r; | |
return dr * dr - 1e-6 > dx * dx + dy * dy; | |
} | |
function score(node) { | |
var a = node._, | |
b = node.next._, | |
ab = a.r + b.r, | |
dx = (a.x * b.r + b.x * a.r) / ab, | |
dy = (a.y * b.r + b.y * a.r) / ab; | |
return dx * dx + dy * dy; | |
} | |
function Node$1(circle) { | |
this._ = circle; | |
this.next = null; | |
this.previous = null; | |
} | |
function packEnclose(circles) { | |
if (!(n = circles.length)) return 0; | |
var a, b, c, n, aa, ca, i, j, k, sj, sk; | |
// Place the first circle. | |
a = circles[0], a.x = 0, a.y = 0; | |
if (!(n > 1)) return a.r; | |
// Place the second circle. | |
b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; | |
if (!(n > 2)) return a.r + b.r; | |
// Place the third circle. | |
place(b, a, c = circles[2]); | |
// Initialize the front-chain using the first three circles a, b and c. | |
a = new Node$1(a), b = new Node$1(b), c = new Node$1(c); | |
a.next = c.previous = b; | |
b.next = a.previous = c; | |
c.next = b.previous = a; | |
// Attempt to place each remaining circle… | |
pack: for (i = 3; i < n; ++i) { | |
place(a._, b._, c = circles[i]), c = new Node$1(c); | |
// Find the closest intersecting circle on the front-chain, if any. | |
// “Closeness” is determined by linear distance along the front-chain. | |
// “Ahead” or “behind” is likewise determined by linear distance. | |
j = b.next, k = a.previous, sj = b._.r, sk = a._.r; | |
do { | |
if (sj <= sk) { | |
if (intersects(j._, c._)) { | |
b = j, a.next = b, b.previous = a, --i; | |
continue pack; | |
} | |
sj += j._.r, j = j.next; | |
} else { | |
if (intersects(k._, c._)) { | |
a = k, a.next = b, b.previous = a, --i; | |
continue pack; | |
} | |
sk += k._.r, k = k.previous; | |
} | |
} while (j !== k.next); | |
// Success! Insert the new circle c between a and b. | |
c.previous = a, c.next = b, a.next = b.previous = b = c; | |
// Compute the new closest circle pair to the centroid. | |
aa = score(a); | |
while ((c = c.next) !== b) { | |
if ((ca = score(c)) < aa) { | |
a = c, aa = ca; | |
} | |
} | |
b = a.next; | |
} | |
// Compute the enclosing circle of the front chain. | |
a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a); | |
// Translate the circles to put the enclosing circle around the origin. | |
for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; | |
return c.r; | |
} | |
var siblings = function(circles) { | |
packEnclose(circles); | |
return circles; | |
}; | |
function optional(f) { | |
return f == null ? null : required(f); | |
} | |
function required(f) { | |
if (typeof f !== "function") throw new Error; | |
return f; | |
} | |
function constantZero() { | |
return 0; | |
} | |
var constant$9 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
function defaultRadius$1(d) { | |
return Math.sqrt(d.value); | |
} | |
var index$2 = function() { | |
var radius = null, | |
dx = 1, | |
dy = 1, | |
padding = constantZero; | |
function pack(root) { | |
root.x = dx / 2, root.y = dy / 2; | |
if (radius) { | |
root.eachBefore(radiusLeaf(radius)) | |
.eachAfter(packChildren(padding, 0.5)) | |
.eachBefore(translateChild(1)); | |
} else { | |
root.eachBefore(radiusLeaf(defaultRadius$1)) | |
.eachAfter(packChildren(constantZero, 1)) | |
.eachAfter(packChildren(padding, root.r / Math.min(dx, dy))) | |
.eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); | |
} | |
return root; | |
} | |
pack.radius = function(x) { | |
return arguments.length ? (radius = optional(x), pack) : radius; | |
}; | |
pack.size = function(x) { | |
return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; | |
}; | |
pack.padding = function(x) { | |
return arguments.length ? (padding = typeof x === "function" ? x : constant$9(+x), pack) : padding; | |
}; | |
return pack; | |
}; | |
function radiusLeaf(radius) { | |
return function(node) { | |
if (!node.children) { | |
node.r = Math.max(0, +radius(node) || 0); | |
} | |
}; | |
} | |
function packChildren(padding, k) { | |
return function(node) { | |
if (children = node.children) { | |
var children, | |
i, | |
n = children.length, | |
r = padding(node) * k || 0, | |
e; | |
if (r) for (i = 0; i < n; ++i) children[i].r += r; | |
e = packEnclose(children); | |
if (r) for (i = 0; i < n; ++i) children[i].r -= r; | |
node.r = e + r; | |
} | |
}; | |
} | |
function translateChild(k) { | |
return function(node) { | |
var parent = node.parent; | |
node.r *= k; | |
if (parent) { | |
node.x = parent.x + k * node.x; | |
node.y = parent.y + k * node.y; | |
} | |
}; | |
} | |
var roundNode = function(node) { | |
node.x0 = Math.round(node.x0); | |
node.y0 = Math.round(node.y0); | |
node.x1 = Math.round(node.x1); | |
node.y1 = Math.round(node.y1); | |
}; | |
var treemapDice = function(parent, x0, y0, x1, y1) { | |
var nodes = parent.children, | |
node, | |
i = -1, | |
n = nodes.length, | |
k = parent.value && (x1 - x0) / parent.value; | |
while (++i < n) { | |
node = nodes[i], node.y0 = y0, node.y1 = y1; | |
node.x0 = x0, node.x1 = x0 += node.value * k; | |
} | |
}; | |
var partition = function() { | |
var dx = 1, | |
dy = 1, | |
padding = 0, | |
round = false; | |
function partition(root) { | |
var n = root.height + 1; | |
root.x0 = | |
root.y0 = padding; | |
root.x1 = dx; | |
root.y1 = dy / n; | |
root.eachBefore(positionNode(dy, n)); | |
if (round) root.eachBefore(roundNode); | |
return root; | |
} | |
function positionNode(dy, n) { | |
return function(node) { | |
if (node.children) { | |
treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); | |
} | |
var x0 = node.x0, | |
y0 = node.y0, | |
x1 = node.x1 - padding, | |
y1 = node.y1 - padding; | |
if (x1 < x0) x0 = x1 = (x0 + x1) / 2; | |
if (y1 < y0) y0 = y1 = (y0 + y1) / 2; | |
node.x0 = x0; | |
node.y0 = y0; | |
node.x1 = x1; | |
node.y1 = y1; | |
}; | |
} | |
partition.round = function(x) { | |
return arguments.length ? (round = !!x, partition) : round; | |
}; | |
partition.size = function(x) { | |
return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; | |
}; | |
partition.padding = function(x) { | |
return arguments.length ? (padding = +x, partition) : padding; | |
}; | |
return partition; | |
}; | |
var keyPrefix$1 = "$"; | |
var preroot = {depth: -1}; | |
var ambiguous = {}; | |
function defaultId(d) { | |
return d.id; | |
} | |
function defaultParentId(d) { | |
return d.parentId; | |
} | |
var stratify = function() { | |
var id = defaultId, | |
parentId = defaultParentId; | |
function stratify(data) { | |
var d, | |
i, | |
n = data.length, | |
root, | |
parent, | |
node, | |
nodes = new Array(n), | |
nodeId, | |
nodeKey, | |
nodeByKey = {}; | |
for (i = 0; i < n; ++i) { | |
d = data[i], node = nodes[i] = new Node(d); | |
if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { | |
nodeKey = keyPrefix$1 + (node.id = nodeId); | |
nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node; | |
} | |
} | |
for (i = 0; i < n; ++i) { | |
node = nodes[i], nodeId = parentId(data[i], i, data); | |
if (nodeId == null || !(nodeId += "")) { | |
if (root) throw new Error("multiple roots"); | |
root = node; | |
} else { | |
parent = nodeByKey[keyPrefix$1 + nodeId]; | |
if (!parent) throw new Error("missing: " + nodeId); | |
if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); | |
if (parent.children) parent.children.push(node); | |
else parent.children = [node]; | |
node.parent = parent; | |
} | |
} | |
if (!root) throw new Error("no root"); | |
root.parent = preroot; | |
root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); | |
root.parent = null; | |
if (n > 0) throw new Error("cycle"); | |
return root; | |
} | |
stratify.id = function(x) { | |
return arguments.length ? (id = required(x), stratify) : id; | |
}; | |
stratify.parentId = function(x) { | |
return arguments.length ? (parentId = required(x), stratify) : parentId; | |
}; | |
return stratify; | |
}; | |
function defaultSeparation$1(a, b) { | |
return a.parent === b.parent ? 1 : 2; | |
} | |
// function radialSeparation(a, b) { | |
// return (a.parent === b.parent ? 1 : 2) / a.depth; | |
// } | |
// This function is used to traverse the left contour of a subtree (or | |
// subforest). It returns the successor of v on this contour. This successor is | |
// either given by the leftmost child of v or by the thread of v. The function | |
// returns null if and only if v is on the highest level of its subtree. | |
function nextLeft(v) { | |
var children = v.children; | |
return children ? children[0] : v.t; | |
} | |
// This function works analogously to nextLeft. | |
function nextRight(v) { | |
var children = v.children; | |
return children ? children[children.length - 1] : v.t; | |
} | |
// Shifts the current subtree rooted at w+. This is done by increasing | |
// prelim(w+) and mod(w+) by shift. | |
function moveSubtree(wm, wp, shift) { | |
var change = shift / (wp.i - wm.i); | |
wp.c -= change; | |
wp.s += shift; | |
wm.c += change; | |
wp.z += shift; | |
wp.m += shift; | |
} | |
// All other shifts, applied to the smaller subtrees between w- and w+, are | |
// performed by this function. To prepare the shifts, we have to adjust | |
// change(w+), shift(w+), and change(w-). | |
function executeShifts(v) { | |
var shift = 0, | |
change = 0, | |
children = v.children, | |
i = children.length, | |
w; | |
while (--i >= 0) { | |
w = children[i]; | |
w.z += shift; | |
w.m += shift; | |
shift += w.s + (change += w.c); | |
} | |
} | |
// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, | |
// returns the specified (default) ancestor. | |
function nextAncestor(vim, v, ancestor) { | |
return vim.a.parent === v.parent ? vim.a : ancestor; | |
} | |
function TreeNode(node, i) { | |
this._ = node; | |
this.parent = null; | |
this.children = null; | |
this.A = null; // default ancestor | |
this.a = this; // ancestor | |
this.z = 0; // prelim | |
this.m = 0; // mod | |
this.c = 0; // change | |
this.s = 0; // shift | |
this.t = null; // thread | |
this.i = i; // number | |
} | |
TreeNode.prototype = Object.create(Node.prototype); | |
function treeRoot(root) { | |
var tree = new TreeNode(root, 0), | |
node, | |
nodes = [tree], | |
child, | |
children, | |
i, | |
n; | |
while (node = nodes.pop()) { | |
if (children = node._.children) { | |
node.children = new Array(n = children.length); | |
for (i = n - 1; i >= 0; --i) { | |
nodes.push(child = node.children[i] = new TreeNode(children[i], i)); | |
child.parent = node; | |
} | |
} | |
} | |
(tree.parent = new TreeNode(null, 0)).children = [tree]; | |
return tree; | |
} | |
// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm | |
var tree = function() { | |
var separation = defaultSeparation$1, | |
dx = 1, | |
dy = 1, | |
nodeSize = null; | |
function tree(root) { | |
var t = treeRoot(root); | |
// Compute the layout using Buchheim et al.’s algorithm. | |
t.eachAfter(firstWalk), t.parent.m = -t.z; | |
t.eachBefore(secondWalk); | |
// If a fixed node size is specified, scale x and y. | |
if (nodeSize) root.eachBefore(sizeNode); | |
// If a fixed tree size is specified, scale x and y based on the extent. | |
// Compute the left-most, right-most, and depth-most nodes for extents. | |
else { | |
var left = root, | |
right = root, | |
bottom = root; | |
root.eachBefore(function(node) { | |
if (node.x < left.x) left = node; | |
if (node.x > right.x) right = node; | |
if (node.depth > bottom.depth) bottom = node; | |
}); | |
var s = left === right ? 1 : separation(left, right) / 2, | |
tx = s - left.x, | |
kx = dx / (right.x + s + tx), | |
ky = dy / (bottom.depth || 1); | |
root.eachBefore(function(node) { | |
node.x = (node.x + tx) * kx; | |
node.y = node.depth * ky; | |
}); | |
} | |
return root; | |
} | |
// Computes a preliminary x-coordinate for v. Before that, FIRST WALK is | |
// applied recursively to the children of v, as well as the function | |
// APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the | |
// node v is placed to the midpoint of its outermost children. | |
function firstWalk(v) { | |
var children = v.children, | |
siblings = v.parent.children, | |
w = v.i ? siblings[v.i - 1] : null; | |
if (children) { | |
executeShifts(v); | |
var midpoint = (children[0].z + children[children.length - 1].z) / 2; | |
if (w) { | |
v.z = w.z + separation(v._, w._); | |
v.m = v.z - midpoint; | |
} else { | |
v.z = midpoint; | |
} | |
} else if (w) { | |
v.z = w.z + separation(v._, w._); | |
} | |
v.parent.A = apportion(v, w, v.parent.A || siblings[0]); | |
} | |
// Computes all real x-coordinates by summing up the modifiers recursively. | |
function secondWalk(v) { | |
v._.x = v.z + v.parent.m; | |
v.m += v.parent.m; | |
} | |
// The core of the algorithm. Here, a new subtree is combined with the | |
// previous subtrees. Threads are used to traverse the inside and outside | |
// contours of the left and right subtree up to the highest common level. The | |
// vertices used for the traversals are vi+, vi-, vo-, and vo+, where the | |
// superscript o means outside and i means inside, the subscript - means left | |
// subtree and + means right subtree. For summing up the modifiers along the | |
// contour, we use respective variables si+, si-, so-, and so+. Whenever two | |
// nodes of the inside contours conflict, we compute the left one of the | |
// greatest uncommon ancestors using the function ANCESTOR and call MOVE | |
// SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. | |
// Finally, we add a new thread (if necessary). | |
function apportion(v, w, ancestor) { | |
if (w) { | |
var vip = v, | |
vop = v, | |
vim = w, | |
vom = vip.parent.children[0], | |
sip = vip.m, | |
sop = vop.m, | |
sim = vim.m, | |
som = vom.m, | |
shift; | |
while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { | |
vom = nextLeft(vom); | |
vop = nextRight(vop); | |
vop.a = v; | |
shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); | |
if (shift > 0) { | |
moveSubtree(nextAncestor(vim, v, ancestor), v, shift); | |
sip += shift; | |
sop += shift; | |
} | |
sim += vim.m; | |
sip += vip.m; | |
som += vom.m; | |
sop += vop.m; | |
} | |
if (vim && !nextRight(vop)) { | |
vop.t = vim; | |
vop.m += sim - sop; | |
} | |
if (vip && !nextLeft(vom)) { | |
vom.t = vip; | |
vom.m += sip - som; | |
ancestor = v; | |
} | |
} | |
return ancestor; | |
} | |
function sizeNode(node) { | |
node.x *= dx; | |
node.y = node.depth * dy; | |
} | |
tree.separation = function(x) { | |
return arguments.length ? (separation = x, tree) : separation; | |
}; | |
tree.size = function(x) { | |
return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); | |
}; | |
tree.nodeSize = function(x) { | |
return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); | |
}; | |
return tree; | |
}; | |
var treemapSlice = function(parent, x0, y0, x1, y1) { | |
var nodes = parent.children, | |
node, | |
i = -1, | |
n = nodes.length, | |
k = parent.value && (y1 - y0) / parent.value; | |
while (++i < n) { | |
node = nodes[i], node.x0 = x0, node.x1 = x1; | |
node.y0 = y0, node.y1 = y0 += node.value * k; | |
} | |
}; | |
var phi = (1 + Math.sqrt(5)) / 2; | |
function squarifyRatio(ratio, parent, x0, y0, x1, y1) { | |
var rows = [], | |
nodes = parent.children, | |
row, | |
nodeValue, | |
i0 = 0, | |
i1 = 0, | |
n = nodes.length, | |
dx, dy, | |
value = parent.value, | |
sumValue, | |
minValue, | |
maxValue, | |
newRatio, | |
minRatio, | |
alpha, | |
beta; | |
while (i0 < n) { | |
dx = x1 - x0, dy = y1 - y0; | |
// Find the next non-empty node. | |
do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); | |
minValue = maxValue = sumValue; | |
alpha = Math.max(dy / dx, dx / dy) / (value * ratio); | |
beta = sumValue * sumValue * alpha; | |
minRatio = Math.max(maxValue / beta, beta / minValue); | |
// Keep adding nodes while the aspect ratio maintains or improves. | |
for (; i1 < n; ++i1) { | |
sumValue += nodeValue = nodes[i1].value; | |
if (nodeValue < minValue) minValue = nodeValue; | |
if (nodeValue > maxValue) maxValue = nodeValue; | |
beta = sumValue * sumValue * alpha; | |
newRatio = Math.max(maxValue / beta, beta / minValue); | |
if (newRatio > minRatio) { sumValue -= nodeValue; break; } | |
minRatio = newRatio; | |
} | |
// Position and record the row orientation. | |
rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); | |
if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); | |
else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); | |
value -= sumValue, i0 = i1; | |
} | |
return rows; | |
} | |
var squarify = ((function custom(ratio) { | |
function squarify(parent, x0, y0, x1, y1) { | |
squarifyRatio(ratio, parent, x0, y0, x1, y1); | |
} | |
squarify.ratio = function(x) { | |
return custom((x = +x) > 1 ? x : 1); | |
}; | |
return squarify; | |
}))(phi); | |
var index$3 = function() { | |
var tile = squarify, | |
round = false, | |
dx = 1, | |
dy = 1, | |
paddingStack = [0], | |
paddingInner = constantZero, | |
paddingTop = constantZero, | |
paddingRight = constantZero, | |
paddingBottom = constantZero, | |
paddingLeft = constantZero; | |
function treemap(root) { | |
root.x0 = | |
root.y0 = 0; | |
root.x1 = dx; | |
root.y1 = dy; | |
root.eachBefore(positionNode); | |
paddingStack = [0]; | |
if (round) root.eachBefore(roundNode); | |
return root; | |
} | |
function positionNode(node) { | |
var p = paddingStack[node.depth], | |
x0 = node.x0 + p, | |
y0 = node.y0 + p, | |
x1 = node.x1 - p, | |
y1 = node.y1 - p; | |
if (x1 < x0) x0 = x1 = (x0 + x1) / 2; | |
if (y1 < y0) y0 = y1 = (y0 + y1) / 2; | |
node.x0 = x0; | |
node.y0 = y0; | |
node.x1 = x1; | |
node.y1 = y1; | |
if (node.children) { | |
p = paddingStack[node.depth + 1] = paddingInner(node) / 2; | |
x0 += paddingLeft(node) - p; | |
y0 += paddingTop(node) - p; | |
x1 -= paddingRight(node) - p; | |
y1 -= paddingBottom(node) - p; | |
if (x1 < x0) x0 = x1 = (x0 + x1) / 2; | |
if (y1 < y0) y0 = y1 = (y0 + y1) / 2; | |
tile(node, x0, y0, x1, y1); | |
} | |
} | |
treemap.round = function(x) { | |
return arguments.length ? (round = !!x, treemap) : round; | |
}; | |
treemap.size = function(x) { | |
return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; | |
}; | |
treemap.tile = function(x) { | |
return arguments.length ? (tile = required(x), treemap) : tile; | |
}; | |
treemap.padding = function(x) { | |
return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); | |
}; | |
treemap.paddingInner = function(x) { | |
return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$9(+x), treemap) : paddingInner; | |
}; | |
treemap.paddingOuter = function(x) { | |
return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); | |
}; | |
treemap.paddingTop = function(x) { | |
return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$9(+x), treemap) : paddingTop; | |
}; | |
treemap.paddingRight = function(x) { | |
return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$9(+x), treemap) : paddingRight; | |
}; | |
treemap.paddingBottom = function(x) { | |
return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$9(+x), treemap) : paddingBottom; | |
}; | |
treemap.paddingLeft = function(x) { | |
return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$9(+x), treemap) : paddingLeft; | |
}; | |
return treemap; | |
}; | |
var binary = function(parent, x0, y0, x1, y1) { | |
var nodes = parent.children, | |
i, n = nodes.length, | |
sum, sums = new Array(n + 1); | |
for (sums[0] = sum = i = 0; i < n; ++i) { | |
sums[i + 1] = sum += nodes[i].value; | |
} | |
partition(0, n, parent.value, x0, y0, x1, y1); | |
function partition(i, j, value, x0, y0, x1, y1) { | |
if (i >= j - 1) { | |
var node = nodes[i]; | |
node.x0 = x0, node.y0 = y0; | |
node.x1 = x1, node.y1 = y1; | |
return; | |
} | |
var valueOffset = sums[i], | |
valueTarget = (value / 2) + valueOffset, | |
k = i + 1, | |
hi = j - 1; | |
while (k < hi) { | |
var mid = k + hi >>> 1; | |
if (sums[mid] < valueTarget) k = mid + 1; | |
else hi = mid; | |
} | |
if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; | |
var valueLeft = sums[k] - valueOffset, | |
valueRight = value - valueLeft; | |
if ((x1 - x0) > (y1 - y0)) { | |
var xk = (x0 * valueRight + x1 * valueLeft) / value; | |
partition(i, k, valueLeft, x0, y0, xk, y1); | |
partition(k, j, valueRight, xk, y0, x1, y1); | |
} else { | |
var yk = (y0 * valueRight + y1 * valueLeft) / value; | |
partition(i, k, valueLeft, x0, y0, x1, yk); | |
partition(k, j, valueRight, x0, yk, x1, y1); | |
} | |
} | |
}; | |
var sliceDice = function(parent, x0, y0, x1, y1) { | |
(parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); | |
}; | |
var resquarify = ((function custom(ratio) { | |
function resquarify(parent, x0, y0, x1, y1) { | |
if ((rows = parent._squarify) && (rows.ratio === ratio)) { | |
var rows, | |
row, | |
nodes, | |
i, | |
j = -1, | |
n, | |
m = rows.length, | |
value = parent.value; | |
while (++j < m) { | |
row = rows[j], nodes = row.children; | |
for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; | |
if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value); | |
else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1); | |
value -= row.value; | |
} | |
} else { | |
parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); | |
rows.ratio = ratio; | |
} | |
} | |
resquarify.ratio = function(x) { | |
return custom((x = +x) > 1 ? x : 1); | |
}; | |
return resquarify; | |
}))(phi); | |
var area$1 = function(polygon) { | |
var i = -1, | |
n = polygon.length, | |
a, | |
b = polygon[n - 1], | |
area = 0; | |
while (++i < n) { | |
a = b; | |
b = polygon[i]; | |
area += a[1] * b[0] - a[0] * b[1]; | |
} | |
return area / 2; | |
}; | |
var centroid$1 = function(polygon) { | |
var i = -1, | |
n = polygon.length, | |
x = 0, | |
y = 0, | |
a, | |
b = polygon[n - 1], | |
c, | |
k = 0; | |
while (++i < n) { | |
a = b; | |
b = polygon[i]; | |
k += c = a[0] * b[1] - b[0] * a[1]; | |
x += (a[0] + b[0]) * c; | |
y += (a[1] + b[1]) * c; | |
} | |
return k *= 3, [x / k, y / k]; | |
}; | |
// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of | |
// the 3D cross product in a quadrant I Cartesian coordinate system (+x is | |
// right, +y is up). Returns a positive value if ABC is counter-clockwise, | |
// negative if clockwise, and zero if the points are collinear. | |
var cross$2 = function(a, b, c) { | |
return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); | |
}; | |
function lexicographicOrder(a, b) { | |
return a[0] - b[0] || a[1] - b[1]; | |
} | |
// Computes the upper convex hull per the monotone chain algorithm. | |
// Assumes points.length >= 3, is sorted by x, unique in y. | |
// Returns an array of indices into points in left-to-right order. | |
function computeUpperHullIndexes(points) { | |
var n = points.length, | |
indexes = [0, 1], | |
size = 2; | |
for (var i = 2; i < n; ++i) { | |
while (size > 1 && cross$2(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; | |
indexes[size++] = i; | |
} | |
return indexes.slice(0, size); // remove popped points | |
} | |
var hull = function(points) { | |
if ((n = points.length) < 3) return null; | |
var i, | |
n, | |
sortedPoints = new Array(n), | |
flippedPoints = new Array(n); | |
for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; | |
sortedPoints.sort(lexicographicOrder); | |
for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; | |
var upperIndexes = computeUpperHullIndexes(sortedPoints), | |
lowerIndexes = computeUpperHullIndexes(flippedPoints); | |
// Construct the hull polygon, removing possible duplicate endpoints. | |
var skipLeft = lowerIndexes[0] === upperIndexes[0], | |
skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], | |
hull = []; | |
// Add upper hull in right-to-l order. | |
// Then add lower hull in left-to-right order. | |
for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); | |
for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); | |
return hull; | |
}; | |
var contains$1 = function(polygon, point) { | |
var n = polygon.length, | |
p = polygon[n - 1], | |
x = point[0], y = point[1], | |
x0 = p[0], y0 = p[1], | |
x1, y1, | |
inside = false; | |
for (var i = 0; i < n; ++i) { | |
p = polygon[i], x1 = p[0], y1 = p[1]; | |
if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; | |
x0 = x1, y0 = y1; | |
} | |
return inside; | |
}; | |
var length$3 = function(polygon) { | |
var i = -1, | |
n = polygon.length, | |
b = polygon[n - 1], | |
xa, | |
ya, | |
xb = b[0], | |
yb = b[1], | |
perimeter = 0; | |
while (++i < n) { | |
xa = xb; | |
ya = yb; | |
b = polygon[i]; | |
xb = b[0]; | |
yb = b[1]; | |
xa -= xb; | |
ya -= yb; | |
perimeter += Math.sqrt(xa * xa + ya * ya); | |
} | |
return perimeter; | |
}; | |
var slice$5 = [].slice; | |
var noabort = {}; | |
function Queue(size) { | |
this._size = size; | |
this._call = | |
this._error = null; | |
this._tasks = []; | |
this._data = []; | |
this._waiting = | |
this._active = | |
this._ended = | |
this._start = 0; // inside a synchronous task callback? | |
} | |
Queue.prototype = queue.prototype = { | |
constructor: Queue, | |
defer: function(callback) { | |
if (typeof callback !== "function") throw new Error("invalid callback"); | |
if (this._call) throw new Error("defer after await"); | |
if (this._error != null) return this; | |
var t = slice$5.call(arguments, 1); | |
t.push(callback); | |
++this._waiting, this._tasks.push(t); | |
poke$1(this); | |
return this; | |
}, | |
abort: function() { | |
if (this._error == null) abort(this, new Error("abort")); | |
return this; | |
}, | |
await: function(callback) { | |
if (typeof callback !== "function") throw new Error("invalid callback"); | |
if (this._call) throw new Error("multiple await"); | |
this._call = function(error, results) { callback.apply(null, [error].concat(results)); }; | |
maybeNotify(this); | |
return this; | |
}, | |
awaitAll: function(callback) { | |
if (typeof callback !== "function") throw new Error("invalid callback"); | |
if (this._call) throw new Error("multiple await"); | |
this._call = callback; | |
maybeNotify(this); | |
return this; | |
} | |
}; | |
function poke$1(q) { | |
if (!q._start) { | |
try { start$1(q); } // let the current task complete | |
catch (e) { | |
if (q._tasks[q._ended + q._active - 1]) abort(q, e); // task errored synchronously | |
else if (!q._data) throw e; // await callback errored synchronously | |
} | |
} | |
} | |
function start$1(q) { | |
while (q._start = q._waiting && q._active < q._size) { | |
var i = q._ended + q._active, | |
t = q._tasks[i], | |
j = t.length - 1, | |
c = t[j]; | |
t[j] = end(q, i); | |
--q._waiting, ++q._active; | |
t = c.apply(null, t); | |
if (!q._tasks[i]) continue; // task finished synchronously | |
q._tasks[i] = t || noabort; | |
} | |
} | |
function end(q, i) { | |
return function(e, r) { | |
if (!q._tasks[i]) return; // ignore multiple callbacks | |
--q._active, ++q._ended; | |
q._tasks[i] = null; | |
if (q._error != null) return; // ignore secondary errors | |
if (e != null) { | |
abort(q, e); | |
} else { | |
q._data[i] = r; | |
if (q._waiting) poke$1(q); | |
else maybeNotify(q); | |
} | |
}; | |
} | |
function abort(q, e) { | |
var i = q._tasks.length, t; | |
q._error = e; // ignore active callbacks | |
q._data = undefined; // allow gc | |
q._waiting = NaN; // prevent starting | |
while (--i >= 0) { | |
if (t = q._tasks[i]) { | |
q._tasks[i] = null; | |
if (t.abort) { | |
try { t.abort(); } | |
catch (e) { /* ignore */ } | |
} | |
} | |
} | |
q._active = NaN; // allow notification | |
maybeNotify(q); | |
} | |
function maybeNotify(q) { | |
if (!q._active && q._call) { | |
var d = q._data; | |
q._data = undefined; // allow gc | |
q._call(q._error, d); | |
} | |
} | |
function queue(concurrency) { | |
if (concurrency == null) concurrency = Infinity; | |
else if (!((concurrency = +concurrency) >= 1)) throw new Error("invalid concurrency"); | |
return new Queue(concurrency); | |
} | |
var defaultSource$1 = function() { | |
return Math.random(); | |
}; | |
var uniform = ((function sourceRandomUniform(source) { | |
function randomUniform(min, max) { | |
min = min == null ? 0 : +min; | |
max = max == null ? 1 : +max; | |
if (arguments.length === 1) max = min, min = 0; | |
else max -= min; | |
return function() { | |
return source() * max + min; | |
}; | |
} | |
randomUniform.source = sourceRandomUniform; | |
return randomUniform; | |
}))(defaultSource$1); | |
var normal = ((function sourceRandomNormal(source) { | |
function randomNormal(mu, sigma) { | |
var x, r; | |
mu = mu == null ? 0 : +mu; | |
sigma = sigma == null ? 1 : +sigma; | |
return function() { | |
var y; | |
// If available, use the second previously-generated uniform random. | |
if (x != null) y = x, x = null; | |
// Otherwise, generate a new x and y. | |
else do { | |
x = source() * 2 - 1; | |
y = source() * 2 - 1; | |
r = x * x + y * y; | |
} while (!r || r > 1); | |
return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); | |
}; | |
} | |
randomNormal.source = sourceRandomNormal; | |
return randomNormal; | |
}))(defaultSource$1); | |
var logNormal = ((function sourceRandomLogNormal(source) { | |
function randomLogNormal() { | |
var randomNormal = normal.source(source).apply(this, arguments); | |
return function() { | |
return Math.exp(randomNormal()); | |
}; | |
} | |
randomLogNormal.source = sourceRandomLogNormal; | |
return randomLogNormal; | |
}))(defaultSource$1); | |
var irwinHall = ((function sourceRandomIrwinHall(source) { | |
function randomIrwinHall(n) { | |
return function() { | |
for (var sum = 0, i = 0; i < n; ++i) sum += source(); | |
return sum; | |
}; | |
} | |
randomIrwinHall.source = sourceRandomIrwinHall; | |
return randomIrwinHall; | |
}))(defaultSource$1); | |
var bates = ((function sourceRandomBates(source) { | |
function randomBates(n) { | |
var randomIrwinHall = irwinHall.source(source)(n); | |
return function() { | |
return randomIrwinHall() / n; | |
}; | |
} | |
randomBates.source = sourceRandomBates; | |
return randomBates; | |
}))(defaultSource$1); | |
var exponential$1 = ((function sourceRandomExponential(source) { | |
function randomExponential(lambda) { | |
return function() { | |
return -Math.log(1 - source()) / lambda; | |
}; | |
} | |
randomExponential.source = sourceRandomExponential; | |
return randomExponential; | |
}))(defaultSource$1); | |
var request = function(url, callback) { | |
var request, | |
event = dispatch("beforesend", "progress", "load", "error"), | |
mimeType, | |
headers = map$2(), | |
xhr = new XMLHttpRequest, | |
user = null, | |
password = null, | |
response, | |
responseType, | |
timeout = 0; | |
// If IE does not support CORS, use XDomainRequest. | |
if (typeof XDomainRequest !== "undefined" | |
&& !("withCredentials" in xhr) | |
&& /^(http(s)?:)?\/\//.test(url)) xhr = new XDomainRequest; | |
"onload" in xhr | |
? xhr.onload = xhr.onerror = xhr.ontimeout = respond | |
: xhr.onreadystatechange = function(o) { xhr.readyState > 3 && respond(o); }; | |
function respond(o) { | |
var status = xhr.status, result; | |
if (!status && hasResponse(xhr) | |
|| status >= 200 && status < 300 | |
|| status === 304) { | |
if (response) { | |
try { | |
result = response.call(request, xhr); | |
} catch (e) { | |
event.call("error", request, e); | |
return; | |
} | |
} else { | |
result = xhr; | |
} | |
event.call("load", request, result); | |
} else { | |
event.call("error", request, o); | |
} | |
} | |
xhr.onprogress = function(e) { | |
event.call("progress", request, e); | |
}; | |
request = { | |
header: function(name, value) { | |
name = (name + "").toLowerCase(); | |
if (arguments.length < 2) return headers.get(name); | |
if (value == null) headers.remove(name); | |
else headers.set(name, value + ""); | |
return request; | |
}, | |
// If mimeType is non-null and no Accept header is set, a default is used. | |
mimeType: function(value) { | |
if (!arguments.length) return mimeType; | |
mimeType = value == null ? null : value + ""; | |
return request; | |
}, | |
// Specifies what type the response value should take; | |
// for instance, arraybuffer, blob, document, or text. | |
responseType: function(value) { | |
if (!arguments.length) return responseType; | |
responseType = value; | |
return request; | |
}, | |
timeout: function(value) { | |
if (!arguments.length) return timeout; | |
timeout = +value; | |
return request; | |
}, | |
user: function(value) { | |
return arguments.length < 1 ? user : (user = value == null ? null : value + "", request); | |
}, | |
password: function(value) { | |
return arguments.length < 1 ? password : (password = value == null ? null : value + "", request); | |
}, | |
// Specify how to convert the response content to a specific type; | |
// changes the callback value on "load" events. | |
response: function(value) { | |
response = value; | |
return request; | |
}, | |
// Alias for send("GET", …). | |
get: function(data, callback) { | |
return request.send("GET", data, callback); | |
}, | |
// Alias for send("POST", …). | |
post: function(data, callback) { | |
return request.send("POST", data, callback); | |
}, | |
// If callback is non-null, it will be used for error and load events. | |
send: function(method, data, callback) { | |
xhr.open(method, url, true, user, password); | |
if (mimeType != null && !headers.has("accept")) headers.set("accept", mimeType + ",*/*"); | |
if (xhr.setRequestHeader) headers.each(function(value, name) { xhr.setRequestHeader(name, value); }); | |
if (mimeType != null && xhr.overrideMimeType) xhr.overrideMimeType(mimeType); | |
if (responseType != null) xhr.responseType = responseType; | |
if (timeout > 0) xhr.timeout = timeout; | |
if (callback == null && typeof data === "function") callback = data, data = null; | |
if (callback != null && callback.length === 1) callback = fixCallback(callback); | |
if (callback != null) request.on("error", callback).on("load", function(xhr) { callback(null, xhr); }); | |
event.call("beforesend", request, xhr); | |
xhr.send(data == null ? null : data); | |
return request; | |
}, | |
abort: function() { | |
xhr.abort(); | |
return request; | |
}, | |
on: function() { | |
var value = event.on.apply(event, arguments); | |
return value === event ? request : value; | |
} | |
}; | |
if (callback != null) { | |
if (typeof callback !== "function") throw new Error("invalid callback: " + callback); | |
return request.get(callback); | |
} | |
return request; | |
}; | |
function fixCallback(callback) { | |
return function(error, xhr) { | |
callback(error == null ? xhr : null); | |
}; | |
} | |
function hasResponse(xhr) { | |
var type = xhr.responseType; | |
return type && type !== "text" | |
? xhr.response // null on error | |
: xhr.responseText; // "" on error | |
} | |
var type$1 = function(defaultMimeType, response) { | |
return function(url, callback) { | |
var r = request(url).mimeType(defaultMimeType).response(response); | |
if (callback != null) { | |
if (typeof callback !== "function") throw new Error("invalid callback: " + callback); | |
return r.get(callback); | |
} | |
return r; | |
}; | |
}; | |
var html = type$1("text/html", function(xhr) { | |
return document.createRange().createContextualFragment(xhr.responseText); | |
}); | |
var json = type$1("application/json", function(xhr) { | |
return JSON.parse(xhr.responseText); | |
}); | |
var text = type$1("text/plain", function(xhr) { | |
return xhr.responseText; | |
}); | |
var xml = type$1("application/xml", function(xhr) { | |
var xml = xhr.responseXML; | |
if (!xml) throw new Error("parse error"); | |
return xml; | |
}); | |
var dsv$1 = function(defaultMimeType, parse) { | |
return function(url, row, callback) { | |
if (arguments.length < 3) callback = row, row = null; | |
var r = request(url).mimeType(defaultMimeType); | |
r.row = function(_) { return arguments.length ? r.response(responseOf(parse, row = _)) : row; }; | |
r.row(row); | |
return callback ? r.get(callback) : r; | |
}; | |
}; | |
function responseOf(parse, row) { | |
return function(request$$1) { | |
return parse(request$$1.responseText, row); | |
}; | |
} | |
var csv$1 = dsv$1("text/csv", csvParse); | |
var tsv$1 = dsv$1("text/tab-separated-values", tsvParse); | |
var array$3 = Array.prototype; | |
var map$4 = array$3.map; | |
var slice$6 = array$3.slice; | |
var implicit = {name: "implicit"}; | |
function ordinal(range) { | |
var index = map$2(), | |
domain = [], | |
unknown = implicit; | |
range = range == null ? [] : slice$6.call(range); | |
function scale(d) { | |
var key = d + "", i = index.get(key); | |
if (!i) { | |
if (unknown !== implicit) return unknown; | |
index.set(key, i = domain.push(d)); | |
} | |
return range[(i - 1) % range.length]; | |
} | |
scale.domain = function(_) { | |
if (!arguments.length) return domain.slice(); | |
domain = [], index = map$2(); | |
var i = -1, n = _.length, d, key; | |
while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d)); | |
return scale; | |
}; | |
scale.range = function(_) { | |
return arguments.length ? (range = slice$6.call(_), scale) : range.slice(); | |
}; | |
scale.unknown = function(_) { | |
return arguments.length ? (unknown = _, scale) : unknown; | |
}; | |
scale.copy = function() { | |
return ordinal() | |
.domain(domain) | |
.range(range) | |
.unknown(unknown); | |
}; | |
return scale; | |
} | |
function band() { | |
var scale = ordinal().unknown(undefined), | |
domain = scale.domain, | |
ordinalRange = scale.range, | |
range$$1 = [0, 1], | |
step, | |
bandwidth, | |
round = false, | |
paddingInner = 0, | |
paddingOuter = 0, | |
align = 0.5; | |
delete scale.unknown; | |
function rescale() { | |
var n = domain().length, | |
reverse = range$$1[1] < range$$1[0], | |
start = range$$1[reverse - 0], | |
stop = range$$1[1 - reverse]; | |
step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); | |
if (round) step = Math.floor(step); | |
start += (stop - start - step * (n - paddingInner)) * align; | |
bandwidth = step * (1 - paddingInner); | |
if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); | |
var values = sequence(n).map(function(i) { return start + step * i; }); | |
return ordinalRange(reverse ? values.reverse() : values); | |
} | |
scale.domain = function(_) { | |
return arguments.length ? (domain(_), rescale()) : domain(); | |
}; | |
scale.range = function(_) { | |
return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice(); | |
}; | |
scale.rangeRound = function(_) { | |
return range$$1 = [+_[0], +_[1]], round = true, rescale(); | |
}; | |
scale.bandwidth = function() { | |
return bandwidth; | |
}; | |
scale.step = function() { | |
return step; | |
}; | |
scale.round = function(_) { | |
return arguments.length ? (round = !!_, rescale()) : round; | |
}; | |
scale.padding = function(_) { | |
return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner; | |
}; | |
scale.paddingInner = function(_) { | |
return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner; | |
}; | |
scale.paddingOuter = function(_) { | |
return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter; | |
}; | |
scale.align = function(_) { | |
return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; | |
}; | |
scale.copy = function() { | |
return band() | |
.domain(domain()) | |
.range(range$$1) | |
.round(round) | |
.paddingInner(paddingInner) | |
.paddingOuter(paddingOuter) | |
.align(align); | |
}; | |
return rescale(); | |
} | |
function pointish(scale) { | |
var copy = scale.copy; | |
scale.padding = scale.paddingOuter; | |
delete scale.paddingInner; | |
delete scale.paddingOuter; | |
scale.copy = function() { | |
return pointish(copy()); | |
}; | |
return scale; | |
} | |
function point$1() { | |
return pointish(band().paddingInner(1)); | |
} | |
var constant$10 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
var number$3 = function(x) { | |
return +x; | |
}; | |
var unit = [0, 1]; | |
function deinterpolateLinear(a, b) { | |
return (b -= (a = +a)) | |
? function(x) { return (x - a) / b; } | |
: constant$10(b); | |
} | |
function deinterpolateClamp(deinterpolate) { | |
return function(a, b) { | |
var d = deinterpolate(a = +a, b = +b); | |
return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); }; | |
}; | |
} | |
function reinterpolateClamp(reinterpolate) { | |
return function(a, b) { | |
var r = reinterpolate(a = +a, b = +b); | |
return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); }; | |
}; | |
} | |
function bimap(domain, range$$1, deinterpolate, reinterpolate) { | |
var d0 = domain[0], d1 = domain[1], r0 = range$$1[0], r1 = range$$1[1]; | |
if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0); | |
else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1); | |
return function(x) { return r0(d0(x)); }; | |
} | |
function polymap(domain, range$$1, deinterpolate, reinterpolate) { | |
var j = Math.min(domain.length, range$$1.length) - 1, | |
d = new Array(j), | |
r = new Array(j), | |
i = -1; | |
// Reverse descending domains. | |
if (domain[j] < domain[0]) { | |
domain = domain.slice().reverse(); | |
range$$1 = range$$1.slice().reverse(); | |
} | |
while (++i < j) { | |
d[i] = deinterpolate(domain[i], domain[i + 1]); | |
r[i] = reinterpolate(range$$1[i], range$$1[i + 1]); | |
} | |
return function(x) { | |
var i = bisectRight$1(domain, x, 1, j) - 1; | |
return r[i](d[i](x)); | |
}; | |
} | |
function copy(source, target) { | |
return target | |
.domain(source.domain()) | |
.range(source.range()) | |
.interpolate(source.interpolate()) | |
.clamp(source.clamp()); | |
} | |
// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. | |
// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b]. | |
function continuous(deinterpolate, reinterpolate) { | |
var domain = unit, | |
range$$1 = unit, | |
interpolate$$1 = interpolateValue, | |
clamp = false, | |
piecewise, | |
output, | |
input; | |
function rescale() { | |
piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap; | |
output = input = null; | |
return scale; | |
} | |
function scale(x) { | |
return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x); | |
} | |
scale.invert = function(y) { | |
return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y); | |
}; | |
scale.domain = function(_) { | |
return arguments.length ? (domain = map$4.call(_, number$3), rescale()) : domain.slice(); | |
}; | |
scale.range = function(_) { | |
return arguments.length ? (range$$1 = slice$6.call(_), rescale()) : range$$1.slice(); | |
}; | |
scale.rangeRound = function(_) { | |
return range$$1 = slice$6.call(_), interpolate$$1 = interpolateRound, rescale(); | |
}; | |
scale.clamp = function(_) { | |
return arguments.length ? (clamp = !!_, rescale()) : clamp; | |
}; | |
scale.interpolate = function(_) { | |
return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1; | |
}; | |
return rescale(); | |
} | |
var tickFormat = function(domain, count, specifier) { | |
var start = domain[0], | |
stop = domain[domain.length - 1], | |
step = tickStep$1(start, stop, count == null ? 10 : count), | |
precision; | |
specifier = formatSpecifier(specifier == null ? ",f" : specifier); | |
switch (specifier.type) { | |
case "s": { | |
var value = Math.max(Math.abs(start), Math.abs(stop)); | |
if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; | |
return exports.formatPrefix(specifier, value); | |
} | |
case "": | |
case "e": | |
case "g": | |
case "p": | |
case "r": { | |
if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); | |
break; | |
} | |
case "f": | |
case "%": { | |
if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; | |
break; | |
} | |
} | |
return exports.format(specifier); | |
}; | |
function linearish(scale) { | |
var domain = scale.domain; | |
scale.ticks = function(count) { | |
var d = domain(); | |
return ticks$1(d[0], d[d.length - 1], count == null ? 10 : count); | |
}; | |
scale.tickFormat = function(count, specifier) { | |
return tickFormat(domain(), count, specifier); | |
}; | |
scale.nice = function(count) { | |
if (count == null) count = 10; | |
var d = domain(), | |
i0 = 0, | |
i1 = d.length - 1, | |
start = d[i0], | |
stop = d[i1], | |
step; | |
if (stop < start) { | |
step = start, start = stop, stop = step; | |
step = i0, i0 = i1, i1 = step; | |
} | |
step = tickIncrement$1(start, stop, count); | |
if (step > 0) { | |
start = Math.floor(start / step) * step; | |
stop = Math.ceil(stop / step) * step; | |
step = tickIncrement$1(start, stop, count); | |
} else if (step < 0) { | |
start = Math.ceil(start * step) / step; | |
stop = Math.floor(stop * step) / step; | |
step = tickIncrement$1(start, stop, count); | |
} | |
if (step > 0) { | |
d[i0] = Math.floor(start / step) * step; | |
d[i1] = Math.ceil(stop / step) * step; | |
domain(d); | |
} else if (step < 0) { | |
d[i0] = Math.ceil(start * step) / step; | |
d[i1] = Math.floor(stop * step) / step; | |
domain(d); | |
} | |
return scale; | |
}; | |
return scale; | |
} | |
function linear$2() { | |
var scale = continuous(deinterpolateLinear, reinterpolate); | |
scale.copy = function() { | |
return copy(scale, linear$2()); | |
}; | |
return linearish(scale); | |
} | |
function identity$7() { | |
var domain = [0, 1]; | |
function scale(x) { | |
return +x; | |
} | |
scale.invert = scale; | |
scale.domain = scale.range = function(_) { | |
return arguments.length ? (domain = map$4.call(_, number$3), scale) : domain.slice(); | |
}; | |
scale.copy = function() { | |
return identity$7().domain(domain); | |
}; | |
return linearish(scale); | |
} | |
var nice = function(domain, interval) { | |
domain = domain.slice(); | |
var i0 = 0, | |
i1 = domain.length - 1, | |
x0 = domain[i0], | |
x1 = domain[i1], | |
t; | |
if (x1 < x0) { | |
t = i0, i0 = i1, i1 = t; | |
t = x0, x0 = x1, x1 = t; | |
} | |
domain[i0] = interval.floor(x0); | |
domain[i1] = interval.ceil(x1); | |
return domain; | |
}; | |
function deinterpolate(a, b) { | |
return (b = Math.log(b / a)) | |
? function(x) { return Math.log(x / a) / b; } | |
: constant$10(b); | |
} | |
function reinterpolate$1(a, b) { | |
return a < 0 | |
? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); } | |
: function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); }; | |
} | |
function pow10(x) { | |
return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; | |
} | |
function powp(base) { | |
return base === 10 ? pow10 | |
: base === Math.E ? Math.exp | |
: function(x) { return Math.pow(base, x); }; | |
} | |
function logp(base) { | |
return base === Math.E ? Math.log | |
: base === 10 && Math.log10 | |
|| base === 2 && Math.log2 | |
|| (base = Math.log(base), function(x) { return Math.log(x) / base; }); | |
} | |
function reflect(f) { | |
return function(x) { | |
return -f(-x); | |
}; | |
} | |
function log$1() { | |
var scale = continuous(deinterpolate, reinterpolate$1).domain([1, 10]), | |
domain = scale.domain, | |
base = 10, | |
logs = logp(10), | |
pows = powp(10); | |
function rescale() { | |
logs = logp(base), pows = powp(base); | |
if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows); | |
return scale; | |
} | |
scale.base = function(_) { | |
return arguments.length ? (base = +_, rescale()) : base; | |
}; | |
scale.domain = function(_) { | |
return arguments.length ? (domain(_), rescale()) : domain(); | |
}; | |
scale.ticks = function(count) { | |
var d = domain(), | |
u = d[0], | |
v = d[d.length - 1], | |
r; | |
if (r = v < u) i = u, u = v, v = i; | |
var i = logs(u), | |
j = logs(v), | |
p, | |
k, | |
t, | |
n = count == null ? 10 : +count, | |
z = []; | |
if (!(base % 1) && j - i < n) { | |
i = Math.round(i) - 1, j = Math.round(j) + 1; | |
if (u > 0) for (; i < j; ++i) { | |
for (k = 1, p = pows(i); k < base; ++k) { | |
t = p * k; | |
if (t < u) continue; | |
if (t > v) break; | |
z.push(t); | |
} | |
} else for (; i < j; ++i) { | |
for (k = base - 1, p = pows(i); k >= 1; --k) { | |
t = p * k; | |
if (t < u) continue; | |
if (t > v) break; | |
z.push(t); | |
} | |
} | |
} else { | |
z = ticks$1(i, j, Math.min(j - i, n)).map(pows); | |
} | |
return r ? z.reverse() : z; | |
}; | |
scale.tickFormat = function(count, specifier) { | |
if (specifier == null) specifier = base === 10 ? ".0e" : ","; | |
if (typeof specifier !== "function") specifier = exports.format(specifier); | |
if (count === Infinity) return specifier; | |
if (count == null) count = 10; | |
var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? | |
return function(d) { | |
var i = d / pows(Math.round(logs(d))); | |
if (i * base < base - 0.5) i *= base; | |
return i <= k ? specifier(d) : ""; | |
}; | |
}; | |
scale.nice = function() { | |
return domain(nice(domain(), { | |
floor: function(x) { return pows(Math.floor(logs(x))); }, | |
ceil: function(x) { return pows(Math.ceil(logs(x))); } | |
})); | |
}; | |
scale.copy = function() { | |
return copy(scale, log$1().base(base)); | |
}; | |
return scale; | |
} | |
function raise$1(x, exponent) { | |
return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); | |
} | |
function pow$1() { | |
var exponent = 1, | |
scale = continuous(deinterpolate, reinterpolate), | |
domain = scale.domain; | |
function deinterpolate(a, b) { | |
return (b = raise$1(b, exponent) - (a = raise$1(a, exponent))) | |
? function(x) { return (raise$1(x, exponent) - a) / b; } | |
: constant$10(b); | |
} | |
function reinterpolate(a, b) { | |
b = raise$1(b, exponent) - (a = raise$1(a, exponent)); | |
return function(t) { return raise$1(a + b * t, 1 / exponent); }; | |
} | |
scale.exponent = function(_) { | |
return arguments.length ? (exponent = +_, domain(domain())) : exponent; | |
}; | |
scale.copy = function() { | |
return copy(scale, pow$1().exponent(exponent)); | |
}; | |
return linearish(scale); | |
} | |
function sqrt$1() { | |
return pow$1().exponent(0.5); | |
} | |
function quantile$1() { | |
var domain = [], | |
range$$1 = [], | |
thresholds = []; | |
function rescale() { | |
var i = 0, n = Math.max(1, range$$1.length); | |
thresholds = new Array(n - 1); | |
while (++i < n) thresholds[i - 1] = threshold(domain, i / n); | |
return scale; | |
} | |
function scale(x) { | |
if (!isNaN(x = +x)) return range$$1[bisectRight$1(thresholds, x)]; | |
} | |
scale.invertExtent = function(y) { | |
var i = range$$1.indexOf(y); | |
return i < 0 ? [NaN, NaN] : [ | |
i > 0 ? thresholds[i - 1] : domain[0], | |
i < thresholds.length ? thresholds[i] : domain[domain.length - 1] | |
]; | |
}; | |
scale.domain = function(_) { | |
if (!arguments.length) return domain.slice(); | |
domain = []; | |
for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); | |
domain.sort(ascending$2); | |
return rescale(); | |
}; | |
scale.range = function(_) { | |
return arguments.length ? (range$$1 = slice$6.call(_), rescale()) : range$$1.slice(); | |
}; | |
scale.quantiles = function() { | |
return thresholds.slice(); | |
}; | |
scale.copy = function() { | |
return quantile$1() | |
.domain(domain) | |
.range(range$$1); | |
}; | |
return scale; | |
} | |
function quantize$1() { | |
var x0 = 0, | |
x1 = 1, | |
n = 1, | |
domain = [0.5], | |
range$$1 = [0, 1]; | |
function scale(x) { | |
if (x <= x) return range$$1[bisectRight$1(domain, x, 0, n)]; | |
} | |
function rescale() { | |
var i = -1; | |
domain = new Array(n); | |
while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); | |
return scale; | |
} | |
scale.domain = function(_) { | |
return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1]; | |
}; | |
scale.range = function(_) { | |
return arguments.length ? (n = (range$$1 = slice$6.call(_)).length - 1, rescale()) : range$$1.slice(); | |
}; | |
scale.invertExtent = function(y) { | |
var i = range$$1.indexOf(y); | |
return i < 0 ? [NaN, NaN] | |
: i < 1 ? [x0, domain[0]] | |
: i >= n ? [domain[n - 1], x1] | |
: [domain[i - 1], domain[i]]; | |
}; | |
scale.copy = function() { | |
return quantize$1() | |
.domain([x0, x1]) | |
.range(range$$1); | |
}; | |
return linearish(scale); | |
} | |
function threshold$1() { | |
var domain = [0.5], | |
range$$1 = [0, 1], | |
n = 1; | |
function scale(x) { | |
if (x <= x) return range$$1[bisectRight$1(domain, x, 0, n)]; | |
} | |
scale.domain = function(_) { | |
return arguments.length ? (domain = slice$6.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice(); | |
}; | |
scale.range = function(_) { | |
return arguments.length ? (range$$1 = slice$6.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice(); | |
}; | |
scale.invertExtent = function(y) { | |
var i = range$$1.indexOf(y); | |
return [domain[i - 1], domain[i]]; | |
}; | |
scale.copy = function() { | |
return threshold$1() | |
.domain(domain) | |
.range(range$$1); | |
}; | |
return scale; | |
} | |
var t0$1 = new Date; | |
var t1$1 = new Date; | |
function newInterval(floori, offseti, count, field) { | |
function interval(date) { | |
return floori(date = new Date(+date)), date; | |
} | |
interval.floor = interval; | |
interval.ceil = function(date) { | |
return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; | |
}; | |
interval.round = function(date) { | |
var d0 = interval(date), | |
d1 = interval.ceil(date); | |
return date - d0 < d1 - date ? d0 : d1; | |
}; | |
interval.offset = function(date, step) { | |
return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; | |
}; | |
interval.range = function(start, stop, step) { | |
var range = []; | |
start = interval.ceil(start); | |
step = step == null ? 1 : Math.floor(step); | |
if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date | |
do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop) | |
return range; | |
}; | |
interval.filter = function(test) { | |
return newInterval(function(date) { | |
if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); | |
}, function(date, step) { | |
if (date >= date) { | |
if (step < 0) while (++step <= 0) { | |
while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty | |
} else while (--step >= 0) { | |
while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty | |
} | |
} | |
}); | |
}; | |
if (count) { | |
interval.count = function(start, end) { | |
t0$1.setTime(+start), t1$1.setTime(+end); | |
floori(t0$1), floori(t1$1); | |
return Math.floor(count(t0$1, t1$1)); | |
}; | |
interval.every = function(step) { | |
step = Math.floor(step); | |
return !isFinite(step) || !(step > 0) ? null | |
: !(step > 1) ? interval | |
: interval.filter(field | |
? function(d) { return field(d) % step === 0; } | |
: function(d) { return interval.count(0, d) % step === 0; }); | |
}; | |
} | |
return interval; | |
} | |
var millisecond = newInterval(function() { | |
// noop | |
}, function(date, step) { | |
date.setTime(+date + step); | |
}, function(start, end) { | |
return end - start; | |
}); | |
// An optimized implementation for this simple case. | |
millisecond.every = function(k) { | |
k = Math.floor(k); | |
if (!isFinite(k) || !(k > 0)) return null; | |
if (!(k > 1)) return millisecond; | |
return newInterval(function(date) { | |
date.setTime(Math.floor(date / k) * k); | |
}, function(date, step) { | |
date.setTime(+date + step * k); | |
}, function(start, end) { | |
return (end - start) / k; | |
}); | |
}; | |
var milliseconds = millisecond.range; | |
var durationSecond$1 = 1e3; | |
var durationMinute$1 = 6e4; | |
var durationHour$1 = 36e5; | |
var durationDay$1 = 864e5; | |
var durationWeek$1 = 6048e5; | |
var second = newInterval(function(date) { | |
date.setTime(Math.floor(date / durationSecond$1) * durationSecond$1); | |
}, function(date, step) { | |
date.setTime(+date + step * durationSecond$1); | |
}, function(start, end) { | |
return (end - start) / durationSecond$1; | |
}, function(date) { | |
return date.getUTCSeconds(); | |
}); | |
var seconds = second.range; | |
var minute = newInterval(function(date) { | |
date.setTime(Math.floor(date / durationMinute$1) * durationMinute$1); | |
}, function(date, step) { | |
date.setTime(+date + step * durationMinute$1); | |
}, function(start, end) { | |
return (end - start) / durationMinute$1; | |
}, function(date) { | |
return date.getMinutes(); | |
}); | |
var minutes = minute.range; | |
var hour = newInterval(function(date) { | |
var offset = date.getTimezoneOffset() * durationMinute$1 % durationHour$1; | |
if (offset < 0) offset += durationHour$1; | |
date.setTime(Math.floor((+date - offset) / durationHour$1) * durationHour$1 + offset); | |
}, function(date, step) { | |
date.setTime(+date + step * durationHour$1); | |
}, function(start, end) { | |
return (end - start) / durationHour$1; | |
}, function(date) { | |
return date.getHours(); | |
}); | |
var hours = hour.range; | |
var day = newInterval(function(date) { | |
date.setHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setDate(date.getDate() + step); | |
}, function(start, end) { | |
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationDay$1; | |
}, function(date) { | |
return date.getDate() - 1; | |
}); | |
var days = day.range; | |
function weekday(i) { | |
return newInterval(function(date) { | |
date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); | |
date.setHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setDate(date.getDate() + step * 7); | |
}, function(start, end) { | |
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute$1) / durationWeek$1; | |
}); | |
} | |
var sunday = weekday(0); | |
var monday = weekday(1); | |
var tuesday = weekday(2); | |
var wednesday = weekday(3); | |
var thursday = weekday(4); | |
var friday = weekday(5); | |
var saturday = weekday(6); | |
var sundays = sunday.range; | |
var mondays = monday.range; | |
var tuesdays = tuesday.range; | |
var wednesdays = wednesday.range; | |
var thursdays = thursday.range; | |
var fridays = friday.range; | |
var saturdays = saturday.range; | |
var month = newInterval(function(date) { | |
date.setDate(1); | |
date.setHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setMonth(date.getMonth() + step); | |
}, function(start, end) { | |
return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; | |
}, function(date) { | |
return date.getMonth(); | |
}); | |
var months = month.range; | |
var year = newInterval(function(date) { | |
date.setMonth(0, 1); | |
date.setHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setFullYear(date.getFullYear() + step); | |
}, function(start, end) { | |
return end.getFullYear() - start.getFullYear(); | |
}, function(date) { | |
return date.getFullYear(); | |
}); | |
// An optimized implementation for this simple case. | |
year.every = function(k) { | |
return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { | |
date.setFullYear(Math.floor(date.getFullYear() / k) * k); | |
date.setMonth(0, 1); | |
date.setHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setFullYear(date.getFullYear() + step * k); | |
}); | |
}; | |
var years = year.range; | |
var utcMinute = newInterval(function(date) { | |
date.setUTCSeconds(0, 0); | |
}, function(date, step) { | |
date.setTime(+date + step * durationMinute$1); | |
}, function(start, end) { | |
return (end - start) / durationMinute$1; | |
}, function(date) { | |
return date.getUTCMinutes(); | |
}); | |
var utcMinutes = utcMinute.range; | |
var utcHour = newInterval(function(date) { | |
date.setUTCMinutes(0, 0, 0); | |
}, function(date, step) { | |
date.setTime(+date + step * durationHour$1); | |
}, function(start, end) { | |
return (end - start) / durationHour$1; | |
}, function(date) { | |
return date.getUTCHours(); | |
}); | |
var utcHours = utcHour.range; | |
var utcDay = newInterval(function(date) { | |
date.setUTCHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setUTCDate(date.getUTCDate() + step); | |
}, function(start, end) { | |
return (end - start) / durationDay$1; | |
}, function(date) { | |
return date.getUTCDate() - 1; | |
}); | |
var utcDays = utcDay.range; | |
function utcWeekday(i) { | |
return newInterval(function(date) { | |
date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); | |
date.setUTCHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setUTCDate(date.getUTCDate() + step * 7); | |
}, function(start, end) { | |
return (end - start) / durationWeek$1; | |
}); | |
} | |
var utcSunday = utcWeekday(0); | |
var utcMonday = utcWeekday(1); | |
var utcTuesday = utcWeekday(2); | |
var utcWednesday = utcWeekday(3); | |
var utcThursday = utcWeekday(4); | |
var utcFriday = utcWeekday(5); | |
var utcSaturday = utcWeekday(6); | |
var utcSundays = utcSunday.range; | |
var utcMondays = utcMonday.range; | |
var utcTuesdays = utcTuesday.range; | |
var utcWednesdays = utcWednesday.range; | |
var utcThursdays = utcThursday.range; | |
var utcFridays = utcFriday.range; | |
var utcSaturdays = utcSaturday.range; | |
var utcMonth = newInterval(function(date) { | |
date.setUTCDate(1); | |
date.setUTCHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setUTCMonth(date.getUTCMonth() + step); | |
}, function(start, end) { | |
return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; | |
}, function(date) { | |
return date.getUTCMonth(); | |
}); | |
var utcMonths = utcMonth.range; | |
var utcYear = newInterval(function(date) { | |
date.setUTCMonth(0, 1); | |
date.setUTCHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setUTCFullYear(date.getUTCFullYear() + step); | |
}, function(start, end) { | |
return end.getUTCFullYear() - start.getUTCFullYear(); | |
}, function(date) { | |
return date.getUTCFullYear(); | |
}); | |
// An optimized implementation for this simple case. | |
utcYear.every = function(k) { | |
return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { | |
date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); | |
date.setUTCMonth(0, 1); | |
date.setUTCHours(0, 0, 0, 0); | |
}, function(date, step) { | |
date.setUTCFullYear(date.getUTCFullYear() + step * k); | |
}); | |
}; | |
var utcYears = utcYear.range; | |
function localDate(d) { | |
if (0 <= d.y && d.y < 100) { | |
var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); | |
date.setFullYear(d.y); | |
return date; | |
} | |
return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); | |
} | |
function utcDate(d) { | |
if (0 <= d.y && d.y < 100) { | |
var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); | |
date.setUTCFullYear(d.y); | |
return date; | |
} | |
return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); | |
} | |
function newYear(y) { | |
return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0}; | |
} | |
function formatLocale$1(locale) { | |
var locale_dateTime = locale.dateTime, | |
locale_date = locale.date, | |
locale_time = locale.time, | |
locale_periods = locale.periods, | |
locale_weekdays = locale.days, | |
locale_shortWeekdays = locale.shortDays, | |
locale_months = locale.months, | |
locale_shortMonths = locale.shortMonths; | |
var periodRe = formatRe(locale_periods), | |
periodLookup = formatLookup(locale_periods), | |
weekdayRe = formatRe(locale_weekdays), | |
weekdayLookup = formatLookup(locale_weekdays), | |
shortWeekdayRe = formatRe(locale_shortWeekdays), | |
shortWeekdayLookup = formatLookup(locale_shortWeekdays), | |
monthRe = formatRe(locale_months), | |
monthLookup = formatLookup(locale_months), | |
shortMonthRe = formatRe(locale_shortMonths), | |
shortMonthLookup = formatLookup(locale_shortMonths); | |
var formats = { | |
"a": formatShortWeekday, | |
"A": formatWeekday, | |
"b": formatShortMonth, | |
"B": formatMonth, | |
"c": null, | |
"d": formatDayOfMonth, | |
"e": formatDayOfMonth, | |
"H": formatHour24, | |
"I": formatHour12, | |
"j": formatDayOfYear, | |
"L": formatMilliseconds, | |
"m": formatMonthNumber, | |
"M": formatMinutes, | |
"p": formatPeriod, | |
"S": formatSeconds, | |
"U": formatWeekNumberSunday, | |
"w": formatWeekdayNumber, | |
"W": formatWeekNumberMonday, | |
"x": null, | |
"X": null, | |
"y": formatYear, | |
"Y": formatFullYear, | |
"Z": formatZone, | |
"%": formatLiteralPercent | |
}; | |
var utcFormats = { | |
"a": formatUTCShortWeekday, | |
"A": formatUTCWeekday, | |
"b": formatUTCShortMonth, | |
"B": formatUTCMonth, | |
"c": null, | |
"d": formatUTCDayOfMonth, | |
"e": formatUTCDayOfMonth, | |
"H": formatUTCHour24, | |
"I": formatUTCHour12, | |
"j": formatUTCDayOfYear, | |
"L": formatUTCMilliseconds, | |
"m": formatUTCMonthNumber, | |
"M": formatUTCMinutes, | |
"p": formatUTCPeriod, | |
"S": formatUTCSeconds, | |
"U": formatUTCWeekNumberSunday, | |
"w": formatUTCWeekdayNumber, | |
"W": formatUTCWeekNumberMonday, | |
"x": null, | |
"X": null, | |
"y": formatUTCYear, | |
"Y": formatUTCFullYear, | |
"Z": formatUTCZone, | |
"%": formatLiteralPercent | |
}; | |
var parses = { | |
"a": parseShortWeekday, | |
"A": parseWeekday, | |
"b": parseShortMonth, | |
"B": parseMonth, | |
"c": parseLocaleDateTime, | |
"d": parseDayOfMonth, | |
"e": parseDayOfMonth, | |
"H": parseHour24, | |
"I": parseHour24, | |
"j": parseDayOfYear, | |
"L": parseMilliseconds, | |
"m": parseMonthNumber, | |
"M": parseMinutes, | |
"p": parsePeriod, | |
"S": parseSeconds, | |
"U": parseWeekNumberSunday, | |
"w": parseWeekdayNumber, | |
"W": parseWeekNumberMonday, | |
"x": parseLocaleDate, | |
"X": parseLocaleTime, | |
"y": parseYear, | |
"Y": parseFullYear, | |
"Z": parseZone, | |
"%": parseLiteralPercent | |
}; | |
// These recursive directive definitions must be deferred. | |
formats.x = newFormat(locale_date, formats); | |
formats.X = newFormat(locale_time, formats); | |
formats.c = newFormat(locale_dateTime, formats); | |
utcFormats.x = newFormat(locale_date, utcFormats); | |
utcFormats.X = newFormat(locale_time, utcFormats); | |
utcFormats.c = newFormat(locale_dateTime, utcFormats); | |
function newFormat(specifier, formats) { | |
return function(date) { | |
var string = [], | |
i = -1, | |
j = 0, | |
n = specifier.length, | |
c, | |
pad, | |
format; | |
if (!(date instanceof Date)) date = new Date(+date); | |
while (++i < n) { | |
if (specifier.charCodeAt(i) === 37) { | |
string.push(specifier.slice(j, i)); | |
if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); | |
else pad = c === "e" ? " " : "0"; | |
if (format = formats[c]) c = format(date, pad); | |
string.push(c); | |
j = i + 1; | |
} | |
} | |
string.push(specifier.slice(j, i)); | |
return string.join(""); | |
}; | |
} | |
function newParse(specifier, newDate) { | |
return function(string) { | |
var d = newYear(1900), | |
i = parseSpecifier(d, specifier, string += "", 0); | |
if (i != string.length) return null; | |
// The am-pm flag is 0 for AM, and 1 for PM. | |
if ("p" in d) d.H = d.H % 12 + d.p * 12; | |
// Convert day-of-week and week-of-year to day-of-year. | |
if ("W" in d || "U" in d) { | |
if (!("w" in d)) d.w = "W" in d ? 1 : 0; | |
var day$$1 = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay(); | |
d.m = 0; | |
d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$$1 + 5) % 7 : d.w + d.U * 7 - (day$$1 + 6) % 7; | |
} | |
// If a time zone is specified, all fields are interpreted as UTC and then | |
// offset according to the specified time zone. | |
if ("Z" in d) { | |
d.H += d.Z / 100 | 0; | |
d.M += d.Z % 100; | |
return utcDate(d); | |
} | |
// Otherwise, all fields are in local time. | |
return newDate(d); | |
}; | |
} | |
function parseSpecifier(d, specifier, string, j) { | |
var i = 0, | |
n = specifier.length, | |
m = string.length, | |
c, | |
parse; | |
while (i < n) { | |
if (j >= m) return -1; | |
c = specifier.charCodeAt(i++); | |
if (c === 37) { | |
c = specifier.charAt(i++); | |
parse = parses[c in pads ? specifier.charAt(i++) : c]; | |
if (!parse || ((j = parse(d, string, j)) < 0)) return -1; | |
} else if (c != string.charCodeAt(j++)) { | |
return -1; | |
} | |
} | |
return j; | |
} | |
function parsePeriod(d, string, i) { | |
var n = periodRe.exec(string.slice(i)); | |
return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; | |
} | |
function parseShortWeekday(d, string, i) { | |
var n = shortWeekdayRe.exec(string.slice(i)); | |
return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; | |
} | |
function parseWeekday(d, string, i) { | |
var n = weekdayRe.exec(string.slice(i)); | |
return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; | |
} | |
function parseShortMonth(d, string, i) { | |
var n = shortMonthRe.exec(string.slice(i)); | |
return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; | |
} | |
function parseMonth(d, string, i) { | |
var n = monthRe.exec(string.slice(i)); | |
return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; | |
} | |
function parseLocaleDateTime(d, string, i) { | |
return parseSpecifier(d, locale_dateTime, string, i); | |
} | |
function parseLocaleDate(d, string, i) { | |
return parseSpecifier(d, locale_date, string, i); | |
} | |
function parseLocaleTime(d, string, i) { | |
return parseSpecifier(d, locale_time, string, i); | |
} | |
function formatShortWeekday(d) { | |
return locale_shortWeekdays[d.getDay()]; | |
} | |
function formatWeekday(d) { | |
return locale_weekdays[d.getDay()]; | |
} | |
function formatShortMonth(d) { | |
return locale_shortMonths[d.getMonth()]; | |
} | |
function formatMonth(d) { | |
return locale_months[d.getMonth()]; | |
} | |
function formatPeriod(d) { | |
return locale_periods[+(d.getHours() >= 12)]; | |
} | |
function formatUTCShortWeekday(d) { | |
return locale_shortWeekdays[d.getUTCDay()]; | |
} | |
function formatUTCWeekday(d) { | |
return locale_weekdays[d.getUTCDay()]; | |
} | |
function formatUTCShortMonth(d) { | |
return locale_shortMonths[d.getUTCMonth()]; | |
} | |
function formatUTCMonth(d) { | |
return locale_months[d.getUTCMonth()]; | |
} | |
function formatUTCPeriod(d) { | |
return locale_periods[+(d.getUTCHours() >= 12)]; | |
} | |
return { | |
format: function(specifier) { | |
var f = newFormat(specifier += "", formats); | |
f.toString = function() { return specifier; }; | |
return f; | |
}, | |
parse: function(specifier) { | |
var p = newParse(specifier += "", localDate); | |
p.toString = function() { return specifier; }; | |
return p; | |
}, | |
utcFormat: function(specifier) { | |
var f = newFormat(specifier += "", utcFormats); | |
f.toString = function() { return specifier; }; | |
return f; | |
}, | |
utcParse: function(specifier) { | |
var p = newParse(specifier, utcDate); | |
p.toString = function() { return specifier; }; | |
return p; | |
} | |
}; | |
} | |
var pads = {"-": "", "_": " ", "0": "0"}; | |
var numberRe = /^\s*\d+/; | |
var percentRe = /^%/; | |
var requoteRe = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; | |
function pad(value, fill, width) { | |
var sign = value < 0 ? "-" : "", | |
string = (sign ? -value : value) + "", | |
length = string.length; | |
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); | |
} | |
function requote(s) { | |
return s.replace(requoteRe, "\\$&"); | |
} | |
function formatRe(names) { | |
return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); | |
} | |
function formatLookup(names) { | |
var map = {}, i = -1, n = names.length; | |
while (++i < n) map[names[i].toLowerCase()] = i; | |
return map; | |
} | |
function parseWeekdayNumber(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 1)); | |
return n ? (d.w = +n[0], i + n[0].length) : -1; | |
} | |
function parseWeekNumberSunday(d, string, i) { | |
var n = numberRe.exec(string.slice(i)); | |
return n ? (d.U = +n[0], i + n[0].length) : -1; | |
} | |
function parseWeekNumberMonday(d, string, i) { | |
var n = numberRe.exec(string.slice(i)); | |
return n ? (d.W = +n[0], i + n[0].length) : -1; | |
} | |
function parseFullYear(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 4)); | |
return n ? (d.y = +n[0], i + n[0].length) : -1; | |
} | |
function parseYear(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 2)); | |
return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; | |
} | |
function parseZone(d, string, i) { | |
var n = /^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(string.slice(i, i + 6)); | |
return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; | |
} | |
function parseMonthNumber(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 2)); | |
return n ? (d.m = n[0] - 1, i + n[0].length) : -1; | |
} | |
function parseDayOfMonth(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 2)); | |
return n ? (d.d = +n[0], i + n[0].length) : -1; | |
} | |
function parseDayOfYear(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 3)); | |
return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; | |
} | |
function parseHour24(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 2)); | |
return n ? (d.H = +n[0], i + n[0].length) : -1; | |
} | |
function parseMinutes(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 2)); | |
return n ? (d.M = +n[0], i + n[0].length) : -1; | |
} | |
function parseSeconds(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 2)); | |
return n ? (d.S = +n[0], i + n[0].length) : -1; | |
} | |
function parseMilliseconds(d, string, i) { | |
var n = numberRe.exec(string.slice(i, i + 3)); | |
return n ? (d.L = +n[0], i + n[0].length) : -1; | |
} | |
function parseLiteralPercent(d, string, i) { | |
var n = percentRe.exec(string.slice(i, i + 1)); | |
return n ? i + n[0].length : -1; | |
} | |
function formatDayOfMonth(d, p) { | |
return pad(d.getDate(), p, 2); | |
} | |
function formatHour24(d, p) { | |
return pad(d.getHours(), p, 2); | |
} | |
function formatHour12(d, p) { | |
return pad(d.getHours() % 12 || 12, p, 2); | |
} | |
function formatDayOfYear(d, p) { | |
return pad(1 + day.count(year(d), d), p, 3); | |
} | |
function formatMilliseconds(d, p) { | |
return pad(d.getMilliseconds(), p, 3); | |
} | |
function formatMonthNumber(d, p) { | |
return pad(d.getMonth() + 1, p, 2); | |
} | |
function formatMinutes(d, p) { | |
return pad(d.getMinutes(), p, 2); | |
} | |
function formatSeconds(d, p) { | |
return pad(d.getSeconds(), p, 2); | |
} | |
function formatWeekNumberSunday(d, p) { | |
return pad(sunday.count(year(d), d), p, 2); | |
} | |
function formatWeekdayNumber(d) { | |
return d.getDay(); | |
} | |
function formatWeekNumberMonday(d, p) { | |
return pad(monday.count(year(d), d), p, 2); | |
} | |
function formatYear(d, p) { | |
return pad(d.getFullYear() % 100, p, 2); | |
} | |
function formatFullYear(d, p) { | |
return pad(d.getFullYear() % 10000, p, 4); | |
} | |
function formatZone(d) { | |
var z = d.getTimezoneOffset(); | |
return (z > 0 ? "-" : (z *= -1, "+")) | |
+ pad(z / 60 | 0, "0", 2) | |
+ pad(z % 60, "0", 2); | |
} | |
function formatUTCDayOfMonth(d, p) { | |
return pad(d.getUTCDate(), p, 2); | |
} | |
function formatUTCHour24(d, p) { | |
return pad(d.getUTCHours(), p, 2); | |
} | |
function formatUTCHour12(d, p) { | |
return pad(d.getUTCHours() % 12 || 12, p, 2); | |
} | |
function formatUTCDayOfYear(d, p) { | |
return pad(1 + utcDay.count(utcYear(d), d), p, 3); | |
} | |
function formatUTCMilliseconds(d, p) { | |
return pad(d.getUTCMilliseconds(), p, 3); | |
} | |
function formatUTCMonthNumber(d, p) { | |
return pad(d.getUTCMonth() + 1, p, 2); | |
} | |
function formatUTCMinutes(d, p) { | |
return pad(d.getUTCMinutes(), p, 2); | |
} | |
function formatUTCSeconds(d, p) { | |
return pad(d.getUTCSeconds(), p, 2); | |
} | |
function formatUTCWeekNumberSunday(d, p) { | |
return pad(utcSunday.count(utcYear(d), d), p, 2); | |
} | |
function formatUTCWeekdayNumber(d) { | |
return d.getUTCDay(); | |
} | |
function formatUTCWeekNumberMonday(d, p) { | |
return pad(utcMonday.count(utcYear(d), d), p, 2); | |
} | |
function formatUTCYear(d, p) { | |
return pad(d.getUTCFullYear() % 100, p, 2); | |
} | |
function formatUTCFullYear(d, p) { | |
return pad(d.getUTCFullYear() % 10000, p, 4); | |
} | |
function formatUTCZone() { | |
return "+0000"; | |
} | |
function formatLiteralPercent() { | |
return "%"; | |
} | |
var locale$2; | |
defaultLocale$1({ | |
dateTime: "%x, %X", | |
date: "%-m/%-d/%Y", | |
time: "%-I:%M:%S %p", | |
periods: ["AM", "PM"], | |
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], | |
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], | |
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], | |
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] | |
}); | |
function defaultLocale$1(definition) { | |
locale$2 = formatLocale$1(definition); | |
exports.timeFormat = locale$2.format; | |
exports.timeParse = locale$2.parse; | |
exports.utcFormat = locale$2.utcFormat; | |
exports.utcParse = locale$2.utcParse; | |
return locale$2; | |
} | |
var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; | |
function formatIsoNative(date) { | |
return date.toISOString(); | |
} | |
var formatIso = Date.prototype.toISOString | |
? formatIsoNative | |
: exports.utcFormat(isoSpecifier); | |
function parseIsoNative(string) { | |
var date = new Date(string); | |
return isNaN(date) ? null : date; | |
} | |
var parseIso = +new Date("2000-01-01T00:00:00.000Z") | |
? parseIsoNative | |
: exports.utcParse(isoSpecifier); | |
var durationSecond = 1000; | |
var durationMinute = durationSecond * 60; | |
var durationHour = durationMinute * 60; | |
var durationDay = durationHour * 24; | |
var durationWeek = durationDay * 7; | |
var durationMonth = durationDay * 30; | |
var durationYear = durationDay * 365; | |
function date$1(t) { | |
return new Date(t); | |
} | |
function number$4(t) { | |
return t instanceof Date ? +t : +new Date(+t); | |
} | |
function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1, millisecond$$1, format) { | |
var scale = continuous(deinterpolateLinear, reinterpolate), | |
invert = scale.invert, | |
domain = scale.domain; | |
var formatMillisecond = format(".%L"), | |
formatSecond = format(":%S"), | |
formatMinute = format("%I:%M"), | |
formatHour = format("%I %p"), | |
formatDay = format("%a %d"), | |
formatWeek = format("%b %d"), | |
formatMonth = format("%B"), | |
formatYear = format("%Y"); | |
var tickIntervals = [ | |
[second$$1, 1, durationSecond], | |
[second$$1, 5, 5 * durationSecond], | |
[second$$1, 15, 15 * durationSecond], | |
[second$$1, 30, 30 * durationSecond], | |
[minute$$1, 1, durationMinute], | |
[minute$$1, 5, 5 * durationMinute], | |
[minute$$1, 15, 15 * durationMinute], | |
[minute$$1, 30, 30 * durationMinute], | |
[ hour$$1, 1, durationHour ], | |
[ hour$$1, 3, 3 * durationHour ], | |
[ hour$$1, 6, 6 * durationHour ], | |
[ hour$$1, 12, 12 * durationHour ], | |
[ day$$1, 1, durationDay ], | |
[ day$$1, 2, 2 * durationDay ], | |
[ week, 1, durationWeek ], | |
[ month$$1, 1, durationMonth ], | |
[ month$$1, 3, 3 * durationMonth ], | |
[ year$$1, 1, durationYear ] | |
]; | |
function tickFormat(date) { | |
return (second$$1(date) < date ? formatMillisecond | |
: minute$$1(date) < date ? formatSecond | |
: hour$$1(date) < date ? formatMinute | |
: day$$1(date) < date ? formatHour | |
: month$$1(date) < date ? (week(date) < date ? formatDay : formatWeek) | |
: year$$1(date) < date ? formatMonth | |
: formatYear)(date); | |
} | |
function tickInterval(interval, start, stop, step) { | |
if (interval == null) interval = 10; | |
// If a desired tick count is specified, pick a reasonable tick interval | |
// based on the extent of the domain and a rough estimate of tick size. | |
// Otherwise, assume interval is already a time interval and use it. | |
if (typeof interval === "number") { | |
var target = Math.abs(stop - start) / interval, | |
i = bisector$1(function(i) { return i[2]; }).right(tickIntervals, target); | |
if (i === tickIntervals.length) { | |
step = tickStep$1(start / durationYear, stop / durationYear, interval); | |
interval = year$$1; | |
} else if (i) { | |
i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; | |
step = i[1]; | |
interval = i[0]; | |
} else { | |
step = tickStep$1(start, stop, interval); | |
interval = millisecond$$1; | |
} | |
} | |
return step == null ? interval : interval.every(step); | |
} | |
scale.invert = function(y) { | |
return new Date(invert(y)); | |
}; | |
scale.domain = function(_) { | |
return arguments.length ? domain(map$4.call(_, number$4)) : domain().map(date$1); | |
}; | |
scale.ticks = function(interval, step) { | |
var d = domain(), | |
t0 = d[0], | |
t1 = d[d.length - 1], | |
r = t1 < t0, | |
t; | |
if (r) t = t0, t0 = t1, t1 = t; | |
t = tickInterval(interval, t0, t1, step); | |
t = t ? t.range(t0, t1 + 1) : []; // inclusive stop | |
return r ? t.reverse() : t; | |
}; | |
scale.tickFormat = function(count, specifier) { | |
return specifier == null ? tickFormat : format(specifier); | |
}; | |
scale.nice = function(interval, step) { | |
var d = domain(); | |
return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) | |
? domain(nice(d, interval)) | |
: scale; | |
}; | |
scale.copy = function() { | |
return copy(scale, calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1, millisecond$$1, format)); | |
}; | |
return scale; | |
} | |
var time = function() { | |
return calendar(year, month, sunday, day, hour, minute, second, millisecond, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]); | |
}; | |
var utcTime = function() { | |
return calendar(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, millisecond, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]); | |
}; | |
var colors = function(s) { | |
return s.match(/.{6}/g).map(function(x) { | |
return "#" + x; | |
}); | |
}; | |
var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); | |
var category20b = colors("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"); | |
var category20c = colors("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"); | |
var category20 = colors("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"); | |
var cubehelix$3 = cubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0)); | |
var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); | |
var cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); | |
var rainbow = cubehelix(); | |
var rainbow$1 = function(t) { | |
if (t < 0 || t > 1) t -= Math.floor(t); | |
var ts = Math.abs(t - 0.5); | |
rainbow.h = 360 * t - 100; | |
rainbow.s = 1.5 - 1.5 * ts; | |
rainbow.l = 0.8 - 0.9 * ts; | |
return rainbow + ""; | |
}; | |
function ramp(range) { | |
var n = range.length; | |
return function(t) { | |
return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; | |
}; | |
} | |
var viridis = ramp(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); | |
var magma = ramp(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); | |
var inferno = ramp(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); | |
var plasma = ramp(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); | |
function sequential(interpolator) { | |
var x0 = 0, | |
x1 = 1, | |
clamp = false; | |
function scale(x) { | |
var t = (x - x0) / (x1 - x0); | |
return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t); | |
} | |
scale.domain = function(_) { | |
return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1]; | |
}; | |
scale.clamp = function(_) { | |
return arguments.length ? (clamp = !!_, scale) : clamp; | |
}; | |
scale.interpolator = function(_) { | |
return arguments.length ? (interpolator = _, scale) : interpolator; | |
}; | |
scale.copy = function() { | |
return sequential(interpolator).domain([x0, x1]).clamp(clamp); | |
}; | |
return linearish(scale); | |
} | |
var constant$11 = function(x) { | |
return function constant() { | |
return x; | |
}; | |
}; | |
var abs$1 = Math.abs; | |
var atan2$1 = Math.atan2; | |
var cos$2 = Math.cos; | |
var max$3 = Math.max; | |
var min$2 = Math.min; | |
var sin$2 = Math.sin; | |
var sqrt$2 = Math.sqrt; | |
var epsilon$3 = 1e-12; | |
var pi$4 = Math.PI; | |
var halfPi$3 = pi$4 / 2; | |
var tau$4 = 2 * pi$4; | |
function acos$1(x) { | |
return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x); | |
} | |
function asin$1(x) { | |
return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x); | |
} | |
function arcInnerRadius(d) { | |
return d.innerRadius; | |
} | |
function arcOuterRadius(d) { | |
return d.outerRadius; | |
} | |
function arcStartAngle(d) { | |
return d.startAngle; | |
} | |
function arcEndAngle(d) { | |
return d.endAngle; | |
} | |
function arcPadAngle(d) { | |
return d && d.padAngle; // Note: optional! | |
} | |
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { | |
var x10 = x1 - x0, y10 = y1 - y0, | |
x32 = x3 - x2, y32 = y3 - y2, | |
t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10); | |
return [x0 + t * x10, y0 + t * y10]; | |
} | |
// Compute perpendicular offset line of length rc. | |
// http://mathworld.wolfram.com/Circle-LineIntersection.html | |
function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { | |
var x01 = x0 - x1, | |
y01 = y0 - y1, | |
lo = (cw ? rc : -rc) / sqrt$2(x01 * x01 + y01 * y01), | |
ox = lo * y01, | |
oy = -lo * x01, | |
x11 = x0 + ox, | |
y11 = y0 + oy, | |
x10 = x1 + ox, | |
y10 = y1 + oy, | |
x00 = (x11 + x10) / 2, | |
y00 = (y11 + y10) / 2, | |
dx = x10 - x11, | |
dy = y10 - y11, | |
d2 = dx * dx + dy * dy, | |
r = r1 - rc, | |
D = x11 * y10 - x10 * y11, | |
d = (dy < 0 ? -1 : 1) * sqrt$2(max$3(0, r * r * d2 - D * D)), | |
cx0 = (D * dy - dx * d) / d2, | |
cy0 = (-D * dx - dy * d) / d2, | |
cx1 = (D * dy + dx * d) / d2, | |
cy1 = (-D * dx + dy * d) / d2, | |
dx0 = cx0 - x00, | |
dy0 = cy0 - y00, | |
dx1 = cx1 - x00, | |
dy1 = cy1 - y00; | |
// Pick the closer of the two intersection points. | |
// TODO Is there a faster way to determine which intersection to use? | |
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; | |
return { | |
cx: cx0, | |
cy: cy0, | |
x01: -ox, | |
y01: -oy, | |
x11: cx0 * (r1 / r - 1), | |
y11: cy0 * (r1 / r - 1) | |
}; | |
} | |
var arc = function() { | |
var innerRadius = arcInnerRadius, | |
outerRadius = arcOuterRadius, | |
cornerRadius = constant$11(0), | |
padRadius = null, | |
startAngle = arcStartAngle, | |
endAngle = arcEndAngle, | |
padAngle = arcPadAngle, | |
context = null; | |
function arc() { | |
var buffer, | |
r, | |
r0 = +innerRadius.apply(this, arguments), | |
r1 = +outerRadius.apply(this, arguments), | |
a0 = startAngle.apply(this, arguments) - halfPi$3, | |
a1 = endAngle.apply(this, arguments) - halfPi$3, | |
da = abs$1(a1 - a0), | |
cw = a1 > a0; | |
if (!context) context = buffer = path(); | |
// Ensure that the outer radius is always larger than the inner radius. | |
if (r1 < r0) r = r1, r1 = r0, r0 = r; | |
// Is it a point? | |
if (!(r1 > epsilon$3)) context.moveTo(0, 0); | |
// Or is it a circle or annulus? | |
else if (da > tau$4 - epsilon$3) { | |
context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0)); | |
context.arc(0, 0, r1, a0, a1, !cw); | |
if (r0 > epsilon$3) { | |
context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1)); | |
context.arc(0, 0, r0, a1, a0, cw); | |
} | |
} | |
// Or is it a circular or annular sector? | |
else { | |
var a01 = a0, | |
a11 = a1, | |
a00 = a0, | |
a10 = a1, | |
da0 = da, | |
da1 = da, | |
ap = padAngle.apply(this, arguments) / 2, | |
rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) : sqrt$2(r0 * r0 + r1 * r1)), | |
rc = min$2(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), | |
rc0 = rc, | |
rc1 = rc, | |
t0, | |
t1; | |
// Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. | |
if (rp > epsilon$3) { | |
var p0 = asin$1(rp / r0 * sin$2(ap)), | |
p1 = asin$1(rp / r1 * sin$2(ap)); | |
if ((da0 -= p0 * 2) > epsilon$3) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; | |
else da0 = 0, a00 = a10 = (a0 + a1) / 2; | |
if ((da1 -= p1 * 2) > epsilon$3) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; | |
else da1 = 0, a01 = a11 = (a0 + a1) / 2; | |
} | |
var x01 = r1 * cos$2(a01), | |
y01 = r1 * sin$2(a01), | |
x10 = r0 * cos$2(a10), | |
y10 = r0 * sin$2(a10); | |
// Apply rounded corners? | |
if (rc > epsilon$3) { | |
var x11 = r1 * cos$2(a11), | |
y11 = r1 * sin$2(a11), | |
x00 = r0 * cos$2(a00), | |
y00 = r0 * sin$2(a00); | |
// Restrict the corner radius according to the sector angle. | |
if (da < pi$4) { | |
var oc = da0 > epsilon$3 ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10], | |
ax = x01 - oc[0], | |
ay = y01 - oc[1], | |
bx = x11 - oc[0], | |
by = y11 - oc[1], | |
kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$2(ax * ax + ay * ay) * sqrt$2(bx * bx + by * by))) / 2), | |
lc = sqrt$2(oc[0] * oc[0] + oc[1] * oc[1]); | |
rc0 = min$2(rc, (r0 - lc) / (kc - 1)); | |
rc1 = min$2(rc, (r1 - lc) / (kc + 1)); | |
} | |
} | |
// Is the sector collapsed to a line? | |
if (!(da1 > epsilon$3)) context.moveTo(x01, y01); | |
// Does the sector’s outer ring have rounded corners? | |
else if (rc1 > epsilon$3) { | |
t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); | |
t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); | |
context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); | |
// Have the corners merged? | |
if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); | |
// Otherwise, draw the two corners and the ring. | |
else { | |
context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); | |
context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw); | |
context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); | |
} | |
} | |
// Or is the outer ring just a circular arc? | |
else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); | |
// Is there no inner ring, and it’s a circular sector? | |
// Or perhaps it’s an annular sector collapsed due to padding? | |
if (!(r0 > epsilon$3) || !(da0 > epsilon$3)) context.lineTo(x10, y10); | |
// Does the sector’s inner ring (or point) have rounded corners? | |
else if (rc0 > epsilon$3) { | |
t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); | |
t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); | |
context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); | |
// Have the corners merged? | |
if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); | |
// Otherwise, draw the two corners and the ring. | |
else { | |
context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); | |
context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw); | |
context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); | |
} | |
} | |
// Or is the inner ring just a circular arc? | |
else context.arc(0, 0, r0, a10, a00, cw); | |
} | |
context.closePath(); | |
if (buffer) return context = null, buffer + "" || null; | |
} | |
arc.centroid = function() { | |
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, | |
a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$4 / 2; | |
return [cos$2(a) * r, sin$2(a) * r]; | |
}; | |
arc.innerRadius = function(_) { | |
return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant$11(+_), arc) : innerRadius; | |
}; | |
arc.outerRadius = function(_) { | |
return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant$11(+_), arc) : outerRadius; | |
}; | |
arc.cornerRadius = function(_) { | |
return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant$11(+_), arc) : cornerRadius; | |
}; | |
arc.padRadius = function(_) { | |
return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant$11(+_), arc) : padRadius; | |
}; | |
arc.startAngle = function(_) { | |
return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$11(+_), arc) : startAngle; | |
}; | |
arc.endAngle = function(_) { | |
return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$11(+_), arc) : endAngle; | |
}; | |
arc.padAngle = function(_) { | |
return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$11(+_), arc) : padAngle; | |
}; | |
arc.context = function(_) { | |
return arguments.length ? ((context = _ == null ? null : _), arc) : context; | |
}; | |
return arc; | |
}; | |
function Linear(context) { | |
this._context = context; | |
} | |
Linear.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; | |
case 1: this._point = 2; // proceed | |
default: this._context.lineTo(x, y); break; | |
} | |
} | |
}; | |
var curveLinear = function(context) { | |
return new Linear(context); | |
}; | |
function x$3(p) { | |
return p[0]; | |
} | |
function y$3(p) { | |
return p[1]; | |
} | |
var line = function() { | |
var x$$1 = x$3, | |
y$$1 = y$3, | |
defined = constant$11(true), | |
context = null, | |
curve = curveLinear, | |
output = null; | |
function line(data) { | |
var i, | |
n = data.length, | |
d, | |
defined0 = false, | |
buffer; | |
if (context == null) output = curve(buffer = path()); | |
for (i = 0; i <= n; ++i) { | |
if (!(i < n && defined(d = data[i], i, data)) === defined0) { | |
if (defined0 = !defined0) output.lineStart(); | |
else output.lineEnd(); | |
} | |
if (defined0) output.point(+x$$1(d, i, data), +y$$1(d, i, data)); | |
} | |
if (buffer) return output = null, buffer + "" || null; | |
} | |
line.x = function(_) { | |
return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant$11(+_), line) : x$$1; | |
}; | |
line.y = function(_) { | |
return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant$11(+_), line) : y$$1; | |
}; | |
line.defined = function(_) { | |
return arguments.length ? (defined = typeof _ === "function" ? _ : constant$11(!!_), line) : defined; | |
}; | |
line.curve = function(_) { | |
return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; | |
}; | |
line.context = function(_) { | |
return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; | |
}; | |
return line; | |
}; | |
var area$2 = function() { | |
var x0 = x$3, | |
x1 = null, | |
y0 = constant$11(0), | |
y1 = y$3, | |
defined = constant$11(true), | |
context = null, | |
curve = curveLinear, | |
output = null; | |
function area(data) { | |
var i, | |
j, | |
k, | |
n = data.length, | |
d, | |
defined0 = false, | |
buffer, | |
x0z = new Array(n), | |
y0z = new Array(n); | |
if (context == null) output = curve(buffer = path()); | |
for (i = 0; i <= n; ++i) { | |
if (!(i < n && defined(d = data[i], i, data)) === defined0) { | |
if (defined0 = !defined0) { | |
j = i; | |
output.areaStart(); | |
output.lineStart(); | |
} else { | |
output.lineEnd(); | |
output.lineStart(); | |
for (k = i - 1; k >= j; --k) { | |
output.point(x0z[k], y0z[k]); | |
} | |
output.lineEnd(); | |
output.areaEnd(); | |
} | |
} | |
if (defined0) { | |
x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); | |
output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); | |
} | |
} | |
if (buffer) return output = null, buffer + "" || null; | |
} | |
function arealine() { | |
return line().defined(defined).curve(curve).context(context); | |
} | |
area.x = function(_) { | |
return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$11(+_), x1 = null, area) : x0; | |
}; | |
area.x0 = function(_) { | |
return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$11(+_), area) : x0; | |
}; | |
area.x1 = function(_) { | |
return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$11(+_), area) : x1; | |
}; | |
area.y = function(_) { | |
return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$11(+_), y1 = null, area) : y0; | |
}; | |
area.y0 = function(_) { | |
return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$11(+_), area) : y0; | |
}; | |
area.y1 = function(_) { | |
return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$11(+_), area) : y1; | |
}; | |
area.lineX0 = | |
area.lineY0 = function() { | |
return arealine().x(x0).y(y0); | |
}; | |
area.lineY1 = function() { | |
return arealine().x(x0).y(y1); | |
}; | |
area.lineX1 = function() { | |
return arealine().x(x1).y(y0); | |
}; | |
area.defined = function(_) { | |
return arguments.length ? (defined = typeof _ === "function" ? _ : constant$11(!!_), area) : defined; | |
}; | |
area.curve = function(_) { | |
return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; | |
}; | |
area.context = function(_) { | |
return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; | |
}; | |
return area; | |
}; | |
var descending$2 = function(a, b) { | |
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; | |
}; | |
var identity$8 = function(d) { | |
return d; | |
}; | |
var pie = function() { | |
var value = identity$8, | |
sortValues = descending$2, | |
sort = null, | |
startAngle = constant$11(0), | |
endAngle = constant$11(tau$4), | |
padAngle = constant$11(0); | |
function pie(data) { | |
var i, | |
n = data.length, | |
j, | |
k, | |
sum = 0, | |
index = new Array(n), | |
arcs = new Array(n), | |
a0 = +startAngle.apply(this, arguments), | |
da = Math.min(tau$4, Math.max(-tau$4, endAngle.apply(this, arguments) - a0)), | |
a1, | |
p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), | |
pa = p * (da < 0 ? -1 : 1), | |
v; | |
for (i = 0; i < n; ++i) { | |
if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { | |
sum += v; | |
} | |
} | |
// Optionally sort the arcs by previously-computed values or by data. | |
if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); | |
else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); | |
// Compute the arcs! They are stored in the original data's order. | |
for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { | |
j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { | |
data: data[j], | |
index: i, | |
value: v, | |
startAngle: a0, | |
endAngle: a1, | |
padAngle: p | |
}; | |
} | |
return arcs; | |
} | |
pie.value = function(_) { | |
return arguments.length ? (value = typeof _ === "function" ? _ : constant$11(+_), pie) : value; | |
}; | |
pie.sortValues = function(_) { | |
return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; | |
}; | |
pie.sort = function(_) { | |
return arguments.length ? (sort = _, sortValues = null, pie) : sort; | |
}; | |
pie.startAngle = function(_) { | |
return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$11(+_), pie) : startAngle; | |
}; | |
pie.endAngle = function(_) { | |
return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$11(+_), pie) : endAngle; | |
}; | |
pie.padAngle = function(_) { | |
return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$11(+_), pie) : padAngle; | |
}; | |
return pie; | |
}; | |
var curveRadialLinear = curveRadial(curveLinear); | |
function Radial(curve) { | |
this._curve = curve; | |
} | |
Radial.prototype = { | |
areaStart: function() { | |
this._curve.areaStart(); | |
}, | |
areaEnd: function() { | |
this._curve.areaEnd(); | |
}, | |
lineStart: function() { | |
this._curve.lineStart(); | |
}, | |
lineEnd: function() { | |
this._curve.lineEnd(); | |
}, | |
point: function(a, r) { | |
this._curve.point(r * Math.sin(a), r * -Math.cos(a)); | |
} | |
}; | |
function curveRadial(curve) { | |
function radial(context) { | |
return new Radial(curve(context)); | |
} | |
radial._curve = curve; | |
return radial; | |
} | |
function lineRadial(l) { | |
var c = l.curve; | |
l.angle = l.x, delete l.x; | |
l.radius = l.y, delete l.y; | |
l.curve = function(_) { | |
return arguments.length ? c(curveRadial(_)) : c()._curve; | |
}; | |
return l; | |
} | |
var lineRadial$1 = function() { | |
return lineRadial(line().curve(curveRadialLinear)); | |
}; | |
var areaRadial = function() { | |
var a = area$2().curve(curveRadialLinear), | |
c = a.curve, | |
x0 = a.lineX0, | |
x1 = a.lineX1, | |
y0 = a.lineY0, | |
y1 = a.lineY1; | |
a.angle = a.x, delete a.x; | |
a.startAngle = a.x0, delete a.x0; | |
a.endAngle = a.x1, delete a.x1; | |
a.radius = a.y, delete a.y; | |
a.innerRadius = a.y0, delete a.y0; | |
a.outerRadius = a.y1, delete a.y1; | |
a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; | |
a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; | |
a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; | |
a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; | |
a.curve = function(_) { | |
return arguments.length ? c(curveRadial(_)) : c()._curve; | |
}; | |
return a; | |
}; | |
var pointRadial = function(x, y) { | |
return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; | |
}; | |
var slice$7 = Array.prototype.slice; | |
function linkSource(d) { | |
return d.source; | |
} | |
function linkTarget(d) { | |
return d.target; | |
} | |
function link$2(curve) { | |
var source = linkSource, | |
target = linkTarget, | |
x$$1 = x$3, | |
y$$1 = y$3, | |
context = null; | |
function link() { | |
var buffer, argv = slice$7.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv); | |
if (!context) context = buffer = path(); | |
curve(context, +x$$1.apply(this, (argv[0] = s, argv)), +y$$1.apply(this, argv), +x$$1.apply(this, (argv[0] = t, argv)), +y$$1.apply(this, argv)); | |
if (buffer) return context = null, buffer + "" || null; | |
} | |
link.source = function(_) { | |
return arguments.length ? (source = _, link) : source; | |
}; | |
link.target = function(_) { | |
return arguments.length ? (target = _, link) : target; | |
}; | |
link.x = function(_) { | |
return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant$11(+_), link) : x$$1; | |
}; | |
link.y = function(_) { | |
return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant$11(+_), link) : y$$1; | |
}; | |
link.context = function(_) { | |
return arguments.length ? ((context = _ == null ? null : _), link) : context; | |
}; | |
return link; | |
} | |
function curveHorizontal(context, x0, y0, x1, y1) { | |
context.moveTo(x0, y0); | |
context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); | |
} | |
function curveVertical(context, x0, y0, x1, y1) { | |
context.moveTo(x0, y0); | |
context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1); | |
} | |
function curveRadial$1(context, x0, y0, x1, y1) { | |
var p0 = pointRadial(x0, y0), | |
p1 = pointRadial(x0, y0 = (y0 + y1) / 2), | |
p2 = pointRadial(x1, y0), | |
p3 = pointRadial(x1, y1); | |
context.moveTo(p0[0], p0[1]); | |
context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); | |
} | |
function linkHorizontal() { | |
return link$2(curveHorizontal); | |
} | |
function linkVertical() { | |
return link$2(curveVertical); | |
} | |
function linkRadial() { | |
var l = link$2(curveRadial$1); | |
l.angle = l.x, delete l.x; | |
l.radius = l.y, delete l.y; | |
return l; | |
} | |
var circle$2 = { | |
draw: function(context, size) { | |
var r = Math.sqrt(size / pi$4); | |
context.moveTo(r, 0); | |
context.arc(0, 0, r, 0, tau$4); | |
} | |
}; | |
var cross$3 = { | |
draw: function(context, size) { | |
var r = Math.sqrt(size / 5) / 2; | |
context.moveTo(-3 * r, -r); | |
context.lineTo(-r, -r); | |
context.lineTo(-r, -3 * r); | |
context.lineTo(r, -3 * r); | |
context.lineTo(r, -r); | |
context.lineTo(3 * r, -r); | |
context.lineTo(3 * r, r); | |
context.lineTo(r, r); | |
context.lineTo(r, 3 * r); | |
context.lineTo(-r, 3 * r); | |
context.lineTo(-r, r); | |
context.lineTo(-3 * r, r); | |
context.closePath(); | |
} | |
}; | |
var tan30 = Math.sqrt(1 / 3); | |
var tan30_2 = tan30 * 2; | |
var diamond = { | |
draw: function(context, size) { | |
var y = Math.sqrt(size / tan30_2), | |
x = y * tan30; | |
context.moveTo(0, -y); | |
context.lineTo(x, 0); | |
context.lineTo(0, y); | |
context.lineTo(-x, 0); | |
context.closePath(); | |
} | |
}; | |
var ka = 0.89081309152928522810; | |
var kr = Math.sin(pi$4 / 10) / Math.sin(7 * pi$4 / 10); | |
var kx = Math.sin(tau$4 / 10) * kr; | |
var ky = -Math.cos(tau$4 / 10) * kr; | |
var star = { | |
draw: function(context, size) { | |
var r = Math.sqrt(size * ka), | |
x = kx * r, | |
y = ky * r; | |
context.moveTo(0, -r); | |
context.lineTo(x, y); | |
for (var i = 1; i < 5; ++i) { | |
var a = tau$4 * i / 5, | |
c = Math.cos(a), | |
s = Math.sin(a); | |
context.lineTo(s * r, -c * r); | |
context.lineTo(c * x - s * y, s * x + c * y); | |
} | |
context.closePath(); | |
} | |
}; | |
var square = { | |
draw: function(context, size) { | |
var w = Math.sqrt(size), | |
x = -w / 2; | |
context.rect(x, x, w, w); | |
} | |
}; | |
var sqrt3 = Math.sqrt(3); | |
var triangle = { | |
draw: function(context, size) { | |
var y = -Math.sqrt(size / (sqrt3 * 3)); | |
context.moveTo(0, y * 2); | |
context.lineTo(-sqrt3 * y, -y); | |
context.lineTo(sqrt3 * y, -y); | |
context.closePath(); | |
} | |
}; | |
var c = -0.5; | |
var s = Math.sqrt(3) / 2; | |
var k = 1 / Math.sqrt(12); | |
var a = (k / 2 + 1) * 3; | |
var wye = { | |
draw: function(context, size) { | |
var r = Math.sqrt(size / a), | |
x0 = r / 2, | |
y0 = r * k, | |
x1 = x0, | |
y1 = r * k + r, | |
x2 = -x1, | |
y2 = y1; | |
context.moveTo(x0, y0); | |
context.lineTo(x1, y1); | |
context.lineTo(x2, y2); | |
context.lineTo(c * x0 - s * y0, s * x0 + c * y0); | |
context.lineTo(c * x1 - s * y1, s * x1 + c * y1); | |
context.lineTo(c * x2 - s * y2, s * x2 + c * y2); | |
context.lineTo(c * x0 + s * y0, c * y0 - s * x0); | |
context.lineTo(c * x1 + s * y1, c * y1 - s * x1); | |
context.lineTo(c * x2 + s * y2, c * y2 - s * x2); | |
context.closePath(); | |
} | |
}; | |
var symbols = [ | |
circle$2, | |
cross$3, | |
diamond, | |
square, | |
star, | |
triangle, | |
wye | |
]; | |
var symbol = function() { | |
var type = constant$11(circle$2), | |
size = constant$11(64), | |
context = null; | |
function symbol() { | |
var buffer; | |
if (!context) context = buffer = path(); | |
type.apply(this, arguments).draw(context, +size.apply(this, arguments)); | |
if (buffer) return context = null, buffer + "" || null; | |
} | |
symbol.type = function(_) { | |
return arguments.length ? (type = typeof _ === "function" ? _ : constant$11(_), symbol) : type; | |
}; | |
symbol.size = function(_) { | |
return arguments.length ? (size = typeof _ === "function" ? _ : constant$11(+_), symbol) : size; | |
}; | |
symbol.context = function(_) { | |
return arguments.length ? (context = _ == null ? null : _, symbol) : context; | |
}; | |
return symbol; | |
}; | |
var noop$2 = function() {}; | |
function point$2(that, x, y) { | |
that._context.bezierCurveTo( | |
(2 * that._x0 + that._x1) / 3, | |
(2 * that._y0 + that._y1) / 3, | |
(that._x0 + 2 * that._x1) / 3, | |
(that._y0 + 2 * that._y1) / 3, | |
(that._x0 + 4 * that._x1 + x) / 6, | |
(that._y0 + 4 * that._y1 + y) / 6 | |
); | |
} | |
function Basis(context) { | |
this._context = context; | |
} | |
Basis.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = | |
this._y0 = this._y1 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 3: point$2(this, this._x1, this._y1); // proceed | |
case 2: this._context.lineTo(this._x1, this._y1); break; | |
} | |
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; | |
case 1: this._point = 2; break; | |
case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed | |
default: point$2(this, x, y); break; | |
} | |
this._x0 = this._x1, this._x1 = x; | |
this._y0 = this._y1, this._y1 = y; | |
} | |
}; | |
var basis$2 = function(context) { | |
return new Basis(context); | |
}; | |
function BasisClosed(context) { | |
this._context = context; | |
} | |
BasisClosed.prototype = { | |
areaStart: noop$2, | |
areaEnd: noop$2, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = | |
this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 1: { | |
this._context.moveTo(this._x2, this._y2); | |
this._context.closePath(); | |
break; | |
} | |
case 2: { | |
this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); | |
this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); | |
this._context.closePath(); | |
break; | |
} | |
case 3: { | |
this.point(this._x2, this._y2); | |
this.point(this._x3, this._y3); | |
this.point(this._x4, this._y4); | |
break; | |
} | |
} | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; this._x2 = x, this._y2 = y; break; | |
case 1: this._point = 2; this._x3 = x, this._y3 = y; break; | |
case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; | |
default: point$2(this, x, y); break; | |
} | |
this._x0 = this._x1, this._x1 = x; | |
this._y0 = this._y1, this._y1 = y; | |
} | |
}; | |
var basisClosed$1 = function(context) { | |
return new BasisClosed(context); | |
}; | |
function BasisOpen(context) { | |
this._context = context; | |
} | |
BasisOpen.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = | |
this._y0 = this._y1 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; break; | |
case 1: this._point = 2; break; | |
case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; | |
case 3: this._point = 4; // proceed | |
default: point$2(this, x, y); break; | |
} | |
this._x0 = this._x1, this._x1 = x; | |
this._y0 = this._y1, this._y1 = y; | |
} | |
}; | |
var basisOpen = function(context) { | |
return new BasisOpen(context); | |
}; | |
function Bundle(context, beta) { | |
this._basis = new Basis(context); | |
this._beta = beta; | |
} | |
Bundle.prototype = { | |
lineStart: function() { | |
this._x = []; | |
this._y = []; | |
this._basis.lineStart(); | |
}, | |
lineEnd: function() { | |
var x = this._x, | |
y = this._y, | |
j = x.length - 1; | |
if (j > 0) { | |
var x0 = x[0], | |
y0 = y[0], | |
dx = x[j] - x0, | |
dy = y[j] - y0, | |
i = -1, | |
t; | |
while (++i <= j) { | |
t = i / j; | |
this._basis.point( | |
this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), | |
this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) | |
); | |
} | |
} | |
this._x = this._y = null; | |
this._basis.lineEnd(); | |
}, | |
point: function(x, y) { | |
this._x.push(+x); | |
this._y.push(+y); | |
} | |
}; | |
var bundle = ((function custom(beta) { | |
function bundle(context) { | |
return beta === 1 ? new Basis(context) : new Bundle(context, beta); | |
} | |
bundle.beta = function(beta) { | |
return custom(+beta); | |
}; | |
return bundle; | |
}))(0.85); | |
function point$3(that, x, y) { | |
that._context.bezierCurveTo( | |
that._x1 + that._k * (that._x2 - that._x0), | |
that._y1 + that._k * (that._y2 - that._y0), | |
that._x2 + that._k * (that._x1 - x), | |
that._y2 + that._k * (that._y1 - y), | |
that._x2, | |
that._y2 | |
); | |
} | |
function Cardinal(context, tension) { | |
this._context = context; | |
this._k = (1 - tension) / 6; | |
} | |
Cardinal.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = | |
this._y0 = this._y1 = this._y2 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 2: this._context.lineTo(this._x2, this._y2); break; | |
case 3: point$3(this, this._x1, this._y1); break; | |
} | |
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; | |
case 1: this._point = 2; this._x1 = x, this._y1 = y; break; | |
case 2: this._point = 3; // proceed | |
default: point$3(this, x, y); break; | |
} | |
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; | |
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; | |
} | |
}; | |
var cardinal = ((function custom(tension) { | |
function cardinal(context) { | |
return new Cardinal(context, tension); | |
} | |
cardinal.tension = function(tension) { | |
return custom(+tension); | |
}; | |
return cardinal; | |
}))(0); | |
function CardinalClosed(context, tension) { | |
this._context = context; | |
this._k = (1 - tension) / 6; | |
} | |
CardinalClosed.prototype = { | |
areaStart: noop$2, | |
areaEnd: noop$2, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = | |
this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 1: { | |
this._context.moveTo(this._x3, this._y3); | |
this._context.closePath(); | |
break; | |
} | |
case 2: { | |
this._context.lineTo(this._x3, this._y3); | |
this._context.closePath(); | |
break; | |
} | |
case 3: { | |
this.point(this._x3, this._y3); | |
this.point(this._x4, this._y4); | |
this.point(this._x5, this._y5); | |
break; | |
} | |
} | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; this._x3 = x, this._y3 = y; break; | |
case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; | |
case 2: this._point = 3; this._x5 = x, this._y5 = y; break; | |
default: point$3(this, x, y); break; | |
} | |
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; | |
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; | |
} | |
}; | |
var cardinalClosed = ((function custom(tension) { | |
function cardinal(context) { | |
return new CardinalClosed(context, tension); | |
} | |
cardinal.tension = function(tension) { | |
return custom(+tension); | |
}; | |
return cardinal; | |
}))(0); | |
function CardinalOpen(context, tension) { | |
this._context = context; | |
this._k = (1 - tension) / 6; | |
} | |
CardinalOpen.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = | |
this._y0 = this._y1 = this._y2 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; break; | |
case 1: this._point = 2; break; | |
case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; | |
case 3: this._point = 4; // proceed | |
default: point$3(this, x, y); break; | |
} | |
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; | |
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; | |
} | |
}; | |
var cardinalOpen = ((function custom(tension) { | |
function cardinal(context) { | |
return new CardinalOpen(context, tension); | |
} | |
cardinal.tension = function(tension) { | |
return custom(+tension); | |
}; | |
return cardinal; | |
}))(0); | |
function point$4(that, x, y) { | |
var x1 = that._x1, | |
y1 = that._y1, | |
x2 = that._x2, | |
y2 = that._y2; | |
if (that._l01_a > epsilon$3) { | |
var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, | |
n = 3 * that._l01_a * (that._l01_a + that._l12_a); | |
x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; | |
y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; | |
} | |
if (that._l23_a > epsilon$3) { | |
var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, | |
m = 3 * that._l23_a * (that._l23_a + that._l12_a); | |
x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; | |
y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; | |
} | |
that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); | |
} | |
function CatmullRom(context, alpha) { | |
this._context = context; | |
this._alpha = alpha; | |
} | |
CatmullRom.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = | |
this._y0 = this._y1 = this._y2 = NaN; | |
this._l01_a = this._l12_a = this._l23_a = | |
this._l01_2a = this._l12_2a = this._l23_2a = | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 2: this._context.lineTo(this._x2, this._y2); break; | |
case 3: this.point(this._x2, this._y2); break; | |
} | |
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
if (this._point) { | |
var x23 = this._x2 - x, | |
y23 = this._y2 - y; | |
this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); | |
} | |
switch (this._point) { | |
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; | |
case 1: this._point = 2; break; | |
case 2: this._point = 3; // proceed | |
default: point$4(this, x, y); break; | |
} | |
this._l01_a = this._l12_a, this._l12_a = this._l23_a; | |
this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; | |
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; | |
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; | |
} | |
}; | |
var catmullRom = ((function custom(alpha) { | |
function catmullRom(context) { | |
return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); | |
} | |
catmullRom.alpha = function(alpha) { | |
return custom(+alpha); | |
}; | |
return catmullRom; | |
}))(0.5); | |
function CatmullRomClosed(context, alpha) { | |
this._context = context; | |
this._alpha = alpha; | |
} | |
CatmullRomClosed.prototype = { | |
areaStart: noop$2, | |
areaEnd: noop$2, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = | |
this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; | |
this._l01_a = this._l12_a = this._l23_a = | |
this._l01_2a = this._l12_2a = this._l23_2a = | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 1: { | |
this._context.moveTo(this._x3, this._y3); | |
this._context.closePath(); | |
break; | |
} | |
case 2: { | |
this._context.lineTo(this._x3, this._y3); | |
this._context.closePath(); | |
break; | |
} | |
case 3: { | |
this.point(this._x3, this._y3); | |
this.point(this._x4, this._y4); | |
this.point(this._x5, this._y5); | |
break; | |
} | |
} | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
if (this._point) { | |
var x23 = this._x2 - x, | |
y23 = this._y2 - y; | |
this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); | |
} | |
switch (this._point) { | |
case 0: this._point = 1; this._x3 = x, this._y3 = y; break; | |
case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; | |
case 2: this._point = 3; this._x5 = x, this._y5 = y; break; | |
default: point$4(this, x, y); break; | |
} | |
this._l01_a = this._l12_a, this._l12_a = this._l23_a; | |
this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; | |
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; | |
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; | |
} | |
}; | |
var catmullRomClosed = ((function custom(alpha) { | |
function catmullRom(context) { | |
return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); | |
} | |
catmullRom.alpha = function(alpha) { | |
return custom(+alpha); | |
}; | |
return catmullRom; | |
}))(0.5); | |
function CatmullRomOpen(context, alpha) { | |
this._context = context; | |
this._alpha = alpha; | |
} | |
CatmullRomOpen.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = this._x2 = | |
this._y0 = this._y1 = this._y2 = NaN; | |
this._l01_a = this._l12_a = this._l23_a = | |
this._l01_2a = this._l12_2a = this._l23_2a = | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
if (this._point) { | |
var x23 = this._x2 - x, | |
y23 = this._y2 - y; | |
this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); | |
} | |
switch (this._point) { | |
case 0: this._point = 1; break; | |
case 1: this._point = 2; break; | |
case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; | |
case 3: this._point = 4; // proceed | |
default: point$4(this, x, y); break; | |
} | |
this._l01_a = this._l12_a, this._l12_a = this._l23_a; | |
this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; | |
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; | |
this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; | |
} | |
}; | |
var catmullRomOpen = ((function custom(alpha) { | |
function catmullRom(context) { | |
return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); | |
} | |
catmullRom.alpha = function(alpha) { | |
return custom(+alpha); | |
}; | |
return catmullRom; | |
}))(0.5); | |
function LinearClosed(context) { | |
this._context = context; | |
} | |
LinearClosed.prototype = { | |
areaStart: noop$2, | |
areaEnd: noop$2, | |
lineStart: function() { | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (this._point) this._context.closePath(); | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
if (this._point) this._context.lineTo(x, y); | |
else this._point = 1, this._context.moveTo(x, y); | |
} | |
}; | |
var linearClosed = function(context) { | |
return new LinearClosed(context); | |
}; | |
function sign$1(x) { | |
return x < 0 ? -1 : 1; | |
} | |
// Calculate the slopes of the tangents (Hermite-type interpolation) based on | |
// the following paper: Steffen, M. 1990. A Simple Method for Monotonic | |
// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. | |
// NOV(II), P. 443, 1990. | |
function slope3(that, x2, y2) { | |
var h0 = that._x1 - that._x0, | |
h1 = x2 - that._x1, | |
s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), | |
s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), | |
p = (s0 * h1 + s1 * h0) / (h0 + h1); | |
return (sign$1(s0) + sign$1(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; | |
} | |
// Calculate a one-sided slope. | |
function slope2(that, t) { | |
var h = that._x1 - that._x0; | |
return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; | |
} | |
// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations | |
// "you can express cubic Hermite interpolation in terms of cubic Bézier curves | |
// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". | |
function point$5(that, t0, t1) { | |
var x0 = that._x0, | |
y0 = that._y0, | |
x1 = that._x1, | |
y1 = that._y1, | |
dx = (x1 - x0) / 3; | |
that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); | |
} | |
function MonotoneX(context) { | |
this._context = context; | |
} | |
MonotoneX.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x0 = this._x1 = | |
this._y0 = this._y1 = | |
this._t0 = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
switch (this._point) { | |
case 2: this._context.lineTo(this._x1, this._y1); break; | |
case 3: point$5(this, this._t0, slope2(this, this._t0)); break; | |
} | |
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); | |
this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
var t1 = NaN; | |
x = +x, y = +y; | |
if (x === this._x1 && y === this._y1) return; // Ignore coincident points. | |
switch (this._point) { | |
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; | |
case 1: this._point = 2; break; | |
case 2: this._point = 3; point$5(this, slope2(this, t1 = slope3(this, x, y)), t1); break; | |
default: point$5(this, this._t0, t1 = slope3(this, x, y)); break; | |
} | |
this._x0 = this._x1, this._x1 = x; | |
this._y0 = this._y1, this._y1 = y; | |
this._t0 = t1; | |
} | |
}; | |
function MonotoneY(context) { | |
this._context = new ReflectContext(context); | |
} | |
(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { | |
MonotoneX.prototype.point.call(this, y, x); | |
}; | |
function ReflectContext(context) { | |
this._context = context; | |
} | |
ReflectContext.prototype = { | |
moveTo: function(x, y) { this._context.moveTo(y, x); }, | |
closePath: function() { this._context.closePath(); }, | |
lineTo: function(x, y) { this._context.lineTo(y, x); }, | |
bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } | |
}; | |
function monotoneX(context) { | |
return new MonotoneX(context); | |
} | |
function monotoneY(context) { | |
return new MonotoneY(context); | |
} | |
function Natural(context) { | |
this._context = context; | |
} | |
Natural.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x = []; | |
this._y = []; | |
}, | |
lineEnd: function() { | |
var x = this._x, | |
y = this._y, | |
n = x.length; | |
if (n) { | |
this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); | |
if (n === 2) { | |
this._context.lineTo(x[1], y[1]); | |
} else { | |
var px = controlPoints(x), | |
py = controlPoints(y); | |
for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { | |
this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); | |
} | |
} | |
} | |
if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); | |
this._line = 1 - this._line; | |
this._x = this._y = null; | |
}, | |
point: function(x, y) { | |
this._x.push(+x); | |
this._y.push(+y); | |
} | |
}; | |
// See https://www.particleincell.com/2012/bezier-splines/ for derivation. | |
function controlPoints(x) { | |
var i, | |
n = x.length - 1, | |
m, | |
a = new Array(n), | |
b = new Array(n), | |
r = new Array(n); | |
a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; | |
for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; | |
a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; | |
for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; | |
a[n - 1] = r[n - 1] / b[n - 1]; | |
for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; | |
b[n - 1] = (x[n] + a[n - 1]) / 2; | |
for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; | |
return [a, b]; | |
} | |
var natural = function(context) { | |
return new Natural(context); | |
}; | |
function Step(context, t) { | |
this._context = context; | |
this._t = t; | |
} | |
Step.prototype = { | |
areaStart: function() { | |
this._line = 0; | |
}, | |
areaEnd: function() { | |
this._line = NaN; | |
}, | |
lineStart: function() { | |
this._x = this._y = NaN; | |
this._point = 0; | |
}, | |
lineEnd: function() { | |
if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); | |
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); | |
if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; | |
}, | |
point: function(x, y) { | |
x = +x, y = +y; | |
switch (this._point) { | |
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; | |
case 1: this._point = 2; // proceed | |
default: { | |
if (this._t <= 0) { | |
this._context.lineTo(this._x, y); | |
this._context.lineTo(x, y); | |
} else { | |
var x1 = this._x * (1 - this._t) + x * this._t; | |
this._context.lineTo(x1, this._y); | |
this._context.lineTo(x1, y); | |
} | |
break; | |
} | |
} | |
this._x = x, this._y = y; | |
} | |
}; | |
var step = function(context) { | |
return new Step(context, 0.5); | |
}; | |
function stepBefore(context) { | |
return new Step(context, 0); | |
} | |
function stepAfter(context) { | |
return new Step(context, 1); | |
} | |
var none$1 = function(series, order) { | |
if (!((n = series.length) > 1)) return; | |
for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { | |
s0 = s1, s1 = series[order[i]]; | |
for (j = 0; j < m; ++j) { | |
s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; | |
} | |
} | |
}; | |
var none$2 = function(series) { | |
var n = series.length, o = new Array(n); | |
while (--n >= 0) o[n] = n; | |
return o; | |
}; | |
function stackValue(d, key) { | |
return d[key]; | |
} | |
var stack = function() { | |
var keys = constant$11([]), | |
order = none$2, | |
offset = none$1, | |
value = stackValue; | |
function stack(data) { | |
var kz = keys.apply(this, arguments), | |
i, | |
m = data.length, | |
n = kz.length, | |
sz = new Array(n), | |
oz; | |
for (i = 0; i < n; ++i) { | |
for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) { | |
si[j] = sij = [0, +value(data[j], ki, j, data)]; | |
sij.data = data[j]; | |
} | |
si.key = ki; | |
} | |
for (i = 0, oz = order(sz); i < n; ++i) { | |
sz[oz[i]].index = i; | |
} | |
offset(sz, oz); | |
return sz; | |
} | |
stack.keys = function(_) { | |
return arguments.length ? (keys = typeof _ === "function" ? _ : constant$11(slice$7.call(_)), stack) : keys; | |
}; | |
stack.value = function(_) { | |
return arguments.length ? (value = typeof _ === "function" ? _ : constant$11(+_), stack) : value; | |
}; | |
stack.order = function(_) { | |
return arguments.length ? (order = _ == null ? none$2 : typeof _ === "function" ? _ : constant$11(slice$7.call(_)), stack) : order; | |
}; | |
stack.offset = function(_) { | |
return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset; | |
}; | |
return stack; | |
}; | |
var expand = function(series, order) { | |
if (!((n = series.length) > 0)) return; | |
for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { | |
for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; | |
if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; | |
} | |
none$1(series, order); | |
}; | |
var diverging = function(series, order) { | |
if (!((n = series.length) > 1)) return; | |
for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { | |
for (yp = yn = 0, i = 0; i < n; ++i) { | |
if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) { | |
d[0] = yp, d[1] = yp += dy; | |
} else if (dy < 0) { | |
d[1] = yn, d[0] = yn += dy; | |
} else { | |
d[0] = yp; | |
} | |
} | |
} | |
}; | |
var silhouette = function(series, order) { | |
if (!((n = series.length) > 0)) return; | |
for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { | |
for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; | |
s0[j][1] += s0[j][0] = -y / 2; | |
} | |
none$1(series, order); | |
}; | |
var wiggle = function(series, order) { | |
if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; | |
for (var y = 0, j = 1, s0, m, n; j < m; ++j) { | |
for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { | |
var si = series[order[i]], | |
sij0 = si[j][1] || 0, | |
sij1 = si[j - 1][1] || 0, | |
s3 = (sij0 - sij1) / 2; | |
for (var k = 0; k < i; ++k) { | |
var sk = series[order[k]], | |
skj0 = sk[j][1] || 0, | |
skj1 = sk[j - 1][1] || 0; | |
s3 += skj0 - skj1; | |
} | |
s1 += sij0, s2 += s3 * sij0; | |
} | |
s0[j - 1][1] += s0[j - 1][0] = y; | |
if (s1) y -= s2 / s1; | |
} | |
s0[j - 1][1] += s0[j - 1][0] = y; | |
none$1(series, order); | |
}; | |
var ascending$3 = function(series) { | |
var sums = series.map(sum$3); | |
return none$2(series).sort(function(a, b) { return sums[a] - sums[b]; }); | |
}; | |
function sum$3(series) { | |
var s = 0, i = -1, n = series.length, v; | |
while (++i < n) if (v = +series[i][1]) s += v; | |
return s; | |
} | |
var descending$3 = function(series) { | |
return ascending$3(series).reverse(); | |
}; | |
var insideOut = function(series) { | |
var n = series.length, | |
i, | |
j, | |
sums = series.map(sum$3), | |
order = none$2(series).sort(function(a, b) { return sums[b] - sums[a]; }), | |
top = 0, | |
bottom = 0, | |
tops = [], | |
bottoms = []; | |
for (i = 0; i < n; ++i) { | |
j = order[i]; | |
if (top < bottom) { | |
top += sums[j]; | |
tops.push(j); | |
} else { | |
bottom += sums[j]; | |
bottoms.push(j); | |
} | |
} | |
return bottoms.reverse().concat(tops); | |
}; | |
var reverse = function(series) { | |
return none$2(series).reverse(); | |
}; | |
var constant$12 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
function x$4(d) { | |
return d[0]; | |
} | |
function y$4(d) { | |
return d[1]; | |
} | |
function RedBlackTree() { | |
this._ = null; // root node | |
} | |
function RedBlackNode(node) { | |
node.U = // parent node | |
node.C = // color - true for red, false for black | |
node.L = // left node | |
node.R = // right node | |
node.P = // previous node | |
node.N = null; // next node | |
} | |
RedBlackTree.prototype = { | |
constructor: RedBlackTree, | |
insert: function(after, node) { | |
var parent, grandpa, uncle; | |
if (after) { | |
node.P = after; | |
node.N = after.N; | |
if (after.N) after.N.P = node; | |
after.N = node; | |
if (after.R) { | |
after = after.R; | |
while (after.L) after = after.L; | |
after.L = node; | |
} else { | |
after.R = node; | |
} | |
parent = after; | |
} else if (this._) { | |
after = RedBlackFirst(this._); | |
node.P = null; | |
node.N = after; | |
after.P = after.L = node; | |
parent = after; | |
} else { | |
node.P = node.N = null; | |
this._ = node; | |
parent = null; | |
} | |
node.L = node.R = null; | |
node.U = parent; | |
node.C = true; | |
after = node; | |
while (parent && parent.C) { | |
grandpa = parent.U; | |
if (parent === grandpa.L) { | |
uncle = grandpa.R; | |
if (uncle && uncle.C) { | |
parent.C = uncle.C = false; | |
grandpa.C = true; | |
after = grandpa; | |
} else { | |
if (after === parent.R) { | |
RedBlackRotateLeft(this, parent); | |
after = parent; | |
parent = after.U; | |
} | |
parent.C = false; | |
grandpa.C = true; | |
RedBlackRotateRight(this, grandpa); | |
} | |
} else { | |
uncle = grandpa.L; | |
if (uncle && uncle.C) { | |
parent.C = uncle.C = false; | |
grandpa.C = true; | |
after = grandpa; | |
} else { | |
if (after === parent.L) { | |
RedBlackRotateRight(this, parent); | |
after = parent; | |
parent = after.U; | |
} | |
parent.C = false; | |
grandpa.C = true; | |
RedBlackRotateLeft(this, grandpa); | |
} | |
} | |
parent = after.U; | |
} | |
this._.C = false; | |
}, | |
remove: function(node) { | |
if (node.N) node.N.P = node.P; | |
if (node.P) node.P.N = node.N; | |
node.N = node.P = null; | |
var parent = node.U, | |
sibling, | |
left = node.L, | |
right = node.R, | |
next, | |
red; | |
if (!left) next = right; | |
else if (!right) next = left; | |
else next = RedBlackFirst(right); | |
if (parent) { | |
if (parent.L === node) parent.L = next; | |
else parent.R = next; | |
} else { | |
this._ = next; | |
} | |
if (left && right) { | |
red = next.C; | |
next.C = node.C; | |
next.L = left; | |
left.U = next; | |
if (next !== right) { | |
parent = next.U; | |
next.U = node.U; | |
node = next.R; | |
parent.L = node; | |
next.R = right; | |
right.U = next; | |
} else { | |
next.U = parent; | |
parent = next; | |
node = next.R; | |
} | |
} else { | |
red = node.C; | |
node = next; | |
} | |
if (node) node.U = parent; | |
if (red) return; | |
if (node && node.C) { node.C = false; return; } | |
do { | |
if (node === this._) break; | |
if (node === parent.L) { | |
sibling = parent.R; | |
if (sibling.C) { | |
sibling.C = false; | |
parent.C = true; | |
RedBlackRotateLeft(this, parent); | |
sibling = parent.R; | |
} | |
if ((sibling.L && sibling.L.C) | |
|| (sibling.R && sibling.R.C)) { | |
if (!sibling.R || !sibling.R.C) { | |
sibling.L.C = false; | |
sibling.C = true; | |
RedBlackRotateRight(this, sibling); | |
sibling = parent.R; | |
} | |
sibling.C = parent.C; | |
parent.C = sibling.R.C = false; | |
RedBlackRotateLeft(this, parent); | |
node = this._; | |
break; | |
} | |
} else { | |
sibling = parent.L; | |
if (sibling.C) { | |
sibling.C = false; | |
parent.C = true; | |
RedBlackRotateRight(this, parent); | |
sibling = parent.L; | |
} | |
if ((sibling.L && sibling.L.C) | |
|| (sibling.R && sibling.R.C)) { | |
if (!sibling.L || !sibling.L.C) { | |
sibling.R.C = false; | |
sibling.C = true; | |
RedBlackRotateLeft(this, sibling); | |
sibling = parent.L; | |
} | |
sibling.C = parent.C; | |
parent.C = sibling.L.C = false; | |
RedBlackRotateRight(this, parent); | |
node = this._; | |
break; | |
} | |
} | |
sibling.C = true; | |
node = parent; | |
parent = parent.U; | |
} while (!node.C); | |
if (node) node.C = false; | |
} | |
}; | |
function RedBlackRotateLeft(tree, node) { | |
var p = node, | |
q = node.R, | |
parent = p.U; | |
if (parent) { | |
if (parent.L === p) parent.L = q; | |
else parent.R = q; | |
} else { | |
tree._ = q; | |
} | |
q.U = parent; | |
p.U = q; | |
p.R = q.L; | |
if (p.R) p.R.U = p; | |
q.L = p; | |
} | |
function RedBlackRotateRight(tree, node) { | |
var p = node, | |
q = node.L, | |
parent = p.U; | |
if (parent) { | |
if (parent.L === p) parent.L = q; | |
else parent.R = q; | |
} else { | |
tree._ = q; | |
} | |
q.U = parent; | |
p.U = q; | |
p.L = q.R; | |
if (p.L) p.L.U = p; | |
q.R = p; | |
} | |
function RedBlackFirst(node) { | |
while (node.L) node = node.L; | |
return node; | |
} | |
function createEdge(left, right, v0, v1) { | |
var edge = [null, null], | |
index = edges.push(edge) - 1; | |
edge.left = left; | |
edge.right = right; | |
if (v0) setEdgeEnd(edge, left, right, v0); | |
if (v1) setEdgeEnd(edge, right, left, v1); | |
cells[left.index].halfedges.push(index); | |
cells[right.index].halfedges.push(index); | |
return edge; | |
} | |
function createBorderEdge(left, v0, v1) { | |
var edge = [v0, v1]; | |
edge.left = left; | |
return edge; | |
} | |
function setEdgeEnd(edge, left, right, vertex) { | |
if (!edge[0] && !edge[1]) { | |
edge[0] = vertex; | |
edge.left = left; | |
edge.right = right; | |
} else if (edge.left === right) { | |
edge[1] = vertex; | |
} else { | |
edge[0] = vertex; | |
} | |
} | |
// Liang–Barsky line clipping. | |
function clipEdge(edge, x0, y0, x1, y1) { | |
var a = edge[0], | |
b = edge[1], | |
ax = a[0], | |
ay = a[1], | |
bx = b[0], | |
by = b[1], | |
t0 = 0, | |
t1 = 1, | |
dx = bx - ax, | |
dy = by - ay, | |
r; | |
r = x0 - ax; | |
if (!dx && r > 0) return; | |
r /= dx; | |
if (dx < 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} else if (dx > 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} | |
r = x1 - ax; | |
if (!dx && r < 0) return; | |
r /= dx; | |
if (dx < 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} else if (dx > 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} | |
r = y0 - ay; | |
if (!dy && r > 0) return; | |
r /= dy; | |
if (dy < 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} else if (dy > 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} | |
r = y1 - ay; | |
if (!dy && r < 0) return; | |
r /= dy; | |
if (dy < 0) { | |
if (r > t1) return; | |
if (r > t0) t0 = r; | |
} else if (dy > 0) { | |
if (r < t0) return; | |
if (r < t1) t1 = r; | |
} | |
if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check? | |
if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy]; | |
if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy]; | |
return true; | |
} | |
function connectEdge(edge, x0, y0, x1, y1) { | |
var v1 = edge[1]; | |
if (v1) return true; | |
var v0 = edge[0], | |
left = edge.left, | |
right = edge.right, | |
lx = left[0], | |
ly = left[1], | |
rx = right[0], | |
ry = right[1], | |
fx = (lx + rx) / 2, | |
fy = (ly + ry) / 2, | |
fm, | |
fb; | |
if (ry === ly) { | |
if (fx < x0 || fx >= x1) return; | |
if (lx > rx) { | |
if (!v0) v0 = [fx, y0]; | |
else if (v0[1] >= y1) return; | |
v1 = [fx, y1]; | |
} else { | |
if (!v0) v0 = [fx, y1]; | |
else if (v0[1] < y0) return; | |
v1 = [fx, y0]; | |
} | |
} else { | |
fm = (lx - rx) / (ry - ly); | |
fb = fy - fm * fx; | |
if (fm < -1 || fm > 1) { | |
if (lx > rx) { | |
if (!v0) v0 = [(y0 - fb) / fm, y0]; | |
else if (v0[1] >= y1) return; | |
v1 = [(y1 - fb) / fm, y1]; | |
} else { | |
if (!v0) v0 = [(y1 - fb) / fm, y1]; | |
else if (v0[1] < y0) return; | |
v1 = [(y0 - fb) / fm, y0]; | |
} | |
} else { | |
if (ly < ry) { | |
if (!v0) v0 = [x0, fm * x0 + fb]; | |
else if (v0[0] >= x1) return; | |
v1 = [x1, fm * x1 + fb]; | |
} else { | |
if (!v0) v0 = [x1, fm * x1 + fb]; | |
else if (v0[0] < x0) return; | |
v1 = [x0, fm * x0 + fb]; | |
} | |
} | |
} | |
edge[0] = v0; | |
edge[1] = v1; | |
return true; | |
} | |
function clipEdges(x0, y0, x1, y1) { | |
var i = edges.length, | |
edge; | |
while (i--) { | |
if (!connectEdge(edge = edges[i], x0, y0, x1, y1) | |
|| !clipEdge(edge, x0, y0, x1, y1) | |
|| !(Math.abs(edge[0][0] - edge[1][0]) > epsilon$4 | |
|| Math.abs(edge[0][1] - edge[1][1]) > epsilon$4)) { | |
delete edges[i]; | |
} | |
} | |
} | |
function createCell(site) { | |
return cells[site.index] = { | |
site: site, | |
halfedges: [] | |
}; | |
} | |
function cellHalfedgeAngle(cell, edge) { | |
var site = cell.site, | |
va = edge.left, | |
vb = edge.right; | |
if (site === vb) vb = va, va = site; | |
if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]); | |
if (site === va) va = edge[1], vb = edge[0]; | |
else va = edge[0], vb = edge[1]; | |
return Math.atan2(va[0] - vb[0], vb[1] - va[1]); | |
} | |
function cellHalfedgeStart(cell, edge) { | |
return edge[+(edge.left !== cell.site)]; | |
} | |
function cellHalfedgeEnd(cell, edge) { | |
return edge[+(edge.left === cell.site)]; | |
} | |
function sortCellHalfedges() { | |
for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) { | |
if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) { | |
var index = new Array(m), | |
array = new Array(m); | |
for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]); | |
index.sort(function(i, j) { return array[j] - array[i]; }); | |
for (j = 0; j < m; ++j) array[j] = halfedges[index[j]]; | |
for (j = 0; j < m; ++j) halfedges[j] = array[j]; | |
} | |
} | |
} | |
function clipCells(x0, y0, x1, y1) { | |
var nCells = cells.length, | |
iCell, | |
cell, | |
site, | |
iHalfedge, | |
halfedges, | |
nHalfedges, | |
start, | |
startX, | |
startY, | |
end, | |
endX, | |
endY, | |
cover = true; | |
for (iCell = 0; iCell < nCells; ++iCell) { | |
if (cell = cells[iCell]) { | |
site = cell.site; | |
halfedges = cell.halfedges; | |
iHalfedge = halfedges.length; | |
// Remove any dangling clipped edges. | |
while (iHalfedge--) { | |
if (!edges[halfedges[iHalfedge]]) { | |
halfedges.splice(iHalfedge, 1); | |
} | |
} | |
// Insert any border edges as necessary. | |
iHalfedge = 0, nHalfedges = halfedges.length; | |
while (iHalfedge < nHalfedges) { | |
end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1]; | |
start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1]; | |
if (Math.abs(endX - startX) > epsilon$4 || Math.abs(endY - startY) > epsilon$4) { | |
halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end, | |
Math.abs(endX - x0) < epsilon$4 && y1 - endY > epsilon$4 ? [x0, Math.abs(startX - x0) < epsilon$4 ? startY : y1] | |
: Math.abs(endY - y1) < epsilon$4 && x1 - endX > epsilon$4 ? [Math.abs(startY - y1) < epsilon$4 ? startX : x1, y1] | |
: Math.abs(endX - x1) < epsilon$4 && endY - y0 > epsilon$4 ? [x1, Math.abs(startX - x1) < epsilon$4 ? startY : y0] | |
: Math.abs(endY - y0) < epsilon$4 && endX - x0 > epsilon$4 ? [Math.abs(startY - y0) < epsilon$4 ? startX : x0, y0] | |
: null)) - 1); | |
++nHalfedges; | |
} | |
} | |
if (nHalfedges) cover = false; | |
} | |
} | |
// If there weren’t any edges, have the closest site cover the extent. | |
// It doesn’t matter which corner of the extent we measure! | |
if (cover) { | |
var dx, dy, d2, dc = Infinity; | |
for (iCell = 0, cover = null; iCell < nCells; ++iCell) { | |
if (cell = cells[iCell]) { | |
site = cell.site; | |
dx = site[0] - x0; | |
dy = site[1] - y0; | |
d2 = dx * dx + dy * dy; | |
if (d2 < dc) dc = d2, cover = cell; | |
} | |
} | |
if (cover) { | |
var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0]; | |
cover.halfedges.push( | |
edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1, | |
edges.push(createBorderEdge(site, v01, v11)) - 1, | |
edges.push(createBorderEdge(site, v11, v10)) - 1, | |
edges.push(createBorderEdge(site, v10, v00)) - 1 | |
); | |
} | |
} | |
// Lastly delete any cells with no edges; these were entirely clipped. | |
for (iCell = 0; iCell < nCells; ++iCell) { | |
if (cell = cells[iCell]) { | |
if (!cell.halfedges.length) { | |
delete cells[iCell]; | |
} | |
} | |
} | |
} | |
var circlePool = []; | |
var firstCircle; | |
function Circle() { | |
RedBlackNode(this); | |
this.x = | |
this.y = | |
this.arc = | |
this.site = | |
this.cy = null; | |
} | |
function attachCircle(arc) { | |
var lArc = arc.P, | |
rArc = arc.N; | |
if (!lArc || !rArc) return; | |
var lSite = lArc.site, | |
cSite = arc.site, | |
rSite = rArc.site; | |
if (lSite === rSite) return; | |
var bx = cSite[0], | |
by = cSite[1], | |
ax = lSite[0] - bx, | |
ay = lSite[1] - by, | |
cx = rSite[0] - bx, | |
cy = rSite[1] - by; | |
var d = 2 * (ax * cy - ay * cx); | |
if (d >= -epsilon2$2) return; | |
var ha = ax * ax + ay * ay, | |
hc = cx * cx + cy * cy, | |
x = (cy * ha - ay * hc) / d, | |
y = (ax * hc - cx * ha) / d; | |
var circle = circlePool.pop() || new Circle; | |
circle.arc = arc; | |
circle.site = cSite; | |
circle.x = x + bx; | |
circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom | |
arc.circle = circle; | |
var before = null, | |
node = circles._; | |
while (node) { | |
if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) { | |
if (node.L) node = node.L; | |
else { before = node.P; break; } | |
} else { | |
if (node.R) node = node.R; | |
else { before = node; break; } | |
} | |
} | |
circles.insert(before, circle); | |
if (!before) firstCircle = circle; | |
} | |
function detachCircle(arc) { | |
var circle = arc.circle; | |
if (circle) { | |
if (!circle.P) firstCircle = circle.N; | |
circles.remove(circle); | |
circlePool.push(circle); | |
RedBlackNode(circle); | |
arc.circle = null; | |
} | |
} | |
var beachPool = []; | |
function Beach() { | |
RedBlackNode(this); | |
this.edge = | |
this.site = | |
this.circle = null; | |
} | |
function createBeach(site) { | |
var beach = beachPool.pop() || new Beach; | |
beach.site = site; | |
return beach; | |
} | |
function detachBeach(beach) { | |
detachCircle(beach); | |
beaches.remove(beach); | |
beachPool.push(beach); | |
RedBlackNode(beach); | |
} | |
function removeBeach(beach) { | |
var circle = beach.circle, | |
x = circle.x, | |
y = circle.cy, | |
vertex = [x, y], | |
previous = beach.P, | |
next = beach.N, | |
disappearing = [beach]; | |
detachBeach(beach); | |
var lArc = previous; | |
while (lArc.circle | |
&& Math.abs(x - lArc.circle.x) < epsilon$4 | |
&& Math.abs(y - lArc.circle.cy) < epsilon$4) { | |
previous = lArc.P; | |
disappearing.unshift(lArc); | |
detachBeach(lArc); | |
lArc = previous; | |
} | |
disappearing.unshift(lArc); | |
detachCircle(lArc); | |
var rArc = next; | |
while (rArc.circle | |
&& Math.abs(x - rArc.circle.x) < epsilon$4 | |
&& Math.abs(y - rArc.circle.cy) < epsilon$4) { | |
next = rArc.N; | |
disappearing.push(rArc); | |
detachBeach(rArc); | |
rArc = next; | |
} | |
disappearing.push(rArc); | |
detachCircle(rArc); | |
var nArcs = disappearing.length, | |
iArc; | |
for (iArc = 1; iArc < nArcs; ++iArc) { | |
rArc = disappearing[iArc]; | |
lArc = disappearing[iArc - 1]; | |
setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex); | |
} | |
lArc = disappearing[0]; | |
rArc = disappearing[nArcs - 1]; | |
rArc.edge = createEdge(lArc.site, rArc.site, null, vertex); | |
attachCircle(lArc); | |
attachCircle(rArc); | |
} | |
function addBeach(site) { | |
var x = site[0], | |
directrix = site[1], | |
lArc, | |
rArc, | |
dxl, | |
dxr, | |
node = beaches._; | |
while (node) { | |
dxl = leftBreakPoint(node, directrix) - x; | |
if (dxl > epsilon$4) node = node.L; else { | |
dxr = x - rightBreakPoint(node, directrix); | |
if (dxr > epsilon$4) { | |
if (!node.R) { | |
lArc = node; | |
break; | |
} | |
node = node.R; | |
} else { | |
if (dxl > -epsilon$4) { | |
lArc = node.P; | |
rArc = node; | |
} else if (dxr > -epsilon$4) { | |
lArc = node; | |
rArc = node.N; | |
} else { | |
lArc = rArc = node; | |
} | |
break; | |
} | |
} | |
} | |
createCell(site); | |
var newArc = createBeach(site); | |
beaches.insert(lArc, newArc); | |
if (!lArc && !rArc) return; | |
if (lArc === rArc) { | |
detachCircle(lArc); | |
rArc = createBeach(lArc.site); | |
beaches.insert(newArc, rArc); | |
newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site); | |
attachCircle(lArc); | |
attachCircle(rArc); | |
return; | |
} | |
if (!rArc) { // && lArc | |
newArc.edge = createEdge(lArc.site, newArc.site); | |
return; | |
} | |
// else lArc !== rArc | |
detachCircle(lArc); | |
detachCircle(rArc); | |
var lSite = lArc.site, | |
ax = lSite[0], | |
ay = lSite[1], | |
bx = site[0] - ax, | |
by = site[1] - ay, | |
rSite = rArc.site, | |
cx = rSite[0] - ax, | |
cy = rSite[1] - ay, | |
d = 2 * (bx * cy - by * cx), | |
hb = bx * bx + by * by, | |
hc = cx * cx + cy * cy, | |
vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay]; | |
setEdgeEnd(rArc.edge, lSite, rSite, vertex); | |
newArc.edge = createEdge(lSite, site, null, vertex); | |
rArc.edge = createEdge(site, rSite, null, vertex); | |
attachCircle(lArc); | |
attachCircle(rArc); | |
} | |
function leftBreakPoint(arc, directrix) { | |
var site = arc.site, | |
rfocx = site[0], | |
rfocy = site[1], | |
pby2 = rfocy - directrix; | |
if (!pby2) return rfocx; | |
var lArc = arc.P; | |
if (!lArc) return -Infinity; | |
site = lArc.site; | |
var lfocx = site[0], | |
lfocy = site[1], | |
plby2 = lfocy - directrix; | |
if (!plby2) return lfocx; | |
var hl = lfocx - rfocx, | |
aby2 = 1 / pby2 - 1 / plby2, | |
b = hl / plby2; | |
if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx; | |
return (rfocx + lfocx) / 2; | |
} | |
function rightBreakPoint(arc, directrix) { | |
var rArc = arc.N; | |
if (rArc) return leftBreakPoint(rArc, directrix); | |
var site = arc.site; | |
return site[1] === directrix ? site[0] : Infinity; | |
} | |
var epsilon$4 = 1e-6; | |
var epsilon2$2 = 1e-12; | |
var beaches; | |
var cells; | |
var circles; | |
var edges; | |
function triangleArea(a, b, c) { | |
return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]); | |
} | |
function lexicographic(a, b) { | |
return b[1] - a[1] | |
|| b[0] - a[0]; | |
} | |
function Diagram(sites, extent) { | |
var site = sites.sort(lexicographic).pop(), | |
x, | |
y, | |
circle; | |
edges = []; | |
cells = new Array(sites.length); | |
beaches = new RedBlackTree; | |
circles = new RedBlackTree; | |
while (true) { | |
circle = firstCircle; | |
if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) { | |
if (site[0] !== x || site[1] !== y) { | |
addBeach(site); | |
x = site[0], y = site[1]; | |
} | |
site = sites.pop(); | |
} else if (circle) { | |
removeBeach(circle.arc); | |
} else { | |
break; | |
} | |
} | |
sortCellHalfedges(); | |
if (extent) { | |
var x0 = +extent[0][0], | |
y0 = +extent[0][1], | |
x1 = +extent[1][0], | |
y1 = +extent[1][1]; | |
clipEdges(x0, y0, x1, y1); | |
clipCells(x0, y0, x1, y1); | |
} | |
this.edges = edges; | |
this.cells = cells; | |
beaches = | |
circles = | |
edges = | |
cells = null; | |
} | |
Diagram.prototype = { | |
constructor: Diagram, | |
polygons: function() { | |
var edges = this.edges; | |
return this.cells.map(function(cell) { | |
var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); }); | |
polygon.data = cell.site.data; | |
return polygon; | |
}); | |
}, | |
triangles: function() { | |
var triangles = [], | |
edges = this.edges; | |
this.cells.forEach(function(cell, i) { | |
if (!(m = (halfedges = cell.halfedges).length)) return; | |
var site = cell.site, | |
halfedges, | |
j = -1, | |
m, | |
s0, | |
e1 = edges[halfedges[m - 1]], | |
s1 = e1.left === site ? e1.right : e1.left; | |
while (++j < m) { | |
s0 = s1; | |
e1 = edges[halfedges[j]]; | |
s1 = e1.left === site ? e1.right : e1.left; | |
if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) { | |
triangles.push([site.data, s0.data, s1.data]); | |
} | |
} | |
}); | |
return triangles; | |
}, | |
links: function() { | |
return this.edges.filter(function(edge) { | |
return edge.right; | |
}).map(function(edge) { | |
return { | |
source: edge.left.data, | |
target: edge.right.data | |
}; | |
}); | |
}, | |
find: function(x, y, radius) { | |
var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell; | |
// Use the previously-found cell, or start with an arbitrary one. | |
while (!(cell = that.cells[i1])) if (++i1 >= n) return null; | |
var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy; | |
// Traverse the half-edges to find a closer cell, if any. | |
do { | |
cell = that.cells[i0 = i1], i1 = null; | |
cell.halfedges.forEach(function(e) { | |
var edge = that.edges[e], v = edge.left; | |
if ((v === cell.site || !v) && !(v = edge.right)) return; | |
var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy; | |
if (v2 < d2) d2 = v2, i1 = v.index; | |
}); | |
} while (i1 !== null); | |
that._found = i0; | |
return radius == null || d2 <= radius * radius ? cell.site : null; | |
} | |
}; | |
var voronoi = function() { | |
var x$$1 = x$4, | |
y$$1 = y$4, | |
extent = null; | |
function voronoi(data) { | |
return new Diagram(data.map(function(d, i) { | |
var s = [Math.round(x$$1(d, i, data) / epsilon$4) * epsilon$4, Math.round(y$$1(d, i, data) / epsilon$4) * epsilon$4]; | |
s.index = i; | |
s.data = d; | |
return s; | |
}), extent); | |
} | |
voronoi.polygons = function(data) { | |
return voronoi(data).polygons(); | |
}; | |
voronoi.links = function(data) { | |
return voronoi(data).links(); | |
}; | |
voronoi.triangles = function(data) { | |
return voronoi(data).triangles(); | |
}; | |
voronoi.x = function(_) { | |
return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant$12(+_), voronoi) : x$$1; | |
}; | |
voronoi.y = function(_) { | |
return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant$12(+_), voronoi) : y$$1; | |
}; | |
voronoi.extent = function(_) { | |
return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]]; | |
}; | |
voronoi.size = function(_) { | |
return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]]; | |
}; | |
return voronoi; | |
}; | |
var constant$13 = function(x) { | |
return function() { | |
return x; | |
}; | |
}; | |
function ZoomEvent(target, type, transform) { | |
this.target = target; | |
this.type = type; | |
this.transform = transform; | |
} | |
function Transform(k, x, y) { | |
this.k = k; | |
this.x = x; | |
this.y = y; | |
} | |
Transform.prototype = { | |
constructor: Transform, | |
scale: function(k) { | |
return k === 1 ? this : new Transform(this.k * k, this.x, this.y); | |
}, | |
translate: function(x, y) { | |
return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); | |
}, | |
apply: function(point) { | |
return [point[0] * this.k + this.x, point[1] * this.k + this.y]; | |
}, | |
applyX: function(x) { | |
return x * this.k + this.x; | |
}, | |
applyY: function(y) { | |
return y * this.k + this.y; | |
}, | |
invert: function(location) { | |
return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; | |
}, | |
invertX: function(x) { | |
return (x - this.x) / this.k; | |
}, | |
invertY: function(y) { | |
return (y - this.y) / this.k; | |
}, | |
rescaleX: function(x) { | |
return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); | |
}, | |
rescaleY: function(y) { | |
return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); | |
}, | |
toString: function() { | |
return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; | |
} | |
}; | |
var identity$9 = new Transform(1, 0, 0); | |
transform$1.prototype = Transform.prototype; | |
function transform$1(node) { | |
return node.__zoom || identity$9; | |
} | |
function nopropagation$2() { | |
exports.event.stopImmediatePropagation(); | |
} | |
var noevent$2 = function() { | |
exports.event.preventDefault(); | |
exports.event.stopImmediatePropagation(); | |
}; | |
// Ignore right-click, since that should open the context menu. | |
function defaultFilter$2() { | |
return !exports.event.button; | |
} | |
function defaultExtent$1() { | |
var e = this, w, h; | |
if (e instanceof SVGElement) { | |
e = e.ownerSVGElement || e; | |
w = e.width.baseVal.value; | |
h = e.height.baseVal.value; | |
} else { | |
w = e.clientWidth; | |
h = e.clientHeight; | |
} | |
return [[0, 0], [w, h]]; | |
} | |
function defaultTransform() { | |
return this.__zoom || identity$9; | |
} | |
function defaultWheelDelta() { | |
return -exports.event.deltaY * (exports.event.deltaMode ? 120 : 1) / 500; | |
} | |
function touchable$1() { | |
return "ontouchstart" in this; | |
} | |
var zoom = function() { | |
var filter = defaultFilter$2, | |
extent = defaultExtent$1, | |
wheelDelta = defaultWheelDelta, | |
k0 = 0, | |
k1 = Infinity, | |
x0 = -k1, | |
x1 = k1, | |
y0 = x0, | |
y1 = x1, | |
duration = 250, | |
interpolate$$1 = interpolateZoom, | |
gestures = [], | |
listeners = dispatch("start", "zoom", "end"), | |
touchstarting, | |
touchending, | |
touchDelay = 500, | |
wheelDelay = 150, | |
clickDistance2 = 0; | |
function zoom(selection$$1) { | |
selection$$1 | |
.property("__zoom", defaultTransform) | |
.on("wheel.zoom", wheeled) | |
.on("mousedown.zoom", mousedowned) | |
.on("dblclick.zoom", dblclicked) | |
.filter(touchable$1) | |
.on("touchstart.zoom", touchstarted) | |
.on("touchmove.zoom", touchmoved) | |
.on("touchend.zoom touchcancel.zoom", touchended) | |
.style("touch-action", "none") | |
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); | |
} | |
zoom.transform = function(collection, transform) { | |
var selection$$1 = collection.selection ? collection.selection() : collection; | |
selection$$1.property("__zoom", defaultTransform); | |
if (collection !== selection$$1) { | |
schedule(collection, transform); | |
} else { | |
selection$$1.interrupt().each(function() { | |
gesture(this, arguments) | |
.start() | |
.zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) | |
.end(); | |
}); | |
} | |
}; | |
zoom.scaleBy = function(selection$$1, k) { | |
zoom.scaleTo(selection$$1, function() { | |
var k0 = this.__zoom.k, | |
k1 = typeof k === "function" ? k.apply(this, arguments) : k; | |
return k0 * k1; | |
}); | |
}; | |
zoom.scaleTo = function(selection$$1, k) { | |
zoom.transform(selection$$1, function() { | |
var e = extent.apply(this, arguments), | |
t0 = this.__zoom, | |
p0 = centroid(e), | |
p1 = t0.invert(p0), | |
k1 = typeof k === "function" ? k.apply(this, arguments) : k; | |
return constrain(translate(scale(t0, k1), p0, p1), e); | |
}); | |
}; | |
zoom.translateBy = function(selection$$1, x, y) { | |
zoom.transform(selection$$1, function() { | |
return constrain(this.__zoom.translate( | |
typeof x === "function" ? x.apply(this, arguments) : x, | |
typeof y === "function" ? y.apply(this, arguments) : y | |
), extent.apply(this, arguments)); | |
}); | |
}; | |
zoom.translateTo = function(selection$$1, x, y) { | |
zoom.transform(selection$$1, function() { | |
var e = extent.apply(this, arguments), | |
t = this.__zoom, | |
p = centroid(e); | |
return constrain(identity$9.translate(p[0], p[1]).scale(t.k).translate( | |
typeof x === "function" ? -x.apply(this, arguments) : -x, | |
typeof y === "function" ? -y.apply(this, arguments) : -y | |
), e); | |
}); | |
}; | |
function scale(transform, k) { | |
k = Math.max(k0, Math.min(k1, k)); | |
return k === transform.k ? transform : new Transform(k, transform.x, transform.y); | |
} | |
function translate(transform, p0, p1) { | |
var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; | |
return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); | |
} | |
function constrain(transform, extent) { | |
var dx0 = transform.invertX(extent[0][0]) - x0, | |
dx1 = transform.invertX(extent[1][0]) - x1, | |
dy0 = transform.invertY(extent[0][1]) - y0, | |
dy1 = transform.invertY(extent[1][1]) - y1; | |
return transform.translate( | |
dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), | |
dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) | |
); | |
} | |
function centroid(extent) { | |
return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; | |
} | |
function schedule(transition$$1, transform, center) { | |
transition$$1 | |
.on("start.zoom", function() { gesture(this, arguments).start(); }) | |
.on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) | |
.tween("zoom", function() { | |
var that = this, | |
args = arguments, | |
g = gesture(that, args), | |
e = extent.apply(that, args), | |
p = center || centroid(e), | |
w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), | |
a = that.__zoom, | |
b = typeof transform === "function" ? transform.apply(that, args) : transform, | |
i = interpolate$$1(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); | |
return function(t) { | |
if (t === 1) t = b; // Avoid rounding error on end. | |
else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } | |
g.zoom(null, t); | |
}; | |
}); | |
} | |
function gesture(that, args) { | |
for (var i = 0, n = gestures.length, g; i < n; ++i) { | |
if ((g = gestures[i]).that === that) { | |
return g; | |
} | |
} | |
return new Gesture(that, args); | |
} | |
function Gesture(that, args) { | |
this.that = that; | |
this.args = args; | |
this.index = -1; | |
this.active = 0; | |
this.extent = extent.apply(that, args); | |
} | |
Gesture.prototype = { | |
start: function() { | |
if (++this.active === 1) { | |
this.index = gestures.push(this) - 1; | |
this.emit("start"); | |
} | |
return this; | |
}, | |
zoom: function(key, transform) { | |
if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); | |
if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); | |
if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); | |
this.that.__zoom = transform; | |
this.emit("zoom"); | |
return this; | |
}, | |
end: function() { | |
if (--this.active === 0) { | |
gestures.splice(this.index, 1); | |
this.index = -1; | |
this.emit("end"); | |
} | |
return this; | |
}, | |
emit: function(type) { | |
customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); | |
} | |
}; | |
function wheeled() { | |
if (!filter.apply(this, arguments)) return; | |
var g = gesture(this, arguments), | |
t = this.__zoom, | |
k = Math.max(k0, Math.min(k1, t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), | |
p = mouse(this); | |
// If the mouse is in the same location as before, reuse it. | |
// If there were recent wheel events, reset the wheel idle timeout. | |
if (g.wheel) { | |
if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { | |
g.mouse[1] = t.invert(g.mouse[0] = p); | |
} | |
clearTimeout(g.wheel); | |
} | |
// If this wheel event won’t trigger a transform change, ignore it. | |
else if (t.k === k) return; | |
// Otherwise, capture the mouse point and location at the start. | |
else { | |
g.mouse = [p, t.invert(p)]; | |
interrupt(this); | |
g.start(); | |
} | |
noevent$2(); | |
g.wheel = setTimeout(wheelidled, wheelDelay); | |
g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent)); | |
function wheelidled() { | |
g.wheel = null; | |
g.end(); | |
} | |
} | |
function mousedowned() { | |
if (touchending || !filter.apply(this, arguments)) return; | |
var g = gesture(this, arguments), | |
v = select(exports.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), | |
p = mouse(this), | |
x0 = exports.event.clientX, | |
y0 = exports.event.clientY; | |
dragDisable(exports.event.view); | |
nopropagation$2(); | |
g.mouse = [p, this.__zoom.invert(p)]; | |
interrupt(this); | |
g.start(); | |
function mousemoved() { | |
noevent$2(); | |
if (!g.moved) { | |
var dx = exports.event.clientX - x0, dy = exports.event.clientY - y0; | |
g.moved = dx * dx + dy * dy > clickDistance2; | |
} | |
g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent)); | |
} | |
function mouseupped() { | |
v.on("mousemove.zoom mouseup.zoom", null); | |
yesdrag(exports.event.view, g.moved); | |
noevent$2(); | |
g.end(); | |
} | |
} | |
function dblclicked() { | |
if (!filter.apply(this, arguments)) return; | |
var t0 = this.__zoom, | |
p0 = mouse(this), | |
p1 = t0.invert(p0), | |
k1 = t0.k * (exports.event.shiftKey ? 0.5 : 2), | |
t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments)); | |
noevent$2(); | |
if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0); | |
else select(this).call(zoom.transform, t1); | |
} | |
function touchstarted() { | |
if (!filter.apply(this, arguments)) return; | |
var g = gesture(this, arguments), | |
touches$$1 = exports.event.changedTouches, | |
started, | |
n = touches$$1.length, i, t, p; | |
nopropagation$2(); | |
for (i = 0; i < n; ++i) { | |
t = touches$$1[i], p = touch(this, touches$$1, t.identifier); | |
p = [p, this.__zoom.invert(p), t.identifier]; | |
if (!g.touch0) g.touch0 = p, started = true; | |
else if (!g.touch1) g.touch1 = p; | |
} | |
// If this is a dbltap, reroute to the (optional) dblclick.zoom handler. | |
if (touchstarting) { | |
touchstarting = clearTimeout(touchstarting); | |
if (!g.touch1) { | |
g.end(); | |
p = select(this).on("dblclick.zoom"); | |
if (p) p.apply(this, arguments); | |
return; | |
} | |
} | |
if (started) { | |
touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); | |
interrupt(this); | |
g.start(); | |
} | |
} | |
function touchmoved() { | |
var g = gesture(this, arguments), | |
touches$$1 = exports.event.changedTouches, | |
n = touches$$1.length, i, t, p, l; | |
noevent$2(); | |
if (touchstarting) touchstarting = clearTimeout(touchstarting); | |
for (i = 0; i < n; ++i) { | |
t = touches$$1[i], p = touch(this, touches$$1, t.identifier); | |
if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; | |
else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; | |
} | |
t = g.that.__zoom; | |
if (g.touch1) { | |
var p0 = g.touch0[0], l0 = g.touch0[1], | |
p1 = g.touch1[0], l1 = g.touch1[1], | |
dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, | |
dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; | |
t = scale(t, Math.sqrt(dp / dl)); | |
p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; | |
l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; | |
} | |
else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; | |
else return; | |
g.zoom("touch", constrain(translate(t, p, l), g.extent)); | |
} | |
function touchended() { | |
var g = gesture(this, arguments), | |
touches$$1 = exports.event.changedTouches, | |
n = touches$$1.length, i, t; | |
nopropagation$2(); | |
if (touchending) clearTimeout(touchending); | |
touchending = setTimeout(function() { touchending = null; }, touchDelay); | |
for (i = 0; i < n; ++i) { | |
t = touches$$1[i]; | |
if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; | |
else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; | |
} | |
if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; | |
if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); | |
else g.end(); | |
} | |
zoom.wheelDelta = function(_) { | |
return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$13(+_), zoom) : wheelDelta; | |
}; | |
zoom.filter = function(_) { | |
return arguments.length ? (filter = typeof _ === "function" ? _ : constant$13(!!_), zoom) : filter; | |
}; | |
zoom.extent = function(_) { | |
return arguments.length ? (extent = typeof _ === "function" ? _ : constant$13([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; | |
}; | |
zoom.scaleExtent = function(_) { | |
return arguments.length ? (k0 = +_[0], k1 = +_[1], zoom) : [k0, k1]; | |
}; | |
zoom.translateExtent = function(_) { | |
return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], zoom) : [[x0, y0], [x1, y1]]; | |
}; | |
zoom.duration = function(_) { | |
return arguments.length ? (duration = +_, zoom) : duration; | |
}; | |
zoom.interpolate = function(_) { | |
return arguments.length ? (interpolate$$1 = _, zoom) : interpolate$$1; | |
}; | |
zoom.on = function() { | |
var value = listeners.on.apply(listeners, arguments); | |
return value === listeners ? zoom : value; | |
}; | |
zoom.clickDistance = function(_) { | |
return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); | |
}; | |
return zoom; | |
}; | |
var translateSelection = function(xy, dim) { | |
return this.node().getBBox ? | |
this.attr('transform', function(d,i) { | |
var p = typeof xy == 'function' ? xy.call(this, d,i) : xy; | |
if (dim === 0) p = [p, 0]; else if (dim === 1) p = [0, p]; | |
return 'translate(' + p[0] +','+ p[1]+')'; | |
}) : | |
this.style('transform', function(d,i) { | |
var p = typeof xy == 'function' ? xy.call(this, d,i) : xy; | |
if (dim === 0) p = [p, 0]; else if (dim === 1) p = [0, p]; | |
return 'translate(' + p[0] +'px,'+ p[1]+'px)'; | |
}); | |
}; | |
var parseAttributes = function(name) { | |
if (typeof name === "string") { | |
var attr = {}, | |
parts = name.split(/([\.#])/g), p; | |
name = parts.shift(); | |
while ((p = parts.shift())) { | |
if (p == '.') attr['class'] = attr['class'] ? attr['class'] + ' ' + parts.shift() : parts.shift(); | |
else if (p == '#') attr.id = parts.shift(); | |
} | |
return {tag: name, attr: attr}; | |
} | |
return name; | |
}; | |
var append = function(name) { | |
var create, n; | |
if (typeof name === "function"){ | |
create = name; | |
} else { | |
n = parseAttributes(name); | |
create = creator(n.tag); | |
} | |
var sel = this.select(function(){ | |
return this.appendChild(create.apply(this, arguments)); | |
}); | |
if (n) for (var key in n.attr) { sel.attr(key, n.attr[key]); } | |
return sel; | |
}; | |
function constantNull$1() { | |
return null; | |
} | |
var insert = function(name, before) { | |
var n = parseAttributes(name), | |
create = creator(n.tag), | |
select$$1 = before == null ? constantNull$1 : typeof before === "function" ? before : selector(before); | |
var s = this.select(function() { | |
return this.insertBefore(create.apply(this, arguments), select$$1.apply(this, arguments) || null); | |
}); | |
//attrs not provided by default in v4 | |
for (var key in n.attr) { s.attr(key, n.attr[key]); } | |
return s; | |
}; | |
var parent = function() { | |
var parents = []; | |
return this.filter(function() { | |
if (parents.indexOf(this.parentNode) > -1) return false; | |
parents.push(this.parentNode); | |
return true; | |
}).select(function() { | |
return this.parentNode; | |
}); | |
}; | |
var selectAppend = function(name) { | |
var select$$1 = selector(name), | |
n = parseAttributes(name), s; | |
name = creator(n.tag); | |
s = this.select(function() { | |
return select$$1.apply(this, arguments) || | |
this.appendChild(name.apply(this, arguments)); | |
}); | |
//attrs not provided by default in v4 | |
for (var key in n.attr) { s.attr(key, n.attr[key]); } | |
return s; | |
}; | |
var tspans = function(lines, lh) { | |
return this.selectAll('tspan') | |
.data(function(d) { | |
return (typeof(lines) == 'function' ? lines(d) : lines) | |
.map(function(l) { | |
return { line: l, parent: d }; | |
}); | |
}) | |
.enter() | |
.append('tspan') | |
.text(function(d) { return d.line; }) | |
.attr('x', 0) | |
.attr('dy', function(d, i) { return i ? (typeof(lh) == 'function' ? lh(d.parent, d.line, i) : lh) || 15 : 0; }); | |
}; | |
var appendMany = function(name, data){ | |
if (typeof(data) == 'string'){ | |
console.warn("DEPRECATED: jetpack's appendMany order of arguments has changed. It's appendMany('div', data) from now on"); | |
var temp = data; | |
data = name; | |
name = temp; | |
} | |
return this.selectAll(null).data(data).enter().append(name); | |
}; | |
var at = function(name, value) { | |
if (typeof(name) == 'object'){ | |
for (var key in name){ | |
this.attr(key.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase(), name[key]); | |
} | |
return this; | |
} else{ | |
return arguments.length == 1 ? this.attr(name) : this.attr(name, value); | |
} | |
}; | |
function f(){ | |
var functions = arguments; | |
//convert all string arguments into field accessors | |
var i = 0, l = functions.length; | |
while (i < l) { | |
if (typeof(functions[i]) === 'string' || typeof(functions[i]) === 'number'){ | |
functions[i] = (function(str){ return function(d){ return d[str]; }; })(functions[i]); | |
} | |
i++; | |
} | |
//return composition of functions | |
return function(d) { | |
var i=0, l = functions.length; | |
while (i++ < l) d = functions[i-1].call(this, d); | |
return d; | |
}; | |
} | |
f.not = function(d){ return !d; }; | |
f.run = function(d){ return d(); }; | |
f.objToFn = function(obj, defaultVal){ | |
if (arguments.length == 1) defaultVal = undefined; | |
return function(str){ | |
return typeof(obj[str]) !== undefined ? obj[str] : defaultVal; | |
}; | |
}; | |
var st = function(name, value) { | |
if (typeof(name) == 'object'){ | |
for (var key in name){ | |
addStyle(this, key, name[key]); | |
} | |
return this; | |
} else { | |
return arguments.length == 1 ? this.style(name) : addStyle(this, name, value); | |
} | |
function addStyle(sel, style, value){ | |
style = style.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase(); | |
var pxStyles = 'top left bottom right padding-top padding-left padding-bottom padding-right border-top b-width border-left-width border-botto-width m border-right-width margin-top margin-left margin-bottom margin-right font-size width height stroke-width line-height margin padding border border-radius max-width min-width'; | |
if (~pxStyles.indexOf(style) ){ | |
sel.style(style, typeof value == 'function' ? wrapPx(value) : addPx(value)); | |
} else{ | |
sel.style(style, value); | |
} | |
return sel; | |
} | |
function addPx(d){ return d.match ? d : d + 'px'; } | |
function wrapPx(fn){ | |
return function(){ | |
var val = fn.apply(this, arguments); | |
return addPx(val) | |
} | |
} | |
}; | |
// while this might not be reprentative for all fonts, it is | |
// still better than assuming every character has the same width | |
// (set monospace=true if you want to bypass this) | |
var CHAR_W = { | |
A:7,a:7,B:8,b:7,C:8,c:6,D:9,d:7,E:7,e:7,F:7,f:4,G:9,g:7,H:9,h:7,I:3,i:3,J:5,j:3,K:8,k:6,L:7,l:3,M:11, | |
m:11,N:9,n:7,O:9,o:7,P:8,p:7,Q:9,q:7,R:8,r:4,S:8,s:6,T:7,t:4,U:9,u:7,V:7,v:6,W:11,w:9,X:7,x:6,Y:7,y:6,Z:7,z:5, | |
'.':2,',':2,':':2,';':2 | |
}; | |
var wordwrap = function(line, maxCharactersPerLine, minCharactersPerLine, monospace) { | |
var l, lines = [], w = [], words = [], w1, maxChars, minChars, maxLineW, minLineW; | |
w1 = line.split(' '); | |
w1.forEach(function(s, i) { | |
var w2 = s.split('-'); | |
if (w2.length > 1) { | |
w2.forEach(function(t, j) { | |
w.push(t + (j < w2.length - 1 ? '-' : '')); | |
}); | |
} else { | |
w.push(s + (i < w1.length - 1 ? ' ' : '')); | |
} | |
}); | |
maxChars = maxCharactersPerLine || 40; | |
minChars = minCharactersPerLine || Math.max(3, Math.min(maxChars * 0.5, 0.75 * w.map(word_len).sort(num_asc)[Math.round(w.length / 2)])); | |
maxLineW = maxChars * CHAR_W.a; | |
minLineW = minChars * CHAR_W.a; | |
l = 0; | |
w.forEach(function(d) { | |
var ww = sum$1(d.split('').map(char_w)); | |
if (l + ww > maxLineW && l > minLineW) { | |
lines.push(words.join('')); | |
words.length = 0; | |
l = 0; | |
} | |
l += ww; | |
return words.push(d); | |
}); | |
if (words.length) { | |
lines.push(words.join('')); | |
} | |
return lines.filter(function(d) { | |
return d !== ''; | |
}); | |
function char_w(c) { return !monospace && CHAR_W[c] || CHAR_W.a; } | |
function word_len(d) { return d.length; } | |
function num_asc(a, b) { return a - b; } | |
}; | |
var ascendingKey = function(key) { | |
return typeof key == 'function' ? function (a, b) { | |
return key(a) < key(b) ? -1 : key(a) > key(b) ? 1 : key(a) >= key(b) ? 0 : NaN; | |
} : function (a, b) { | |
return a[key] < b[key] ? -1 : a[key] > b[key] ? 1 : a[key] >= b[key] ? 0 : NaN; | |
}; | |
}; | |
var descendingKey = function(key) { | |
return typeof key == 'function' ? function (a, b) { | |
return key(b) < key(a) ? -1 : key(b) > key(a) ? 1 : key(b) >= key(a) ? 0 : NaN; | |
} : function (a, b) { | |
return b[key] < a[key] ? -1 : b[key] > a[key] ? 1 : b[key] >= a[key] ? 0 : NaN; | |
}; | |
}; | |
var conventions = function(c){ | |
c = c || {}; | |
c.margin = c.margin || {} | |
;['top', 'right', 'bottom', 'left'].forEach(function(d){ | |
if (!c.margin[d] && c.margin[d] !== 0) c.margin[d] = 20 ; | |
}); | |
if (c.parentSel) c.sel = c.parentSel; // backwords comp | |
var node = c.sel && c.sel.node(); | |
c.totalWidth = c.totalWidth || node && node.offsetWidth || 960; | |
c.totalHeight = c.totalHeight || node && node.offsetHeight || 500; | |
c.width = c.width || c.totalWidth - c.margin.left - c.margin.right; | |
c.height = c.height || c.totalHeight - c.margin.top - c.margin.bottom; | |
c.totalWidth = c.width + c.margin.left + c.margin.right; | |
c.totalHeight = c.height + c.margin.top + c.margin.bottom; | |
c.sel = c.sel || select('body'); | |
c.sel.st({position: 'relative', height: c.totalHeight, width: c.totalWidth}); | |
c.x = c.x || linear$2().range([0, c.width]); | |
c.y = c.y || linear$2().range([c.height, 0]); | |
c.xAxis = c.xAxis || axisBottom().scale(c.x); | |
c.yAxis = c.yAxis || axisLeft().scale(c.y); | |
c.layers = (c.layers || 's').split('').map(function(type){ | |
var layer; | |
if (type == 's'){ | |
layer = c.sel.append('svg') | |
.st({position: 'absolute'}) | |
.attr('width', c.totalWidth) | |
.attr('height', c.totalHeight) | |
.append('g') | |
.attr('transform', 'translate(' + c.margin.left + ',' + c.margin.top + ')'); | |
if (!c.svg) c.svg = layer; // defaults to lowest svg layer | |
} else if (type == 'c'){ | |
var s = window.devicePixelRatio || 1; | |
layer = c.sel.append('canvas') | |
.at({width: c.totalWidth*s, height: c.totalHeight*s}) | |
.st({width: c.totalWidth, height: c.totalHeight}) | |
.st({position: 'absolute'}) | |
.node().getContext('2d'); | |
layer.scale(s, s); | |
layer.translate(c.margin.left, c.margin.right); | |
} else if (type == 'd'){ | |
layer = c.sel.append('div') | |
.st({ | |
position: 'absolute', | |
left: c.margin.left, | |
top: c.margin.top, | |
width: c.width, | |
height: c.height | |
}); | |
} | |
return layer | |
}); | |
return c; | |
}; | |
var drawAxis = function(c){ | |
var xAxisSel = c.svg.append('g') | |
.attr('class', 'x axis') | |
.attr('transform', 'translate(0,' + c.height + ')') | |
.call(c.xAxis); | |
var yAxisSel = c.svg.append('g') | |
.attr('class', 'y axis') | |
.call(c.yAxis); | |
return {xAxisSel: xAxisSel, yAxisSel: yAxisSel} | |
}; | |
var clamp = function(min, d, max) { | |
return Math.max(min, Math.min(max, d)) | |
}; | |
var attachTooltip = function(sel, tooltipSel, fieldFns){ | |
if (!sel.size()) return; | |
tooltipSel = tooltipSel || select('.tooltip'); | |
sel | |
.on('mouseover.attachTooltip', ttDisplay) | |
.on('mousemove.attachTooltip', ttMove) | |
.on('mouseout.attachTooltip', ttHide) | |
.on('click.attachTooltip', function(d){ console.log(d); }); | |
var d = sel.datum(); | |
fieldFns = fieldFns || d3keys(d) | |
.filter(function(str){ | |
return (typeof d[str] != 'object') && (d[str] != 'array'); | |
}) | |
.map(function(str){ | |
return function(d){ return str + ': <b>' + d[str] + '</b>'; }; | |
}); | |
function ttDisplay(d){ | |
tooltipSel | |
.classed('tooltip-hidden', false) | |
.html('') | |
.appendMany('div', fieldFns) | |
.html(function(fn){ return fn(d); }); | |
select(this).classed('tooltipped', true); | |
} | |
function ttMove(d){ | |
if (!tooltipSel.size()) return; | |
var e = exports.event, | |
x = e.clientX, | |
y = e.clientY, | |
bb = tooltipSel.node().getBoundingClientRect(), | |
left = clamp(20, (x-bb.width/2), window.innerWidth - bb.width - 20), | |
top = innerHeight > y + 20 + bb.height ? y + 20 : y - bb.height - 20; | |
tooltipSel | |
.style('left', left +'px') | |
.style('top', top + 'px'); | |
} | |
function ttHide(d){ | |
tooltipSel.classed('tooltip-hidden', true); | |
selectAll('.tooltipped').classed('tooltipped', false); | |
} | |
}; | |
var loadData = function(){ | |
var q = queue(); | |
var args = [].slice.call(arguments); | |
var files = args.slice(0, args.length - 1); | |
var cb = args[args.length - 1]; | |
files.forEach(function(d){ | |
var type = d.split('?')[0].split('.').reverse()[0]; | |
var loadFn = {csv: csv$1, tsv: tsv$1, json: json}[type]; | |
if (!loadFn) return cb(new Error('Invalid type', d)); | |
q.defer(loadFn, d) ; | |
}); | |
q.awaitAll(cb); | |
}; | |
var nestBy = function(array, key){ | |
return nest().key(key).entries(array).map(function(d){ | |
d.values.key = d.key; | |
return d.values; | |
}); | |
}; | |
var round = function(n, p) { | |
return p ? Math.round(n * (p = Math.pow(10, p))) / p : Math.round(n); | |
}; | |
// Clips the specified subject polygon to the specified clip polygon; | |
// requires the clip polygon to be counterclockwise and convex. | |
// https://en.wikipedia.org/wiki/Sutherland–Hodgman_algorithm | |
var polygonClip = function(clip, subject) { | |
var input, | |
closed = polygonClosed(subject), | |
i = -1, | |
n = clip.length - polygonClosed(clip), | |
j, | |
m, | |
a = clip[n - 1], | |
b, | |
c, | |
d; | |
while (++i < n) { | |
input = subject.slice(); | |
subject.length = 0; | |
b = clip[i]; | |
c = input[(m = input.length - closed) - 1]; | |
j = -1; | |
while (++j < m) { | |
d = input[j]; | |
if (polygonInside(d, a, b)) { | |
if (!polygonInside(c, a, b)) { | |
subject.push(polygonIntersect(c, d, a, b)); | |
} | |
subject.push(d); | |
} else if (polygonInside(c, a, b)) { | |
subject.push(polygonIntersect(c, d, a, b)); | |
} | |
c = d; | |
} | |
if (closed) subject.push(subject[0]); | |
a = b; | |
} | |
return subject; | |
}; | |
function polygonInside(p, a, b) { | |
return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]); | |
} | |
// Intersect two infinite lines cd and ab. | |
function polygonIntersect(c, d, a, b) { | |
var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, | |
y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, | |
ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21); | |
return [x1 + ua * x21, y1 + ua * y21]; | |
} | |
// Returns true if the polygon is closed. | |
function polygonClosed(coordinates) { | |
var a = coordinates[0], | |
b = coordinates[coordinates.length - 1]; | |
return !(a[0] - b[0] || a[1] - b[1]); | |
} | |
selection.prototype.translate = translateSelection; | |
transition.prototype.translate = translateSelection; | |
selection.prototype.append = append; | |
selection.prototype.insert = insert; | |
selection.prototype.parent = parent; | |
selection.prototype.selectAppend = selectAppend; | |
selection.prototype.tspans = tspans; | |
selection.prototype.appendMany = appendMany; | |
selection.prototype.at = at; | |
selection.prototype.st = st; | |
transition.prototype.at = at; | |
transition.prototype.st = st; | |
selection.prototype.prop = selection.prototype.property; | |
var colors$1 = function(specifier) { | |
var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; | |
while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); | |
return colors; | |
}; | |
var Accent = colors$1("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); | |
var Dark2 = colors$1("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); | |
var Paired = colors$1("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); | |
var Pastel1 = colors$1("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); | |
var Pastel2 = colors$1("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); | |
var Set1 = colors$1("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); | |
var Set2 = colors$1("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); | |
var Set3 = colors$1("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); | |
var ramp$1 = function(scheme) { | |
return rgbBasis(scheme[scheme.length - 1]); | |
}; | |
var scheme = new Array(3).concat( | |
"d8b365f5f5f55ab4ac", | |
"a6611adfc27d80cdc1018571", | |
"a6611adfc27df5f5f580cdc1018571", | |
"8c510ad8b365f6e8c3c7eae55ab4ac01665e", | |
"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", | |
"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", | |
"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", | |
"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", | |
"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" | |
).map(colors$1); | |
var BrBG = ramp$1(scheme); | |
var scheme$1 = new Array(3).concat( | |
"af8dc3f7f7f77fbf7b", | |
"7b3294c2a5cfa6dba0008837", | |
"7b3294c2a5cff7f7f7a6dba0008837", | |
"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", | |
"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", | |
"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", | |
"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", | |
"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", | |
"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" | |
).map(colors$1); | |
var PRGn = ramp$1(scheme$1); | |
var scheme$2 = new Array(3).concat( | |
"e9a3c9f7f7f7a1d76a", | |
"d01c8bf1b6dab8e1864dac26", | |
"d01c8bf1b6daf7f7f7b8e1864dac26", | |
"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", | |
"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", | |
"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", | |
"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", | |
"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", | |
"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" | |
).map(colors$1); | |
var PiYG = ramp$1(scheme$2); | |
var scheme$3 = new Array(3).concat( | |
"998ec3f7f7f7f1a340", | |
"5e3c99b2abd2fdb863e66101", | |
"5e3c99b2abd2f7f7f7fdb863e66101", | |
"542788998ec3d8daebfee0b6f1a340b35806", | |
"542788998ec3d8daebf7f7f7fee0b6f1a340b35806", | |
"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", | |
"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", | |
"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", | |
"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" | |
).map(colors$1); | |
var PuOr = ramp$1(scheme$3); | |
var scheme$4 = new Array(3).concat( | |
"ef8a62f7f7f767a9cf", | |
"ca0020f4a58292c5de0571b0", | |
"ca0020f4a582f7f7f792c5de0571b0", | |
"b2182bef8a62fddbc7d1e5f067a9cf2166ac", | |
"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", | |
"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", | |
"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", | |
"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", | |
"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" | |
).map(colors$1); | |
var RdBu = ramp$1(scheme$4); | |
var scheme$5 = new Array(3).concat( | |
"ef8a62ffffff999999", | |
"ca0020f4a582bababa404040", | |
"ca0020f4a582ffffffbababa404040", | |
"b2182bef8a62fddbc7e0e0e09999994d4d4d", | |
"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", | |
"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", | |
"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", | |
"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", | |
"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" | |
).map(colors$1); | |
var RdGy = ramp$1(scheme$5); | |
var scheme$6 = new Array(3).concat( | |
"fc8d59ffffbf91bfdb", | |
"d7191cfdae61abd9e92c7bb6", | |
"d7191cfdae61ffffbfabd9e92c7bb6", | |
"d73027fc8d59fee090e0f3f891bfdb4575b4", | |
"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", | |
"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", | |
"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", | |
"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", | |
"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" | |
).map(colors$1); | |
var RdYlBu = ramp$1(scheme$6); | |
var scheme$7 = new Array(3).concat( | |
"fc8d59ffffbf91cf60", | |
"d7191cfdae61a6d96a1a9641", | |
"d7191cfdae61ffffbfa6d96a1a9641", | |
"d73027fc8d59fee08bd9ef8b91cf601a9850", | |
"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", | |
"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", | |
"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", | |
"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", | |
"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" | |
).map(colors$1); | |
var RdYlGn = ramp$1(scheme$7); | |
var scheme$8 = new Array(3).concat( | |
"fc8d59ffffbf99d594", | |
"d7191cfdae61abdda42b83ba", | |
"d7191cfdae61ffffbfabdda42b83ba", | |
"d53e4ffc8d59fee08be6f59899d5943288bd", | |
"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", | |
"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", | |
"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", | |
"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", | |
"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" | |
).map(colors$1); | |
var Spectral = ramp$1(scheme$8); | |
var scheme$9 = new Array(3).concat( | |
"e5f5f999d8c92ca25f", | |
"edf8fbb2e2e266c2a4238b45", | |
"edf8fbb2e2e266c2a42ca25f006d2c", | |
"edf8fbccece699d8c966c2a42ca25f006d2c", | |
"edf8fbccece699d8c966c2a441ae76238b45005824", | |
"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", | |
"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" | |
).map(colors$1); | |
var BuGn = ramp$1(scheme$9); | |
var scheme$10 = new Array(3).concat( | |
"e0ecf49ebcda8856a7", | |
"edf8fbb3cde38c96c688419d", | |
"edf8fbb3cde38c96c68856a7810f7c", | |
"edf8fbbfd3e69ebcda8c96c68856a7810f7c", | |
"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", | |
"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", | |
"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" | |
).map(colors$1); | |
var BuPu = ramp$1(scheme$10); | |
var scheme$11 = new Array(3).concat( | |
"e0f3dba8ddb543a2ca", | |
"f0f9e8bae4bc7bccc42b8cbe", | |
"f0f9e8bae4bc7bccc443a2ca0868ac", | |
"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", | |
"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", | |
"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", | |
"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" | |
).map(colors$1); | |
var GnBu = ramp$1(scheme$11); | |
var scheme$12 = new Array(3).concat( | |
"fee8c8fdbb84e34a33", | |
"fef0d9fdcc8afc8d59d7301f", | |
"fef0d9fdcc8afc8d59e34a33b30000", | |
"fef0d9fdd49efdbb84fc8d59e34a33b30000", | |
"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", | |
"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", | |
"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" | |
).map(colors$1); | |
var OrRd = ramp$1(scheme$12); | |
var scheme$13 = new Array(3).concat( | |
"ece2f0a6bddb1c9099", | |
"f6eff7bdc9e167a9cf02818a", | |
"f6eff7bdc9e167a9cf1c9099016c59", | |
"f6eff7d0d1e6a6bddb67a9cf1c9099016c59", | |
"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", | |
"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", | |
"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" | |
).map(colors$1); | |
var PuBuGn = ramp$1(scheme$13); | |
var scheme$14 = new Array(3).concat( | |
"ece7f2a6bddb2b8cbe", | |
"f1eef6bdc9e174a9cf0570b0", | |
"f1eef6bdc9e174a9cf2b8cbe045a8d", | |
"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", | |
"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", | |
"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", | |
"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" | |
).map(colors$1); | |
var PuBu = ramp$1(scheme$14); | |
var scheme$15 = new Array(3).concat( | |
"e7e1efc994c7dd1c77", | |
"f1eef6d7b5d8df65b0ce1256", | |
"f1eef6d7b5d8df65b0dd1c77980043", | |
"f1eef6d4b9dac994c7df65b0dd1c77980043", | |
"f1eef6d4b9dac994c7df65b0e7298ace125691003f", | |
"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", | |
"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" | |
).map(colors$1); | |
var PuRd = ramp$1(scheme$15); | |
var scheme$16 = new Array(3).concat( | |
"fde0ddfa9fb5c51b8a", | |
"feebe2fbb4b9f768a1ae017e", | |
"feebe2fbb4b9f768a1c51b8a7a0177", | |
"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", | |
"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", | |
"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", | |
"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" | |
).map(colors$1); | |
var RdPu = ramp$1(scheme$16); | |
var scheme$17 = new Array(3).concat( | |
"edf8b17fcdbb2c7fb8", | |
"ffffcca1dab441b6c4225ea8", | |
"ffffcca1dab441b6c42c7fb8253494", | |
"ffffccc7e9b47fcdbb41b6c42c7fb8253494", | |
"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", | |
"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", | |
"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" | |
).map(colors$1); | |
var YlGnBu = ramp$1(scheme$17); | |
var scheme$18 = new Array(3).concat( | |
"f7fcb9addd8e31a354", | |
"ffffccc2e69978c679238443", | |
"ffffccc2e69978c67931a354006837", | |
"ffffccd9f0a3addd8e78c67931a354006837", | |
"ffffccd9f0a3addd8e78c67941ab5d238443005a32", | |
"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", | |
"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" | |
).map(colors$1); | |
var YlGn = ramp$1(scheme$18); | |
var scheme$19 = new Array(3).concat( | |
"fff7bcfec44fd95f0e", | |
"ffffd4fed98efe9929cc4c02", | |
"ffffd4fed98efe9929d95f0e993404", | |
"ffffd4fee391fec44ffe9929d95f0e993404", | |
"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", | |
"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", | |
"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" | |
).map(colors$1); | |
var YlOrBr = ramp$1(scheme$19); | |
var scheme$20 = new Array(3).concat( | |
"ffeda0feb24cf03b20", | |
"ffffb2fecc5cfd8d3ce31a1c", | |
"ffffb2fecc5cfd8d3cf03b20bd0026", | |
"ffffb2fed976feb24cfd8d3cf03b20bd0026", | |
"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", | |
"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", | |
"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" | |
).map(colors$1); | |
var YlOrRd = ramp$1(scheme$20); | |
var scheme$21 = new Array(3).concat( | |
"deebf79ecae13182bd", | |
"eff3ffbdd7e76baed62171b5", | |
"eff3ffbdd7e76baed63182bd08519c", | |
"eff3ffc6dbef9ecae16baed63182bd08519c", | |
"eff3ffc6dbef9ecae16baed64292c62171b5084594", | |
"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", | |
"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" | |
).map(colors$1); | |
var Blues = ramp$1(scheme$21); | |
var scheme$22 = new Array(3).concat( | |
"e5f5e0a1d99b31a354", | |
"edf8e9bae4b374c476238b45", | |
"edf8e9bae4b374c47631a354006d2c", | |
"edf8e9c7e9c0a1d99b74c47631a354006d2c", | |
"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", | |
"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", | |
"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" | |
).map(colors$1); | |
var Greens = ramp$1(scheme$22); | |
var scheme$23 = new Array(3).concat( | |
"f0f0f0bdbdbd636363", | |
"f7f7f7cccccc969696525252", | |
"f7f7f7cccccc969696636363252525", | |
"f7f7f7d9d9d9bdbdbd969696636363252525", | |
"f7f7f7d9d9d9bdbdbd969696737373525252252525", | |
"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", | |
"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" | |
).map(colors$1); | |
var Greys = ramp$1(scheme$23); | |
var scheme$24 = new Array(3).concat( | |
"efedf5bcbddc756bb1", | |
"f2f0f7cbc9e29e9ac86a51a3", | |
"f2f0f7cbc9e29e9ac8756bb154278f", | |
"f2f0f7dadaebbcbddc9e9ac8756bb154278f", | |
"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", | |
"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", | |
"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" | |
).map(colors$1); | |
var Purples = ramp$1(scheme$24); | |
var scheme$25 = new Array(3).concat( | |
"fee0d2fc9272de2d26", | |
"fee5d9fcae91fb6a4acb181d", | |
"fee5d9fcae91fb6a4ade2d26a50f15", | |
"fee5d9fcbba1fc9272fb6a4ade2d26a50f15", | |
"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", | |
"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", | |
"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" | |
).map(colors$1); | |
var Reds = ramp$1(scheme$25); | |
var scheme$26 = new Array(3).concat( | |
"fee6cefdae6be6550d", | |
"feeddefdbe85fd8d3cd94701", | |
"feeddefdbe85fd8d3ce6550da63603", | |
"feeddefdd0a2fdae6bfd8d3ce6550da63603", | |
"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", | |
"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", | |
"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" | |
).map(colors$1); | |
var Oranges = ramp$1(scheme$26); | |
// export { | |
// geoNaturalEarth, | |
// geoSatellite | |
// } from "d3-geo-projection" | |
// export * from "graph-scroll" | |
// change default dates | |
var nytLocale = { | |
"dateTime": "%x, %X", | |
"date": "%-m/%-d/%Y", | |
"time": "%-I:%M:%S %p", | |
"periods": ["AM", "PM"], | |
"days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], | |
"shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], | |
"months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], | |
"shortMonths": ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."] | |
}; | |
defaultLocale$1(nytLocale); | |
exports.version = version; | |
exports.bisect = bisectRight; | |
exports.bisectRight = bisectRight; | |
exports.bisectLeft = bisectLeft; | |
exports.ascending = ascending; | |
exports.bisector = bisector; | |
exports.cross = cross; | |
exports.descending = descending; | |
exports.deviation = deviation; | |
exports.extent = extent; | |
exports.histogram = histogram; | |
exports.thresholdFreedmanDiaconis = freedmanDiaconis; | |
exports.thresholdScott = scott; | |
exports.thresholdSturges = sturges; | |
exports.max = max; | |
exports.mean = mean; | |
exports.median = median; | |
exports.merge = merge; | |
exports.min = min; | |
exports.pairs = pairs; | |
exports.permute = permute; | |
exports.quantile = quantile; | |
exports.range = range; | |
exports.scan = scan; | |
exports.shuffle = shuffle; | |
exports.sum = sum; | |
exports.ticks = ticks; | |
exports.tickIncrement = tickIncrement; | |
exports.tickStep = tickStep; | |
exports.transpose = transpose; | |
exports.variance = variance; | |
exports.zip = zip; | |
exports.axisTop = axisTop; | |
exports.axisRight = axisRight; | |
exports.axisBottom = axisBottom; | |
exports.axisLeft = axisLeft; | |
exports.brush = brush; | |
exports.brushX = brushX; | |
exports.brushY = brushY; | |
exports.brushSelection = brushSelection; | |
exports.chord = chord; | |
exports.ribbon = ribbon; | |
exports.nest = nest; | |
exports.set = set$2; | |
exports.map = map$2; | |
exports.keys = d3keys; | |
exports.values = values; | |
exports.entries = entries; | |
exports.color = color; | |
exports.rgb = rgb; | |
exports.hsl = hsl; | |
exports.lab = lab; | |
exports.hcl = hcl; | |
exports.cubehelix = cubehelix; | |
exports.dispatch = dispatch; | |
exports.drag = drag; | |
exports.dragDisable = dragDisable; | |
exports.dragEnable = yesdrag; | |
exports.dsvFormat = dsv; | |
exports.csvParse = csvParse; | |
exports.csvParseRows = csvParseRows; | |
exports.csvFormat = csvFormat; | |
exports.csvFormatRows = csvFormatRows; | |
exports.tsvParse = tsvParse; | |
exports.tsvParseRows = tsvParseRows; | |
exports.tsvFormat = tsvFormat; | |
exports.tsvFormatRows = tsvFormatRows; | |
exports.easeLinear = linear$1; | |
exports.easeQuad = quadInOut; | |
exports.easeQuadIn = quadIn; | |
exports.easeQuadOut = quadOut; | |
exports.easeQuadInOut = quadInOut; | |
exports.easeCubic = cubicInOut; | |
exports.easeCubicIn = cubicIn; | |
exports.easeCubicOut = cubicOut; | |
exports.easeCubicInOut = cubicInOut; | |
exports.easePoly = polyInOut; | |
exports.easePolyIn = polyIn; | |
exports.easePolyOut = polyOut; | |
exports.easePolyInOut = polyInOut; | |
exports.easeSin = sinInOut; | |
exports.easeSinIn = sinIn; | |
exports.easeSinOut = sinOut; | |
exports.easeSinInOut = sinInOut; | |
exports.easeExp = expInOut; | |
exports.easeExpIn = expIn; | |
exports.easeExpOut = expOut; | |
exports.easeExpInOut = expInOut; | |
exports.easeCircle = circleInOut; | |
exports.easeCircleIn = circleIn; | |
exports.easeCircleOut = circleOut; | |
exports.easeCircleInOut = circleInOut; | |
exports.easeBounce = bounceOut; | |
exports.easeBounceIn = bounceIn; | |
exports.easeBounceOut = bounceOut; | |
exports.easeBounceInOut = bounceInOut; | |
exports.easeBack = backInOut; | |
exports.easeBackIn = backIn; | |
exports.easeBackOut = backOut; | |
exports.easeBackInOut = backInOut; | |
exports.easeElastic = elasticOut; | |
exports.easeElasticIn = elasticIn; | |
exports.easeElasticOut = elasticOut; | |
exports.easeElasticInOut = elasticInOut; | |
exports.forceCenter = center$1; | |
exports.forceCollide = collide; | |
exports.forceLink = link; | |
exports.forceManyBody = manyBody; | |
exports.forceSimulation = simulation; | |
exports.forceX = x$2; | |
exports.forceY = y$2; | |
exports.formatDefaultLocale = defaultLocale; | |
exports.formatLocale = formatLocale; | |
exports.formatSpecifier = formatSpecifier; | |
exports.precisionFixed = precisionFixed; | |
exports.precisionPrefix = precisionPrefix; | |
exports.precisionRound = precisionRound; | |
exports.geoArea = area; | |
exports.geoBounds = bounds; | |
exports.geoCentroid = centroid; | |
exports.geoCircle = circle; | |
exports.geoClipExtent = extent$2; | |
exports.geoContains = contains; | |
exports.geoDistance = distance; | |
exports.geoGraticule = graticule; | |
exports.geoGraticule10 = graticule10; | |
exports.geoInterpolate = interpolate$1; | |
exports.geoLength = length$2; | |
exports.geoPath = index$1; | |
exports.geoAlbers = albers; | |
exports.geoAlbersUsa = albersUsa; | |
exports.geoAzimuthalEqualArea = azimuthalEqualArea; | |
exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; | |
exports.geoAzimuthalEquidistant = azimuthalEquidistant; | |
exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; | |
exports.geoConicConformal = conicConformal; | |
exports.geoConicConformalRaw = conicConformalRaw; | |
exports.geoConicEqualArea = conicEqualArea; | |
exports.geoConicEqualAreaRaw = conicEqualAreaRaw; | |
exports.geoConicEquidistant = conicEquidistant; | |
exports.geoConicEquidistantRaw = conicEquidistantRaw; | |
exports.geoEquirectangular = equirectangular; | |
exports.geoEquirectangularRaw = equirectangularRaw; | |
exports.geoGnomonic = gnomonic; | |
exports.geoGnomonicRaw = gnomonicRaw; | |
exports.geoIdentity = identity$6; | |
exports.geoProjection = projection; | |
exports.geoProjectionMutator = projectionMutator; | |
exports.geoMercator = mercator; | |
exports.geoMercatorRaw = mercatorRaw; | |
exports.geoOrthographic = orthographic; | |
exports.geoOrthographicRaw = orthographicRaw; | |
exports.geoStereographic = stereographic; | |
exports.geoStereographicRaw = stereographicRaw; | |
exports.geoTransverseMercator = transverseMercator; | |
exports.geoTransverseMercatorRaw = transverseMercatorRaw; | |
exports.geoRotation = rotation; | |
exports.geoStream = geoStream; | |
exports.geoTransform = transform; | |
exports.cluster = cluster; | |
exports.hierarchy = hierarchy; | |
exports.pack = index$2; | |
exports.packSiblings = siblings; | |
exports.packEnclose = enclose; | |
exports.partition = partition; | |
exports.stratify = stratify; | |
exports.tree = tree; | |
exports.treemap = index$3; | |
exports.treemapBinary = binary; | |
exports.treemapDice = treemapDice; | |
exports.treemapSlice = treemapSlice; | |
exports.treemapSliceDice = sliceDice; | |
exports.treemapSquarify = squarify; | |
exports.treemapResquarify = resquarify; | |
exports.interpolate = interpolateValue; | |
exports.interpolateArray = array$1; | |
exports.interpolateBasis = basis$1; | |
exports.interpolateBasisClosed = basisClosed; | |
exports.interpolateDate = date; | |
exports.interpolateNumber = reinterpolate; | |
exports.interpolateObject = object; | |
exports.interpolateRound = interpolateRound; | |
exports.interpolateString = interpolateString; | |
exports.interpolateTransformCss = interpolateTransformCss; | |
exports.interpolateTransformSvg = interpolateTransformSvg; | |
exports.interpolateZoom = interpolateZoom; | |
exports.interpolateRgb = interpolateRgb; | |
exports.interpolateRgbBasis = rgbBasis; | |
exports.interpolateRgbBasisClosed = rgbBasisClosed; | |
exports.interpolateHsl = hsl$2; | |
exports.interpolateHslLong = hslLong; | |
exports.interpolateLab = lab$1; | |
exports.interpolateHcl = hcl$2; | |
exports.interpolateHclLong = hclLong; | |
exports.interpolateCubehelix = cubehelix$2; | |
exports.interpolateCubehelixLong = cubehelixLong; | |
exports.quantize = quantize; | |
exports.path = path; | |
exports.polygonArea = area$1; | |
exports.polygonCentroid = centroid$1; | |
exports.polygonHull = hull; | |
exports.polygonContains = contains$1; | |
exports.polygonLength = length$3; | |
exports.quadtree = quadtree; | |
exports.queue = queue; | |
exports.randomUniform = uniform; | |
exports.randomNormal = normal; | |
exports.randomLogNormal = logNormal; | |
exports.randomBates = bates; | |
exports.randomIrwinHall = irwinHall; | |
exports.randomExponential = exponential$1; | |
exports.request = request; | |
exports.html = html; | |
exports.json = json; | |
exports.text = text; | |
exports.xml = xml; | |
exports.csv = csv$1; | |
exports.tsv = tsv$1; | |
exports.scaleBand = band; | |
exports.scalePoint = point$1; | |
exports.scaleIdentity = identity$7; | |
exports.scaleLinear = linear$2; | |
exports.scaleLog = log$1; | |
exports.scaleOrdinal = ordinal; | |
exports.scaleImplicit = implicit; | |
exports.scalePow = pow$1; | |
exports.scaleSqrt = sqrt$1; | |
exports.scaleQuantile = quantile$1; | |
exports.scaleQuantize = quantize$1; | |
exports.scaleThreshold = threshold$1; | |
exports.scaleTime = time; | |
exports.scaleUtc = utcTime; | |
exports.schemeCategory10 = category10; | |
exports.schemeCategory20b = category20b; | |
exports.schemeCategory20c = category20c; | |
exports.schemeCategory20 = category20; | |
exports.interpolateCubehelixDefault = cubehelix$3; | |
exports.interpolateRainbow = rainbow$1; | |
exports.interpolateWarm = warm; | |
exports.interpolateCool = cool; | |
exports.interpolateViridis = viridis; | |
exports.interpolateMagma = magma; | |
exports.interpolateInferno = inferno; | |
exports.interpolatePlasma = plasma; | |
exports.scaleSequential = sequential; | |
exports.creator = creator; | |
exports.local = local$1; | |
exports.matcher = matcher$1; | |
exports.mouse = mouse; | |
exports.namespace = namespace; | |
exports.namespaces = namespaces; | |
exports.select = select; | |
exports.selectAll = selectAll; | |
exports.selection = selection; | |
exports.selector = selector; | |
exports.selectorAll = selectorAll; | |
exports.style = styleValue; | |
exports.touch = touch; | |
exports.touches = touches; | |
exports.window = defaultView; | |
exports.customEvent = customEvent; | |
exports.arc = arc; | |
exports.area = area$2; | |
exports.line = line; | |
exports.pie = pie; | |
exports.areaRadial = areaRadial; | |
exports.radialArea = areaRadial; | |
exports.lineRadial = lineRadial$1; | |
exports.radialLine = lineRadial$1; | |
exports.pointRadial = pointRadial; | |
exports.linkHorizontal = linkHorizontal; | |
exports.linkVertical = linkVertical; | |
exports.linkRadial = linkRadial; | |
exports.symbol = symbol; | |
exports.symbols = symbols; | |
exports.symbolCircle = circle$2; | |
exports.symbolCross = cross$3; | |
exports.symbolDiamond = diamond; | |
exports.symbolSquare = square; | |
exports.symbolStar = star; | |
exports.symbolTriangle = triangle; | |
exports.symbolWye = wye; | |
exports.curveBasisClosed = basisClosed$1; | |
exports.curveBasisOpen = basisOpen; | |
exports.curveBasis = basis$2; | |
exports.curveBundle = bundle; | |
exports.curveCardinalClosed = cardinalClosed; | |
exports.curveCardinalOpen = cardinalOpen; | |
exports.curveCardinal = cardinal; | |
exports.curveCatmullRomClosed = catmullRomClosed; | |
exports.curveCatmullRomOpen = catmullRomOpen; | |
exports.curveCatmullRom = catmullRom; | |
exports.curveLinearClosed = linearClosed; | |
exports.curveLinear = curveLinear; | |
exports.curveMonotoneX = monotoneX; | |
exports.curveMonotoneY = monotoneY; | |
exports.curveNatural = natural; | |
exports.curveStep = step; | |
exports.curveStepAfter = stepAfter; | |
exports.curveStepBefore = stepBefore; | |
exports.stack = stack; | |
exports.stackOffsetExpand = expand; | |
exports.stackOffsetDiverging = diverging; | |
exports.stackOffsetNone = none$1; | |
exports.stackOffsetSilhouette = silhouette; | |
exports.stackOffsetWiggle = wiggle; | |
exports.stackOrderAscending = ascending$3; | |
exports.stackOrderDescending = descending$3; | |
exports.stackOrderInsideOut = insideOut; | |
exports.stackOrderNone = none$2; | |
exports.stackOrderReverse = reverse; | |
exports.timeInterval = newInterval; | |
exports.timeMillisecond = millisecond; | |
exports.timeMilliseconds = milliseconds; | |
exports.utcMillisecond = millisecond; | |
exports.utcMilliseconds = milliseconds; | |
exports.timeSecond = second; | |
exports.timeSeconds = seconds; | |
exports.utcSecond = second; | |
exports.utcSeconds = seconds; | |
exports.timeMinute = minute; | |
exports.timeMinutes = minutes; | |
exports.timeHour = hour; | |
exports.timeHours = hours; | |
exports.timeDay = day; | |
exports.timeDays = days; | |
exports.timeWeek = sunday; | |
exports.timeWeeks = sundays; | |
exports.timeSunday = sunday; | |
exports.timeSundays = sundays; | |
exports.timeMonday = monday; | |
exports.timeMondays = mondays; | |
exports.timeTuesday = tuesday; | |
exports.timeTuesdays = tuesdays; | |
exports.timeWednesday = wednesday; | |
exports.timeWednesdays = wednesdays; | |
exports.timeThursday = thursday; | |
exports.timeThursdays = thursdays; | |
exports.timeFriday = friday; | |
exports.timeFridays = fridays; | |
exports.timeSaturday = saturday; | |
exports.timeSaturdays = saturdays; | |
exports.timeMonth = month; | |
exports.timeMonths = months; | |
exports.timeYear = year; | |
exports.timeYears = years; | |
exports.utcMinute = utcMinute; | |
exports.utcMinutes = utcMinutes; | |
exports.utcHour = utcHour; | |
exports.utcHours = utcHours; | |
exports.utcDay = utcDay; | |
exports.utcDays = utcDays; | |
exports.utcWeek = utcSunday; | |
exports.utcWeeks = utcSundays; | |
exports.utcSunday = utcSunday; | |
exports.utcSundays = utcSundays; | |
exports.utcMonday = utcMonday; | |
exports.utcMondays = utcMondays; | |
exports.utcTuesday = utcTuesday; | |
exports.utcTuesdays = utcTuesdays; | |
exports.utcWednesday = utcWednesday; | |
exports.utcWednesdays = utcWednesdays; | |
exports.utcThursday = utcThursday; | |
exports.utcThursdays = utcThursdays; | |
exports.utcFriday = utcFriday; | |
exports.utcFridays = utcFridays; | |
exports.utcSaturday = utcSaturday; | |
exports.utcSaturdays = utcSaturdays; | |
exports.utcMonth = utcMonth; | |
exports.utcMonths = utcMonths; | |
exports.utcYear = utcYear; | |
exports.utcYears = utcYears; | |
exports.timeFormatDefaultLocale = defaultLocale$1; | |
exports.timeFormatLocale = formatLocale$1; | |
exports.isoFormat = formatIso; | |
exports.isoParse = parseIso; | |
exports.now = now; | |
exports.timer = timer; | |
exports.timerFlush = timerFlush; | |
exports.timeout = timeout$1; | |
exports.interval = interval$1; | |
exports.transition = transition; | |
exports.active = active; | |
exports.interrupt = interrupt; | |
exports.voronoi = voronoi; | |
exports.zoom = zoom; | |
exports.zoomTransform = transform$1; | |
exports.zoomIdentity = identity$9; | |
exports.wordwrap = wordwrap; | |
exports.parseAttributes = parseAttributes; | |
exports.f = f; | |
exports.ascendingKey = ascendingKey; | |
exports.descendingKey = descendingKey; | |
exports.conventions = conventions; | |
exports.drawAxis = drawAxis; | |
exports.attachTooltip = attachTooltip; | |
exports.loadData = loadData; | |
exports.nestBy = nestBy; | |
exports.round = round; | |
exports.clamp = clamp; | |
exports.polygonClip = polygonClip; | |
exports.schemeAccent = Accent; | |
exports.schemeDark2 = Dark2; | |
exports.schemePaired = Paired; | |
exports.schemePastel1 = Pastel1; | |
exports.schemePastel2 = Pastel2; | |
exports.schemeSet1 = Set1; | |
exports.schemeSet2 = Set2; | |
exports.schemeSet3 = Set3; | |
exports.interpolateBrBG = BrBG; | |
exports.schemeBrBG = scheme; | |
exports.interpolatePRGn = PRGn; | |
exports.schemePRGn = scheme$1; | |
exports.interpolatePiYG = PiYG; | |
exports.schemePiYG = scheme$2; | |
exports.interpolatePuOr = PuOr; | |
exports.schemePuOr = scheme$3; | |
exports.interpolateRdBu = RdBu; | |
exports.schemeRdBu = scheme$4; | |
exports.interpolateRdGy = RdGy; | |
exports.schemeRdGy = scheme$5; | |
exports.interpolateRdYlBu = RdYlBu; | |
exports.schemeRdYlBu = scheme$6; | |
exports.interpolateRdYlGn = RdYlGn; | |
exports.schemeRdYlGn = scheme$7; | |
exports.interpolateSpectral = Spectral; | |
exports.schemeSpectral = scheme$8; | |
exports.interpolateBuGn = BuGn; | |
exports.schemeBuGn = scheme$9; | |
exports.interpolateBuPu = BuPu; | |
exports.schemeBuPu = scheme$10; | |
exports.interpolateGnBu = GnBu; | |
exports.schemeGnBu = scheme$11; | |
exports.interpolateOrRd = OrRd; | |
exports.schemeOrRd = scheme$12; | |
exports.interpolatePuBuGn = PuBuGn; | |
exports.schemePuBuGn = scheme$13; | |
exports.interpolatePuBu = PuBu; | |
exports.schemePuBu = scheme$14; | |
exports.interpolatePuRd = PuRd; | |
exports.schemePuRd = scheme$15; | |
exports.interpolateRdPu = RdPu; | |
exports.schemeRdPu = scheme$16; | |
exports.interpolateYlGnBu = YlGnBu; | |
exports.schemeYlGnBu = scheme$17; | |
exports.interpolateYlGn = YlGn; | |
exports.schemeYlGn = scheme$18; | |
exports.interpolateYlOrBr = YlOrBr; | |
exports.schemeYlOrBr = scheme$19; | |
exports.interpolateYlOrRd = YlOrRd; | |
exports.schemeYlOrRd = scheme$20; | |
exports.interpolateBlues = Blues; | |
exports.schemeBlues = scheme$21; | |
exports.interpolateGreens = Greens; | |
exports.schemeGreens = scheme$22; | |
exports.interpolateGreys = Greys; | |
exports.schemeGreys = scheme$23; | |
exports.interpolatePurples = Purples; | |
exports.schemePurples = scheme$24; | |
exports.interpolateReds = Reds; | |
exports.schemeReds = scheme$25; | |
exports.interpolateOranges = Oranges; | |
exports.schemeOranges = scheme$26; | |
Object.defineProperty(exports, '__esModule', { value: true }); | |
}))); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset='utf-8'> | |
<link rel="stylesheet" type="text/css" href="style.css"> | |
<body> | |
<h3>words</h3> | |
<div class='words'></div> | |
<h3>names</h3> | |
<div class='names'></div> | |
</body> | |
<script src='d3_.js'></script> | |
<script src='_script.js'></script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body{ | |
font-family: monaco, Consolas, 'Lucida Console', monospace; | |
/*margin: 0px;*/ | |
} | |
canvas{ | |
position: absolute; | |
top: 0px; | |
left: 0px; | |
} | |
.tooltip { | |
top: -1000px; | |
position: fixed; | |
padding: 10px; | |
background: rgba(255, 255, 255, .90); | |
border: 1px solid lightgray; | |
pointer-events: none; | |
} | |
.tooltip-hidden{ | |
opacity: 0; | |
transition: all .3s; | |
transition-delay: .1s; | |
} | |
@media (max-width: 590px){ | |
div.tooltip{ | |
bottom: -1px; | |
width: calc(100%); | |
left: -1px !important; | |
right: -1px !important; | |
top: auto !important; | |
width: auto !important; | |
} | |
} | |
svg{ | |
overflow: visible; | |
} | |
.domain{ | |
display: none; | |
} | |
text{ | |
pointer-events: none; | |
text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff; | |
} |
We can't make this file beautiful and searchable because it's too large.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
word | |
a | |
aa | |
aaa | |
aah | |
aahed | |
aahing | |
aahs | |
aal | |
aalii | |
aaliis | |
aals | |
aam | |
aani | |
aardvark | |
aardvarks | |
aardwolf | |
aardwolves | |
aargh | |
aaron | |
aaronic | |
aaronical | |
aaronite | |
aaronitic | |
aarrgh | |
aarrghh | |
aaru | |
aas | |
aasvogel | |
aasvogels | |
ab | |
aba | |
ababdeh | |
ababua | |
abac | |
abaca | |
abacay | |
abacas | |
abacate | |
abacaxi | |
abaci | |
abacinate | |
abacination | |
abacisci | |
abaciscus | |
abacist | |
aback | |
abacli | |
abacot | |
abacterial | |
abactinal | |
abactinally | |
abaction | |
abactor | |
abaculi | |
abaculus | |
abacus | |
abacuses | |
abada | |
abaddon | |
abadejo | |
abadengo | |
abadia | |
abadite | |
abaff | |
abaft | |
abay | |
abayah | |
abaisance | |
abaised | |
abaiser | |
abaisse | |
abaissed | |
abaka | |
abakas | |
abalation | |
abalienate | |
abalienated | |
abalienating | |
abalienation | |
abalone | |
abalones | |
abama | |
abamp | |
abampere | |
abamperes | |
abamps | |
aband | |
abandon | |
abandonable | |
abandoned | |
abandonedly | |
abandonee | |
abandoner | |
abandoners | |
abandoning | |
abandonment | |
abandonments | |
abandons | |
abandum | |
abanet | |
abanga | |
abanic | |
abannition | |
abantes | |
abapical | |
abaptiston | |
abaptistum | |
abarambo | |
abaris | |
abarthrosis | |
abarticular | |
abarticulation | |
abas | |
abase | |
abased | |
abasedly | |
abasedness | |
abasement | |
abasements | |
abaser | |
abasers | |
abases | |
abasgi | |
abash | |
abashed | |
abashedly | |
abashedness | |
abashes | |
abashing | |
abashless | |
abashlessly | |
abashment | |
abashments | |
abasia | |
abasias | |
abasic | |
abasing | |
abasio | |
abask | |
abassi | |
abassin | |
abastard | |
abastardize | |
abastral | |
abatable | |
abatage | |
abate | |
abated | |
abatement | |
abatements | |
abater | |
abaters | |
abates | |
abatic | |
abating | |
abatis | |
abatised | |
abatises | |
abatjour | |
abatjours | |
abaton | |
abator | |
abators | |
abattage | |
abattis | |
abattised | |
abattises | |
abattoir | |
abattoirs | |
abattu | |
abattue | |
abatua | |
abature | |
abaue | |
abave | |
abaxial | |
abaxile | |
abaze | |
abb | |
abba | |
abbacy | |
abbacies | |
abbacomes | |
abbadide | |
abbaye | |
abbandono | |
abbas | |
abbasi | |
abbasid | |
abbassi | |
abbasside | |
abbate | |
abbatial | |
abbatical | |
abbatie | |
abbe | |
abbey | |
abbeys | |
abbeystead | |
abbeystede | |
abbes | |
abbess | |
abbesses | |
abbest | |
abbevillian | |
abby | |
abbie | |
abboccato | |
abbogada | |
abbot | |
abbotcy | |
abbotcies | |
abbotnullius | |
abbotric | |
abbots | |
abbotship | |
abbotships | |
abbott | |
abbozzo | |
abbr | |
abbrev | |
abbreviatable | |
abbreviate | |
abbreviated | |
abbreviately | |
abbreviates | |
abbreviating | |
abbreviation | |
abbreviations | |
abbreviator | |
abbreviatory | |
abbreviators | |
abbreviature | |
abbroachment | |
abc | |
abcess | |
abcissa | |
abcoulomb | |
abd | |
abdal | |
abdali | |
abdaria | |
abdat | |
abderian | |
abderite | |
abdest | |
abdicable | |
abdicant | |
abdicate | |
abdicated | |
abdicates | |
abdicating | |
abdication | |
abdications | |
abdicative | |
abdicator | |
abdiel | |
abditive | |
abditory | |
abdom | |
abdomen | |
abdomens | |
abdomina | |
abdominal | |
abdominales | |
abdominalia | |
abdominalian | |
abdominally | |
abdominals | |
abdominoanterior | |
abdominocardiac | |
abdominocentesis | |
abdominocystic | |
abdominogenital | |
abdominohysterectomy | |
abdominohysterotomy | |
abdominoposterior | |
abdominoscope | |
abdominoscopy | |
abdominothoracic | |
abdominous | |
abdominovaginal | |
abdominovesical | |
abduce | |
abduced | |
abducens | |
abducent | |
abducentes | |
abduces | |
abducing | |
abduct | |
abducted | |
abducting | |
abduction | |
abductions | |
abductor | |
abductores | |
abductors | |
abducts | |
abe | |
abeam | |
abear | |
abearance | |
abecedaire | |
abecedary | |
abecedaria | |
abecedarian | |
abecedarians | |
abecedaries | |
abecedarium | |
abecedarius | |
abed | |
abede | |
abedge | |
abegge | |
abey | |
abeyance | |
abeyances | |
abeyancy | |
abeyancies | |
abeyant | |
abeigh | |
abel | |
abele | |
abeles | |
abelia | |
abelian | |
abelicea | |
abelite | |
abelmoschus | |
abelmosk | |
abelmosks | |
abelmusk | |
abelonian | |
abeltree | |
abencerrages | |
abend | |
abends | |
abenteric | |
abepithymia | |
aberdavine | |
aberdeen | |
aberdevine | |
aberdonian | |
aberduvine | |
aberia | |
abernethy | |
aberr | |
aberrance | |
aberrancy | |
aberrancies | |
aberrant | |
aberrantly | |
aberrants | |
aberrate | |
aberrated | |
aberrating | |
aberration | |
aberrational | |
aberrations | |
aberrative | |
aberrator | |
aberrometer | |
aberroscope | |
aberuncate | |
aberuncator | |
abesse | |
abessive | |
abet | |
abetment | |
abetments | |
abets | |
abettal | |
abettals | |
abetted | |
abetter | |
abetters | |
abetting | |
abettor | |
abettors | |
abevacuation | |
abfarad | |
abfarads | |
abhenry | |
abhenries | |
abhenrys | |
abhinaya | |
abhiseka | |
abhominable | |
abhor | |
abhorred | |
abhorrence | |
abhorrences | |
abhorrency | |
abhorrent | |
abhorrently | |
abhorrer | |
abhorrers | |
abhorrible | |
abhorring | |
abhors | |
abhorson | |
aby | |
abib | |
abichite | |
abidal | |
abidance | |
abidances | |
abidden | |
abide | |
abided | |
abider | |
abiders | |
abides | |
abidi | |
abiding | |
abidingly | |
abidingness | |
abie | |
abye | |
abiegh | |
abience | |
abient | |
abies | |
abyes | |
abietate | |
abietene | |
abietic | |
abietin | |
abietineae | |
abietineous | |
abietinic | |
abietite | |
abiezer | |
abigail | |
abigails | |
abigailship | |
abigeat | |
abigei | |
abigeus | |
abying | |
abilao | |
abilene | |
abiliment | |
abilitable | |
ability | |
abilities | |
abilla | |
abilo | |
abime | |
abintestate | |
abiogeneses | |
abiogenesis | |
abiogenesist | |
abiogenetic | |
abiogenetical | |
abiogenetically | |
abiogeny | |
abiogenist | |
abiogenous | |
abiology | |
abiological | |
abiologically | |
abioses | |
abiosis | |
abiotic | |
abiotical | |
abiotically | |
abiotrophy | |
abiotrophic | |
abipon | |
abir | |
abirritant | |
abirritate | |
abirritated | |
abirritating | |
abirritation | |
abirritative | |
abys | |
abysm | |
abysmal | |
abysmally | |
abysms | |
abyss | |
abyssa | |
abyssal | |
abysses | |
abyssinia | |
abyssinian | |
abyssinians | |
abyssobenthonic | |
abyssolith | |
abyssopelagic | |
abyssus | |
abiston | |
abit | |
abitibi | |
abiuret | |
abject | |
abjectedness | |
abjection | |
abjections | |
abjective | |
abjectly | |
abjectness | |
abjoint | |
abjudge | |
abjudged | |
abjudging | |
abjudicate | |
abjudicated | |
abjudicating | |
abjudication | |
abjudicator | |
abjugate | |
abjunct | |
abjunction | |
abjunctive | |
abjuration | |
abjurations | |
abjuratory | |
abjure | |
abjured | |
abjurement | |
abjurer | |
abjurers | |
abjures | |
abjuring | |
abkar | |
abkari | |
abkary | |
abkhas | |
abkhasian | |
abl | |
ablach | |
ablactate | |
ablactated | |
ablactating | |
ablactation | |
ablaqueate | |
ablare | |
ablastemic | |
ablastin | |
ablastous | |
ablate | |
ablated | |
ablates | |
ablating | |
ablation | |
ablations | |
ablatitious | |
ablatival | |
ablative | |
ablatively | |
ablatives | |
ablator | |
ablaut | |
ablauts | |
ablaze | |
able | |
ableeze | |
ablegate | |
ablegates | |
ablegation | |
ablend | |
ableness | |
ablepharia | |
ablepharon | |
ablepharous | |
ablepharus | |
ablepsy | |
ablepsia | |
ableptical | |
ableptically | |
abler | |
ables | |
ablesse | |
ablest | |
ablet | |
ablewhackets | |
ably | |
ablings | |
ablins | |
ablock | |
abloom | |
ablow | |
ablude | |
abluent | |
abluents | |
ablush | |
ablute | |
abluted | |
ablution | |
ablutionary | |
ablutions | |
abluvion | |
abmho | |
abmhos | |
abmodality | |
abmodalities | |
abn | |
abnaki | |
abnegate | |
abnegated | |
abnegates | |
abnegating | |
abnegation | |
abnegations | |
abnegative | |
abnegator | |
abnegators | |
abner | |
abnerval | |
abnet | |
abneural | |
abnormal | |
abnormalcy | |
abnormalcies | |
abnormalise | |
abnormalised | |
abnormalising | |
abnormalism | |
abnormalist | |
abnormality | |
abnormalities | |
abnormalize | |
abnormalized | |
abnormalizing | |
abnormally | |
abnormalness | |
abnormals | |
abnormity | |
abnormities | |
abnormous | |
abnumerable | |
abo | |
aboard | |
aboardage | |
abobra | |
abococket | |
abodah | |
abode | |
aboded | |
abodement | |
abodes | |
abody | |
aboding | |
abogado | |
abogados | |
abohm | |
abohms | |
aboideau | |
aboideaus | |
aboideaux | |
aboil | |
aboiteau | |
aboiteaus | |
aboiteaux | |
abolete | |
abolish | |
abolishable | |
abolished | |
abolisher | |
abolishers | |
abolishes | |
abolishing | |
abolishment | |
abolishments | |
abolition | |
abolitionary | |
abolitionise | |
abolitionised | |
abolitionising | |
abolitionism | |
abolitionist | |
abolitionists | |
abolitionize | |
abolitionized | |
abolitionizing | |
abolla | |
abollae | |
aboma | |
abomas | |
abomasa | |
abomasal | |
abomasi | |
abomasum | |
abomasus | |
abomasusi | |
abominability | |
abominable | |
abominableness | |
abominably | |
abominate | |
abominated | |
abominates | |
abominating | |
abomination | |
abominations | |
abominator | |
abominators | |
abomine | |
abondance | |
abongo | |
abonne | |
abonnement | |
aboon | |
aborad | |
aboral | |
aborally | |
abord | |
aboriginal | |
aboriginality | |
aboriginally | |
aboriginals | |
aboriginary | |
aborigine | |
aborigines | |
aborning | |
aborsement | |
aborsive | |
abort | |
aborted | |
aborter | |
aborters | |
aborticide | |
abortient | |
abortifacient | |
abortin | |
aborting | |
abortion | |
abortional | |
abortionist | |
abortionists | |
abortions | |
abortive | |
abortively | |
abortiveness | |
abortogenic | |
aborts | |
abortus | |
abortuses | |
abos | |
abote | |
abouchement | |
aboudikro | |
abought | |
aboulia | |
aboulias | |
aboulic | |
abound | |
abounded | |
abounder | |
abounding | |
aboundingly | |
abounds | |
about | |
abouts | |
above | |
aboveboard | |
abovedeck | |
aboveground | |
abovementioned | |
aboveproof | |
aboves | |
abovesaid | |
abovestairs | |
abow | |
abox | |
abp | |
abr | |
abracadabra | |
abrachia | |
abrachias | |
abradable | |
abradant | |
abradants | |
abrade | |
abraded | |
abrader | |
abraders | |
abrades | |
abrading | |
abraham | |
abrahamic | |
abrahamidae | |
abrahamite | |
abrahamitic | |
abray | |
abraid | |
abram | |
abramis | |
abranchial | |
abranchialism | |
abranchian | |
abranchiata | |
abranchiate | |
abranchious | |
abrasax | |
abrase | |
abrased | |
abraser | |
abrash | |
abrasing | |
abrasiometer | |
abrasion | |
abrasions | |
abrasive | |
abrasively | |
abrasiveness | |
abrasives | |
abrastol | |
abraum | |
abraxas | |
abrazite | |
abrazitic | |
abrazo | |
abrazos | |
abreact | |
abreacted | |
abreacting | |
abreaction | |
abreactions | |
abreacts | |
abreast | |
abreed | |
abrege | |
abreid | |
abrenounce | |
abrenunciate | |
abrenunciation | |
abreption | |
abret | |
abreuvoir | |
abri | |
abrico | |
abricock | |
abricot | |
abridgable | |
abridge | |
abridgeable | |
abridged | |
abridgedly | |
abridgement | |
abridgements | |
abridger | |
abridgers | |
abridges | |
abridging | |
abridgment | |
abridgments | |
abrim | |
abrin | |
abrine | |
abris | |
abristle | |
abroach | |
abroad | |
abrocoma | |
abrocome | |
abrogable | |
abrogate | |
abrogated | |
abrogates | |
abrogating | |
abrogation | |
abrogations | |
abrogative | |
abrogator | |
abrogators | |
abroma | |
abronia | |
abrood | |
abrook | |
abrosia | |
abrosias | |
abrotanum | |
abrotin | |
abrotine | |
abrupt | |
abruptedly | |
abrupter | |
abruptest | |
abruptio | |
abruption | |
abruptiones | |
abruptly | |
abruptness | |
abrus | |
abs | |
absalom | |
absampere | |
absaroka | |
absarokite | |
abscam | |
abscess | |
abscessed | |
abscesses | |
abscessing | |
abscession | |
abscessroot | |
abscind | |
abscise | |
abscised | |
abscises | |
abscising | |
abscisins | |
abscision | |
absciss | |
abscissa | |
abscissae | |
abscissas | |
abscisse | |
abscissin | |
abscission | |
abscissions | |
absconce | |
abscond | |
absconded | |
abscondedly | |
abscondence | |
absconder | |
absconders | |
absconding | |
absconds | |
absconsa | |
abscoulomb | |
abscound | |
absee | |
absey | |
abseil | |
abseiled | |
abseiling | |
abseils | |
absence | |
absences | |
absent | |
absentation | |
absented | |
absentee | |
absenteeism | |
absentees | |
absenteeship | |
absenter | |
absenters | |
absentia | |
absenting | |
absently | |
absentment | |
absentminded | |
absentmindedly | |
absentmindedness | |
absentness | |
absents | |
absfarad | |
abshenry | |
absi | |
absinth | |
absinthe | |
absinthes | |
absinthial | |
absinthian | |
absinthiate | |
absinthiated | |
absinthiating | |
absinthic | |
absinthiin | |
absinthin | |
absinthine | |
absinthism | |
absinthismic | |
absinthium | |
absinthol | |
absinthole | |
absinths | |
absyrtus | |
absis | |
absist | |
absistos | |
absit | |
absmho | |
absohm | |
absoil | |
absolent | |
absolute | |
absolutely | |
absoluteness | |
absoluter | |
absolutes | |
absolutest | |
absolution | |
absolutions | |
absolutism | |
absolutist | |
absolutista | |
absolutistic | |
absolutistically | |
absolutists | |
absolutive | |
absolutization | |
absolutize | |
absolutory | |
absolvable | |
absolvatory | |
absolve | |
absolved | |
absolvent | |
absolver | |
absolvers | |
absolves | |
absolving | |
absolvitor | |
absolvitory | |
absonant | |
absonous | |
absorb | |
absorbability | |
absorbable | |
absorbance | |
absorbancy | |
absorbant | |
absorbed | |
absorbedly | |
absorbedness | |
absorbefacient | |
absorbency | |
absorbencies | |
absorbent | |
absorbents | |
absorber | |
absorbers | |
absorbing | |
absorbingly | |
absorbition | |
absorbs | |
absorbtion | |
absorpt | |
absorptance | |
absorptiometer | |
absorptiometric | |
absorption | |
absorptional | |
absorptions | |
absorptive | |
absorptively | |
absorptiveness | |
absorptivity | |
absquatulate | |
absquatulation | |
abstain | |
abstained | |
abstainer | |
abstainers | |
abstaining | |
abstainment | |
abstains | |
abstemious | |
abstemiously | |
abstemiousness | |
abstention | |
abstentionism | |
abstentionist | |
abstentions | |
abstentious | |
absterge | |
absterged | |
abstergent | |
absterges | |
absterging | |
absterse | |
abstersion | |
abstersive | |
abstersiveness | |
abstertion | |
abstinence | |
abstinency | |
abstinent | |
abstinential | |
abstinently | |
abstort | |
abstr | |
abstract | |
abstractable | |
abstracted | |
abstractedly | |
abstractedness | |
abstracter | |
abstracters | |
abstractest | |
abstracting | |
abstraction | |
abstractional | |
abstractionism | |
abstractionist | |
abstractionists | |
abstractions | |
abstractitious | |
abstractive | |
abstractively | |
abstractiveness | |
abstractly | |
abstractness | |
abstractor | |
abstractors | |
abstracts | |
abstrahent | |
abstrict | |
abstricted | |
abstricting | |
abstriction | |
abstricts | |
abstrude | |
abstruse | |
abstrusely | |
abstruseness | |
abstrusenesses | |
abstruser | |
abstrusest | |
abstrusion | |
abstrusity | |
abstrusities | |
absume | |
absumption | |
absurd | |
absurder | |
absurdest | |
absurdism | |
absurdist | |
absurdity | |
absurdities | |
absurdly | |
absurdness | |
absurds | |
absurdum | |
absvolt | |
abt | |
abterminal | |
abthain | |
abthainry | |
abthainrie | |
abthanage | |
abtruse | |
abu | |
abubble | |
abucco | |
abuilding | |
abuleia | |
abulia | |
abulias | |
abulic | |
abulyeit | |
abulomania | |
abumbral | |
abumbrellar | |
abuna | |
abundance | |
abundances | |
abundancy | |
abundant | |
abundantia | |
abundantly | |
abune | |
abura | |
aburabozu | |
aburagiri | |
aburban | |
aburst | |
aburton | |
abusable | |
abusage | |
abuse | |
abused | |
abusedly | |
abusee | |
abuseful | |
abusefully | |
abusefulness | |
abuser | |
abusers | |
abuses | |
abush | |
abusing | |
abusion | |
abusious | |
abusive | |
abusively | |
abusiveness | |
abut | |
abuta | |
abutilon | |
abutilons | |
abutment | |
abutments | |
abuts | |
abuttal | |
abuttals | |
abutted | |
abutter | |
abutters | |
abutting | |
abuzz | |
abv | |
abvolt | |
abvolts | |
abwab | |
abwatt | |
abwatts | |
ac | |
acacatechin | |
acacatechol | |
acacetin | |
acacia | |
acacian | |
acacias | |
acaciin | |
acacin | |
acacine | |
acad | |
academe | |
academes | |
academy | |
academia | |
academial | |
academian | |
academias | |
academic | |
academical | |
academically | |
academicals | |
academician | |
academicians | |
academicianship | |
academicism | |
academics | |
academie | |
academies | |
academise | |
academised | |
academising | |
academism | |
academist | |
academite | |
academization | |
academize | |
academized | |
academizing | |
academus | |
acadia | |
acadialite | |
acadian | |
acadie | |
acaena | |
acajou | |
acajous | |
acalculia | |
acale | |
acaleph | |
acalepha | |
acalephae | |
acalephan | |
acalephe | |
acalephes | |
acalephoid | |
acalephs | |
acalycal | |
acalycine | |
acalycinous | |
acalyculate | |
acalypha | |
acalypterae | |
acalyptrata | |
acalyptratae | |
acalyptrate | |
acamar | |
acampsia | |
acana | |
acanaceous | |
acanonical | |
acanth | |
acantha | |
acanthaceae | |
acanthaceous | |
acanthad | |
acantharia | |
acanthi | |
acanthia | |
acanthial | |
acanthin | |
acanthine | |
acanthion | |
acanthite | |
acanthocarpous | |
acanthocephala | |
acanthocephalan | |
acanthocephali | |
acanthocephalous | |
acanthocereus | |
acanthocladous | |
acanthodea | |
acanthodean | |
acanthodei | |
acanthodes | |
acanthodian | |
acanthodidae | |
acanthodii | |
acanthodini | |
acanthoid | |
acantholimon | |
acantholysis | |
acanthology | |
acanthological | |
acanthoma | |
acanthomas | |
acanthomeridae | |
acanthon | |
acanthopanax | |
acanthophis | |
acanthophorous | |
acanthopod | |
acanthopodous | |
acanthopomatous | |
acanthopore | |
acanthopteran | |
acanthopteri | |
acanthopterygian | |
acanthopterygii | |
acanthopterous | |
acanthoses | |
acanthosis | |
acanthotic | |
acanthous | |
acanthuridae | |
acanthurus | |
acanthus | |
acanthuses | |
acanthuthi | |
acapnia | |
acapnial | |
acapnias | |
acappella | |
acapsular | |
acapu | |
acapulco | |
acara | |
acarapis | |
acarari | |
acardia | |
acardiac | |
acardite | |
acari | |
acarian | |
acariasis | |
acariatre | |
acaricidal | |
acaricide | |
acarid | |
acarida | |
acaridae | |
acaridan | |
acaridans | |
acaridea | |
acaridean | |
acaridomatia | |
acaridomatium | |
acarids | |
acariform | |
acarina | |
acarine | |
acarines | |
acarinosis | |
acarocecidia | |
acarocecidium | |
acarodermatitis | |
acaroid | |
acarol | |
acarology | |
acarologist | |
acarophilous | |
acarophobia | |
acarotoxic | |
acarpellous | |
acarpelous | |
acarpous | |
acarus | |
acast | |
acastus | |
acatalectic | |
acatalepsy | |
acatalepsia | |
acataleptic | |
acatallactic | |
acatamathesia | |
acataphasia | |
acataposis | |
acatastasia | |
acatastatic | |
acate | |
acategorical | |
acater | |
acatery | |
acates | |
acatharsy | |
acatharsia | |
acatholic | |
acaudal | |
acaudate | |
acaudelescent | |
acaulescence | |
acaulescent | |
acauline | |
acaulose | |
acaulous | |
acc | |
acca | |
accable | |
accademia | |
accadian | |
acce | |
accede | |
acceded | |
accedence | |
acceder | |
acceders | |
accedes | |
acceding | |
accel | |
accelerable | |
accelerando | |
accelerant | |
accelerate | |
accelerated | |
acceleratedly | |
accelerates | |
accelerating | |
acceleratingly | |
acceleration | |
accelerations | |
accelerative | |
accelerator | |
acceleratorh | |
acceleratory | |
accelerators | |
accelerograph | |
accelerometer | |
accelerometers | |
accend | |
accendibility | |
accendible | |
accensed | |
accension | |
accensor | |
accent | |
accented | |
accenting | |
accentless | |
accentor | |
accentors | |
accents | |
accentuable | |
accentual | |
accentuality | |
accentually | |
accentuate | |
accentuated | |
accentuates | |
accentuating | |
accentuation | |
accentuator | |
accentus | |
accept | |
acceptability | |
acceptable | |
acceptableness | |
acceptably | |
acceptance | |
acceptances | |
acceptancy | |
acceptancies | |
acceptant | |
acceptation | |
acceptavit | |
accepted | |
acceptedly | |
acceptee | |
acceptees | |
accepter | |
accepters | |
acceptilate | |
acceptilated | |
acceptilating | |
acceptilation | |
accepting | |
acceptingly | |
acceptingness | |
acception | |
acceptive | |
acceptor | |
acceptors | |
acceptress | |
accepts | |
accerse | |
accersition | |
accersitor | |
access | |
accessability | |
accessable | |
accessary | |
accessaries | |
accessarily | |
accessariness | |
accessaryship | |
accessed | |
accesses | |
accessibility | |
accessible | |
accessibleness | |
accessibly | |
accessing | |
accession | |
accessional | |
accessioned | |
accessioner | |
accessioning | |
accessions | |
accessit | |
accessive | |
accessively | |
accessless | |
accessor | |
accessory | |
accessorial | |
accessories | |
accessorii | |
accessorily | |
accessoriness | |
accessorius | |
accessoriusorii | |
accessorize | |
accessorized | |
accessorizing | |
accessors | |
acciaccatura | |
acciaccaturas | |
acciaccature | |
accidence | |
accidency | |
accidencies | |
accident | |
accidental | |
accidentalism | |
accidentalist | |
accidentality | |
accidentally | |
accidentalness | |
accidentals | |
accidentary | |
accidentarily | |
accidented | |
accidential | |
accidentiality | |
accidently | |
accidents | |
accidia | |
accidie | |
accidies | |
accinge | |
accinged | |
accinging | |
accipenser | |
accipient | |
accipiter | |
accipitral | |
accipitrary | |
accipitres | |
accipitrine | |
accipter | |
accise | |
accismus | |
accite | |
acclaim | |
acclaimable | |
acclaimed | |
acclaimer | |
acclaimers | |
acclaiming | |
acclaims | |
acclamation | |
acclamations | |
acclamator | |
acclamatory | |
acclimatable | |
acclimatation | |
acclimate | |
acclimated | |
acclimatement | |
acclimates | |
acclimating | |
acclimation | |
acclimatisable | |
acclimatisation | |
acclimatise | |
acclimatised | |
acclimatiser | |
acclimatising | |
acclimatizable | |
acclimatization | |
acclimatize | |
acclimatized | |
acclimatizer | |
acclimatizes | |
acclimatizing | |
acclimature | |
acclinal | |
acclinate | |
acclivity | |
acclivities | |
acclivitous | |
acclivous | |
accloy | |
accoast | |
accoy | |
accoyed | |
accoying | |
accoil | |
accolade | |
accoladed | |
accolades | |
accolated | |
accolent | |
accoll | |
accolle | |
accolled | |
accollee | |
accombination | |
accommodable | |
accommodableness | |
accommodate | |
accommodated | |
accommodately | |
accommodateness | |
accommodates | |
accommodating | |
accommodatingly | |
accommodatingness | |
accommodation | |
accommodational | |
accommodationist | |
accommodations | |
accommodative | |
accommodatively | |
accommodativeness | |
accommodator | |
accommodators | |
accomodate | |
accompanable | |
accompany | |
accompanied | |
accompanier | |
accompanies | |
accompanying | |
accompanyist | |
accompaniment | |
accompanimental | |
accompaniments | |
accompanist | |
accompanists | |
accomplement | |
accompletive | |
accompli | |
accomplice | |
accomplices | |
accompliceship | |
accomplicity | |
accomplis | |
accomplish | |
accomplishable | |
accomplished | |
accomplisher | |
accomplishers | |
accomplishes | |
accomplishing | |
accomplishment | |
accomplishments | |
accomplisht | |
accompt | |
accord | |
accordable | |
accordance | |
accordances | |
accordancy | |
accordant | |
accordantly | |
accordatura | |
accordaturas | |
accordature | |
accorded | |
accorder | |
accorders | |
according | |
accordingly | |
accordion | |
accordionist | |
accordionists | |
accordions | |
accords | |
accorporate | |
accorporation | |
accost | |
accostable | |
accosted | |
accosting | |
accosts | |
accouche | |
accouchement | |
accouchements | |
accoucheur | |
accoucheurs | |
accoucheuse | |
accoucheuses | |
accounsel | |
account | |
accountability | |
accountable | |
accountableness | |
accountably | |
accountancy | |
accountant | |
accountants | |
accountantship | |
accounted | |
accounter | |
accounters | |
accounting | |
accountment | |
accountrement | |
accounts | |
accouple | |
accouplement | |
accourage | |
accourt | |
accouter | |
accoutered | |
accoutering | |
accouterment | |
accouterments | |
accouters | |
accoutre | |
accoutred | |
accoutrement | |
accoutrements | |
accoutres | |
accoutring | |
accra | |
accrease | |
accredit | |
accreditable | |
accreditate | |
accreditation | |
accreditations | |
accredited | |
accreditee | |
accrediting | |
accreditment | |
accredits | |
accrementitial | |
accrementition | |
accresce | |
accrescence | |
accrescendi | |
accrescendo | |
accrescent | |
accretal | |
accrete | |
accreted | |
accretes | |
accreting | |
accretion | |
accretionary | |
accretions | |
accretive | |
accriminate | |
accroach | |
accroached | |
accroaching | |
accroachment | |
accroides | |
accruable | |
accrual | |
accruals | |
accrue | |
accrued | |
accruement | |
accruer | |
accrues | |
accruing | |
acct | |
accts | |
accubation | |
accubita | |
accubitum | |
accubitus | |
accueil | |
accultural | |
acculturate | |
acculturated | |
acculturates | |
acculturating | |
acculturation | |
acculturational | |
acculturationist | |
acculturative | |
acculturize | |
acculturized | |
acculturizing | |
accum | |
accumb | |
accumbency | |
accumbent | |
accumber | |
accumulable | |
accumulate | |
accumulated | |
accumulates | |
accumulating | |
accumulation | |
accumulations | |
accumulativ | |
accumulative | |
accumulatively | |
accumulativeness | |
accumulator | |
accumulators | |
accupy | |
accur | |
accuracy | |
accuracies | |
accurate | |
accurately | |
accurateness | |
accurre | |
accurse | |
accursed | |
accursedly | |
accursedness | |
accursing | |
accurst | |
accurtation | |
accus | |
accusable | |
accusably | |
accusal | |
accusals | |
accusant | |
accusants | |
accusation | |
accusations | |
accusatival | |
accusative | |
accusatively | |
accusativeness | |
accusatives | |
accusator | |
accusatory | |
accusatorial | |
accusatorially | |
accusatrix | |
accusatrixes | |
accuse | |
accused | |
accuser | |
accusers | |
accuses | |
accusing | |
accusingly | |
accusive | |
accusor | |
accustom | |
accustomation | |
accustomed | |
accustomedly | |
accustomedness | |
accustoming | |
accustomize | |
accustomized | |
accustomizing | |
accustoms | |
ace | |
aceacenaphthene | |
aceanthrene | |
aceanthrenequinone | |
acecaffin | |
acecaffine | |
aceconitic | |
aced | |
acedy | |
acedia | |
acediamin | |
acediamine | |
acedias | |
acediast | |
aceite | |
aceituna | |
aceldama | |
aceldamas | |
acellular | |
acemetae | |
acemetic | |
acemila | |
acenaphthene | |
acenaphthenyl | |
acenaphthylene | |
acenesthesia | |
acensuada | |
acensuador | |
acentric | |
acentrous | |
aceology | |
aceologic | |
acephal | |
acephala | |
acephalan | |
acephali | |
acephalia | |
acephalina | |
acephaline | |
acephalism | |
acephalist | |
acephalite | |
acephalocyst | |
acephalous | |
acephalus | |
acepots | |
acequia | |
acequiador | |
acequias | |
acer | |
aceraceae | |
aceraceous | |
acerae | |
acerata | |
acerate | |
acerated | |
acerates | |
acerathere | |
aceratherium | |
aceratosis | |
acerb | |
acerbas | |
acerbate | |
acerbated | |
acerbates | |
acerbating | |
acerber | |
acerbest | |
acerbic | |
acerbically | |
acerbity | |
acerbityacerose | |
acerbities | |
acerbitude | |
acerbly | |
acerbophobia | |
acerdol | |
aceric | |
acerin | |
acerli | |
acerola | |
acerolas | |
acerose | |
acerous | |
acerra | |
acertannin | |
acerval | |
acervate | |
acervately | |
acervatim | |
acervation | |
acervative | |
acervose | |
acervuli | |
acervuline | |
acervulus | |
aces | |
acescence | |
acescency | |
acescent | |
acescents | |
aceship | |
acesodyne | |
acesodynous | |
acestes | |
acestoma | |
aceta | |
acetable | |
acetabula | |
acetabular | |
acetabularia | |
acetabuliferous | |
acetabuliform | |
acetabulous | |
acetabulum | |
acetabulums | |
acetacetic | |
acetal | |
acetaldehydase | |
acetaldehyde | |
acetaldehydrase | |
acetaldol | |
acetalization | |
acetalize | |
acetals | |
acetamid | |
acetamide | |
acetamidin | |
acetamidine | |
acetamido | |
acetamids | |
acetaminol | |
acetaminophen | |
acetanilid | |
acetanilide | |
acetanion | |
acetaniside | |
acetanisidide | |
acetanisidine | |
acetannin | |
acetary | |
acetarious | |
acetars | |
acetarsone | |
acetate | |
acetated | |
acetates | |
acetation | |
acetazolamide | |
acetbromamide | |
acetenyl | |
acethydrazide | |
acetiam | |
acetic | |
acetify | |
acetification | |
acetified | |
acetifier | |
acetifies | |
acetifying | |
acetyl | |
acetylacetonates | |
acetylacetone | |
acetylamine | |
acetylaminobenzene | |
acetylaniline | |
acetylasalicylic | |
acetylate | |
acetylated | |
acetylating | |
acetylation | |
acetylative | |
acetylator | |
acetylbenzene | |
acetylbenzoate | |
acetylbenzoic | |
acetylbiuret | |
acetylcarbazole | |
acetylcellulose | |
acetylcholine | |
acetylcholinesterase | |
acetylcholinic | |
acetylcyanide | |
acetylenation | |
acetylene | |
acetylenediurein | |
acetylenic | |
acetylenyl | |
acetylenogen | |
acetylfluoride | |
acetylglycin | |
acetylglycine | |
acetylhydrazine | |
acetylic | |
acetylid | |
acetylide | |
acetyliodide | |
acetylizable | |
acetylization | |
acetylize | |
acetylized | |
acetylizer | |
acetylizing | |
acetylmethylcarbinol | |
acetylperoxide | |
acetylphenylhydrazine | |
acetylphenol | |
acetylrosaniline | |
acetyls | |
acetylsalicylate | |
acetylsalicylic | |
acetylsalol | |
acetyltannin | |
acetylthymol | |
acetyltropeine | |
acetylurea | |
acetimeter | |
acetimetry | |
acetimetric | |
acetin | |
acetine | |
acetins | |
acetite | |
acetize | |
acetla | |
acetmethylanilide | |
acetnaphthalide | |
acetoacetanilide | |
acetoacetate | |
acetoacetic | |
acetoamidophenol | |
acetoarsenite | |
acetobacter | |
acetobenzoic | |
acetobromanilide | |
acetochloral | |
acetocinnamene | |
acetoin | |
acetol | |
acetolysis | |
acetolytic | |
acetometer | |
acetometry | |
acetometric | |
acetometrical | |
acetometrically | |
acetomorphin | |
acetomorphine | |
acetonaemia | |
acetonaemic | |
acetonaphthone | |
acetonate | |
acetonation | |
acetone | |
acetonemia | |
acetonemic | |
acetones | |
acetonic | |
acetonyl | |
acetonylacetone | |
acetonylidene | |
acetonitrile | |
acetonization | |
acetonize | |
acetonuria | |
acetonurometer | |
acetophenetide | |
acetophenetidin | |
acetophenetidine | |
acetophenin | |
acetophenine | |
acetophenone | |
acetopiperone | |
acetopyrin | |
acetopyrine | |
acetosalicylic | |
acetose | |
acetosity | |
acetosoluble | |
acetostearin | |
acetothienone | |
acetotoluid | |
acetotoluide | |
acetotoluidine | |
acetous | |
acetoveratrone | |
acetoxyl | |
acetoxyls | |
acetoxim | |
acetoxime | |
acetoxyphthalide | |
acetphenetid | |
acetphenetidin | |
acetract | |
acettoluide | |
acetum | |
aceturic | |
ach | |
achaean | |
achaemenian | |
achaemenid | |
achaemenidae | |
achaemenidian | |
achaenocarp | |
achaenodon | |
achaeta | |
achaetous | |
achafe | |
achage | |
achagua | |
achakzai | |
achalasia | |
achamoth | |
achango | |
achape | |
achaque | |
achar | |
acharya | |
achariaceae | |
achariaceous | |
acharne | |
acharnement | |
achate | |
achates | |
achatina | |
achatinella | |
achatinidae | |
achatour | |
ache | |
acheat | |
achech | |
acheck | |
ached | |
acheer | |
acheilary | |
acheilia | |
acheilous | |
acheiria | |
acheirous | |
acheirus | |
achen | |
achene | |
achenes | |
achenia | |
achenial | |
achenium | |
achenocarp | |
achenodia | |
achenodium | |
acher | |
achernar | |
acheron | |
acheronian | |
acherontic | |
acherontical | |
aches | |
achesoun | |
achete | |
achetidae | |
acheulean | |
acheweed | |
achy | |
achier | |
achiest | |
achievability | |
achievable | |
achieve | |
achieved | |
achievement | |
achievements | |
achiever | |
achievers | |
achieves | |
achieving | |
achigan | |
achilary | |
achylia | |
achill | |
achillea | |
achillean | |
achilleas | |
achilleid | |
achillein | |
achilleine | |
achilles | |
achillize | |
achillobursitis | |
achillodynia | |
achilous | |
achylous | |
achime | |
achimenes | |
achymia | |
achymous | |
achinese | |
achiness | |
achinesses | |
aching | |
achingly | |
achiote | |
achiotes | |
achira | |
achyranthes | |
achirite | |
achyrodes | |
achitophel | |
achkan | |
achlamydate | |
achlamydeae | |
achlamydeous | |
achlorhydria | |
achlorhydric | |
achlorophyllous | |
achloropsia | |
achluophobia | |
achmetha | |
achoke | |
acholia | |
acholias | |
acholic | |
acholoe | |
acholous | |
acholuria | |
acholuric | |
achomawi | |
achondrite | |
achondritic | |
achondroplasia | |
achondroplastic | |
achoo | |
achor | |
achordal | |
achordata | |
achordate | |
achorion | |
achras | |
achree | |
achroacyte | |
achroanthes | |
achrodextrin | |
achrodextrinase | |
achroglobin | |
achroiocythaemia | |
achroiocythemia | |
achroite | |
achroma | |
achromacyte | |
achromasia | |
achromat | |
achromate | |
achromatiaceae | |
achromatic | |
achromatically | |
achromaticity | |
achromatin | |
achromatinic | |
achromatisation | |
achromatise | |
achromatised | |
achromatising | |
achromatism | |
achromatium | |
achromatizable | |
achromatization | |
achromatize | |
achromatized | |
achromatizing | |
achromatocyte | |
achromatolysis | |
achromatope | |
achromatophil | |
achromatophile | |
achromatophilia | |
achromatophilic | |
achromatopia | |
achromatopsy | |
achromatopsia | |
achromatosis | |
achromatous | |
achromats | |
achromaturia | |
achromia | |
achromic | |
achromobacter | |
achromobacterieae | |
achromoderma | |
achromophilous | |
achromotrichia | |
achromous | |
achronical | |
achronychous | |
achronism | |
achroodextrin | |
achroodextrinase | |
achroous | |
achropsia | |
achtehalber | |
achtel | |
achtelthaler | |
achter | |
achterveld | |
achuas | |
achuete | |
acy | |
acyanoblepsia | |
acyanopsia | |
acichlorid | |
acichloride | |
acyclic | |
acyclically | |
acicula | |
aciculae | |
acicular | |
acicularity | |
acicularly | |
aciculas | |
aciculate | |
aciculated | |
aciculum | |
aciculums | |
acid | |
acidaemia | |
acidanthera | |
acidaspis | |
acidemia | |
acidemias | |
acider | |
acidhead | |
acidheads | |
acidy | |
acidic | |
acidiferous | |
acidify | |
acidifiable | |
acidifiant | |
acidific | |
acidification | |
acidified | |
acidifier | |
acidifiers | |
acidifies | |
acidifying | |
acidyl | |
acidimeter | |
acidimetry | |
acidimetric | |
acidimetrical | |
acidimetrically | |
acidite | |
acidity | |
acidities | |
acidize | |
acidized | |
acidizing | |
acidly | |
acidness | |
acidnesses | |
acidogenic | |
acidoid | |
acidolysis | |
acidology | |
acidometer | |
acidometry | |
acidophil | |
acidophile | |
acidophilic | |
acidophilous | |
acidophilus | |
acidoproteolytic | |
acidoses | |
acidosis | |
acidosteophyte | |
acidotic | |
acidproof | |
acids | |
acidulant | |
acidulate | |
acidulated | |
acidulates | |
acidulating | |
acidulation | |
acidulent | |
acidulous | |
acidulously | |
acidulousness | |
aciduria | |
acidurias | |
aciduric | |
acier | |
acierage | |
acieral | |
acierate | |
acierated | |
acierates | |
acierating | |
acieration | |
acies | |
acyesis | |
acyetic | |
aciform | |
acyl | |
acylal | |
acylamido | |
acylamidobenzene | |
acylamino | |
acylase | |
acylate | |
acylated | |
acylates | |
acylating | |
acylation | |
aciliate | |
aciliated | |
acilius | |
acylogen | |
acyloin | |
acyloins | |
acyloxy | |
acyloxymethane | |
acyls | |
acinaceous | |
acinaces | |
acinacifoliate | |
acinacifolious | |
acinaciform | |
acinacious | |
acinacity | |
acinar | |
acinary | |
acinarious | |
acineta | |
acinetae | |
acinetan | |
acinetaria | |
acinetarian | |
acinetic | |
acinetiform | |
acinetina | |
acinetinan | |
acing | |
acini | |
acinic | |
aciniform | |
acinose | |
acinotubular | |
acinous | |
acinuni | |
acinus | |
acipenser | |
acipenseres | |
acipenserid | |
acipenseridae | |
acipenserine | |
acipenseroid | |
acipenseroidei | |
acyrology | |
acyrological | |
acis | |
acystia | |
aciurgy | |
ack | |
ackee | |
ackees | |
ackey | |
ackeys | |
acker | |
ackman | |
ackmen | |
acknew | |
acknow | |
acknowing | |
acknowledge | |
acknowledgeable | |
acknowledged | |
acknowledgedly | |
acknowledgement | |
acknowledgements | |
acknowledger | |
acknowledgers | |
acknowledges | |
acknowledging | |
acknowledgment | |
acknowledgments | |
acknown | |
ackton | |
aclastic | |
acle | |
acleidian | |
acleistocardia | |
acleistous | |
aclemon | |
aclydes | |
aclidian | |
aclinal | |
aclinic | |
aclys | |
acloud | |
aclu | |
acmaea | |
acmaeidae | |
acmaesthesia | |
acmatic | |
acme | |
acmes | |
acmesthesia | |
acmic | |
acmispon | |
acmite | |
acne | |
acned | |
acneform | |
acneiform | |
acnemia | |
acnes | |
acnida | |
acnodal | |
acnode | |
acnodes | |
acoasm | |
acoasma | |
acocanthera | |
acocantherin | |
acock | |
acockbill | |
acocotl | |
acoela | |
acoelomata | |
acoelomate | |
acoelomatous | |
acoelomi | |
acoelomous | |
acoelous | |
acoemetae | |
acoemeti | |
acoemetic | |
acoenaesthesia | |
acoin | |
acoine | |
acolapissa | |
acold | |
acolhua | |
acolhuan | |
acolyctine | |
acolyte | |
acolytes | |
acolyth | |
acolythate | |
acolytus | |
acology | |
acologic | |
acolous | |
acoluthic | |
acoma | |
acomia | |
acomous | |
aconative | |
acondylose | |
acondylous | |
acone | |
aconelline | |
aconic | |
aconin | |
aconine | |
aconital | |
aconite | |
aconites | |
aconitia | |
aconitic | |
aconitin | |
aconitine | |
aconitum | |
aconitums | |
acontia | |
acontias | |
acontium | |
acontius | |
aconuresis | |
acool | |
acop | |
acopic | |
acopyrin | |
acopyrine | |
acopon | |
acor | |
acorea | |
acoria | |
acorn | |
acorned | |
acorns | |
acorus | |
acosmic | |
acosmism | |
acosmist | |
acosmistic | |
acost | |
acotyledon | |
acotyledonous | |
acouasm | |
acouchi | |
acouchy | |
acoumeter | |
acoumetry | |
acounter | |
acouometer | |
acouophonia | |
acoup | |
acoupa | |
acoupe | |
acousma | |
acousmas | |
acousmata | |
acousmatic | |
acoustic | |
acoustical | |
acoustically | |
acoustician | |
acousticolateral | |
acousticon | |
acousticophobia | |
acoustics | |
acoustoelectric | |
acpt | |
acquaint | |
acquaintance | |
acquaintances | |
acquaintanceship | |
acquaintanceships | |
acquaintancy | |
acquaintant | |
acquainted | |
acquaintedness | |
acquainting | |
acquaints | |
acquent | |
acquereur | |
acquest | |
acquests | |
acquiesce | |
acquiesced | |
acquiescement | |
acquiescence | |
acquiescency | |
acquiescent | |
acquiescently | |
acquiescer | |
acquiesces | |
acquiescing | |
acquiescingly | |
acquiesence | |
acquiet | |
acquirability | |
acquirable | |
acquire | |
acquired | |
acquirement | |
acquirements | |
acquirenda | |
acquirer | |
acquirers | |
acquires | |
acquiring | |
acquisible | |
acquisita | |
acquisite | |
acquisited | |
acquisition | |
acquisitional | |
acquisitions | |
acquisitive | |
acquisitively | |
acquisitiveness | |
acquisitor | |
acquisitum | |
acquist | |
acquit | |
acquital | |
acquitment | |
acquits | |
acquittal | |
acquittals | |
acquittance | |
acquitted | |
acquitter | |
acquitting | |
acquophonia | |
acrab | |
acracy | |
acraein | |
acraeinae | |
acraldehyde | |
acrania | |
acranial | |
acraniate | |
acrasy | |
acrasia | |
acrasiaceae | |
acrasiales | |
acrasias | |
acrasida | |
acrasieae | |
acrasin | |
acrasins | |
acraspeda | |
acraspedote | |
acratia | |
acraturesis | |
acrawl | |
acraze | |
acre | |
acreable | |
acreage | |
acreages | |
acreak | |
acream | |
acred | |
acredula | |
acreman | |
acremen | |
acres | |
acrestaff | |
acrid | |
acridan | |
acridane | |
acrider | |
acridest | |
acridian | |
acridic | |
acridid | |
acrididae | |
acridiidae | |
acridyl | |
acridin | |
acridine | |
acridines | |
acridinic | |
acridinium | |
acridity | |
acridities | |
acridium | |
acrydium | |
acridly | |
acridness | |
acridone | |
acridonium | |
acridophagus | |
acriflavin | |
acriflavine | |
acryl | |
acrylaldehyde | |
acrylate | |
acrylates | |
acrylic | |
acrylics | |
acrylyl | |
acrylonitrile | |
acrimony | |
acrimonies | |
acrimonious | |
acrimoniously | |
acrimoniousness | |
acrindolin | |
acrindoline | |
acrinyl | |
acrisy | |
acrisia | |
acrisius | |
acrita | |
acritan | |
acrite | |
acrity | |
acritical | |
acritochromacy | |
acritol | |
acritude | |
acroa | |
acroaesthesia | |
acroama | |
acroamata | |
acroamatic | |
acroamatical | |
acroamatics | |
acroanesthesia | |
acroarthritis | |
acroasis | |
acroasphyxia | |
acroataxia | |
acroatic | |
acrobacy | |
acrobacies | |
acrobat | |
acrobates | |
acrobatholithic | |
acrobatic | |
acrobatical | |
acrobatically | |
acrobatics | |
acrobatism | |
acrobats | |
acrobystitis | |
acroblast | |
acrobryous | |
acrocarpi | |
acrocarpous | |
acrocentric | |
acrocephaly | |
acrocephalia | |
acrocephalic | |
acrocephalous | |
acrocera | |
acroceratidae | |
acroceraunian | |
acroceridae | |
acrochordidae | |
acrochordinae | |
acrochordon | |
acrocyanosis | |
acrocyst | |
acrock | |
acroclinium | |
acrocomia | |
acroconidium | |
acrocontracture | |
acrocoracoid | |
acrodactyla | |
acrodactylum | |
acrodermatitis | |
acrodynia | |
acrodont | |
acrodontism | |
acrodonts | |
acrodrome | |
acrodromous | |
acrodus | |
acroesthesia | |
acrogamy | |
acrogamous | |
acrogen | |
acrogenic | |
acrogenous | |
acrogenously | |
acrogens | |
acrogynae | |
acrogynous | |
acrography | |
acrolein | |
acroleins | |
acrolith | |
acrolithan | |
acrolithic | |
acroliths | |
acrology | |
acrologic | |
acrologically | |
acrologies | |
acrologism | |
acrologue | |
acromania | |
acromastitis | |
acromegaly | |
acromegalia | |
acromegalic | |
acromegalies | |
acromelalgia | |
acrometer | |
acromia | |
acromial | |
acromicria | |
acromimia | |
acromioclavicular | |
acromiocoracoid | |
acromiodeltoid | |
acromyodi | |
acromyodian | |
acromyodic | |
acromyodous | |
acromiohyoid | |
acromiohumeral | |
acromion | |
acromioscapular | |
acromiosternal | |
acromiothoracic | |
acromyotonia | |
acromyotonus | |
acromonogrammatic | |
acromphalus | |
acron | |
acronal | |
acronarcotic | |
acroneurosis | |
acronic | |
acronyc | |
acronical | |
acronycal | |
acronically | |
acronycally | |
acronych | |
acronichal | |
acronychal | |
acronichally | |
acronychally | |
acronychous | |
acronycta | |
acronyctous | |
acronym | |
acronymic | |
acronymically | |
acronymize | |
acronymized | |
acronymizing | |
acronymous | |
acronyms | |
acronyx | |
acronomy | |
acrook | |
acroparalysis | |
acroparesthesia | |
acropathy | |
acropathology | |
acropetal | |
acropetally | |
acrophobia | |
acrophonetic | |
acrophony | |
acrophonic | |
acrophonically | |
acrophonies | |
acropodia | |
acropodium | |
acropoleis | |
acropolis | |
acropolises | |
acropolitan | |
acropora | |
acropore | |
acrorhagus | |
acrorrheuma | |
acrosarc | |
acrosarca | |
acrosarcum | |
acroscleriasis | |
acroscleroderma | |
acroscopic | |
acrose | |
acrosome | |
acrosomes | |
acrosphacelus | |
acrospire | |
acrospired | |
acrospiring | |
acrospore | |
acrosporous | |
across | |
acrostic | |
acrostical | |
acrostically | |
acrostichal | |
acrosticheae | |
acrostichic | |
acrostichoid | |
acrostichum | |
acrosticism | |
acrostics | |
acrostolia | |
acrostolion | |
acrostolium | |
acrotarsial | |
acrotarsium | |
acroteleutic | |
acroter | |
acroteral | |
acroteria | |
acroterial | |
acroteric | |
acroterion | |
acroterium | |
acroterteria | |
acrothoracica | |
acrotic | |
acrotism | |
acrotisms | |
acrotomous | |
acrotreta | |
acrotretidae | |
acrotrophic | |
acrotrophoneurosis | |
acrux | |
act | |
acta | |
actability | |
actable | |
actaea | |
actaeaceae | |
actaeon | |
actaeonidae | |
acted | |
actg | |
actiad | |
actian | |
actify | |
actification | |
actifier | |
actin | |
actinal | |
actinally | |
actinautography | |
actinautographic | |
actine | |
actinenchyma | |
acting | |
actings | |
actinia | |
actiniae | |
actinian | |
actinians | |
actiniaria | |
actiniarian | |
actinias | |
actinic | |
actinical | |
actinically | |
actinide | |
actinides | |
actinidia | |
actinidiaceae | |
actiniferous | |
actiniform | |
actinine | |
actiniochrome | |
actiniohematin | |
actiniomorpha | |
actinism | |
actinisms | |
actinistia | |
actinium | |
actiniums | |
actinobaccilli | |
actinobacilli | |
actinobacillosis | |
actinobacillotic | |
actinobacillus | |
actinoblast | |
actinobranch | |
actinobranchia | |
actinocarp | |
actinocarpic | |
actinocarpous | |
actinochemical | |
actinochemistry | |
actinocrinid | |
actinocrinidae | |
actinocrinite | |
actinocrinus | |
actinocutitis | |
actinodermatitis | |
actinodielectric | |
actinodrome | |
actinodromous | |
actinoelectric | |
actinoelectrically | |
actinoelectricity | |
actinogonidiate | |
actinogram | |
actinograph | |
actinography | |
actinographic | |
actinoid | |
actinoida | |
actinoidea | |
actinoids | |
actinolite | |
actinolitic | |
actinology | |
actinologous | |
actinologue | |
actinomere | |
actinomeric | |
actinometer | |
actinometers | |
actinometry | |
actinometric | |
actinometrical | |
actinometricy | |
actinomyces | |
actinomycese | |
actinomycesous | |
actinomycestal | |
actinomycetaceae | |
actinomycetal | |
actinomycetales | |
actinomycete | |
actinomycetous | |
actinomycin | |
actinomycoma | |
actinomycosis | |
actinomycosistic | |
actinomycotic | |
actinomyxidia | |
actinomyxidiida | |
actinomorphy | |
actinomorphic | |
actinomorphous | |
actinon | |
actinonema | |
actinoneuritis | |
actinons | |
actinophone | |
actinophonic | |
actinophore | |
actinophorous | |
actinophryan | |
actinophrys | |
actinopod | |
actinopoda | |
actinopraxis | |
actinopteran | |
actinopteri | |
actinopterygian | |
actinopterygii | |
actinopterygious | |
actinopterous | |
actinoscopy | |
actinosoma | |
actinosome | |
actinosphaerium | |
actinost | |
actinostereoscopy | |
actinostomal | |
actinostome | |
actinotherapeutic | |
actinotherapeutics | |
actinotherapy | |
actinotoxemia | |
actinotrichium | |
actinotrocha | |
actinouranium | |
actinozoa | |
actinozoal | |
actinozoan | |
actinozoon | |
actins | |
actinula | |
actinulae | |
action | |
actionability | |
actionable | |
actionably | |
actional | |
actionary | |
actioner | |
actiones | |
actionist | |
actionize | |
actionized | |
actionizing | |
actionless | |
actions | |
actious | |
actipylea | |
actium | |
activable | |
activate | |
activated | |
activates | |
activating | |
activation | |
activations | |
activator | |
activators | |
active | |
actively | |
activeness | |
actives | |
activin | |
activism | |
activisms | |
activist | |
activistic | |
activists | |
activital | |
activity | |
activities | |
activize | |
activized | |
activizing | |
actless | |
actomyosin | |
acton | |
actor | |
actory | |
actorish | |
actors | |
actorship | |
actos | |
actress | |
actresses | |
actressy | |
acts | |
actu | |
actual | |
actualisation | |
actualise | |
actualised | |
actualising | |
actualism | |
actualist | |
actualistic | |
actuality | |
actualities | |
actualization | |
actualize | |
actualized | |
actualizes | |
actualizing | |
actually | |
actualness | |
actuals | |
actuary | |
actuarial | |
actuarially | |
actuarian | |
actuaries | |
actuaryship | |
actuate | |
actuated | |
actuates | |
actuating | |
actuation | |
actuator | |
actuators | |
actuose | |
acture | |
acturience | |
actus | |
actutate | |
acuaesthesia | |
acuan | |
acuate | |
acuating | |
acuation | |
acubens | |
acuchi | |
acuclosure | |
acuductor | |
acuerdo | |
acuerdos | |
acuesthesia | |
acuity | |
acuities | |
aculea | |
aculeae | |
aculeata | |
aculeate | |
aculeated | |
aculei | |
aculeiform | |
aculeolate | |
aculeolus | |
aculeus | |
acumble | |
acumen | |
acumens | |
acuminate | |
acuminated | |
acuminating | |
acumination | |
acuminose | |
acuminous | |
acuminulate | |
acupress | |
acupressure | |
acupunctuate | |
acupunctuation | |
acupuncturation | |
acupuncturator | |
acupuncture | |
acupunctured | |
acupuncturing | |
acupuncturist | |
acupuncturists | |
acurative | |
acus | |
acusection | |
acusector | |
acushla | |
acustom | |
acutance | |
acutances | |
acutangular | |
acutate | |
acute | |
acutely | |
acutenaculum | |
acuteness | |
acuter | |
acutes | |
acutest | |
acutiator | |
acutifoliate | |
acutilinguae | |
acutilingual | |
acutilobate | |
acutiplantar | |
acutish | |
acutograve | |
acutonodose | |
acutorsion | |
acxoyatl | |
ad | |
ada | |
adactyl | |
adactylia | |
adactylism | |
adactylous | |
adad | |
adage | |
adages | |
adagy | |
adagial | |
adagietto | |
adagiettos | |
adagio | |
adagios | |
adagissimo | |
adai | |
aday | |
adays | |
adaize | |
adalat | |
adalid | |
adam | |
adamance | |
adamances | |
adamancy | |
adamancies | |
adamant | |
adamantean | |
adamantine | |
adamantinoma | |
adamantly | |
adamantness | |
adamantoblast | |
adamantoblastoma | |
adamantoid | |
adamantoma | |
adamants | |
adamas | |
adamastor | |
adambulacral | |
adamellite | |
adamhood | |
adamic | |
adamical | |
adamically | |
adamine | |
adamite | |
adamitic | |
adamitical | |
adamitism | |
adams | |
adamsia | |
adamsite | |
adamsites | |
adance | |
adangle | |
adansonia | |
adapa | |
adapid | |
adapis | |
adapt | |
adaptability | |
adaptable | |
adaptableness | |
adaptably | |
adaptation | |
adaptational | |
adaptationally | |
adaptations | |
adaptative | |
adapted | |
adaptedness | |
adapter | |
adapters | |
adapting | |
adaption | |
adaptional | |
adaptionism | |
adaptions | |
adaptitude | |
adaptive | |
adaptively | |
adaptiveness | |
adaptivity | |
adaptometer | |
adaptor | |
adaptorial | |
adaptors | |
adapts | |
adar | |
adarbitrium | |
adarme | |
adarticulation | |
adat | |
adati | |
adaty | |
adatis | |
adatom | |
adaunt | |
adaw | |
adawe | |
adawlut | |
adawn | |
adaxial | |
adazzle | |
adc | |
adcon | |
adcons | |
adcraft | |
add | |
adda | |
addability | |
addable | |
addax | |
addaxes | |
addda | |
addebted | |
added | |
addedly | |
addeem | |
addend | |
addenda | |
addends | |
addendum | |
addendums | |
adder | |
adderbolt | |
adderfish | |
adders | |
adderspit | |
adderwort | |
addy | |
addibility | |
addible | |
addice | |
addicent | |
addict | |
addicted | |
addictedness | |
addicting | |
addiction | |
addictions | |
addictive | |
addictively | |
addictiveness | |
addictives | |
addicts | |
addie | |
addiment | |
adding | |
addio | |
addis | |
addison | |
addisonian | |
addisoniana | |
addita | |
additament | |
additamentary | |
additiment | |
addition | |
additional | |
additionally | |
additionary | |
additionist | |
additions | |
addititious | |
additive | |
additively | |
additives | |
additivity | |
additory | |
additum | |
additur | |
addle | |
addlebrain | |
addlebrained | |
addled | |
addlehead | |
addleheaded | |
addleheadedly | |
addleheadedness | |
addlement | |
addleness | |
addlepate | |
addlepated | |
addlepatedness | |
addleplot | |
addles | |
addling | |
addlings | |
addlins | |
addn | |
addnl | |
addoom | |
addorsed | |
addossed | |
addr | |
address | |
addressability | |
addressable | |
addressed | |
addressee | |
addressees | |
addresser | |
addressers | |
addresses | |
addressful | |
addressing | |
addressograph | |
addressor | |
addrest | |
adds | |
addu | |
adduce | |
adduceable | |
adduced | |
adducent | |
adducer | |
adducers | |
adduces | |
adducible | |
adducing | |
adduct | |
adducted | |
adducting | |
adduction | |
adductive | |
adductor | |
adductors | |
adducts | |
addulce | |
ade | |
adead | |
adeem | |
adeemed | |
adeeming | |
adeems | |
adeep | |
adela | |
adelaide | |
adelantado | |
adelantados | |
adelante | |
adelarthra | |
adelarthrosomata | |
adelarthrosomatous | |
adelaster | |
adelbert | |
adelea | |
adeleidae | |
adelges | |
adelia | |
adelina | |
adeline | |
adeling | |
adelite | |
adeliza | |
adelocerous | |
adelochorda | |
adelocodonic | |
adelomorphic | |
adelomorphous | |
adelopod | |
adelops | |
adelphi | |
adelphian | |
adelphic | |
adelphogamy | |
adelphoi | |
adelpholite | |
adelphophagy | |
adelphous | |
ademonist | |
adempt | |
adempted | |
ademption | |
aden | |
adenalgy | |
adenalgia | |
adenanthera | |
adenase | |
adenasthenia | |
adendric | |
adendritic | |
adenectomy | |
adenectomies | |
adenectopia | |
adenectopic | |
adenemphractic | |
adenemphraxis | |
adenia | |
adeniform | |
adenyl | |
adenylic | |
adenylpyrophosphate | |
adenyls | |
adenin | |
adenine | |
adenines | |
adenitis | |
adenitises | |
adenization | |
adenoacanthoma | |
adenoblast | |
adenocancroid | |
adenocarcinoma | |
adenocarcinomas | |
adenocarcinomata | |
adenocarcinomatous | |
adenocele | |
adenocellulitis | |
adenochondroma | |
adenochondrosarcoma | |
adenochrome | |
adenocyst | |
adenocystoma | |
adenocystomatous | |
adenodermia | |
adenodiastasis | |
adenodynia | |
adenofibroma | |
adenofibrosis | |
adenogenesis | |
adenogenous | |
adenographer | |
adenography | |
adenographic | |
adenographical | |
adenohypersthenia | |
adenohypophyseal | |
adenohypophysial | |
adenohypophysis | |
adenoid | |
adenoidal | |
adenoidectomy | |
adenoidectomies | |
adenoidism | |
adenoiditis | |
adenoids | |
adenolymphocele | |
adenolymphoma | |
adenoliomyofibroma | |
adenolipoma | |
adenolipomatosis | |
adenologaditis | |
adenology | |
adenological | |
adenoma | |
adenomalacia | |
adenomas | |
adenomata | |
adenomatome | |
adenomatous | |
adenomeningeal | |
adenometritis | |
adenomycosis | |
adenomyofibroma | |
adenomyoma | |
adenomyxoma | |
adenomyxosarcoma | |
adenoncus | |
adenoneural | |
adenoneure | |
adenopathy | |
adenopharyngeal | |
adenopharyngitis | |
adenophyllous | |
adenophyma | |
adenophlegmon | |
adenophora | |
adenophore | |
adenophoreus | |
adenophorous | |
adenophthalmia | |
adenopodous | |
adenosarcoma | |
adenosarcomas | |
adenosarcomata | |
adenosclerosis | |
adenose | |
adenoses | |
adenosine | |
adenosis | |
adenostemonous | |
adenostoma | |
adenotyphoid | |
adenotyphus | |
adenotome | |
adenotomy | |
adenotomic | |
adenous | |
adenoviral | |
adenovirus | |
adenoviruses | |
adeodatus | |
adeona | |
adephaga | |
adephagan | |
adephagia | |
adephagous | |
adeps | |
adept | |
adepter | |
adeptest | |
adeption | |
adeptly | |
adeptness | |
adepts | |
adeptship | |
adequacy | |
adequacies | |
adequate | |
adequately | |
adequateness | |
adequation | |
adequative | |
adermia | |
adermin | |
adermine | |
adesmy | |
adespota | |
adespoton | |
adessenarian | |
adessive | |
adeste | |
adet | |
adeuism | |
adevism | |
adfected | |
adffroze | |
adffrozen | |
adfiliate | |
adfix | |
adfluxion | |
adfreeze | |
adfreezing | |
adfroze | |
adfrozen | |
adglutinate | |
adhafera | |
adhaka | |
adhamant | |
adhara | |
adharma | |
adherant | |
adhere | |
adhered | |
adherence | |
adherences | |
adherency | |
adherend | |
adherends | |
adherent | |
adherently | |
adherents | |
adherer | |
adherers | |
adheres | |
adherescence | |
adherescent | |
adhering | |
adhesion | |
adhesional | |
adhesions | |
adhesive | |
adhesively | |
adhesivemeter | |
adhesiveness | |
adhesives | |
adhibit | |
adhibited | |
adhibiting | |
adhibition | |
adhibits | |
adhocracy | |
adhort | |
ady | |
adiabat | |
adiabatic | |
adiabatically | |
adiabolist | |
adiactinic | |
adiadochokinesia | |
adiadochokinesis | |
adiadokokinesi | |
adiadokokinesia | |
adiagnostic | |
adiamorphic | |
adiamorphism | |
adiantiform | |
adiantum | |
adiaphanous | |
adiaphanousness | |
adiaphon | |
adiaphonon | |
adiaphora | |
adiaphoral | |
adiaphoresis | |
adiaphoretic | |
adiaphory | |
adiaphorism | |
adiaphorist | |
adiaphoristic | |
adiaphorite | |
adiaphoron | |
adiaphorous | |
adiapneustia | |
adiate | |
adiated | |
adiathermal | |
adiathermancy | |
adiathermanous | |
adiathermic | |
adiathetic | |
adiating | |
adiation | |
adib | |
adibasi | |
adicea | |
adicity | |
adiel | |
adience | |
adient | |
adieu | |
adieus | |
adieux | |
adigei | |
adighe | |
adight | |
adigranth | |
adin | |
adynamy | |
adynamia | |
adynamias | |
adynamic | |
adinida | |
adinidan | |
adinole | |
adinvention | |
adion | |
adios | |
adipate | |
adipescent | |
adiphenine | |
adipic | |
adipyl | |
adipinic | |
adipocele | |
adipocellulose | |
adipocere | |
adipoceriform | |
adipocerite | |
adipocerous | |
adipocyte | |
adipofibroma | |
adipogenic | |
adipogenous | |
adipoid | |
adipolysis | |
adipolytic | |
adipoma | |
adipomata | |
adipomatous | |
adipometer | |
adiponitrile | |
adipopectic | |
adipopexia | |
adipopexic | |
adipopexis | |
adipose | |
adiposeness | |
adiposes | |
adiposis | |
adiposity | |
adiposities | |
adiposogenital | |
adiposuria | |
adipous | |
adipsy | |
adipsia | |
adipsic | |
adipsous | |
adirondack | |
adit | |
adyta | |
adital | |
aditio | |
adyton | |
adits | |
adytta | |
adytum | |
aditus | |
adj | |
adjacence | |
adjacency | |
adjacencies | |
adjacent | |
adjacently | |
adjag | |
adject | |
adjection | |
adjectional | |
adjectitious | |
adjectival | |
adjectivally | |
adjective | |
adjectively | |
adjectives | |
adjectivism | |
adjectivitis | |
adjiga | |
adjiger | |
adjoin | |
adjoinant | |
adjoined | |
adjoinedly | |
adjoiner | |
adjoining | |
adjoiningness | |
adjoins | |
adjoint | |
adjoints | |
adjourn | |
adjournal | |
adjourned | |
adjourning | |
adjournment | |
adjournments | |
adjourns | |
adjoust | |
adjt | |
adjudge | |
adjudgeable | |
adjudged | |
adjudger | |
adjudges | |
adjudging | |
adjudgment | |
adjudicata | |
adjudicate | |
adjudicated | |
adjudicates | |
adjudicating | |
adjudication | |
adjudications | |
adjudicative | |
adjudicator | |
adjudicatory | |
adjudicators | |
adjudicature | |
adjugate | |
adjument | |
adjunct | |
adjunction | |
adjunctive | |
adjunctively | |
adjunctly | |
adjuncts | |
adjuration | |
adjurations | |
adjuratory | |
adjure | |
adjured | |
adjurer | |
adjurers | |
adjures | |
adjuring | |
adjuror | |
adjurors | |
adjust | |
adjustability | |
adjustable | |
adjustably | |
adjustage | |
adjustation | |
adjusted | |
adjuster | |
adjusters | |
adjusting | |
adjustive | |
adjustment | |
adjustmental | |
adjustments | |
adjustor | |
adjustores | |
adjustoring | |
adjustors | |
adjusts | |
adjutage | |
adjutancy | |
adjutancies | |
adjutant | |
adjutants | |
adjutantship | |
adjutator | |
adjute | |
adjutor | |
adjutory | |
adjutorious | |
adjutrice | |
adjutrix | |
adjuvant | |
adjuvants | |
adjuvate | |
adlai | |
adlay | |
adlegation | |
adlegiare | |
adlerian | |
adless | |
adlet | |
adlumia | |
adlumidin | |
adlumidine | |
adlumin | |
adlumine | |
adm | |
adman | |
admarginate | |
admass | |
admaxillary | |
admeasure | |
admeasured | |
admeasurement | |
admeasurer | |
admeasuring | |
admedial | |
admedian | |
admen | |
admensuration | |
admerveylle | |
admetus | |
admi | |
admin | |
adminicle | |
adminicula | |
adminicular | |
adminiculary | |
adminiculate | |
adminiculation | |
adminiculum | |
administer | |
administerd | |
administered | |
administerial | |
administering | |
administerings | |
administers | |
administrable | |
administrant | |
administrants | |
administrate | |
administrated | |
administrates | |
administrating | |
administration | |
administrational | |
administrationist | |
administrations | |
administrative | |
administratively | |
administrator | |
administrators | |
administratorship | |
administratress | |
administratrices | |
administratrix | |
adminstration | |
admirability | |
admirable | |
admirableness | |
admirably | |
admiral | |
admirals | |
admiralship | |
admiralships | |
admiralty | |
admiralties | |
admirance | |
admiration | |
admirations | |
admirative | |
admiratively | |
admirator | |
admire | |
admired | |
admiredly | |
admirer | |
admirers | |
admires | |
admiring | |
admiringly | |
admissability | |
admissable | |
admissibility | |
admissible | |
admissibleness | |
admissibly | |
admission | |
admissions | |
admissive | |
admissively | |
admissory | |
admit | |
admits | |
admittable | |
admittance | |
admittances | |
admittatur | |
admitted | |
admittedly | |
admittee | |
admitter | |
admitters | |
admitty | |
admittible | |
admitting | |
admix | |
admixed | |
admixes | |
admixing | |
admixt | |
admixtion | |
admixture | |
admixtures | |
admonish | |
admonished | |
admonisher | |
admonishes | |
admonishing | |
admonishingly | |
admonishment | |
admonishments | |
admonition | |
admonitioner | |
admonitionist | |
admonitions | |
admonitive | |
admonitively | |
admonitor | |
admonitory | |
admonitorial | |
admonitorily | |
admonitrix | |
admortization | |
admov | |
admove | |
admrx | |
adnascence | |
adnascent | |
adnate | |
adnation | |
adnations | |
adnephrine | |
adnerval | |
adnescent | |
adneural | |
adnex | |
adnexa | |
adnexal | |
adnexed | |
adnexitis | |
adnexopexy | |
adnominal | |
adnominally | |
adnomination | |
adnoun | |
adnouns | |
adnumber | |
ado | |
adobe | |
adobes | |
adobo | |
adobos | |
adod | |
adolesce | |
adolesced | |
adolescence | |
adolescency | |
adolescent | |
adolescently | |
adolescents | |
adolescing | |
adolf | |
adolph | |
adolphus | |
adon | |
adonai | |
adonean | |
adonia | |
adoniad | |
adonian | |
adonic | |
adonidin | |
adonin | |
adoniram | |
adonis | |
adonises | |
adonist | |
adonite | |
adonitol | |
adonize | |
adonized | |
adonizing | |
adoors | |
adoperate | |
adoperation | |
adopt | |
adoptability | |
adoptabilities | |
adoptable | |
adoptant | |
adoptative | |
adopted | |
adoptedly | |
adoptee | |
adoptees | |
adopter | |
adopters | |
adoptian | |
adoptianism | |
adoptianist | |
adopting | |
adoption | |
adoptional | |
adoptionism | |
adoptionist | |
adoptions | |
adoptious | |
adoptive | |
adoptively | |
adopts | |
ador | |
adorability | |
adorable | |
adorableness | |
adorably | |
adoral | |
adorally | |
adorant | |
adorantes | |
adoration | |
adoratory | |
adore | |
adored | |
adorer | |
adorers | |
adores | |
adoretus | |
adoring | |
adoringly | |
adorn | |
adornation | |
adorned | |
adorner | |
adorners | |
adorning | |
adorningly | |
adornment | |
adornments | |
adorno | |
adornos | |
adorns | |
adorsed | |
ados | |
adosculation | |
adossed | |
adossee | |
adoulie | |
adown | |
adoxa | |
adoxaceae | |
adoxaceous | |
adoxy | |
adoxies | |
adoxography | |
adoze | |
adp | |
adpao | |
adposition | |
adpress | |
adpromission | |
adpromissor | |
adrad | |
adradial | |
adradially | |
adradius | |
adramelech | |
adrammelech | |
adread | |
adream | |
adreamed | |
adreamt | |
adrectal | |
adrenal | |
adrenalcortical | |
adrenalectomy | |
adrenalectomies | |
adrenalectomize | |
adrenalectomized | |
adrenalectomizing | |
adrenalin | |
adrenaline | |
adrenalize | |
adrenally | |
adrenalone | |
adrenals | |
adrench | |
adrenergic | |
adrenin | |
adrenine | |
adrenitis | |
adreno | |
adrenochrome | |
adrenocortical | |
adrenocorticosteroid | |
adrenocorticotrophic | |
adrenocorticotrophin | |
adrenocorticotropic | |
adrenolysis | |
adrenolytic | |
adrenomedullary | |
adrenosterone | |
adrenotrophin | |
adrenotropic | |
adrent | |
adret | |
adry | |
adrian | |
adriana | |
adriatic | |
adrienne | |
adrift | |
adrip | |
adrogate | |
adroit | |
adroiter | |
adroitest | |
adroitly | |
adroitness | |
adroop | |
adrop | |
adrostal | |
adrostral | |
adrowse | |
adrue | |
ads | |
adsbud | |
adscendent | |
adscititious | |
adscititiously | |
adscript | |
adscripted | |
adscription | |
adscriptitious | |
adscriptitius | |
adscriptive | |
adscripts | |
adsessor | |
adsheart | |
adsignify | |
adsignification | |
adsmith | |
adsmithing | |
adsorb | |
adsorbability | |
adsorbable | |
adsorbate | |
adsorbates | |
adsorbed | |
adsorbent | |
adsorbents | |
adsorbing | |
adsorbs | |
adsorption | |
adsorptive | |
adsorptively | |
adsorptiveness | |
adspiration | |
adstipulate | |
adstipulated | |
adstipulating | |
adstipulation | |
adstipulator | |
adstrict | |
adstringe | |
adsum | |
adterminal | |
adtevac | |
aduana | |
adular | |
adularescence | |
adularescent | |
adularia | |
adularias | |
adulate | |
adulated | |
adulates | |
adulating | |
adulation | |
adulator | |
adulatory | |
adulators | |
adulatress | |
adulce | |
adullam | |
adullamite | |
adult | |
adulter | |
adulterant | |
adulterants | |
adulterate | |
adulterated | |
adulterately | |
adulterateness | |
adulterates | |
adulterating | |
adulteration | |
adulterator | |
adulterators | |
adulterer | |
adulterers | |
adulteress | |
adulteresses | |
adultery | |
adulteries | |
adulterine | |
adulterize | |
adulterous | |
adulterously | |
adulterousness | |
adulthood | |
adulticidal | |
adulticide | |
adultly | |
adultlike | |
adultness | |
adultoid | |
adultress | |
adults | |
adumbral | |
adumbrant | |
adumbrate | |
adumbrated | |
adumbrates | |
adumbrating | |
adumbration | |
adumbrations | |
adumbrative | |
adumbratively | |
adumbrellar | |
adunation | |
adunc | |
aduncate | |
aduncated | |
aduncity | |
aduncous | |
adure | |
adurent | |
adusk | |
adust | |
adustion | |
adustiosis | |
adustive | |
adv | |
advaita | |
advance | |
advanceable | |
advanced | |
advancedness | |
advancement | |
advancements | |
advancer | |
advancers | |
advances | |
advancing | |
advancingly | |
advancive | |
advantage | |
advantaged | |
advantageous | |
advantageously | |
advantageousness | |
advantages | |
advantaging | |
advect | |
advected | |
advecting | |
advection | |
advectitious | |
advective | |
advects | |
advehent | |
advena | |
advenae | |
advene | |
advenience | |
advenient | |
advent | |
advential | |
adventism | |
adventist | |
adventists | |
adventitia | |
adventitial | |
adventitious | |
adventitiously | |
adventitiousness | |
adventive | |
adventively | |
adventry | |
advents | |
adventual | |
adventure | |
adventured | |
adventureful | |
adventurement | |
adventurer | |
adventurers | |
adventures | |
adventureship | |
adventuresome | |
adventuresomely | |
adventuresomeness | |
adventuresomes | |
adventuress | |
adventuresses | |
adventuring | |
adventurish | |
adventurism | |
adventurist | |
adventuristic | |
adventurous | |
adventurously | |
adventurousness | |
adverb | |
adverbial | |
adverbiality | |
adverbialize | |
adverbially | |
adverbiation | |
adverbless | |
adverbs | |
adversa | |
adversant | |
adversary | |
adversaria | |
adversarial | |
adversaries | |
adversariness | |
adversarious | |
adversative | |
adversatively | |
adverse | |
adversed | |
adversely | |
adverseness | |
adversifoliate | |
adversifolious | |
adversing | |
adversion | |
adversity | |
adversities | |
adversive | |
adversus | |
advert | |
adverted | |
advertence | |
advertency | |
advertent | |
advertently | |
adverting | |
advertisable | |
advertise | |
advertised | |
advertisee | |
advertisement | |
advertisements | |
advertiser | |
advertisers | |
advertises | |
advertising | |
advertizable | |
advertize | |
advertized | |
advertizement | |
advertizer | |
advertizes | |
advertizing | |
adverts | |
advice | |
adviceful | |
advices | |
advisability | |
advisable | |
advisableness | |
advisably | |
advisal | |
advisatory | |
advise | |
advised | |
advisedly | |
advisedness | |
advisee | |
advisees | |
advisement | |
advisements | |
adviser | |
advisers | |
advisership | |
advises | |
advisy | |
advising | |
advisive | |
advisiveness | |
adviso | |
advisor | |
advisory | |
advisories | |
advisorily | |
advisors | |
advitant | |
advocaat | |
advocacy | |
advocacies | |
advocate | |
advocated | |
advocates | |
advocateship | |
advocatess | |
advocating | |
advocation | |
advocative | |
advocator | |
advocatory | |
advocatress | |
advocatrice | |
advocatrix | |
advoyer | |
advoke | |
advolution | |
advoteresse | |
advowee | |
advowry | |
advowsance | |
advowson | |
advowsons | |
advt | |
adward | |
adwesch | |
adz | |
adze | |
adzer | |
adzes | |
adzooks | |
ae | |
aeacides | |
aeacus | |
aeaean | |
aechmophorus | |
aecia | |
aecial | |
aecidia | |
aecidiaceae | |
aecidial | |
aecidioform | |
aecidiomycetes | |
aecidiospore | |
aecidiostage | |
aecidium | |
aeciospore | |
aeciostage | |
aeciotelia | |
aecioteliospore | |
aeciotelium | |
aecium | |
aedeagal | |
aedeagi | |
aedeagus | |
aedegi | |
aedes | |
aedicula | |
aediculae | |
aedicule | |
aedile | |
aediles | |
aedileship | |
aedilian | |
aedilic | |
aedility | |
aedilitian | |
aedilities | |
aedine | |
aedoeagi | |
aedoeagus | |
aedoeology | |
aefald | |
aefaldy | |
aefaldness | |
aefauld | |
aegagri | |
aegagropila | |
aegagropilae | |
aegagropile | |
aegagropiles | |
aegagrus | |
aegean | |
aegemony | |
aeger | |
aegerian | |
aegeriid | |
aegeriidae | |
aegialitis | |
aegicrania | |
aegilops | |
aegina | |
aeginetan | |
aeginetic | |
aegipan | |
aegyptilla | |
aegir | |
aegirine | |
aegirinolite | |
aegirite | |
aegyrite | |
aegis | |
aegises | |
aegisthus | |
aegithalos | |
aegithognathae | |
aegithognathism | |
aegithognathous | |
aegle | |
aegophony | |
aegopodium | |
aegritude | |
aegrotant | |
aegrotat | |
aeipathy | |
aelodicon | |
aeluroid | |
aeluroidea | |
aelurophobe | |
aelurophobia | |
aeluropodous | |
aenach | |
aenean | |
aeneas | |
aeneid | |
aeneolithic | |
aeneous | |
aeneus | |
aenigma | |
aenigmatite | |
aeolharmonica | |
aeolia | |
aeolian | |
aeolic | |
aeolicism | |
aeolid | |
aeolidae | |
aeolididae | |
aeolight | |
aeolina | |
aeoline | |
aeolipile | |
aeolipyle | |
aeolis | |
aeolism | |
aeolist | |
aeolistic | |
aeolodicon | |
aeolodion | |
aeolomelodicon | |
aeolopantalon | |
aeolotropy | |
aeolotropic | |
aeolotropism | |
aeolsklavier | |
aeolus | |
aeon | |
aeonial | |
aeonian | |
aeonic | |
aeonicaeonist | |
aeonist | |
aeons | |
aepyceros | |
aepyornis | |
aepyornithidae | |
aepyornithiformes | |
aeq | |
aequi | |
aequian | |
aequiculi | |
aequipalpia | |
aequor | |
aequoreal | |
aequorin | |
aequorins | |
aer | |
aerage | |
aeraria | |
aerarian | |
aerarium | |
aerate | |
aerated | |
aerates | |
aerating | |
aeration | |
aerations | |
aerator | |
aerators | |
aerenchyma | |
aerenterectasia | |
aery | |
aerial | |
aerialist | |
aerialists | |
aeriality | |
aerially | |
aerialness | |
aerials | |
aeric | |
aerical | |
aerides | |
aerie | |
aeried | |
aerier | |
aeries | |
aeriest | |
aerifaction | |
aeriferous | |
aerify | |
aerification | |
aerified | |
aerifies | |
aerifying | |
aeriform | |
aerily | |
aeriness | |
aero | |
aeroacoustic | |
aerobacter | |
aerobacteriology | |
aerobacteriological | |
aerobacteriologically | |
aerobacteriologist | |
aerobacters | |
aeroballistic | |
aeroballistics | |
aerobate | |
aerobated | |
aerobatic | |
aerobatics | |
aerobating | |
aerobe | |
aerobee | |
aerobes | |
aerobia | |
aerobian | |
aerobic | |
aerobically | |
aerobics | |
aerobiology | |
aerobiologic | |
aerobiological | |
aerobiologically | |
aerobiologist | |
aerobion | |
aerobiont | |
aerobioscope | |
aerobiosis | |
aerobiotic | |
aerobiotically | |
aerobious | |
aerobium | |
aeroboat | |
aerobranchia | |
aerobranchiate | |
aerobus | |
aerocamera | |
aerocar | |
aerocartograph | |
aerocartography | |
aerocharidae | |
aerocyst | |
aerocolpos | |
aerocraft | |
aerocurve | |
aerodermectasia | |
aerodynamic | |
aerodynamical | |
aerodynamically | |
aerodynamicist | |
aerodynamics | |
aerodyne | |
aerodynes | |
aerodone | |
aerodonetic | |
aerodonetics | |
aerodontalgia | |
aerodontia | |
aerodontic | |
aerodrome | |
aerodromes | |
aerodromics | |
aeroduct | |
aeroducts | |
aeroelastic | |
aeroelasticity | |
aeroelastics | |
aeroembolism | |
aeroenterectasia | |
aerofoil | |
aerofoils | |
aerogel | |
aerogels | |
aerogen | |
aerogene | |
aerogenes | |
aerogenesis | |
aerogenic | |
aerogenically | |
aerogenous | |
aerogeography | |
aerogeology | |
aerogeologist | |
aerognosy | |
aerogram | |
aerogramme | |
aerograms | |
aerograph | |
aerographer | |
aerography | |
aerographic | |
aerographical | |
aerographics | |
aerographies | |
aerogun | |
aerohydrodynamic | |
aerohydropathy | |
aerohydroplane | |
aerohydrotherapy | |
aerohydrous | |
aeroyacht | |
aeroides | |
aerolite | |
aerolites | |
aerolith | |
aerolithology | |
aeroliths | |
aerolitic | |
aerolitics | |
aerology | |
aerologic | |
aerological | |
aerologies | |
aerologist | |
aerologists | |
aeromaechanic | |
aeromagnetic | |
aeromancer | |
aeromancy | |
aeromantic | |
aeromarine | |
aeromechanic | |
aeromechanical | |
aeromechanics | |
aeromedical | |
aeromedicine | |
aerometeorograph | |
aerometer | |
aerometry | |
aerometric | |
aeromotor | |
aeron | |
aeronat | |
aeronaut | |
aeronautic | |
aeronautical | |
aeronautically | |
aeronautics | |
aeronautism | |
aeronauts | |
aeronef | |
aeroneurosis | |
aeronomer | |
aeronomy | |
aeronomic | |
aeronomical | |
aeronomics | |
aeronomies | |
aeronomist | |
aeropathy | |
aeropause | |
aerope | |
aeroperitoneum | |
aeroperitonia | |
aerophagy | |
aerophagia | |
aerophagist | |
aerophane | |
aerophilately | |
aerophilatelic | |
aerophilatelist | |
aerophile | |
aerophilia | |
aerophilic | |
aerophilous | |
aerophysical | |
aerophysicist | |
aerophysics | |
aerophyte | |
aerophobia | |
aerophobic | |
aerophone | |
aerophor | |
aerophore | |
aerophoto | |
aerophotography | |
aerophotos | |
aeroplane | |
aeroplaner | |
aeroplanes | |
aeroplanist | |
aeroplankton | |
aeropleustic | |
aeroporotomy | |
aeropulse | |
aerosat | |
aerosats | |
aeroscepsy | |
aeroscepsis | |
aeroscope | |
aeroscopy | |
aeroscopic | |
aeroscopically | |
aerose | |
aerosiderite | |
aerosiderolite | |
aerosinusitis | |
aerosol | |
aerosolization | |
aerosolize | |
aerosolized | |
aerosolizing | |
aerosols | |
aerospace | |
aerosphere | |
aerosporin | |
aerostat | |
aerostatic | |
aerostatical | |
aerostatics | |
aerostation | |
aerostats | |
aerosteam | |
aerotactic | |
aerotaxis | |
aerotechnical | |
aerotechnics | |
aerotherapeutics | |
aerotherapy | |
aerothermodynamic | |
aerothermodynamics | |
aerotonometer | |
aerotonometry | |
aerotonometric | |
aerotow | |
aerotropic | |
aerotropism | |
aeroview | |
aeruginous | |
aerugo | |
aerugos | |
aes | |
aesc | |
aeschylean | |
aeschylus | |
aeschynanthus | |
aeschynite | |
aeschynomene | |
aeschynomenous | |
aesculaceae | |
aesculaceous | |
aesculapian | |
aesculapius | |
aesculetin | |
aesculin | |
aesculus | |
aesir | |
aesop | |
aesopian | |
aesopic | |
aestethic | |
aesthesia | |
aesthesics | |
aesthesis | |
aesthesodic | |
aesthete | |
aesthetes | |
aesthetic | |
aesthetical | |
aesthetically | |
aesthetician | |
aestheticism | |
aestheticist | |
aestheticize | |
aesthetics | |
aesthiology | |
aesthophysiology | |
aestii | |
aestival | |
aestivate | |
aestivated | |
aestivates | |
aestivating | |
aestivation | |
aestivator | |
aestive | |
aestuary | |
aestuate | |
aestuation | |
aestuous | |
aesture | |
aestus | |
aet | |
aetat | |
aethalia | |
aethalioid | |
aethalium | |
aetheling | |
aetheogam | |
aetheogamic | |
aetheogamous | |
aether | |
aethereal | |
aethered | |
aetheric | |
aethers | |
aethionema | |
aethogen | |
aethon | |
aethrioscope | |
aethusa | |
aetian | |
aetiogenic | |
aetiology | |
aetiological | |
aetiologically | |
aetiologies | |
aetiologist | |
aetiologue | |
aetiophyllin | |
aetiotropic | |
aetiotropically | |
aetites | |
aetobatidae | |
aetobatus | |
aetolian | |
aetomorphae | |
aetosaur | |
aetosaurian | |
aetosaurus | |
aettekees | |
aevia | |
aeviternal | |
aevum | |
af | |
aface | |
afaced | |
afacing | |
afaint | |
afar | |
afara | |
afars | |
afb | |
afd | |
afdecho | |
afear | |
afeard | |
afeared | |
afebrile | |
afenil | |
afer | |
afernan | |
afetal | |
aff | |
affa | |
affability | |
affable | |
affableness | |
affably | |
affabrous | |
affair | |
affaire | |
affaires | |
affairs | |
affaite | |
affamish | |
affatuate | |
affect | |
affectability | |
affectable | |
affectate | |
affectation | |
affectationist | |
affectations | |
affected | |
affectedly | |
affectedness | |
affecter | |
affecters | |
affectibility | |
affectible | |
affecting | |
affectingly | |
affection | |
affectional | |
affectionally | |
affectionate | |
affectionately | |
affectionateness | |
affectioned | |
affectionless | |
affections | |
affectious | |
affective | |
affectively | |
affectivity | |
affectless | |
affectlessness | |
affector | |
affects | |
affectual | |
affectum | |
affectuous | |
affectus | |
affeeble | |
affeer | |
affeerer | |
affeerment | |
affeeror | |
affeir | |
affenpinscher | |
affenspalte | |
affere | |
afferent | |
afferently | |
affettuoso | |
affettuosos | |
affy | |
affiance | |
affianced | |
affiancer | |
affiances | |
affiancing | |
affiant | |
affiants | |
affich | |
affiche | |
affiches | |
afficionado | |
affidare | |
affidation | |
affidavy | |
affydavy | |
affidavit | |
affidavits | |
affied | |
affies | |
affying | |
affile | |
affiliable | |
affiliate | |
affiliated | |
affiliates | |
affiliating | |
affiliation | |
affiliations | |
affinage | |
affinal | |
affination | |
affine | |
affined | |
affinely | |
affines | |
affing | |
affinitative | |
affinitatively | |
affinite | |
affinity | |
affinities | |
affinition | |
affinitive | |
affirm | |
affirmable | |
affirmably | |
affirmance | |
affirmant | |
affirmation | |
affirmations | |
affirmative | |
affirmatively | |
affirmativeness | |
affirmatives | |
affirmatory | |
affirmed | |
affirmer | |
affirmers | |
affirming | |
affirmingly | |
affirmly | |
affirms | |
affix | |
affixable | |
affixal | |
affixation | |
affixed | |
affixer | |
affixers | |
affixes | |
affixial | |
affixing | |
affixion | |
affixment | |
affixt | |
affixture | |
afflate | |
afflated | |
afflation | |
afflatus | |
afflatuses | |
afflict | |
afflicted | |
afflictedness | |
afflicter | |
afflicting | |
afflictingly | |
affliction | |
afflictionless | |
afflictions | |
afflictive | |
afflictively | |
afflicts | |
affloof | |
afflue | |
affluence | |
affluency | |
affluent | |
affluently | |
affluentness | |
affluents | |
afflux | |
affluxes | |
affluxion | |
affodill | |
afforce | |
afforced | |
afforcement | |
afforcing | |
afford | |
affordable | |
afforded | |
affording | |
affords | |
afforest | |
afforestable | |
afforestation | |
afforestational | |
afforested | |
afforesting | |
afforestment | |
afforests | |
afformative | |
affray | |
affrayed | |
affrayer | |
affrayers | |
affraying | |
affrays | |
affranchise | |
affranchised | |
affranchisement | |
affranchising | |
affrap | |
affreight | |
affreighter | |
affreightment | |
affret | |
affrettando | |
affreux | |
affricate | |
affricated | |
affricates | |
affrication | |
affricative | |
affriended | |
affright | |
affrighted | |
affrightedly | |
affrighter | |
affrightful | |
affrightfully | |
affrighting | |
affrightingly | |
affrightment | |
affrights | |
affront | |
affronte | |
affronted | |
affrontedly | |
affrontedness | |
affrontee | |
affronter | |
affronty | |
affronting | |
affrontingly | |
affrontingness | |
affrontive | |
affrontiveness | |
affrontment | |
affronts | |
afft | |
affuse | |
affusedaffusing | |
affusion | |
affusions | |
afghan | |
afghanets | |
afghani | |
afghanis | |
afghanistan | |
afghans | |
afgod | |
afibrinogenemia | |
aficionada | |
aficionadas | |
aficionado | |
aficionados | |
afield | |
afifi | |
afikomen | |
afire | |
aflagellar | |
aflame | |
aflare | |
aflat | |
aflatoxin | |
aflatus | |
aflaunt | |
afley | |
aflicker | |
aflight | |
afloat | |
aflow | |
aflower | |
afluking | |
aflush | |
aflutter | |
afoam | |
afocal | |
afoot | |
afore | |
aforegoing | |
aforehand | |
aforementioned | |
aforenamed | |
aforesaid | |
aforethought | |
aforetime | |
aforetimes | |
aforeward | |
afortiori | |
afoul | |
afounde | |
afray | |
afraid | |
afraidness | |
aframerican | |
afrasia | |
afrasian | |
afreet | |
afreets | |
afresca | |
afresh | |
afret | |
afrete | |
afric | |
africa | |
african | |
africana | |
africander | |
africanism | |
africanist | |
africanization | |
africanize | |
africanoid | |
africans | |
africanthropus | |
afridi | |
afright | |
afrikaans | |
afrikander | |
afrikanderdom | |
afrikanderism | |
afrikaner | |
afrit | |
afrite | |
afrits | |
afro | |
afrogaea | |
afrogaean | |
afront | |
afrormosia | |
afros | |
afrown | |
afshah | |
afshar | |
aft | |
aftaba | |
after | |
afteract | |
afterage | |
afterattack | |
afterbay | |
afterband | |
afterbeat | |
afterbirth | |
afterbirths | |
afterblow | |
afterbody | |
afterbodies | |
afterbrain | |
afterbreach | |
afterbreast | |
afterburner | |
afterburners | |
afterburning | |
aftercare | |
aftercareer | |
aftercast | |
aftercataract | |
aftercause | |
afterchance | |
afterchrome | |
afterchurch | |
afterclap | |
afterclause | |
aftercome | |
aftercomer | |
aftercoming | |
aftercooler | |
aftercost | |
aftercourse | |
aftercrop | |
aftercure | |
afterdays | |
afterdamp | |
afterdate | |
afterdated | |
afterdeal | |
afterdeath | |
afterdeck | |
afterdecks | |
afterdinner | |
afterdischarge | |
afterdrain | |
afterdrops | |
aftereffect | |
aftereffects | |
aftereye | |
afterend | |
afterfall | |
afterfame | |
afterfeed | |
afterfermentation | |
afterform | |
afterfriend | |
afterfruits | |
afterfuture | |
aftergame | |
aftergas | |
afterglide | |
afterglow | |
afterglows | |
aftergo | |
aftergood | |
aftergrass | |
aftergrave | |
aftergrief | |
aftergrind | |
aftergrowth | |
afterguard | |
afterguns | |
afterhand | |
afterharm | |
afterhatch | |
afterheat | |
afterhelp | |
afterhend | |
afterhold | |
afterhope | |
afterhours | |
afteryears | |
afterimage | |
afterimages | |
afterimpression | |
afterings | |
afterking | |
afterknowledge | |
afterlife | |
afterlifetime | |
afterlight | |
afterlives | |
afterloss | |
afterlove | |
aftermark | |
aftermarket | |
aftermarriage | |
aftermass | |
aftermast | |
aftermath | |
aftermaths | |
aftermatter | |
aftermeal | |
aftermilk | |
aftermost | |
afternight | |
afternoon | |
afternoons | |
afternose | |
afternote | |
afteroar | |
afterpain | |
afterpains | |
afterpart | |
afterpast | |
afterpeak | |
afterpiece | |
afterplay | |
afterplanting | |
afterpotential | |
afterpressure | |
afterproof | |
afterrake | |
afterreckoning | |
afterrider | |
afterripening | |
afterroll | |
afters | |
afterschool | |
aftersend | |
aftersensation | |
aftershaft | |
aftershafted | |
aftershave | |
aftershaves | |
aftershine | |
aftership | |
aftershock | |
aftershocks | |
aftersong | |
aftersound | |
afterspeech | |
afterspring | |
afterstain | |
afterstate | |
afterstorm | |
afterstrain | |
afterstretch | |
afterstudy | |
aftersupper | |
afterswarm | |
afterswarming | |
afterswell | |
aftertan | |
aftertask | |
aftertaste | |
aftertastes | |
aftertax | |
afterthinker | |
afterthought | |
afterthoughted | |
afterthoughts | |
afterthrift | |
aftertime | |
aftertimes | |
aftertouch | |
aftertreatment | |
aftertrial | |
afterturn | |
aftervision | |
afterwale | |
afterwar | |
afterward | |
afterwards | |
afterwash | |
afterwhile | |
afterwisdom | |
afterwise | |
afterwit | |
afterwitted | |
afterword | |
afterwork | |
afterworking | |
afterworld | |
afterwort | |
afterwrath | |
afterwrist | |
aftmost | |
aftonian | |
aftosa | |
aftosas | |
aftward | |
aftwards | |
afunction | |
afunctional | |
afwillite | |
afzelia | |
ag | |
aga | |
agabanee | |
agacant | |
agacante | |
agacella | |
agacerie | |
agaces | |
agad | |
agada | |
agade | |
agadic | |
agag | |
again | |
againbuy | |
againsay | |
against | |
againstand | |
againward | |
agal | |
agalactia | |
agalactic | |
agalactous | |
agalawood | |
agalaxy | |
agalaxia | |
agalena | |
agalenidae | |
agalinis | |
agalite | |
agalloch | |
agallochs | |
agallochum | |
agallop | |
agalma | |
agalmatolite | |
agalwood | |
agalwoods | |
agama | |
agamae | |
agamas | |
agamemnon | |
agamete | |
agametes | |
agami | |
agamy | |
agamian | |
agamic | |
agamically | |
agamid | |
agamidae | |
agamis | |
agamist | |
agammaglobulinemia | |
agammaglobulinemic | |
agamobia | |
agamobium | |
agamogenesis | |
agamogenetic | |
agamogenetically | |
agamogony | |
agamoid | |
agamont | |
agamospermy | |
agamospore | |
agamous | |
aganglionic | |
aganice | |
aganippe | |
agao | |
agaonidae | |
agapae | |
agapai | |
agapanthus | |
agapanthuses | |
agape | |
agapeic | |
agapeically | |
agapemone | |
agapemonian | |
agapemonist | |
agapemonite | |
agapetae | |
agapeti | |
agapetid | |
agapetidae | |
agaphite | |
agapornis | |
agar | |
agaric | |
agaricaceae | |
agaricaceous | |
agaricales | |
agaricic | |
agariciform | |
agaricin | |
agaricine | |
agaricinic | |
agaricoid | |
agarics | |
agaricus | |
agaristidae | |
agarita | |
agaroid | |
agarose | |
agaroses | |
agars | |
agarum | |
agarwal | |
agas | |
agasp | |
agast | |
agastache | |
agastreae | |
agastric | |
agastroneuria | |
agata | |
agate | |
agatelike | |
agates | |
agateware | |
agatha | |
agathaea | |
agathaumas | |
agathin | |
agathis | |
agathism | |
agathist | |
agathodaemon | |
agathodaemonic | |
agathodemon | |
agathokakological | |
agathology | |
agathosma | |
agaty | |
agatiferous | |
agatiform | |
agatine | |
agatize | |
agatized | |
agatizes | |
agatizing | |
agatoid | |
agau | |
agave | |
agaves | |
agavose | |
agawam | |
agaz | |
agaze | |
agazed | |
agba | |
agcy | |
agdistis | |
age | |
ageable | |
aged | |
agedly | |
agedness | |
agednesses | |
agee | |
ageing | |
ageings | |
ageism | |
ageisms | |
ageist | |
ageists | |
agelacrinites | |
agelacrinitidae | |
agelaius | |
agelast | |
agelaus | |
ageless | |
agelessly | |
agelessness | |
agelong | |
agen | |
agena | |
agency | |
agencies | |
agend | |
agenda | |
agendaless | |
agendas | |
agendum | |
agendums | |
agene | |
agenes | |
ageneses | |
agenesia | |
agenesias | |
agenesic | |
agenesis | |
agenetic | |
agenize | |
agenized | |
agenizes | |
agenizing | |
agennesis | |
agennetic | |
agent | |
agentess | |
agential | |
agenting | |
agentival | |
agentive | |
agentives | |
agentry | |
agentries | |
agents | |
agentship | |
ageometrical | |
ager | |
agerasia | |
ageratum | |
ageratums | |
agers | |
ages | |
aget | |
agete | |
ageusia | |
ageusic | |
ageustia | |
aggadic | |
aggelation | |
aggenerate | |
agger | |
aggerate | |
aggeration | |
aggerose | |
aggers | |
aggest | |
aggie | |
aggies | |
aggiornamenti | |
aggiornamento | |
agglomerant | |
agglomerate | |
agglomerated | |
agglomerates | |
agglomeratic | |
agglomerating | |
agglomeration | |
agglomerations | |
agglomerative | |
agglomerator | |
agglutinability | |
agglutinable | |
agglutinant | |
agglutinate | |
agglutinated | |
agglutinates | |
agglutinating | |
agglutination | |
agglutinationist | |
agglutinations | |
agglutinative | |
agglutinatively | |
agglutinator | |
agglutinin | |
agglutinins | |
agglutinize | |
agglutinogen | |
agglutinogenic | |
agglutinoid | |
agglutinoscope | |
agglutogenic | |
aggrace | |
aggradation | |
aggradational | |
aggrade | |
aggraded | |
aggrades | |
aggrading | |
aggrammatism | |
aggrandise | |
aggrandised | |
aggrandisement | |
aggrandiser | |
aggrandising | |
aggrandizable | |
aggrandize | |
aggrandized | |
aggrandizement | |
aggrandizements | |
aggrandizer | |
aggrandizers | |
aggrandizes | |
aggrandizing | |
aggrate | |
aggravable | |
aggravate | |
aggravated | |
aggravates | |
aggravating | |
aggravatingly | |
aggravation | |
aggravations | |
aggravative | |
aggravator | |
aggregable | |
aggregant | |
aggregata | |
aggregatae | |
aggregate | |
aggregated | |
aggregately | |
aggregateness | |
aggregates | |
aggregating | |
aggregation | |
aggregational | |
aggregations | |
aggregative | |
aggregatively | |
aggregator | |
aggregatory | |
aggrege | |
aggress | |
aggressed | |
aggresses | |
aggressin | |
aggressing | |
aggression | |
aggressionist | |
aggressions | |
aggressive | |
aggressively | |
aggressiveness | |
aggressivity | |
aggressor | |
aggressors | |
aggry | |
aggrievance | |
aggrieve | |
aggrieved | |
aggrievedly | |
aggrievedness | |
aggrievement | |
aggrieves | |
aggrieving | |
aggro | |
aggros | |
aggroup | |
aggroupment | |
aggur | |
agha | |
aghan | |
aghanee | |
aghas | |
aghast | |
aghastness | |
aghlabite | |
aghorapanthi | |
aghori | |
agy | |
agialid | |
agib | |
agible | |
agiel | |
agyieus | |
agyiomania | |
agilawood | |
agile | |
agilely | |
agileness | |
agility | |
agilities | |
agillawood | |
agilmente | |
agin | |
agynary | |
agynarious | |
aging | |
agings | |
agynic | |
aginner | |
aginners | |
agynous | |
agio | |
agios | |
agiotage | |
agiotages | |
agyrate | |
agyria | |
agyrophobia | |
agism | |
agisms | |
agist | |
agistator | |
agisted | |
agister | |
agisting | |
agistment | |
agistor | |
agists | |
agit | |
agitability | |
agitable | |
agitant | |
agitate | |
agitated | |
agitatedly | |
agitates | |
agitating | |
agitation | |
agitational | |
agitationist | |
agitations | |
agitative | |
agitato | |
agitator | |
agitatorial | |
agitators | |
agitatrix | |
agitprop | |
agitpropist | |
agitprops | |
agitpunkt | |
agkistrodon | |
agla | |
aglaia | |
aglance | |
aglaonema | |
aglaos | |
aglaozonia | |
aglare | |
aglaspis | |
aglauros | |
agleaf | |
agleam | |
aglee | |
agley | |
aglet | |
aglethead | |
aglets | |
agly | |
aglycon | |
aglycone | |
aglycones | |
aglycons | |
aglycosuric | |
aglimmer | |
aglint | |
aglipayan | |
aglipayano | |
aglypha | |
aglyphodont | |
aglyphodonta | |
aglyphodontia | |
aglyphous | |
aglisten | |
aglitter | |
aglobulia | |
aglobulism | |
aglossa | |
aglossal | |
aglossate | |
aglossia | |
aglow | |
aglucon | |
aglucone | |
aglutition | |
agma | |
agmas | |
agmatine | |
agmatology | |
agminate | |
agminated | |
agnail | |
agnails | |
agname | |
agnamed | |
agnat | |
agnate | |
agnates | |
agnatha | |
agnathia | |
agnathic | |
agnathostomata | |
agnathostomatous | |
agnathous | |
agnatic | |
agnatical | |
agnatically | |
agnation | |
agnations | |
agnean | |
agneau | |
agneaux | |
agnel | |
agnes | |
agnification | |
agnition | |
agnize | |
agnized | |
agnizes | |
agnizing | |
agnoetae | |
agnoete | |
agnoetism | |
agnoiology | |
agnoite | |
agnoites | |
agnomen | |
agnomens | |
agnomical | |
agnomina | |
agnominal | |
agnomination | |
agnosy | |
agnosia | |
agnosias | |
agnosis | |
agnostic | |
agnostical | |
agnostically | |
agnosticism | |
agnostics | |
agnostus | |
agnotozoic | |
agnus | |
agnuses | |
ago | |
agog | |
agoge | |
agogic | |
agogics | |
agoho | |
agoing | |
agomensin | |
agomphiasis | |
agomphious | |
agomphosis | |
agon | |
agonal | |
agone | |
agones | |
agony | |
agonia | |
agoniada | |
agoniadin | |
agoniatite | |
agoniatites | |
agonic | |
agonied | |
agonies | |
agonise | |
agonised | |
agonises | |
agonising | |
agonisingly | |
agonist | |
agonista | |
agonistarch | |
agonistic | |
agonistical | |
agonistically | |
agonistics | |
agonists | |
agonium | |
agonize | |
agonized | |
agonizedly | |
agonizer | |
agonizes | |
agonizing | |
agonizingly | |
agonizingness | |
agonostomus | |
agonothet | |
agonothete | |
agonothetic | |
agons | |
agora | |
agorae | |
agoramania | |
agoranome | |
agoranomus | |
agoraphobia | |
agoraphobiac | |
agoraphobic | |
agoras | |
agorot | |
agoroth | |
agos | |
agostadero | |
agouara | |
agouta | |
agouti | |
agouty | |
agouties | |
agoutis | |
agpaite | |
agpaitic | |
agr | |
agra | |
agrace | |
agrafe | |
agrafes | |
agraffe | |
agraffee | |
agraffes | |
agrah | |
agral | |
agramed | |
agrammaphasia | |
agrammatica | |
agrammatical | |
agrammatism | |
agrammatologia | |
agrania | |
agranulocyte | |
agranulocytosis | |
agranuloplastic | |
agrapha | |
agraphia | |
agraphias | |
agraphic | |
agraria | |
agrarian | |
agrarianism | |
agrarianize | |
agrarianly | |
agrarians | |
agrauleum | |
agravic | |
agre | |
agreat | |
agreation | |
agreations | |
agree | |
agreeability | |
agreeable | |
agreeableness | |
agreeably | |
agreed | |
agreeing | |
agreeingly | |
agreement | |
agreements | |
agreer | |
agreers | |
agrees | |
agregation | |
agrege | |
agreges | |
agreing | |
agremens | |
agrement | |
agrements | |
agrest | |
agrestal | |
agrestial | |
agrestian | |
agrestic | |
agrestical | |
agrestis | |
agria | |
agrias | |
agribusiness | |
agribusinesses | |
agric | |
agricere | |
agricole | |
agricolist | |
agricolite | |
agricolous | |
agricultor | |
agricultural | |
agriculturalist | |
agriculturalists | |
agriculturally | |
agriculture | |
agriculturer | |
agricultures | |
agriculturist | |
agriculturists | |
agrief | |
agrilus | |
agrimony | |
agrimonia | |
agrimonies | |
agrimotor | |
agrin | |
agriochoeridae | |
agriochoerus | |
agriology | |
agriological | |
agriologist | |
agrionia | |
agrionid | |
agrionidae | |
agriot | |
agriotes | |
agriotype | |
agriotypidae | |
agriotypus | |
agrypnia | |
agrypniai | |
agrypnias | |
agrypnode | |
agrypnotic | |
agrise | |
agrised | |
agrising | |
agrito | |
agritos | |
agroan | |
agrobacterium | |
agrobiology | |
agrobiologic | |
agrobiological | |
agrobiologically | |
agrobiologist | |
agrodolce | |
agrogeology | |
agrogeological | |
agrogeologically | |
agrology | |
agrologic | |
agrological | |
agrologically | |
agrologies | |
agrologist | |
agrom | |
agromania | |
agromyza | |
agromyzid | |
agromyzidae | |
agron | |
agronome | |
agronomy | |
agronomial | |
agronomic | |
agronomical | |
agronomically | |
agronomics | |
agronomies | |
agronomist | |
agronomists | |
agroof | |
agrope | |
agropyron | |
agrostemma | |
agrosteral | |
agrosterol | |
agrostis | |
agrostographer | |
agrostography | |
agrostographic | |
agrostographical | |
agrostographies | |
agrostology | |
agrostologic | |
agrostological | |
agrostologist | |
agrote | |
agrotechny | |
agrotype | |
agrotis | |
aground | |
agrufe | |
agruif | |
agsam | |
agst | |
agt | |
agtbasic | |
agua | |
aguacate | |
aguacateca | |
aguada | |
aguador | |
aguaji | |
aguamas | |
aguamiel | |
aguara | |
aguardiente | |
aguavina | |
agudist | |
ague | |
aguey | |
aguelike | |
agueproof | |
agues | |
agueweed | |
agueweeds | |
aguglia | |
aguilarite | |
aguilawood | |
aguilt | |
aguinaldo | |
aguinaldos | |
aguirage | |
aguise | |
aguish | |
aguishly | |
aguishness | |
agujon | |
agunah | |
agura | |
aguroth | |
agush | |
agust | |
ah | |
aha | |
ahaaina | |
ahab | |
ahamkara | |
ahankara | |
ahantchuyuk | |
ahartalav | |
ahaunch | |
ahchoo | |
ahead | |
aheap | |
ahey | |
aheight | |
ahem | |
ahems | |
ahepatokla | |
ahet | |
ahi | |
ahimsa | |
ahimsas | |
ahind | |
ahint | |
ahypnia | |
ahir | |
ahistoric | |
ahistorical | |
ahluwalia | |
ahmadi | |
ahmadiya | |
ahmed | |
ahmedi | |
ahmet | |
ahnfeltia | |
aho | |
ahoy | |
ahold | |
aholds | |
aholt | |
ahom | |
ahong | |
ahorse | |
ahorseback | |
ahousaht | |
ahrendahronon | |
ahriman | |
ahrimanian | |
ahs | |
ahsan | |
aht | |
ahtena | |
ahu | |
ahuaca | |
ahuatle | |
ahuehuete | |
ahull | |
ahum | |
ahungered | |
ahungry | |
ahunt | |
ahura | |
ahurewa | |
ahush | |
ahuula | |
ahwal | |
ai | |
ay | |
ayacahuite | |
ayah | |
ayahausca | |
ayahs | |
ayahuasca | |
ayahuca | |
ayapana | |
aias | |
ayatollah | |
ayatollahs | |
aiawong | |
aiblins | |
aichmophobia | |
aid | |
aidable | |
aidance | |
aidant | |
aide | |
aided | |
aydendron | |
aidenn | |
aider | |
aiders | |
aides | |
aidful | |
aiding | |
aidless | |
aidman | |
aidmanmen | |
aidmen | |
aids | |
aye | |
ayegreen | |
aiel | |
ayelp | |
ayen | |
ayenbite | |
ayens | |
ayenst | |
aiery | |
ayes | |
aiger | |
aigialosaur | |
aigialosauridae | |
aigialosaurus | |
aiglet | |
aiglets | |
aiglette | |
aigre | |
aigremore | |
aigret | |
aigrets | |
aigrette | |
aigrettes | |
aiguelle | |
aiguellette | |
aiguiere | |
aiguille | |
aiguilles | |
aiguillesque | |
aiguillette | |
aiguilletted | |
ayield | |
ayin | |
ayins | |
ayyubid | |
aik | |
aikane | |
aikido | |
aikidos | |
aikinite | |
aikona | |
aikuchi | |
ail | |
ailantery | |
ailanthic | |
ailanthus | |
ailanthuses | |
ailantine | |
ailanto | |
aile | |
ailed | |
aileen | |
aileron | |
ailerons | |
aylesbury | |
ayless | |
aylet | |
ailette | |
ailie | |
ailing | |
aillt | |
ayllu | |
ailment | |
ailments | |
ails | |
ailsyte | |
ailuridae | |
ailuro | |
ailuroid | |
ailuroidea | |
ailuromania | |
ailurophile | |
ailurophilia | |
ailurophilic | |
ailurophobe | |
ailurophobia | |
ailurophobic | |
ailuropoda | |
ailuropus | |
ailurus | |
ailweed | |
aim | |
aimable | |
aimak | |
aimara | |
aymara | |
aymaran | |
ayme | |
aimed | |
aimee | |
aimer | |
aimers | |
aimful | |
aimfully | |
aiming | |
aimless | |
aimlessly | |
aimlessness | |
aimore | |
aymoro | |
aims | |
aimworthiness | |
ain | |
ainaleh | |
aine | |
ayne | |
ainee | |
ainhum | |
ainoi | |
ains | |
ainsell | |
ainsells | |
aint | |
ainu | |
ainus | |
aioli | |
aiolis | |
aion | |
ayond | |
aionial | |
ayont | |
ayous | |
air | |
aira | |
airable | |
airampo | |
airan | |
airbag | |
airbags | |
airbill | |
airbills | |
airboat | |
airboats | |
airborn | |
airborne | |
airbound | |
airbrained | |
airbrasive | |
airbrick | |
airbrush | |
airbrushed | |
airbrushes | |
airbrushing | |
airburst | |
airbursts | |
airbus | |
airbuses | |
airbusses | |
aircheck | |
airchecks | |
aircoach | |
aircoaches | |
aircraft | |
aircraftman | |
aircraftmen | |
aircrafts | |
aircraftsman | |
aircraftsmen | |
aircraftswoman | |
aircraftswomen | |
aircraftwoman | |
aircrew | |
aircrewman | |
aircrewmen | |
aircrews | |
airdate | |
airdates | |
airdock | |
airdrome | |
airdromes | |
airdrop | |
airdropped | |
airdropping | |
airdrops | |
aire | |
ayre | |
aired | |
airedale | |
airedales | |
airer | |
airers | |
airest | |
airfare | |
airfares | |
airfield | |
airfields | |
airflow | |
airflows | |
airfoil | |
airfoils | |
airframe | |
airframes | |
airfreight | |
airfreighter | |
airglow | |
airglows | |
airgraph | |
airgraphics | |
airhead | |
airheads | |
airy | |
airier | |
airiest | |
airiferous | |
airify | |
airified | |
airily | |
airiness | |
airinesses | |
airing | |
airings | |
airish | |
airless | |
airlessly | |
airlessness | |
airlift | |
airlifted | |
airlifting | |
airlifts | |
airlight | |
airlike | |
airline | |
airliner | |
airliners | |
airlines | |
airling | |
airlock | |
airlocks | |
airmail | |
airmailed | |
airmailing | |
airmails | |
airman | |
airmanship | |
airmark | |
airmarker | |
airmass | |
airmen | |
airmobile | |
airmonger | |
airn | |
airns | |
airohydrogen | |
airometer | |
airpark | |
airparks | |
airphobia | |
airplay | |
airplays | |
airplane | |
airplaned | |
airplaner | |
airplanes | |
airplaning | |
airplanist | |
airplot | |
airport | |
airports | |
airpost | |
airposts | |
airproof | |
airproofed | |
airproofing | |
airproofs | |
airs | |
airscape | |
airscapes | |
airscrew | |
airscrews | |
airshed | |
airsheds | |
airsheet | |
airship | |
airships | |
ayrshire | |
airsick | |
airsickness | |
airsome | |
airspace | |
airspaces | |
airspeed | |
airspeeds | |
airstream | |
airstrip | |
airstrips | |
airt | |
airted | |
airth | |
airthed | |
airthing | |
airths | |
airtight | |
airtightly | |
airtightness | |
airtime | |
airtimes | |
airting | |
airts | |
airview | |
airway | |
airwaybill | |
airwayman | |
airways | |
airward | |
airwards | |
airwash | |
airwave | |
airwaves | |
airwise | |
airwoman | |
airwomen | |
airworthy | |
airworthier | |
airworthiest | |
airworthiness | |
ais | |
ays | |
aischrolatreia | |
aiseweed | |
aisle | |
aisled | |
aisleless | |
aisles | |
aisling | |
aissaoua | |
aissor | |
aisteoir | |
aistopod | |
aistopoda | |
aistopodes | |
ait | |
aitch | |
aitchbone | |
aitches | |
aitchless | |
aitchpiece | |
aitesis | |
aith | |
aythya | |
aithochroi | |
aitiology | |
aition | |
aitiotropic | |
aitis | |
aitkenite | |
aits | |
aitutakian | |
ayu | |
ayubite | |
ayudante | |
ayuyu | |
ayuntamiento | |
ayuntamientos | |
ayurveda | |
ayurvedas | |
aiver | |
aivers | |
aivr | |
aiwain | |
aiwan | |
aywhere | |
aix | |
aizle | |
aizoaceae | |
aizoaceous | |
aizoon | |
ajaja | |
ajangle | |
ajar | |
ajari | |
ajatasatru | |
ajava | |
ajax | |
ajee | |
ajenjo | |
ajhar | |
ajimez | |
ajitter | |
ajiva | |
ajivas | |
ajivika | |
ajog | |
ajoint | |
ajonjoli | |
ajoure | |
ajourise | |
ajowan | |
ajowans | |
ajuga | |
ajugas | |
ajutment | |
ak | |
aka | |
akaakai | |
akal | |
akala | |
akali | |
akalimba | |
akamai | |
akamatsu | |
akamnik | |
akan | |
akanekunik | |
akania | |
akaniaceae | |
akaroa | |
akasa | |
akasha | |
akawai | |
akazga | |
akazgin | |
akazgine | |
akcheh | |
ake | |
akeake | |
akebi | |
akebia | |
aked | |
akee | |
akees | |
akehorne | |
akey | |
akeki | |
akela | |
akelas | |
akeley | |
akemboll | |
akenbold | |
akene | |
akenes | |
akenobeite | |
akepiro | |
akepiros | |
aker | |
akerite | |
aketon | |
akha | |
akhara | |
akhyana | |
akhissar | |
akhlame | |
akhmimic | |
akhoond | |
akhrot | |
akhund | |
akhundzada | |
akia | |
akiyenik | |
akim | |
akimbo | |
akin | |
akindle | |
akinesia | |
akinesic | |
akinesis | |
akinete | |
akinetic | |
aking | |
akiskemikinik | |
akka | |
akkad | |
akkadian | |
akkadist | |
akmite | |
akmudar | |
akmuddar | |
aknee | |
aknow | |
ako | |
akoasm | |
akoasma | |
akolouthia | |
akoluthia | |
akonge | |
akontae | |
akoulalion | |
akov | |
akpek | |
akra | |
akrabattine | |
akre | |
akroasis | |
akrochordite | |
akron | |
akroter | |
akroteria | |
akroterial | |
akroterion | |
akrteria | |
aktiebolag | |
aktistetae | |
aktistete | |
aktivismus | |
aktivist | |
aku | |
akuammin | |
akuammine | |
akule | |
akund | |
akvavit | |
akvavits | |
akwapim | |
al | |
ala | |
alabama | |
alabaman | |
alabamian | |
alabamians | |
alabamide | |
alabamine | |
alabandine | |
alabandite | |
alabarch | |
alabaster | |
alabastoi | |
alabastos | |
alabastra | |
alabastrian | |
alabastrine | |
alabastrites | |
alabastron | |
alabastrons | |
alabastrum | |
alabastrums | |
alablaster | |
alacha | |
alachah | |
alack | |
alackaday | |
alacran | |
alacreatine | |
alacreatinin | |
alacreatinine | |
alacrify | |
alacrious | |
alacriously | |
alacrity | |
alacrities | |
alacritous | |
alactaga | |
alada | |
aladdin | |
aladdinize | |
aladfar | |
aladinist | |
alae | |
alagao | |
alagarto | |
alagau | |
alahee | |
alai | |
alay | |
alaihi | |
alain | |
alaite | |
alaki | |
alala | |
alalia | |
alalite | |
alaloi | |
alalonga | |
alalunga | |
alalus | |
alamanni | |
alamannian | |
alamannic | |
alambique | |
alameda | |
alamedas | |
alamiqui | |
alamire | |
alamo | |
alamodality | |
alamode | |
alamodes | |
alamonti | |
alamort | |
alamos | |
alamosite | |
alamoth | |
alan | |
aland | |
alands | |
alane | |
alang | |
alange | |
alangiaceae | |
alangin | |
alangine | |
alangium | |
alani | |
alanyl | |
alanyls | |
alanin | |
alanine | |
alanines | |
alanins | |
alannah | |
alans | |
alant | |
alantic | |
alantin | |
alantol | |
alantolactone | |
alantolic | |
alants | |
alap | |
alapa | |
alar | |
alarbus | |
alares | |
alarge | |
alary | |
alaria | |
alaric | |
alarm | |
alarmable | |
alarmclock | |
alarmed | |
alarmedly | |
alarming | |
alarmingly | |
alarmingness | |
alarmism | |
alarmisms | |
alarmist | |
alarmists | |
alarms | |
alarodian | |
alarum | |
alarumed | |
alaruming | |
alarums | |
alas | |
alasas | |
alascan | |
alaska | |
alaskaite | |
alaskan | |
alaskans | |
alaskas | |
alaskite | |
alastair | |
alaster | |
alastor | |
alastors | |
alastrim | |
alate | |
alated | |
alatern | |
alaternus | |
alation | |
alations | |
alauda | |
alaudidae | |
alaudine | |
alaund | |
alaunian | |
alaunt | |
alawi | |
alazor | |
alb | |
alba | |
albacea | |
albacora | |
albacore | |
albacores | |
albahaca | |
albainn | |
alban | |
albanenses | |
albanensian | |
albany | |
albania | |
albanian | |
albanians | |
albanite | |
albarco | |
albardine | |
albarelli | |
albarello | |
albarellos | |
albarium | |
albas | |
albaspidin | |
albata | |
albatas | |
albation | |
albatros | |
albatross | |
albatrosses | |
albe | |
albedo | |
albedograph | |
albedometer | |
albedos | |
albee | |
albeit | |
alberca | |
alberene | |
albergatrice | |
alberge | |
alberghi | |
albergo | |
alberich | |
albert | |
alberta | |
albertin | |
albertina | |
albertine | |
albertinian | |
albertype | |
albertist | |
albertite | |
alberto | |
alberttype | |
albertustaler | |
albescence | |
albescent | |
albespine | |
albespyne | |
albeston | |
albetad | |
albi | |
albian | |
albicans | |
albicant | |
albication | |
albicore | |
albicores | |
albiculi | |
albify | |
albification | |
albificative | |
albified | |
albifying | |
albiflorous | |
albigenses | |
albigensian | |
albigensianism | |
albin | |
albyn | |
albinal | |
albines | |
albiness | |
albinic | |
albinism | |
albinisms | |
albinistic | |
albino | |
albinoism | |
albinos | |
albinotic | |
albinuria | |
albion | |
albireo | |
albite | |
albites | |
albitic | |
albitical | |
albitite | |
albitization | |
albitophyre | |
albizia | |
albizias | |
albizzia | |
albizzias | |
albocarbon | |
albocinereous | |
albococcus | |
albocracy | |
alboin | |
albolite | |
albolith | |
albopannin | |
albopruinose | |
alborada | |
alborak | |
alboranite | |
albrecht | |
albricias | |
albright | |
albronze | |
albruna | |
albs | |
albuca | |
albuginaceae | |
albuginea | |
albugineous | |
albugines | |
albuginitis | |
albugo | |
album | |
albumean | |
albumen | |
albumeniizer | |
albumenisation | |
albumenise | |
albumenised | |
albumeniser | |
albumenising | |
albumenization | |
albumenize | |
albumenized | |
albumenizer | |
albumenizing | |
albumenoid | |
albumens | |
albumimeter | |
albumin | |
albuminate | |
albuminaturia | |
albuminiferous | |
albuminiform | |
albuminimeter | |
albuminimetry | |
albuminiparous | |
albuminise | |
albuminised | |
albuminising | |
albuminization | |
albuminize | |
albuminized | |
albuminizing | |
albuminocholia | |
albuminofibrin | |
albuminogenous | |
albuminoid | |
albuminoidal | |
albuminolysis | |
albuminometer | |
albuminometry | |
albuminone | |
albuminorrhea | |
albuminoscope | |
albuminose | |
albuminosis | |
albuminous | |
albuminousness | |
albumins | |
albuminuria | |
albuminuric | |
albuminurophobia | |
albumoid | |
albumoscope | |
albumose | |
albumoses | |
albumosuria | |
albums | |
albuquerque | |
alburn | |
alburnous | |
alburnum | |
alburnums | |
albus | |
albutannin | |
alc | |
alca | |
alcaaba | |
alcabala | |
alcade | |
alcades | |
alcae | |
alcahest | |
alcahests | |
alcaic | |
alcaiceria | |
alcaics | |
alcaid | |
alcaide | |
alcayde | |
alcaides | |
alcaydes | |
alcalde | |
alcaldes | |
alcaldeship | |
alcaldia | |
alcali | |
alcaligenes | |
alcalizate | |
alcalzar | |
alcamine | |
alcanna | |
alcantara | |
alcantarines | |
alcapton | |
alcaptonuria | |
alcargen | |
alcarraza | |
alcatras | |
alcavala | |
alcazaba | |
alcazar | |
alcazars | |
alcazava | |
alce | |
alcedines | |
alcedinidae | |
alcedininae | |
alcedo | |
alcelaphine | |
alcelaphus | |
alces | |
alcestis | |
alchem | |
alchemy | |
alchemic | |
alchemical | |
alchemically | |
alchemies | |
alchemilla | |
alchemise | |
alchemised | |
alchemising | |
alchemist | |
alchemister | |
alchemistic | |
alchemistical | |
alchemistry | |
alchemists | |
alchemize | |
alchemized | |
alchemizing | |
alchera | |
alcheringa | |
alchimy | |
alchymy | |
alchymies | |
alchitran | |
alchochoden | |
alchornea | |
alcibiadean | |
alcibiades | |
alcicornium | |
alcid | |
alcidae | |
alcidine | |
alcids | |
alcine | |
alcyon | |
alcyonacea | |
alcyonacean | |
alcyonaria | |
alcyonarian | |
alcyone | |
alcyones | |
alcyoniaceae | |
alcyonic | |
alcyoniform | |
alcyonium | |
alcyonoid | |
alcippe | |
alclad | |
alcmene | |
alco | |
alcoate | |
alcogel | |
alcogene | |
alcohate | |
alcohol | |
alcoholate | |
alcoholature | |
alcoholdom | |
alcoholemia | |
alcoholic | |
alcoholically | |
alcoholicity | |
alcoholics | |
alcoholimeter | |
alcoholisation | |
alcoholise | |
alcoholised | |
alcoholising | |
alcoholysis | |
alcoholism | |
alcoholist | |
alcoholytic | |
alcoholizable | |
alcoholization | |
alcoholize | |
alcoholized | |
alcoholizing | |
alcoholmeter | |
alcoholmetric | |
alcoholomania | |
alcoholometer | |
alcoholometry | |
alcoholometric | |
alcoholometrical | |
alcoholophilia | |
alcohols | |
alcoholuria | |
alconde | |
alcoothionic | |
alcor | |
alcoran | |
alcoranic | |
alcoranist | |
alcornoco | |
alcornoque | |
alcosol | |
alcotate | |
alcove | |
alcoved | |
alcoves | |
alcovinometer | |
alcuinian | |
alcumy | |
ald | |
alday | |
aldamin | |
aldamine | |
aldane | |
aldazin | |
aldazine | |
aldea | |
aldeament | |
aldebaran | |
aldebaranium | |
aldehydase | |
aldehyde | |
aldehydes | |
aldehydic | |
aldehydine | |
aldehydrol | |
aldehol | |
aldeia | |
alden | |
alder | |
alderamin | |
alderfly | |
alderflies | |
alderliefest | |
alderling | |
alderman | |
aldermanate | |
aldermancy | |
aldermaness | |
aldermanic | |
aldermanical | |
aldermanity | |
aldermanly | |
aldermanlike | |
aldermanry | |
aldermanries | |
aldermanship | |
aldermen | |
aldern | |
alderney | |
alders | |
alderwoman | |
alderwomen | |
aldhafara | |
aldhafera | |
aldide | |
aldim | |
aldime | |
aldimin | |
aldimine | |
aldine | |
alditol | |
aldm | |
aldoheptose | |
aldohexose | |
aldoketene | |
aldol | |
aldolase | |
aldolases | |
aldolization | |
aldolize | |
aldolized | |
aldolizing | |
aldols | |
aldononose | |
aldopentose | |
aldose | |
aldoses | |
aldoside | |
aldosterone | |
aldosteronism | |
aldoxime | |
aldrin | |
aldrins | |
aldrovanda | |
aldus | |
ale | |
alea | |
aleak | |
aleatory | |
aleatoric | |
alebench | |
aleberry | |
alebion | |
alebush | |
alec | |
alecithal | |
alecithic | |
alecize | |
aleck | |
aleconner | |
alecost | |
alecs | |
alectoria | |
alectoriae | |
alectorides | |
alectoridine | |
alectorioid | |
alectoris | |
alectoromachy | |
alectoromancy | |
alectoromorphae | |
alectoromorphous | |
alectoropodes | |
alectoropodous | |
alectryomachy | |
alectryomancy | |
alectrion | |
alectryon | |
alectrionidae | |
alecup | |
alee | |
alef | |
alefnull | |
alefs | |
aleft | |
alefzero | |
alegar | |
alegars | |
aleger | |
alehoof | |
alehouse | |
alehouses | |
aleyard | |
aleikoum | |
aleikum | |
aleiptes | |
aleiptic | |
aleyrodes | |
aleyrodid | |
aleyrodidae | |
alejandro | |
aleknight | |
alem | |
alemana | |
alemanni | |
alemannian | |
alemannic | |
alemannish | |
alembic | |
alembicate | |
alembicated | |
alembics | |
alembroth | |
alemite | |
alemmal | |
alemonger | |
alen | |
alencon | |
alencons | |
alenge | |
alength | |
alentours | |
alenu | |
aleochara | |
aleph | |
alephs | |
alephzero | |
alepidote | |
alepine | |
alepole | |
alepot | |
aleppine | |
aleppo | |
alerce | |
alerion | |
alerse | |
alert | |
alerta | |
alerted | |
alertedly | |
alerter | |
alerters | |
alertest | |
alerting | |
alertly | |
alertness | |
alerts | |
ales | |
alesan | |
aleshot | |
alestake | |
aletap | |
aletaster | |
alethea | |
alethic | |
alethiology | |
alethiologic | |
alethiological | |
alethiologist | |
alethopteis | |
alethopteroid | |
alethoscope | |
aletocyte | |
aletris | |
alette | |
aleucaemic | |
aleucemic | |
aleukaemic | |
aleukemic | |
aleurites | |
aleuritic | |
aleurobius | |
aleurodes | |
aleurodidae | |
aleuromancy | |
aleurometer | |
aleuron | |
aleuronat | |
aleurone | |
aleurones | |
aleuronic | |
aleurons | |
aleuroscope | |
aleut | |
aleutian | |
aleutians | |
aleutic | |
aleutite | |
alevin | |
alevins | |
alew | |
alewhap | |
alewife | |
alewives | |
alex | |
alexander | |
alexanders | |
alexandra | |
alexandreid | |
alexandria | |
alexandrian | |
alexandrianism | |
alexandrina | |
alexandrine | |
alexandrines | |
alexandrite | |
alexas | |
alexia | |
alexian | |
alexias | |
alexic | |
alexin | |
alexine | |
alexines | |
alexinic | |
alexins | |
alexipharmacon | |
alexipharmacum | |
alexipharmic | |
alexipharmical | |
alexipyretic | |
alexis | |
alexiteric | |
alexiterical | |
alexius | |
alezan | |
alf | |
alfa | |
alfaje | |
alfaki | |
alfakis | |
alfalfa | |
alfalfas | |
alfaqui | |
alfaquin | |
alfaquins | |
alfaquis | |
alfarga | |
alfas | |
alfenide | |
alferes | |
alferez | |
alfet | |
alfilaria | |
alfileria | |
alfilerilla | |
alfilerillo | |
alfin | |
alfiona | |
alfione | |
alfirk | |
alfoncino | |
alfonsin | |
alfonso | |
alforge | |
alforja | |
alforjas | |
alfred | |
alfreda | |
alfresco | |
alfridary | |
alfridaric | |
alfur | |
alfurese | |
alfuro | |
alg | |
alga | |
algae | |
algaecide | |
algaeology | |
algaeological | |
algaeologist | |
algaesthesia | |
algaesthesis | |
algal | |
algalia | |
algarad | |
algarde | |
algaroba | |
algarobas | |
algarot | |
algaroth | |
algarroba | |
algarrobilla | |
algarrobin | |
algarsyf | |
algarsife | |
algas | |
algate | |
algates | |
algazel | |
algebar | |
algebra | |
algebraic | |
algebraical | |
algebraically | |
algebraist | |
algebraists | |
algebraization | |
algebraize | |
algebraized | |
algebraizing | |
algebras | |
algebrization | |
algedi | |
algedo | |
algedonic | |
algedonics | |
algefacient | |
algenib | |
algeria | |
algerian | |
algerians | |
algerienne | |
algerine | |
algerines | |
algerita | |
algerite | |
algernon | |
algesia | |
algesic | |
algesimeter | |
algesiometer | |
algesireceptor | |
algesis | |
algesthesis | |
algetic | |
algy | |
algic | |
algicidal | |
algicide | |
algicides | |
algid | |
algidity | |
algidities | |
algidness | |
algieba | |
algiers | |
algific | |
algin | |
alginate | |
alginates | |
algine | |
alginic | |
algins | |
alginuresis | |
algiomuscular | |
algist | |
algivorous | |
algocyan | |
algodon | |
algodoncillo | |
algodonite | |
algoesthesiometer | |
algogenic | |
algoid | |
algol | |
algolagny | |
algolagnia | |
algolagnic | |
algolagnist | |
algology | |
algological | |
algologically | |
algologies | |
algologist | |
algoman | |
algometer | |
algometry | |
algometric | |
algometrical | |
algometrically | |
algomian | |
algomic | |
algonkian | |
algonquian | |
algonquians | |
algonquin | |
algonquins | |
algophagous | |
algophilia | |
algophilist | |
algophobia | |
algor | |
algorab | |
algores | |
algorism | |
algorismic | |
algorisms | |
algorist | |
algoristic | |
algorithm | |
algorithmic | |
algorithmically | |
algorithms | |
algors | |
algosis | |
algous | |
algovite | |
algraphy | |
algraphic | |
alguacil | |
alguazil | |
alguifou | |
algum | |
algums | |
alhacena | |
alhagi | |
alhambra | |
alhambraic | |
alhambresque | |
alhandal | |
alhena | |
alhenna | |
alhet | |
aly | |
alia | |
alya | |
aliamenta | |
alias | |
aliased | |
aliases | |
aliasing | |
alibamu | |
alibangbang | |
alibi | |
alibied | |
alibies | |
alibiing | |
alibility | |
alibis | |
alible | |
alicant | |
alice | |
alichel | |
alichino | |
alicia | |
alicyclic | |
alick | |
alicoche | |
alycompaine | |
alictisal | |
alicula | |
aliculae | |
alida | |
alidad | |
alidada | |
alidade | |
alidades | |
alidads | |
alids | |
alien | |
alienability | |
alienabilities | |
alienable | |
alienage | |
alienages | |
alienate | |
alienated | |
alienates | |
alienating | |
alienation | |
alienator | |
aliency | |
aliene | |
aliened | |
alienee | |
alienees | |
aliener | |
alieners | |
alienicola | |
alienicolae | |
alienigenate | |
aliening | |
alienism | |
alienisms | |
alienist | |
alienists | |
alienize | |
alienly | |
alienness | |
alienor | |
alienors | |
aliens | |
alienship | |
aliesterase | |
aliet | |
aliethmoid | |
aliethmoidal | |
alif | |
alife | |
aliferous | |
aliform | |
alifs | |
aligerous | |
alight | |
alighted | |
alighten | |
alighting | |
alightment | |
alights | |
align | |
aligned | |
aligner | |
aligners | |
aligning | |
alignment | |
alignments | |
aligns | |
aligreek | |
alii | |
aliya | |
aliyah | |
aliyahaliyahs | |
aliyas | |
aliyos | |
aliyoth | |
aliipoe | |
alike | |
alikeness | |
alikewise | |
alikuluf | |
alikulufan | |
alilonghi | |
alima | |
alimenation | |
aliment | |
alimental | |
alimentally | |
alimentary | |
alimentariness | |
alimentation | |
alimentative | |
alimentatively | |
alimentativeness | |
alimented | |
alimenter | |
alimentic | |
alimenting | |
alimentive | |
alimentiveness | |
alimentotherapy | |
aliments | |
alimentum | |
alimony | |
alimonied | |
alimonies | |
alymphia | |
alymphopotent | |
alin | |
alinasal | |
aline | |
alineation | |
alined | |
alinement | |
aliner | |
aliners | |
alines | |
alingual | |
alining | |
alinit | |
alinota | |
alinotum | |
alintatao | |
aliofar | |
alioth | |
alipata | |
aliped | |
alipeds | |
aliphatic | |
alipin | |
alypin | |
alypine | |
aliptae | |
alipteria | |
alipterion | |
aliptes | |
aliptic | |
aliptteria | |
alypum | |
aliquant | |
aliquid | |
aliquot | |
aliquots | |
alisanders | |
aliseptal | |
alish | |
alisier | |
alisma | |
alismaceae | |
alismaceous | |
alismad | |
alismal | |
alismales | |
alismataceae | |
alismoid | |
aliso | |
alison | |
alisonite | |
alisos | |
alisp | |
alispheno | |
alisphenoid | |
alisphenoidal | |
alysson | |
alyssum | |
alyssums | |
alist | |
alister | |
alit | |
alytarch | |
alite | |
aliter | |
alytes | |
ality | |
alitrunk | |
aliturgic | |
aliturgical | |
aliunde | |
alive | |
aliveness | |
alives | |
alivincular | |
alix | |
alizarate | |
alizari | |
alizarin | |
alizarine | |
alizarins | |
aljama | |
aljamado | |
aljamia | |
aljamiado | |
aljamiah | |
aljoba | |
aljofaina | |
alk | |
alkahest | |
alkahestic | |
alkahestica | |
alkahestical | |
alkahests | |
alkaid | |
alkalamide | |
alkalemia | |
alkalescence | |
alkalescency | |
alkalescent | |
alkali | |
alkalic | |
alkalies | |
alkaliferous | |
alkalify | |
alkalifiable | |
alkalified | |
alkalifies | |
alkalifying | |
alkaligen | |
alkaligenous | |
alkalimeter | |
alkalimetry | |
alkalimetric | |
alkalimetrical | |
alkalimetrically | |
alkalin | |
alkaline | |
alkalinisation | |
alkalinise | |
alkalinised | |
alkalinising | |
alkalinity | |
alkalinities | |
alkalinization | |
alkalinize | |
alkalinized | |
alkalinizes | |
alkalinizing | |
alkalinuria | |
alkalis | |
alkalisable | |
alkalisation | |
alkalise | |
alkalised | |
alkaliser | |
alkalises | |
alkalising | |
alkalizable | |
alkalizate | |
alkalization | |
alkalize | |
alkalized | |
alkalizer | |
alkalizes | |
alkalizing | |
alkaloid | |
alkaloidal | |
alkaloids | |
alkalometry | |
alkalosis | |
alkalous | |
alkalurops | |
alkamin | |
alkamine | |
alkanal | |
alkane | |
alkanes | |
alkanet | |
alkanethiol | |
alkanets | |
alkanna | |
alkannin | |
alkanol | |
alkaphrah | |
alkapton | |
alkaptone | |
alkaptonuria | |
alkaptonuric | |
alkargen | |
alkarsin | |
alkarsine | |
alkatively | |
alkedavy | |
alkekengi | |
alkene | |
alkenes | |
alkenyl | |
alkenna | |
alkermes | |
alkes | |
alky | |
alkyd | |
alkide | |
alkyds | |
alkies | |
alkyl | |
alkylamine | |
alkylamino | |
alkylarylsulfonate | |
alkylate | |
alkylated | |
alkylates | |
alkylating | |
alkylation | |
alkylbenzenesulfonate | |
alkylbenzenesulfonates | |
alkylene | |
alkylic | |
alkylidene | |
alkylize | |
alkylogen | |
alkylol | |
alkyloxy | |
alkyls | |
alkin | |
alkine | |
alkyne | |
alkines | |
alkynes | |
alkitran | |
alkool | |
alkoran | |
alkoranic | |
alkoxy | |
alkoxid | |
alkoxide | |
alkoxyl | |
all | |
allabuta | |
allachesthesia | |
allactite | |
allaeanthus | |
allagite | |
allagophyllous | |
allagostemonous | |
allah | |
allay | |
allayed | |
allayer | |
allayers | |
allaying | |
allayment | |
allays | |
allalinite | |
allamanda | |
allamonti | |
allamoth | |
allamotti | |
allan | |
allanite | |
allanites | |
allanitic | |
allantiasis | |
allantochorion | |
allantoic | |
allantoid | |
allantoidal | |
allantoidea | |
allantoidean | |
allantoides | |
allantoidian | |
allantoin | |
allantoinase | |
allantoinuria | |
allantois | |
allantoxaidin | |
allanturic | |
allargando | |
allasch | |
allassotonic | |
allative | |
allatrate | |
allbone | |
alle | |
allecret | |
allect | |
allectory | |
allegata | |
allegate | |
allegation | |
allegations | |
allegator | |
allegatum | |
allege | |
allegeable | |
alleged | |
allegedly | |
allegement | |
alleger | |
allegers | |
alleges | |
allegheny | |
alleghenian | |
allegiance | |
allegiances | |
allegiancy | |
allegiant | |
allegiantly | |
allegiare | |
alleging | |
allegory | |
allegoric | |
allegorical | |
allegorically | |
allegoricalness | |
allegories | |
allegorisation | |
allegorise | |
allegorised | |
allegoriser | |
allegorising | |
allegorism | |
allegorist | |
allegorister | |
allegoristic | |
allegorists | |
allegorization | |
allegorize | |
allegorized | |
allegorizer | |
allegorizing | |
allegresse | |
allegretto | |
allegrettos | |
allegro | |
allegros | |
alley | |
alleyed | |
alleyite | |
alleys | |
alleyway | |
alleyways | |
allele | |
alleles | |
alleleu | |
allelic | |
allelism | |
allelisms | |
allelocatalytic | |
allelomorph | |
allelomorphic | |
allelomorphism | |
allelopathy | |
allelotropy | |
allelotropic | |
allelotropism | |
alleluia | |
alleluiah | |
alleluias | |
alleluiatic | |
alleluja | |
allelvia | |
allemand | |
allemande | |
allemandes | |
allemands | |
allemontite | |
allen | |
allenarly | |
allene | |
alleniate | |
allentando | |
allentato | |
allentiac | |
allentiacan | |
aller | |
allergen | |
allergenic | |
allergenicity | |
allergens | |
allergy | |
allergia | |
allergic | |
allergies | |
allergin | |
allergins | |
allergist | |
allergists | |
allergology | |
allerion | |
allesthesia | |
allethrin | |
alleve | |
alleviant | |
alleviate | |
alleviated | |
alleviater | |
alleviaters | |
alleviates | |
alleviating | |
alleviatingly | |
alleviation | |
alleviations | |
alleviative | |
alleviator | |
alleviatory | |
alleviators | |
allez | |
allgood | |
allgovite | |
allhallow | |
allhallows | |
allhallowtide | |
allheal | |
allheals | |
ally | |
alliable | |
alliably | |
alliaceae | |
alliaceous | |
alliage | |
alliance | |
allianced | |
alliancer | |
alliances | |
alliancing | |
alliant | |
alliaria | |
allicampane | |
allice | |
allicholly | |
alliciency | |
allicient | |
allicin | |
allicins | |
allicit | |
allie | |
allied | |
allies | |
alligate | |
alligated | |
alligating | |
alligation | |
alligations | |
alligator | |
alligatored | |
alligatorfish | |
alligatorfishes | |
alligatoring | |
alligators | |
allyic | |
allying | |
allyl | |
allylamine | |
allylate | |
allylation | |
allylene | |
allylic | |
allyls | |
allylthiourea | |
allineate | |
allineation | |
allionia | |
allioniaceae | |
allyou | |
allis | |
allision | |
alliteral | |
alliterate | |
alliterated | |
alliterates | |
alliterating | |
alliteration | |
alliterational | |
alliterationist | |
alliterations | |
alliterative | |
alliteratively | |
alliterativeness | |
alliterator | |
allituric | |
allium | |
alliums | |
allivalite | |
allmouth | |
allmouths | |
allness | |
allo | |
alloantibody | |
allobar | |
allobaric | |
allobars | |
allobroges | |
allobrogical | |
allocability | |
allocable | |
allocaffeine | |
allocatable | |
allocate | |
allocated | |
allocatee | |
allocates | |
allocating | |
allocation | |
allocations | |
allocator | |
allocators | |
allocatur | |
allocheiria | |
allochetia | |
allochetite | |
allochezia | |
allochiral | |
allochirally | |
allochiria | |
allochlorophyll | |
allochroic | |
allochroite | |
allochromatic | |
allochroous | |
allochthon | |
allochthonous | |
allocyanine | |
allocinnamic | |
alloclase | |
alloclasite | |
allocochick | |
allocryptic | |
allocrotonic | |
allocthonous | |
allocute | |
allocution | |
allocutive | |
allod | |
allodelphite | |
allodesmism | |
allodge | |
allody | |
allodia | |
allodial | |
allodialism | |
allodialist | |
allodiality | |
allodially | |
allodian | |
allodiary | |
allodiaries | |
allodies | |
allodification | |
allodium | |
allods | |
alloeosis | |
alloeostropha | |
alloeotic | |
alloerotic | |
alloerotism | |
allogamy | |
allogamies | |
allogamous | |
allogene | |
allogeneic | |
allogeneity | |
allogeneous | |
allogenic | |
allogenically | |
allograft | |
allograph | |
allographic | |
alloy | |
alloyage | |
alloyed | |
alloying | |
alloimmune | |
alloiogenesis | |
alloiometry | |
alloiometric | |
alloys | |
alloisomer | |
alloisomeric | |
alloisomerism | |
allokinesis | |
allokinetic | |
allokurtic | |
allolalia | |
allolalic | |
allomerism | |
allomerization | |
allomerize | |
allomerized | |
allomerizing | |
allomerous | |
allometry | |
allometric | |
allomorph | |
allomorphic | |
allomorphism | |
allomorphite | |
allomucic | |
allonge | |
allonges | |
allonym | |
allonymous | |
allonymously | |
allonyms | |
allonomous | |
alloo | |
allopalladium | |
allopath | |
allopathetic | |
allopathetically | |
allopathy | |
allopathic | |
allopathically | |
allopathies | |
allopathist | |
allopaths | |
allopatry | |
allopatric | |
allopatrically | |
allopelagic | |
allophanamid | |
allophanamide | |
allophanate | |
allophanates | |
allophane | |
allophanic | |
allophyle | |
allophylian | |
allophylic | |
allophylus | |
allophite | |
allophytoid | |
allophone | |
allophones | |
allophonic | |
allophonically | |
allophore | |
alloplasm | |
alloplasmatic | |
alloplasmic | |
alloplast | |
alloplasty | |
alloplastic | |
alloploidy | |
allopolyploid | |
allopolyploidy | |
allopsychic | |
allopurinol | |
alloquy | |
alloquial | |
alloquialism | |
allorhythmia | |
allorrhyhmia | |
allorrhythmic | |
allosaur | |
allosaurus | |
allose | |
allosematic | |
allosyndesis | |
allosyndetic | |
allosome | |
allosteric | |
allosterically | |
allot | |
alloted | |
allotee | |
allotelluric | |
allotheism | |
allotheist | |
allotheistic | |
allotheria | |
allothigene | |
allothigenetic | |
allothigenetically | |
allothigenic | |
allothigenous | |
allothimorph | |
allothimorphic | |
allothogenic | |
allothogenous | |
allotype | |
allotypes | |
allotypy | |
allotypic | |
allotypical | |
allotypically | |
allotypies | |
allotment | |
allotments | |
allotransplant | |
allotransplantation | |
allotrylic | |
allotriodontia | |
allotriognathi | |
allotriomorphic | |
allotriophagy | |
allotriophagia | |
allotriuria | |
allotrope | |
allotropes | |
allotrophic | |
allotropy | |
allotropic | |
allotropical | |
allotropically | |
allotropicity | |
allotropies | |
allotropism | |
allotropize | |
allotropous | |
allots | |
allottable | |
allotted | |
allottee | |
allottees | |
allotter | |
allottery | |
allotters | |
allotting | |
allover | |
allovers | |
allow | |
allowable | |
allowableness | |
allowably | |
allowance | |
allowanced | |
allowances | |
allowancing | |
allowed | |
allowedly | |
allower | |
allowing | |
allows | |
alloxan | |
alloxanate | |
alloxanic | |
alloxans | |
alloxantin | |
alloxy | |
alloxyproteic | |
alloxuraemia | |
alloxuremia | |
alloxuric | |
allozooid | |
allround | |
alls | |
allseed | |
allseeds | |
allspice | |
allspices | |
allthing | |
allthorn | |
alltud | |
allude | |
alluded | |
alludes | |
alluding | |
allumette | |
allumine | |
alluminor | |
allurance | |
allure | |
allured | |
allurement | |
allurements | |
allurer | |
allurers | |
allures | |
alluring | |
alluringly | |
alluringness | |
allusion | |
allusions | |
allusive | |
allusively | |
allusiveness | |
allusory | |
allutterly | |
alluvia | |
alluvial | |
alluvials | |
alluviate | |
alluviation | |
alluvio | |
alluvion | |
alluvions | |
alluvious | |
alluvium | |
alluviums | |
alluvivia | |
alluviviums | |
allwhere | |
allwhither | |
allwork | |
allworthy | |
alma | |
almacantar | |
almacen | |
almacenista | |
almach | |
almaciga | |
almacigo | |
almadia | |
almadie | |
almagest | |
almagests | |
almagra | |
almah | |
almahs | |
almain | |
almaine | |
alman | |
almanac | |
almanacs | |
almander | |
almandine | |
almandines | |
almandite | |
almanner | |
almas | |
alme | |
almeh | |
almehs | |
almeidina | |
almemar | |
almemars | |
almemor | |
almendro | |
almendron | |
almery | |
almerian | |
almeries | |
almeriite | |
almes | |
almice | |
almicore | |
almida | |
almight | |
almighty | |
almightily | |
almightiness | |
almique | |
almira | |
almirah | |
almistry | |
almner | |
almners | |
almochoden | |
almocrebe | |
almogavar | |
almohad | |
almohade | |
almohades | |
almoign | |
almoin | |
almon | |
almonage | |
almond | |
almondy | |
almondlike | |
almonds | |
almoner | |
almoners | |
almonership | |
almoning | |
almonry | |
almonries | |
almoravid | |
almoravide | |
almoravides | |
almose | |
almost | |
almous | |
alms | |
almsdeed | |
almsfolk | |
almsful | |
almsgiver | |
almsgiving | |
almshouse | |
almshouses | |
almsman | |
almsmen | |
almsmoney | |
almswoman | |
almswomen | |
almucantar | |
almuce | |
almuces | |
almud | |
almude | |
almudes | |
almuds | |
almuerzo | |
almug | |
almugs | |
almuredin | |
almury | |
almuten | |
aln | |
alnage | |
alnager | |
alnagership | |
alnaschar | |
alnascharism | |
alnath | |
alnein | |
alnico | |
alnicoes | |
alnilam | |
alniresinol | |
alnitak | |
alnitham | |
alniviridol | |
alnoite | |
alnuin | |
alnus | |
alo | |
aloadae | |
alocasia | |
alochia | |
alod | |
aloddia | |
alody | |
alodia | |
alodial | |
alodialism | |
alodialist | |
alodiality | |
alodially | |
alodialty | |
alodian | |
alodiary | |
alodiaries | |
alodies | |
alodification | |
alodium | |
aloe | |
aloed | |
aloedary | |
aloelike | |
aloemodin | |
aloeroot | |
aloes | |
aloesol | |
aloeswood | |
aloetic | |
aloetical | |
aloewood | |
aloft | |
alogy | |
alogia | |
alogian | |
alogical | |
alogically | |
alogism | |
alogotrophy | |
aloha | |
alohas | |
aloyau | |
aloid | |
aloin | |
aloins | |
alois | |
aloysia | |
aloisiite | |
aloysius | |
aloma | |
alomancy | |
alone | |
alonely | |
aloneness | |
along | |
alongships | |
alongshore | |
alongshoreman | |
alongside | |
alongst | |
alonso | |
alonsoa | |
alonzo | |
aloof | |
aloofe | |
aloofly | |
aloofness | |
aloose | |
alop | |
alopathic | |
alopecia | |
alopecias | |
alopecic | |
alopecist | |
alopecoid | |
alopecurus | |
alopekai | |
alopeke | |
alophas | |
alopias | |
alopiidae | |
alorcinic | |
alosa | |
alose | |
alouatta | |
alouatte | |
aloud | |
alouette | |
alouettes | |
alout | |
alow | |
alowe | |
aloxite | |
alp | |
alpaca | |
alpacas | |
alpargata | |
alpasotes | |
alpax | |
alpeen | |
alpen | |
alpenglow | |
alpenhorn | |
alpenhorns | |
alpenstock | |
alpenstocker | |
alpenstocks | |
alpestral | |
alpestrian | |
alpestrine | |
alpha | |
alphabet | |
alphabetary | |
alphabetarian | |
alphabeted | |
alphabetic | |
alphabetical | |
alphabetically | |
alphabetics | |
alphabetiform | |
alphabeting | |
alphabetisation | |
alphabetise | |
alphabetised | |
alphabetiser | |
alphabetising | |
alphabetism | |
alphabetist | |
alphabetization | |
alphabetize | |
alphabetized | |
alphabetizer | |
alphabetizers | |
alphabetizes | |
alphabetizing | |
alphabetology | |
alphabets | |
alphameric | |
alphamerical | |
alphamerically | |
alphanumeric | |
alphanumerical | |
alphanumerically | |
alphanumerics | |
alphard | |
alphas | |
alphatoluic | |
alphean | |
alphecca | |
alphenic | |
alpheratz | |
alpheus | |
alphyl | |
alphyls | |
alphin | |
alphyn | |
alphitomancy | |
alphitomorphous | |
alphol | |
alphonist | |
alphonse | |
alphonsin | |
alphonsine | |
alphonsism | |
alphonso | |
alphorn | |
alphorns | |
alphos | |
alphosis | |
alphosises | |
alpian | |
alpid | |
alpieu | |
alpigene | |
alpine | |
alpinely | |
alpinery | |
alpines | |
alpinesque | |
alpinia | |
alpiniaceae | |
alpinism | |
alpinisms | |
alpinist | |
alpinists | |
alpist | |
alpiste | |
alps | |
alpujarra | |
alqueire | |
alquier | |
alquifou | |
alraun | |
already | |
alreadiness | |
alright | |
alrighty | |
alroot | |
alruna | |
alrune | |
als | |
alsatia | |
alsatian | |
alsbachite | |
alshain | |
alsifilm | |
alsike | |
alsikes | |
alsinaceae | |
alsinaceous | |
alsine | |
alsmekill | |
also | |
alsoon | |
alsophila | |
alstonia | |
alstonidine | |
alstonine | |
alstonite | |
alstroemeria | |
alsweill | |
alswith | |
alt | |
altaian | |
altaic | |
altaid | |
altair | |
altaite | |
altaltissimo | |
altamira | |
altar | |
altarage | |
altared | |
altarist | |
altarlet | |
altarpiece | |
altarpieces | |
altars | |
altarwise | |
altazimuth | |
alter | |
alterability | |
alterable | |
alterableness | |
alterably | |
alterant | |
alterants | |
alterate | |
alteration | |
alterations | |
alterative | |
alteratively | |
altercate | |
altercated | |
altercating | |
altercation | |
altercations | |
altercative | |
altered | |
alteregoism | |
alteregoistic | |
alterer | |
alterers | |
altering | |
alterity | |
alterius | |
alterman | |
altern | |
alternacy | |
alternamente | |
alternance | |
alternant | |
alternanthera | |
alternaria | |
alternariose | |
alternat | |
alternate | |
alternated | |
alternately | |
alternateness | |
alternater | |
alternates | |
alternating | |
alternatingly | |
alternation | |
alternationist | |
alternations | |
alternative | |
alternatively | |
alternativeness | |
alternatives | |
alternativity | |
alternativo | |
alternator | |
alternators | |
alterne | |
alternifoliate | |
alternipetalous | |
alternipinnate | |
alternisepalous | |
alternity | |
alternize | |
alterocentric | |
alters | |
alterum | |
altesse | |
alteza | |
altezza | |
althaea | |
althaeas | |
althaein | |
althea | |
altheas | |
althein | |
altheine | |
althing | |
althionic | |
altho | |
althorn | |
althorns | |
although | |
altica | |
alticamelus | |
altify | |
altigraph | |
altilik | |
altiloquence | |
altiloquent | |
altimeter | |
altimeters | |
altimetry | |
altimetrical | |
altimetrically | |
altimettrically | |
altin | |
altincar | |
altingiaceae | |
altingiaceous | |
altininck | |
altiplanicie | |
altiplano | |
altiscope | |
altisonant | |
altisonous | |
altissimo | |
altitonant | |
altitude | |
altitudes | |
altitudinal | |
altitudinarian | |
altitudinous | |
alto | |
altocumulus | |
altogether | |
altogetherness | |
altoist | |
altometer | |
altos | |
altostratus | |
altoun | |
altrices | |
altricial | |
altropathy | |
altrose | |
altruism | |
altruisms | |
altruist | |
altruistic | |
altruistically | |
altruists | |
alts | |
altschin | |
altumal | |
altun | |
alture | |
altus | |
aluco | |
aluconidae | |
aluconinae | |
aludel | |
aludels | |
aludra | |
alula | |
alulae | |
alular | |
alulet | |
alulim | |
alum | |
alumbloom | |
alumbrado | |
alumel | |
alumen | |
alumetize | |
alumian | |
alumic | |
alumiferous | |
alumin | |
alumina | |
aluminaphone | |
aluminas | |
aluminate | |
alumine | |
alumines | |
aluminic | |
aluminide | |
aluminiferous | |
aluminiform | |
aluminyl | |
aluminise | |
aluminised | |
aluminish | |
aluminising | |
aluminite | |
aluminium | |
aluminize | |
aluminized | |
aluminizes | |
aluminizing | |
aluminoferric | |
aluminography | |
aluminographic | |
aluminose | |
aluminosilicate | |
aluminosis | |
aluminosity | |
aluminothermy | |
aluminothermic | |
aluminothermics | |
aluminotype | |
aluminous | |
alumins | |
aluminum | |
aluminums | |
alumish | |
alumite | |
alumium | |
alumna | |
alumnae | |
alumnal | |
alumni | |
alumniate | |
alumnol | |
alumnus | |
alumohydrocalcite | |
alumroot | |
alumroots | |
alums | |
alumstone | |
alundum | |
aluniferous | |
alunite | |
alunites | |
alunogen | |
alupag | |
alur | |
alure | |
alurgite | |
alushtite | |
aluta | |
alutaceous | |
alvah | |
alvan | |
alvar | |
alveary | |
alvearies | |
alvearium | |
alveated | |
alvelos | |
alveloz | |
alveola | |
alveolae | |
alveolar | |
alveolary | |
alveolariform | |
alveolarly | |
alveolars | |
alveolate | |
alveolated | |
alveolation | |
alveole | |
alveolectomy | |
alveoli | |
alveoliform | |
alveolite | |
alveolites | |
alveolitis | |
alveoloclasia | |
alveolocondylean | |
alveolodental | |
alveololabial | |
alveololingual | |
alveolonasal | |
alveolosubnasal | |
alveolotomy | |
alveolus | |
alveus | |
alvia | |
alviducous | |
alvin | |
alvina | |
alvine | |
alvissmal | |
alvite | |
alvus | |
alw | |
alway | |
always | |
alwise | |
alwite | |
alzheimer | |
am | |
ama | |
amaas | |
amabel | |
amabile | |
amability | |
amable | |
amacratic | |
amacrinal | |
amacrine | |
amadan | |
amadavat | |
amadavats | |
amadelphous | |
amadi | |
amadis | |
amadou | |
amadous | |
amaethon | |
amafingo | |
amaga | |
amah | |
amahs | |
amahuaca | |
amay | |
amain | |
amaine | |
amaist | |
amaister | |
amakebe | |
amakosa | |
amal | |
amala | |
amalaita | |
amalaka | |
amalekite | |
amalett | |
amalfian | |
amalfitan | |
amalg | |
amalgam | |
amalgamable | |
amalgamate | |
amalgamated | |
amalgamater | |
amalgamates | |
amalgamating | |
amalgamation | |
amalgamationist | |
amalgamations | |
amalgamative | |
amalgamatize | |
amalgamator | |
amalgamators | |
amalgamist | |
amalgamization | |
amalgamize | |
amalgams | |
amalic | |
amalings | |
amalrician | |
amaltas | |
amamau | |
amampondo | |
amanda | |
amande | |
amandin | |
amandine | |
amandus | |
amang | |
amani | |
amania | |
amanist | |
amanita | |
amanitas | |
amanitin | |
amanitine | |
amanitins | |
amanitopsis | |
amanori | |
amanous | |
amant | |
amantadine | |
amante | |
amantillo | |
amanuenses | |
amanuensis | |
amapa | |
amapondo | |
amar | |
amara | |
amaracus | |
amarant | |
amarantaceae | |
amarantaceous | |
amaranth | |
amaranthaceae | |
amaranthaceous | |
amaranthine | |
amaranthoid | |
amaranths | |
amaranthus | |
amarantine | |
amarantite | |
amarantus | |
amarelle | |
amarelles | |
amarettos | |
amarevole | |
amargosa | |
amargoso | |
amargosos | |
amaryllid | |
amaryllidaceae | |
amaryllidaceous | |
amaryllideous | |
amaryllis | |
amaryllises | |
amarillo | |
amarillos | |
amarin | |
amarine | |
amarity | |
amaritude | |
amarna | |
amaroid | |
amaroidal | |
amarth | |
amarthritis | |
amarvel | |
amas | |
amasesis | |
amass | |
amassable | |
amassed | |
amasser | |
amassers | |
amasses | |
amassette | |
amassing | |
amassment | |
amassments | |
amasta | |
amasthenic | |
amasty | |
amastia | |
amate | |
amated | |
amatembu | |
amaterialistic | |
amateur | |
amateurish | |
amateurishly | |
amateurishness | |
amateurism | |
amateurs | |
amateurship | |
amathophobia | |
amati | |
amating | |
amatito | |
amative | |
amatively | |
amativeness | |
amatol | |
amatols | |
amatory | |
amatorial | |
amatorially | |
amatorian | |
amatories | |
amatorio | |
amatorious | |
amatrice | |
amatungula | |
amaurosis | |
amaurotic | |
amaut | |
amaxomania | |
amaze | |
amazed | |
amazedly | |
amazedness | |
amazeful | |
amazement | |
amazer | |
amazers | |
amazes | |
amazia | |
amazilia | |
amazing | |
amazingly | |
amazon | |
amazona | |
amazonian | |
amazonism | |
amazonite | |
amazons | |
amazonstone | |
amazulu | |
amb | |
amba | |
ambach | |
ambage | |
ambages | |
ambagiosity | |
ambagious | |
ambagiously | |
ambagiousness | |
ambagitory | |
ambay | |
ambalam | |
amban | |
ambar | |
ambaree | |
ambarella | |
ambari | |
ambary | |
ambaries | |
ambaris | |
ambas | |
ambash | |
ambassade | |
ambassadeur | |
ambassador | |
ambassadorial | |
ambassadorially | |
ambassadors | |
ambassadorship | |
ambassadorships | |
ambassadress | |
ambassage | |
ambassy | |
ambassiate | |
ambatch | |
ambatoarinite | |
ambe | |
ambeer | |
ambeers | |
amber | |
amberfish | |
amberfishes | |
ambergrease | |
ambergris | |
ambery | |
amberies | |
amberiferous | |
amberina | |
amberite | |
amberjack | |
amberjacks | |
amberlike | |
amberoid | |
amberoids | |
amberous | |
ambers | |
ambiance | |
ambiances | |
ambicolorate | |
ambicoloration | |
ambidexter | |
ambidexterity | |
ambidexterities | |
ambidexterous | |
ambidextral | |
ambidextrous | |
ambidextrously | |
ambidextrousness | |
ambience | |
ambiences | |
ambiency | |
ambiens | |
ambient | |
ambients | |
ambier | |
ambigenal | |
ambigenous | |
ambigu | |
ambiguity | |
ambiguities | |
ambiguous | |
ambiguously | |
ambiguousness | |
ambilaevous | |
ambilateral | |
ambilateralaterally | |
ambilaterality | |
ambilaterally | |
ambilevous | |
ambilian | |
ambilogy | |
ambiopia | |
ambiparous | |
ambisextrous | |
ambisexual | |
ambisexuality | |
ambisexualities | |
ambisyllabic | |
ambisinister | |
ambisinistrous | |
ambisporangiate | |
ambystoma | |
ambystomidae | |
ambit | |
ambital | |
ambitendency | |
ambitendencies | |
ambitendent | |
ambition | |
ambitioned | |
ambitioning | |
ambitionist | |
ambitionless | |
ambitionlessly | |
ambitions | |
ambitious | |
ambitiously | |
ambitiousness | |
ambits | |
ambitty | |
ambitus | |
ambivalence | |
ambivalency | |
ambivalent | |
ambivalently | |
ambiversion | |
ambiversive | |
ambivert | |
ambiverts | |
amble | |
ambled | |
ambleocarpus | |
ambler | |
amblers | |
ambles | |
amblyacousia | |
amblyaphia | |
amblycephalidae | |
amblycephalus | |
amblychromatic | |
amblydactyla | |
amblygeusia | |
amblygon | |
amblygonal | |
amblygonite | |
ambling | |
amblingly | |
amblyocarpous | |
amblyomma | |
amblyope | |
amblyopia | |
amblyopic | |
amblyopsidae | |
amblyopsis | |
amblyoscope | |
amblypod | |
amblypoda | |
amblypodous | |
amblyrhynchus | |
amblystegite | |
amblystoma | |
amblosis | |
amblotic | |
ambo | |
amboceptoid | |
amboceptor | |
ambocoelia | |
ambodexter | |
amboina | |
amboyna | |
amboinas | |
amboynas | |
amboinese | |
ambolic | |
ambomalleal | |
ambon | |
ambones | |
ambonite | |
ambonnay | |
ambos | |
ambosexous | |
ambosexual | |
ambracan | |
ambrain | |
ambreate | |
ambreic | |
ambrein | |
ambrette | |
ambrettolide | |
ambry | |
ambrica | |
ambries | |
ambrite | |
ambroid | |
ambroids | |
ambrology | |
ambrose | |
ambrosia | |
ambrosiac | |
ambrosiaceae | |
ambrosiaceous | |
ambrosial | |
ambrosially | |
ambrosian | |
ambrosias | |
ambrosiate | |
ambrosin | |
ambrosine | |
ambrosio | |
ambrosterol | |
ambrotype | |
ambsace | |
ambsaces | |
ambulacra | |
ambulacral | |
ambulacriform | |
ambulacrum | |
ambulance | |
ambulanced | |
ambulancer | |
ambulances | |
ambulancing | |
ambulant | |
ambulante | |
ambulantes | |
ambulate | |
ambulated | |
ambulates | |
ambulating | |
ambulatio | |
ambulation | |
ambulative | |
ambulator | |
ambulatory | |
ambulatoria | |
ambulatorial | |
ambulatories | |
ambulatorily | |
ambulatorium | |
ambulatoriums | |
ambulators | |
ambulia | |
ambuling | |
ambulomancy | |
amburbial | |
ambury | |
ambuscade | |
ambuscaded | |
ambuscader | |
ambuscades | |
ambuscading | |
ambuscado | |
ambuscadoed | |
ambuscados | |
ambush | |
ambushed | |
ambusher | |
ambushers | |
ambushes | |
ambushing | |
ambushlike | |
ambushment | |
ambustion | |
amchoor | |
amdahl | |
amdt | |
ame | |
ameba | |
amebae | |
ameban | |
amebas | |
amebean | |
amebian | |
amebiasis | |
amebic | |
amebicidal | |
amebicide | |
amebid | |
amebiform | |
amebobacter | |
amebocyte | |
ameboid | |
ameboidism | |
amebous | |
amebula | |
amedeo | |
ameed | |
ameen | |
ameer | |
ameerate | |
ameerates | |
ameers | |
ameiosis | |
ameiotic | |
ameiuridae | |
ameiurus | |
ameiva | |
amel | |
amelanchier | |
ameland | |
amelcorn | |
amelcorns | |
amelet | |
amelia | |
amelification | |
ameliorable | |
ameliorableness | |
ameliorant | |
ameliorate | |
ameliorated | |
ameliorates | |
ameliorating | |
amelioration | |
ameliorations | |
ameliorativ | |
ameliorative | |
amelioratively | |
ameliorator | |
amelioratory | |
amellus | |
ameloblast | |
ameloblastic | |
amelu | |
amelus | |
amen | |
amenability | |
amenable | |
amenableness | |
amenably | |
amenage | |
amenance | |
amend | |
amendable | |
amendableness | |
amendatory | |
amende | |
amended | |
amender | |
amenders | |
amending | |
amendment | |
amendments | |
amends | |
amene | |
amenia | |
amenism | |
amenite | |
amenity | |
amenities | |
amenorrhea | |
amenorrheal | |
amenorrheic | |
amenorrho | |
amenorrhoea | |
amenorrhoeal | |
amenorrhoeic | |
amens | |
ament | |
amenta | |
amentaceous | |
amental | |
amenty | |
amentia | |
amentias | |
amentiferae | |
amentiferous | |
amentiform | |
aments | |
amentula | |
amentulum | |
amentum | |
amenuse | |
amerce | |
amerceable | |
amerced | |
amercement | |
amercements | |
amercer | |
amercers | |
amerces | |
amerciable | |
amerciament | |
amercing | |
america | |
american | |
americana | |
americanese | |
americanism | |
americanisms | |
americanist | |
americanistic | |
americanitis | |
americanization | |
americanize | |
americanized | |
americanizer | |
americanizes | |
americanizing | |
americanly | |
americanoid | |
americans | |
americanum | |
americanumancestors | |
americas | |
americaward | |
americawards | |
americium | |
americomania | |
americophobe | |
amerikani | |
amerimnon | |
amerind | |
amerindian | |
amerindians | |
amerindic | |
amerinds | |
amerism | |
ameristic | |
amerveil | |
amesace | |
amesaces | |
amesite | |
amess | |
ametabola | |
ametabole | |
ametaboly | |
ametabolia | |
ametabolian | |
ametabolic | |
ametabolism | |
ametabolous | |
ametallous | |
amethyst | |
amethystine | |
amethystlike | |
amethysts | |
amethodical | |
amethodically | |
ametoecious | |
ametria | |
ametrometer | |
ametrope | |
ametropia | |
ametropic | |
ametrous | |
amex | |
amgarn | |
amhar | |
amharic | |
amherstite | |
amhran | |
ami | |
amy | |
amia | |
amiability | |
amiable | |
amiableness | |
amiably | |
amiant | |
amianth | |
amianthiform | |
amianthine | |
amianthium | |
amianthoid | |
amianthoidal | |
amianthus | |
amiantus | |
amiantuses | |
amias | |
amyatonic | |
amic | |
amicability | |
amicabilities | |
amicable | |
amicableness | |
amicably | |
amical | |
amice | |
amiced | |
amices | |
amici | |
amicicide | |
amyclaean | |
amyclas | |
amicous | |
amicrobic | |
amicron | |
amicronucleate | |
amyctic | |
amictus | |
amicus | |
amid | |
amidase | |
amidases | |
amidate | |
amidated | |
amidating | |
amidation | |
amide | |
amides | |
amidic | |
amidid | |
amidide | |
amidin | |
amidine | |
amidins | |
amidism | |
amidist | |
amidmost | |
amido | |
amidoacetal | |
amidoacetic | |
amidoacetophenone | |
amidoaldehyde | |
amidoazo | |
amidoazobenzene | |
amidoazobenzol | |
amidocaffeine | |
amidocapric | |
amidocyanogen | |
amidofluorid | |
amidofluoride | |
amidogen | |
amidogens | |
amidoguaiacol | |
amidohexose | |
amidoketone | |
amidol | |
amidols | |
amidomyelin | |
amidon | |
amydon | |
amidone | |
amidophenol | |
amidophosphoric | |
amidopyrine | |
amidoplast | |
amidoplastid | |
amidosuccinamic | |
amidosulphonal | |
amidothiazole | |
amidoxy | |
amidoxyl | |
amidoxime | |
amidrazone | |
amids | |
amidship | |
amidships | |
amidst | |
amidstream | |
amidulin | |
amidward | |
amie | |
amyelencephalia | |
amyelencephalic | |
amyelencephalous | |
amyelia | |
amyelic | |
amyelinic | |
amyelonic | |
amyelotrophy | |
amyelous | |
amies | |
amiga | |
amigas | |
amygdal | |
amygdala | |
amygdalaceae | |
amygdalaceous | |
amygdalae | |
amygdalase | |
amygdalate | |
amygdale | |
amygdalectomy | |
amygdales | |
amygdalic | |
amygdaliferous | |
amygdaliform | |
amygdalin | |
amygdaline | |
amygdalinic | |
amygdalitis | |
amygdaloid | |
amygdaloidal | |
amygdalolith | |
amygdaloncus | |
amygdalopathy | |
amygdalothripsis | |
amygdalotome | |
amygdalotomy | |
amygdalus | |
amygdonitrile | |
amygdophenin | |
amygdule | |
amygdules | |
amigo | |
amigos | |
amiidae | |
amil | |
amyl | |
amylaceous | |
amylamine | |
amylan | |
amylase | |
amylases | |
amylate | |
amildar | |
amylemia | |
amylene | |
amylenes | |
amylenol | |
amiles | |
amylic | |
amylidene | |
amyliferous | |
amylin | |
amylo | |
amylocellulose | |
amyloclastic | |
amylocoagulase | |
amylodextrin | |
amylodyspepsia | |
amylogen | |
amylogenesis | |
amylogenic | |
amylogens | |
amylohydrolysis | |
amylohydrolytic | |
amyloid | |
amyloidal | |
amyloidoses | |
amyloidosis | |
amyloids | |
amyloleucite | |
amylolysis | |
amylolytic | |
amylom | |
amylome | |
amylometer | |
amylon | |
amylopectin | |
amylophagia | |
amylophosphate | |
amylophosphoric | |
amyloplast | |
amyloplastic | |
amyloplastid | |
amylopsase | |
amylopsin | |
amylose | |
amyloses | |
amylosynthesis | |
amylosis | |
amiloun | |
amyls | |
amylum | |
amylums | |
amyluria | |
amimia | |
amimide | |
amin | |
aminase | |
aminate | |
aminated | |
aminating | |
amination | |
aminded | |
amine | |
amines | |
amini | |
aminic | |
aminish | |
aminity | |
aminities | |
aminization | |
aminize | |
amino | |
aminoacetal | |
aminoacetanilide | |
aminoacetic | |
aminoacetone | |
aminoacetophenetidine | |
aminoacetophenone | |
aminoacidemia | |
aminoaciduria | |
aminoanthraquinone | |
aminoazo | |
aminoazobenzene | |
aminobarbituric | |
aminobenzaldehyde | |
aminobenzamide | |
aminobenzene | |
aminobenzine | |
aminobenzoic | |
aminocaproic | |
aminodiphenyl | |
amynodon | |
amynodont | |
aminoethionic | |
aminoformic | |
aminogen | |
aminoglutaric | |
aminoguanidine | |
aminoid | |
aminoketone | |
aminolipin | |
aminolysis | |
aminolytic | |
aminomalonic | |
aminomyelin | |
aminopeptidase | |
aminophenol | |
aminopherase | |
aminophylline | |
aminopyrine | |
aminoplast | |
aminoplastic | |
aminopolypeptidase | |
aminopropionic | |
aminopurine | |
aminoquin | |
aminoquinoline | |
aminosis | |
aminosuccinamic | |
aminosulphonic | |
aminothiophen | |
aminotransferase | |
aminotriazole | |
aminovaleric | |
aminoxylol | |
amins | |
aminta | |
amintor | |
amioidei | |
amyosthenia | |
amyosthenic | |
amyotaxia | |
amyotonia | |
amyotrophy | |
amyotrophia | |
amyotrophic | |
amyous | |
amir | |
amiray | |
amiral | |
amyraldism | |
amyraldist | |
amiranha | |
amirate | |
amirates | |
amire | |
amyridaceae | |
amyrin | |
amyris | |
amyrol | |
amyroot | |
amirs | |
amirship | |
amis | |
amish | |
amishgo | |
amiss | |
amissibility | |
amissible | |
amissing | |
amission | |
amissness | |
amit | |
amita | |
amitabha | |
amytal | |
amitate | |
amity | |
amitie | |
amities | |
amitoses | |
amitosis | |
amitotic | |
amitotically | |
amitriptyline | |
amitrole | |
amitroles | |
amitular | |
amixia | |
amyxorrhea | |
amyxorrhoea | |
amizilis | |
amla | |
amlacra | |
amlet | |
amli | |
amlikar | |
amlong | |
amma | |
amman | |
ammanite | |
ammelide | |
ammelin | |
ammeline | |
ammeos | |
ammer | |
ammeter | |
ammeters | |
ammi | |
ammiaceae | |
ammiaceous | |
ammine | |
ammines | |
ammino | |
amminochloride | |
amminolysis | |
amminolytic | |
ammiolite | |
ammiral | |
ammites | |
ammo | |
ammobium | |
ammocete | |
ammocetes | |
ammochaeta | |
ammochaetae | |
ammochryse | |
ammocoete | |
ammocoetes | |
ammocoetid | |
ammocoetidae | |
ammocoetiform | |
ammocoetoid | |
ammodyte | |
ammodytes | |
ammodytidae | |
ammodytoid | |
ammonal | |
ammonals | |
ammonate | |
ammonation | |
ammonea | |
ammonia | |
ammoniac | |
ammoniacal | |
ammoniacs | |
ammoniacum | |
ammoniaemia | |
ammonias | |
ammoniate | |
ammoniated | |
ammoniating | |
ammoniation | |
ammonic | |
ammonical | |
ammoniemia | |
ammonify | |
ammonification | |
ammonified | |
ammonifier | |
ammonifies | |
ammonifying | |
ammoniojarosite | |
ammonion | |
ammonionitrate | |
ammonite | |
ammonites | |
ammonitess | |
ammonitic | |
ammoniticone | |
ammonitiferous | |
ammonitish | |
ammonitoid | |
ammonitoidea | |
ammonium | |
ammoniums | |
ammoniuret | |
ammoniureted | |
ammoniuria | |
ammonization | |
ammono | |
ammonobasic | |
ammonocarbonic | |
ammonocarbonous | |
ammonoid | |
ammonoidea | |
ammonoidean | |
ammonoids | |
ammonolyses | |
ammonolysis | |
ammonolitic | |
ammonolytic | |
ammonolyze | |
ammonolyzed | |
ammonolyzing | |
ammophila | |
ammophilous | |
ammoresinol | |
ammoreslinol | |
ammos | |
ammotherapy | |
ammu | |
ammunition | |
amnemonic | |
amnesia | |
amnesiac | |
amnesiacs | |
amnesias | |
amnesic | |
amnesics | |
amnesty | |
amnestic | |
amnestied | |
amnesties | |
amnestying | |
amnia | |
amniac | |
amniatic | |
amnic | |
amnigenia | |
amninia | |
amninions | |
amnioallantoic | |
amniocentesis | |
amniochorial | |
amnioclepsis | |
amniomancy | |
amnion | |
amnionata | |
amnionate | |
amnionia | |
amnionic | |
amnions | |
amniorrhea | |
amnios | |
amniota | |
amniote | |
amniotes | |
amniotic | |
amniotin | |
amniotitis | |
amniotome | |
amobarbital | |
amober | |
amobyr | |
amoeba | |
amoebae | |
amoebaea | |
amoebaean | |
amoebaeum | |
amoebalike | |
amoeban | |
amoebas | |
amoebean | |
amoebeum | |
amoebian | |
amoebiasis | |
amoebic | |
amoebicidal | |
amoebicide | |
amoebid | |
amoebida | |
amoebidae | |
amoebiform | |
amoebobacter | |
amoebobacterieae | |
amoebocyte | |
amoebogeniae | |
amoeboid | |
amoeboidism | |
amoebous | |
amoebula | |
amoy | |
amoyan | |
amoibite | |
amoyese | |
amoinder | |
amok | |
amoke | |
amoks | |
amole | |
amoles | |
amolilla | |
amolish | |
amollish | |
amomal | |
amomales | |
amomis | |
amomum | |
among | |
amongst | |
amontillado | |
amontillados | |
amor | |
amora | |
amorado | |
amoraic | |
amoraim | |
amoral | |
amoralism | |
amoralist | |
amorality | |
amoralize | |
amorally | |
amores | |
amoret | |
amoretti | |
amoretto | |
amorettos | |
amoreuxia | |
amorini | |
amorino | |
amorism | |
amorist | |
amoristic | |
amorists | |
amorite | |
amoritic | |
amoritish | |
amornings | |
amorosa | |
amorosity | |
amoroso | |
amorous | |
amorously | |
amorousness | |
amorph | |
amorpha | |
amorphi | |
amorphy | |
amorphia | |
amorphic | |
amorphinism | |
amorphism | |
amorphophallus | |
amorphophyte | |
amorphotae | |
amorphous | |
amorphously | |
amorphousness | |
amorphozoa | |
amorphus | |
amort | |
amortisable | |
amortise | |
amortised | |
amortises | |
amortising | |
amortissement | |
amortisseur | |
amortizable | |
amortization | |
amortize | |
amortized | |
amortizement | |
amortizes | |
amortizing | |
amorua | |
amos | |
amosite | |
amoskeag | |
amotion | |
amotions | |
amotus | |
amouli | |
amount | |
amounted | |
amounter | |
amounters | |
amounting | |
amounts | |
amour | |
amouret | |
amourette | |
amourist | |
amours | |
amovability | |
amovable | |
amove | |
amoved | |
amoving | |
amowt | |
amp | |
ampalaya | |
ampalea | |
ampangabeite | |
amparo | |
ampasimenite | |
ampassy | |
ampelidaceae | |
ampelidaceous | |
ampelidae | |
ampelideous | |
ampelis | |
ampelite | |
ampelitic | |
ampelography | |
ampelographist | |
ampelograpny | |
ampelopsidin | |
ampelopsin | |
ampelopsis | |
ampelosicyos | |
ampelotherapy | |
amper | |
amperage | |
amperages | |
ampere | |
amperemeter | |
amperes | |
ampery | |
amperian | |
amperometer | |
amperometric | |
ampersand | |
ampersands | |
amphanthia | |
amphanthium | |
ampheclexis | |
ampherotoky | |
ampherotokous | |
amphetamine | |
amphetamines | |
amphi | |
amphiarthrodial | |
amphiarthroses | |
amphiarthrosis | |
amphiaster | |
amphib | |
amphibali | |
amphibalus | |
amphibia | |
amphibial | |
amphibian | |
amphibians | |
amphibichnite | |
amphibiety | |
amphibiology | |
amphibiological | |
amphibion | |
amphibiontic | |
amphibiotic | |
amphibiotica | |
amphibious | |
amphibiously | |
amphibiousness | |
amphibium | |
amphiblastic | |
amphiblastula | |
amphiblestritis | |
amphibola | |
amphibole | |
amphiboles | |
amphiboly | |
amphibolia | |
amphibolic | |
amphibolies | |
amphiboliferous | |
amphiboline | |
amphibolite | |
amphibolitic | |
amphibology | |
amphibological | |
amphibologically | |
amphibologies | |
amphibologism | |
amphibolostylous | |
amphibolous | |
amphibrach | |
amphibrachic | |
amphibryous | |
amphicarpa | |
amphicarpaea | |
amphicarpia | |
amphicarpic | |
amphicarpium | |
amphicarpogenous | |
amphicarpous | |
amphicarpus | |
amphicentric | |
amphichroic | |
amphichrom | |
amphichromatic | |
amphichrome | |
amphichromy | |
amphicyon | |
amphicyonidae | |
amphicyrtic | |
amphicyrtous | |
amphicytula | |
amphicoelian | |
amphicoelous | |
amphicome | |
amphicondyla | |
amphicondylous | |
amphicrania | |
amphicreatinine | |
amphicribral | |
amphictyon | |
amphictyony | |
amphictyonian | |
amphictyonic | |
amphictyonies | |
amphictyons | |
amphid | |
amphide | |
amphidesmous | |
amphidetic | |
amphidiarthrosis | |
amphidiploid | |
amphidiploidy | |
amphidisc | |
amphidiscophora | |
amphidiscophoran | |
amphidisk | |
amphidromia | |
amphidromic | |
amphierotic | |
amphierotism | |
amphigaea | |
amphigaean | |
amphigam | |
amphigamae | |
amphigamous | |
amphigastria | |
amphigastrium | |
amphigastrula | |
amphigean | |
amphigen | |
amphigene | |
amphigenesis | |
amphigenetic | |
amphigenous | |
amphigenously | |
amphigony | |
amphigonia | |
amphigonic | |
amphigonium | |
amphigonous | |
amphigory | |
amphigoric | |
amphigories | |
amphigouri | |
amphigouris | |
amphikaryon | |
amphikaryotic | |
amphilogy | |
amphilogism | |
amphimacer | |
amphimictic | |
amphimictical | |
amphimictically | |
amphimixes | |
amphimixis | |
amphimorula | |
amphimorulae | |
amphinesian | |
amphineura | |
amphineurous | |
amphinucleus | |
amphion | |
amphionic | |
amphioxi | |
amphioxidae | |
amphioxides | |
amphioxididae | |
amphioxis | |
amphioxus | |
amphioxuses | |
amphipeptone | |
amphiphithyra | |
amphiphloic | |
amphipyrenin | |
amphiplatyan | |
amphipleura | |
amphiploid | |
amphiploidy | |
amphipneust | |
amphipneusta | |
amphipneustic | |
amphipnous | |
amphipod | |
amphipoda | |
amphipodal | |
amphipodan | |
amphipodiform | |
amphipodous | |
amphipods | |
amphiprostylar | |
amphiprostyle | |
amphiprotic | |
amphirhina | |
amphirhinal | |
amphirhine | |
amphisarca | |
amphisbaena | |
amphisbaenae | |
amphisbaenas | |
amphisbaenian | |
amphisbaenic | |
amphisbaenid | |
amphisbaenidae | |
amphisbaenoid | |
amphisbaenous | |
amphiscians | |
amphiscii | |
amphisile | |
amphisilidae | |
amphispermous | |
amphisporangiate | |
amphispore | |
amphistylar | |
amphistyly | |
amphistylic | |
amphistoma | |
amphistomatic | |
amphistome | |
amphistomoid | |
amphistomous | |
amphistomum | |
amphitene | |
amphithalami | |
amphithalamus | |
amphithalmi | |
amphitheater | |
amphitheatered | |
amphitheaters | |
amphitheatral | |
amphitheatre | |
amphitheatric | |
amphitheatrical | |
amphitheatrically | |
amphitheccia | |
amphithecia | |
amphithecial | |
amphithecium | |
amphithect | |
amphithere | |
amphithyra | |
amphithyron | |
amphithyrons | |
amphithura | |
amphithuron | |
amphithurons | |
amphithurthura | |
amphitokal | |
amphitoky | |
amphitokous | |
amphitriaene | |
amphitricha | |
amphitrichate | |
amphitrichous | |
amphitryon | |
amphitrite | |
amphitron | |
amphitropal | |
amphitropous | |
amphitruo | |
amphiuma | |
amphiumidae | |
amphivasal | |
amphivorous | |
amphizoidae | |
amphodarch | |
amphodelite | |
amphodiplopia | |
amphogeny | |
amphogenic | |
amphogenous | |
ampholyte | |
ampholytic | |
amphopeptone | |
amphophil | |
amphophile | |
amphophilic | |
amphophilous | |
amphora | |
amphorae | |
amphoral | |
amphoras | |
amphore | |
amphorette | |
amphoric | |
amphoricity | |
amphoriloquy | |
amphoriskoi | |
amphoriskos | |
amphorophony | |
amphorous | |
amphoteric | |
amphotericin | |
amphrysian | |
ampyces | |
ampicillin | |
ampitheater | |
ampyx | |
ampyxes | |
ample | |
amplect | |
amplectant | |
ampleness | |
ampler | |
amplest | |
amplex | |
amplexation | |
amplexicaudate | |
amplexicaul | |
amplexicauline | |
amplexifoliate | |
amplexus | |
amplexuses | |
amply | |
ampliate | |
ampliation | |
ampliative | |
amplication | |
amplicative | |
amplidyne | |
amplify | |
amplifiable | |
amplificate | |
amplification | |
amplifications | |
amplificative | |
amplificator | |
amplificatory | |
amplified | |
amplifier | |
amplifiers | |
amplifies | |
amplifying | |
amplitude | |
amplitudes | |
amplitudinous | |
ampollosity | |
ampongue | |
ampoule | |
ampoules | |
amps | |
ampul | |
ampulate | |
ampulated | |
ampulating | |
ampule | |
ampules | |
ampulla | |
ampullaceous | |
ampullae | |
ampullar | |
ampullary | |
ampullaria | |
ampullariidae | |
ampullate | |
ampullated | |
ampulliform | |
ampullitis | |
ampullosity | |
ampullula | |
ampullulae | |
ampuls | |
amputate | |
amputated | |
amputates | |
amputating | |
amputation | |
amputational | |
amputations | |
amputative | |
amputator | |
amputee | |
amputees | |
amra | |
amreeta | |
amreetas | |
amrelle | |
amrit | |
amrita | |
amritas | |
amritsar | |
amsath | |
amsel | |
amsonia | |
amsterdam | |
amsterdamer | |
amt | |
amtman | |
amtmen | |
amtrac | |
amtrack | |
amtracks | |
amtracs | |
amtrak | |
amu | |
amuchco | |
amuck | |
amucks | |
amueixa | |
amugis | |
amuguis | |
amuyon | |
amuyong | |
amula | |
amulae | |
amulas | |
amulet | |
amuletic | |
amulets | |
amulla | |
amunam | |
amurca | |
amurcosity | |
amurcous | |
amurru | |
amus | |
amusable | |
amuse | |
amused | |
amusedly | |
amusee | |
amusement | |
amusements | |
amuser | |
amusers | |
amuses | |
amusette | |
amusgo | |
amusia | |
amusias | |
amusing | |
amusingly | |
amusingness | |
amusive | |
amusively | |
amusiveness | |
amutter | |
amuze | |
amuzzle | |
amvis | |
amzel | |
an | |
ana | |
anabaena | |
anabaenas | |
anabantid | |
anabantidae | |
anabaptism | |
anabaptist | |
anabaptistic | |
anabaptistical | |
anabaptistically | |
anabaptistry | |
anabaptists | |
anabaptize | |
anabaptized | |
anabaptizing | |
anabas | |
anabases | |
anabasin | |
anabasine | |
anabasis | |
anabasse | |
anabata | |
anabathmoi | |
anabathmos | |
anabathrum | |
anabatic | |
anaberoga | |
anabia | |
anabibazon | |
anabiosis | |
anabiotic | |
anablepidae | |
anableps | |
anablepses | |
anabo | |
anabohitsite | |
anaboly | |
anabolic | |
anabolin | |
anabolism | |
anabolite | |
anabolitic | |
anabolize | |
anabong | |
anabranch | |
anabrosis | |
anabrotic | |
anacahuita | |
anacahuite | |
anacalypsis | |
anacampsis | |
anacamptic | |
anacamptically | |
anacamptics | |
anacamptometer | |
anacanth | |
anacanthine | |
anacanthini | |
anacanthous | |
anacara | |
anacard | |
anacardiaceae | |
anacardiaceous | |
anacardic | |
anacardium | |
anacatadidymus | |
anacatharsis | |
anacathartic | |
anacephalaeosis | |
anacephalize | |
anaces | |
anacharis | |
anachoret | |
anachorism | |
anachromasis | |
anachronic | |
anachronical | |
anachronically | |
anachronism | |
anachronismatical | |
anachronisms | |
anachronist | |
anachronistic | |
anachronistical | |
anachronistically | |
anachronize | |
anachronous | |
anachronously | |
anachueta | |
anacyclus | |
anacid | |
anacidity | |
anack | |
anaclasis | |
anaclastic | |
anaclastics | |
anaclete | |
anacletica | |
anacleticum | |
anaclinal | |
anaclisis | |
anaclitic | |
anacoenoses | |
anacoenosis | |
anacolutha | |
anacoluthia | |
anacoluthic | |
anacoluthically | |
anacoluthon | |
anacoluthons | |
anacoluttha | |
anaconda | |
anacondas | |
anacoustic | |
anacreon | |
anacreontic | |
anacreontically | |
anacrisis | |
anacrogynae | |
anacrogynous | |
anacromyodian | |
anacrotic | |
anacrotism | |
anacruses | |
anacrusis | |
anacrustic | |
anacrustically | |
anaculture | |
anacusia | |
anacusic | |
anacusis | |
anadem | |
anadems | |
anadenia | |
anadesm | |
anadicrotic | |
anadicrotism | |
anadidymus | |
anadyomene | |
anadiplosis | |
anadipsia | |
anadipsic | |
anadrom | |
anadromous | |
anaematosis | |
anaemia | |
anaemias | |
anaemic | |
anaemotropy | |
anaeretic | |
anaerobation | |
anaerobe | |
anaerobes | |
anaerobia | |
anaerobian | |
anaerobic | |
anaerobically | |
anaerobies | |
anaerobion | |
anaerobiont | |
anaerobiosis | |
anaerobiotic | |
anaerobiotically | |
anaerobious | |
anaerobism | |
anaerobium | |
anaerophyte | |
anaeroplasty | |
anaeroplastic | |
anaesthatic | |
anaesthesia | |
anaesthesiant | |
anaesthesiology | |
anaesthesiologist | |
anaesthesis | |
anaesthetic | |
anaesthetically | |
anaesthetics | |
anaesthetist | |
anaesthetization | |
anaesthetize | |
anaesthetized | |
anaesthetizer | |
anaesthetizing | |
anaesthyl | |
anaetiological | |
anagalactic | |
anagallis | |
anagap | |
anagenesis | |
anagenetic | |
anagenetical | |
anagennesis | |
anagep | |
anagignoskomena | |
anagyrin | |
anagyrine | |
anagyris | |
anaglyph | |
anaglyphy | |
anaglyphic | |
anaglyphical | |
anaglyphics | |
anaglyphoscope | |
anaglyphs | |
anaglypta | |
anaglyptic | |
anaglyptical | |
anaglyptics | |
anaglyptograph | |
anaglyptography | |
anaglyptographic | |
anaglypton | |
anagnorises | |
anagnorisis | |
anagnost | |
anagnostes | |
anagoge | |
anagoges | |
anagogy | |
anagogic | |
anagogical | |
anagogically | |
anagogics | |
anagogies | |
anagram | |
anagrammatic | |
anagrammatical | |
anagrammatically | |
anagrammatise | |
anagrammatised | |
anagrammatising | |
anagrammatism | |
anagrammatist | |
anagrammatization | |
anagrammatize | |
anagrammatized | |
anagrammatizing | |
anagrammed | |
anagramming | |
anagrams | |
anagraph | |
anagua | |
anahao | |
anahau | |
anaheim | |
anahita | |
anay | |
anaitis | |
anakes | |
anakinesis | |
anakinetic | |
anakinetomer | |
anakinetomeric | |
anakoluthia | |
anakrousis | |
anaktoron | |
anal | |
analabos | |
analagous | |
analav | |
analcime | |
analcimes | |
analcimic | |
analcimite | |
analcite | |
analcites | |
analcitite | |
analecta | |
analectic | |
analects | |
analemma | |
analemmas | |
analemmata | |
analemmatic | |
analepses | |
analepsy | |
analepsis | |
analeptic | |
analeptical | |
analgen | |
analgene | |
analgesia | |
analgesic | |
analgesics | |
analgesidae | |
analgesis | |
analgesist | |
analgetic | |
analgia | |
analgias | |
analgic | |
analgize | |
analysability | |
analysable | |
analysand | |
analysands | |
analysation | |
analyse | |
analysed | |
analyser | |
analysers | |
analyses | |
analysing | |
analysis | |
analyst | |
analysts | |
analyt | |
anality | |
analytic | |
analytical | |
analytically | |
analyticity | |
analyticities | |
analytics | |
analities | |
analytique | |
analyzability | |
analyzable | |
analyzation | |
analyze | |
analyzed | |
analyzer | |
analyzers | |
analyzes | |
analyzing | |
analkalinity | |
anallagmatic | |
anallagmatis | |
anallantoic | |
anallantoidea | |
anallantoidean | |
anallergic | |
anally | |
analog | |
analoga | |
analogal | |
analogy | |
analogia | |
analogic | |
analogical | |
analogically | |
analogicalness | |
analogice | |
analogies | |
analogion | |
analogions | |
analogise | |
analogised | |
analogising | |
analogism | |
analogist | |
analogistic | |
analogize | |
analogized | |
analogizing | |
analogon | |
analogous | |
analogously | |
analogousness | |
analogs | |
analogue | |
analogues | |
analphabet | |
analphabete | |
analphabetic | |
analphabetical | |
analphabetism | |
anam | |
anama | |
anamesite | |
anametadromous | |
anamirta | |
anamirtin | |
anamite | |
anammonid | |
anammonide | |
anamneses | |
anamnesis | |
anamnestic | |
anamnestically | |
anamnia | |
anamniata | |
anamnionata | |
anamnionic | |
anamniota | |
anamniote | |
anamniotic | |
anamorphic | |
anamorphism | |
anamorphoscope | |
anamorphose | |
anamorphoses | |
anamorphosis | |
anamorphote | |
anamorphous | |
anan | |
anana | |
ananaplas | |
ananaples | |
ananas | |
ananda | |
anandrarious | |
anandria | |
anandrious | |
anandrous | |
ananepionic | |
anangioid | |
anangular | |
ananias | |
ananym | |
ananism | |
ananite | |
anankastic | |
ananke | |
anankes | |
anansi | |
ananta | |
ananter | |
anantherate | |
anantherous | |
ananthous | |
ananthropism | |
anapaest | |
anapaestic | |
anapaestical | |
anapaestically | |
anapaests | |
anapaganize | |
anapaite | |
anapanapa | |
anapeiratic | |
anapes | |
anapest | |
anapestic | |
anapestically | |
anapests | |
anaphalantiasis | |
anaphalis | |
anaphase | |
anaphases | |
anaphasic | |
anaphe | |
anaphia | |
anaphylactic | |
anaphylactically | |
anaphylactin | |
anaphylactogen | |
anaphylactogenic | |
anaphylactoid | |
anaphylatoxin | |
anaphylaxis | |
anaphyte | |
anaphora | |
anaphoral | |
anaphoras | |
anaphoria | |
anaphoric | |
anaphorical | |
anaphorically | |
anaphrodisia | |
anaphrodisiac | |
anaphroditic | |
anaphroditous | |
anaplasia | |
anaplasis | |
anaplasm | |
anaplasma | |
anaplasmoses | |
anaplasmosis | |
anaplasty | |
anaplastic | |
anapleroses | |
anaplerosis | |
anaplerotic | |
anapnea | |
anapneic | |
anapnoeic | |
anapnograph | |
anapnoic | |
anapnometer | |
anapodeictic | |
anapophyses | |
anapophysial | |
anapophysis | |
anapsid | |
anapsida | |
anapsidan | |
anapterygota | |
anapterygote | |
anapterygotism | |
anapterygotous | |
anaptychi | |
anaptychus | |
anaptyctic | |
anaptyctical | |
anaptyxes | |
anaptyxis | |
anaptomorphidae | |
anaptomorphus | |
anaptotic | |
anaqua | |
anarcestean | |
anarcestes | |
anarch | |
anarchal | |
anarchy | |
anarchial | |
anarchic | |
anarchical | |
anarchically | |
anarchies | |
anarchism | |
anarchist | |
anarchistic | |
anarchists | |
anarchize | |
anarcho | |
anarchoindividualist | |
anarchosyndicalism | |
anarchosyndicalist | |
anarchosocialist | |
anarchs | |
anarcotin | |
anareta | |
anaretic | |
anaretical | |
anargyroi | |
anargyros | |
anarya | |
anaryan | |
anarithia | |
anarithmia | |
anarthria | |
anarthric | |
anarthropod | |
anarthropoda | |
anarthropodous | |
anarthrosis | |
anarthrous | |
anarthrously | |
anarthrousness | |
anartismos | |
anas | |
anasa | |
anasarca | |
anasarcas | |
anasarcous | |
anasazi | |
anaschistic | |
anaseismic | |
anasitch | |
anaspadias | |
anaspalin | |
anaspid | |
anaspida | |
anaspidacea | |
anaspides | |
anastalsis | |
anastaltic | |
anastases | |
anastasia | |
anastasian | |
anastasimon | |
anastasimos | |
anastasis | |
anastasius | |
anastate | |
anastatic | |
anastatica | |
anastatus | |
anastigmat | |
anastigmatic | |
anastomos | |
anastomose | |
anastomosed | |
anastomoses | |
anastomosing | |
anastomosis | |
anastomotic | |
anastomus | |
anastrophe | |
anastrophy | |
anastrophia | |
anat | |
anatabine | |
anatase | |
anatases | |
anatexes | |
anatexis | |
anathem | |
anathema | |
anathemas | |
anathemata | |
anathematic | |
anathematical | |
anathematically | |
anathematisation | |
anathematise | |
anathematised | |
anathematiser | |
anathematising | |
anathematism | |
anathematization | |
anathematize | |
anathematized | |
anathematizer | |
anathematizes | |
anathematizing | |
anatheme | |
anathemize | |
anatherum | |
anatidae | |
anatifa | |
anatifae | |
anatifer | |
anatiferous | |
anatinacea | |
anatinae | |
anatine | |
anatira | |
anatman | |
anatocism | |
anatole | |
anatoly | |
anatolian | |
anatolic | |
anatomy | |
anatomic | |
anatomical | |
anatomically | |
anatomicals | |
anatomicobiological | |
anatomicochirurgical | |
anatomicomedical | |
anatomicopathologic | |
anatomicopathological | |
anatomicophysiologic | |
anatomicophysiological | |
anatomicosurgical | |
anatomies | |
anatomiless | |
anatomisable | |
anatomisation | |
anatomise | |
anatomised | |
anatomiser | |
anatomising | |
anatomism | |
anatomist | |
anatomists | |
anatomizable | |
anatomization | |
anatomize | |
anatomized | |
anatomizer | |
anatomizes | |
anatomizing | |
anatomopathologic | |
anatomopathological | |
anatopism | |
anatosaurus | |
anatox | |
anatoxin | |
anatoxins | |
anatreptic | |
anatripsis | |
anatripsology | |
anatriptic | |
anatron | |
anatropal | |
anatropia | |
anatropous | |
anatta | |
anatto | |
anattos | |
anatum | |
anaudia | |
anaudic | |
anaunter | |
anaunters | |
anauxite | |
anax | |
anaxagorean | |
anaxagorize | |
anaxial | |
anaximandrian | |
anaxon | |
anaxone | |
anaxonia | |
anazoturia | |
anba | |
anbury | |
anc | |
ancerata | |
ancestor | |
ancestorial | |
ancestorially | |
ancestors | |
ancestral | |
ancestrally | |
ancestress | |
ancestresses | |
ancestry | |
ancestrial | |
ancestrian | |
ancestries | |
ancha | |
anchat | |
anchietea | |
anchietin | |
anchietine | |
anchieutectic | |
anchylose | |
anchylosed | |
anchylosing | |
anchylosis | |
anchylotic | |
anchimonomineral | |
anchisaurus | |
anchises | |
anchistea | |
anchistopoda | |
anchithere | |
anchitherioid | |
anchoic | |
anchor | |
anchorable | |
anchorage | |
anchorages | |
anchorate | |
anchored | |
anchorer | |
anchoress | |
anchoresses | |
anchoret | |
anchoretic | |
anchoretical | |
anchoretish | |
anchoretism | |
anchorets | |
anchorhold | |
anchory | |
anchoring | |
anchorite | |
anchorites | |
anchoritess | |
anchoritic | |
anchoritical | |
anchoritically | |
anchoritish | |
anchoritism | |
anchorless | |
anchorlike | |
anchorman | |
anchormen | |
anchors | |
anchorwise | |
anchoveta | |
anchovy | |
anchovies | |
anchtherium | |
anchusa | |
anchusas | |
anchusin | |
anchusine | |
anchusins | |
ancien | |
ancience | |
anciency | |
anciennete | |
anciens | |
ancient | |
ancienter | |
ancientest | |
ancienty | |
ancientism | |
anciently | |
ancientness | |
ancientry | |
ancients | |
ancile | |
ancilia | |
ancilla | |
ancillae | |
ancillary | |
ancillaries | |
ancillas | |
ancille | |
ancyloceras | |
ancylocladus | |
ancylodactyla | |
ancylopod | |
ancylopoda | |
ancylose | |
ancylostoma | |
ancylostome | |
ancylostomiasis | |
ancylostomum | |
ancylus | |
ancipital | |
ancipitous | |
ancyrean | |
ancyrene | |
ancyroid | |
ancistrocladaceae | |
ancistrocladaceous | |
ancistrocladus | |
ancistrodon | |
ancistroid | |
ancle | |
ancodont | |
ancoly | |
ancome | |
ancon | |
ancona | |
anconad | |
anconagra | |
anconal | |
anconas | |
ancone | |
anconeal | |
anconei | |
anconeous | |
ancones | |
anconeus | |
ancony | |
anconitis | |
anconoid | |
ancor | |
ancora | |
ancoral | |
ancraophobia | |
ancre | |
ancress | |
ancresses | |
and | |
anda | |
andabata | |
andabatarian | |
andabatism | |
andalusian | |
andalusite | |
andaman | |
andamanese | |
andamenta | |
andamento | |
andamentos | |
andante | |
andantes | |
andantini | |
andantino | |
andantinos | |
andaqui | |
andaquian | |
andarko | |
andaste | |
ande | |
andean | |
anders | |
anderson | |
anderun | |
andes | |
andesic | |
andesine | |
andesinite | |
andesite | |
andesyte | |
andesites | |
andesytes | |
andesitic | |
andevo | |
andhra | |
andi | |
andy | |
andia | |
andian | |
andine | |
anding | |
andira | |
andirin | |
andirine | |
andiroba | |
andiron | |
andirons | |
andoke | |
andor | |
andorite | |
andoroba | |
andorobo | |
andorra | |
andorran | |
andouille | |
andouillet | |
andouillette | |
andradite | |
andragogy | |
andranatomy | |
andrarchy | |
andre | |
andrea | |
andreaea | |
andreaeaceae | |
andreaeales | |
andreas | |
andrena | |
andrenid | |
andrenidae | |
andrew | |
andrewartha | |
andrewsite | |
andria | |
andriana | |
andrias | |
andric | |
andries | |
andrite | |
androcentric | |
androcephalous | |
androcephalum | |
androcyte | |
androclclinia | |
androcles | |
androclinia | |
androclinium | |
androclus | |
androconia | |
androconium | |
androcracy | |
androcratic | |
androdynamous | |
androdioecious | |
androdioecism | |
androeccia | |
androecia | |
androecial | |
androecium | |
androgametangium | |
androgametophore | |
androgamone | |
androgen | |
androgenesis | |
androgenetic | |
androgenic | |
androgenous | |
androgens | |
androgyn | |
androgynal | |
androgynary | |
androgyne | |
androgyneity | |
androgyny | |
androgynia | |
androgynic | |
androgynies | |
androgynism | |
androginous | |
androgynous | |
androgynus | |
androgone | |
androgonia | |
androgonial | |
androgonidium | |
androgonium | |
andrographis | |
andrographolide | |
android | |
androidal | |
androides | |
androids | |
androkinin | |
androl | |
androlepsy | |
androlepsia | |
andromache | |
andromania | |
andromaque | |
andromed | |
andromeda | |
andromede | |
andromedotoxin | |
andromonoecious | |
andromonoecism | |
andromorphous | |
andron | |
andronicus | |
andronitis | |
andropetalar | |
andropetalous | |
androphagous | |
androphyll | |
androphobia | |
androphonomania | |
androphore | |
androphorous | |
androphorum | |
andropogon | |
androsace | |
androscoggin | |
androseme | |
androsin | |
androsphinges | |
androsphinx | |
androsphinxes | |
androsporangium | |
androspore | |
androsterone | |
androtauric | |
androtomy | |
ands | |
andvari | |
ane | |
anear | |
aneared | |
anearing | |
anears | |
aneath | |
anecdysis | |
anecdota | |
anecdotage | |
anecdotal | |
anecdotalism | |
anecdotalist | |
anecdotally | |
anecdote | |
anecdotes | |
anecdotic | |
anecdotical | |
anecdotically | |
anecdotist | |
anecdotists | |
anechoic | |
anelace | |
anelastic | |
anelasticity | |
anele | |
anelectric | |
anelectrode | |
anelectrotonic | |
anelectrotonus | |
aneled | |
aneles | |
aneling | |
anelytrous | |
anematize | |
anematized | |
anematizing | |
anematosis | |
anemia | |
anemias | |
anemic | |
anemically | |
anemious | |
anemobiagraph | |
anemochord | |
anemochore | |
anemochoric | |
anemochorous | |
anemoclastic | |
anemogram | |
anemograph | |
anemography | |
anemographic | |
anemographically | |
anemology | |
anemologic | |
anemological | |
anemometer | |
anemometers | |
anemometry | |
anemometric | |
anemometrical | |
anemometrically | |
anemometrograph | |
anemometrographic | |
anemometrographically | |
anemonal | |
anemone | |
anemonella | |
anemones | |
anemony | |
anemonin | |
anemonol | |
anemopathy | |
anemophile | |
anemophily | |
anemophilous | |
anemopsis | |
anemoscope | |
anemoses | |
anemosis | |
anemotactic | |
anemotaxis | |
anemotropic | |
anemotropism | |
anencephaly | |
anencephalia | |
anencephalic | |
anencephalotrophia | |
anencephalous | |
anencephalus | |
anend | |
anenergia | |
anenst | |
anent | |
anenterous | |
anepia | |
anepigraphic | |
anepigraphous | |
anepiploic | |
anepithymia | |
anerethisia | |
aneretic | |
anergy | |
anergia | |
anergias | |
anergic | |
anergies | |
anerythroplasia | |
anerythroplastic | |
anerly | |
aneroid | |
aneroidograph | |
aneroids | |
anerotic | |
anes | |
anesis | |
anesone | |
anesthesia | |
anesthesiant | |
anesthesimeter | |
anesthesiology | |
anesthesiologies | |
anesthesiologist | |
anesthesiologists | |
anesthesiometer | |
anesthesis | |
anesthetic | |
anesthetically | |
anesthetics | |
anesthetist | |
anesthetists | |
anesthetization | |
anesthetize | |
anesthetized | |
anesthetizer | |
anesthetizes | |
anesthetizing | |
anesthyl | |
anestri | |
anestrous | |
anestrus | |
anet | |
anethene | |
anethol | |
anethole | |
anetholes | |
anethols | |
anethum | |
anetic | |
anetiological | |
aneuch | |
aneuploid | |
aneuploidy | |
aneuria | |
aneuric | |
aneurilemmic | |
aneurin | |
aneurine | |
aneurism | |
aneurysm | |
aneurismal | |
aneurysmal | |
aneurismally | |
aneurysmally | |
aneurismatic | |
aneurysmatic | |
aneurisms | |
aneurysms | |
anew | |
anezeh | |
anfeeld | |
anfract | |
anfractuose | |
anfractuosity | |
anfractuous | |
anfractuousness | |
anfracture | |
anga | |
angakok | |
angakoks | |
angakut | |
angami | |
angara | |
angaralite | |
angareb | |
angareeb | |
angarep | |
angary | |
angaria | |
angarias | |
angariation | |
angaries | |
angas | |
angdistis | |
angeyok | |
angekkok | |
angekok | |
angekut | |
angel | |
angela | |
angelate | |
angeldom | |
angeleen | |
angeleyes | |
angeleno | |
angeles | |
angelet | |
angelfish | |
angelfishes | |
angelhood | |
angelic | |
angelica | |
angelical | |
angelically | |
angelicalness | |
angelican | |
angelicas | |
angelicic | |
angelicize | |
angelicness | |
angelico | |
angelim | |
angelin | |
angelina | |
angeline | |
angelinformal | |
angelique | |
angelito | |
angelize | |
angelized | |
angelizing | |
angellike | |
angelo | |
angelocracy | |
angelographer | |
angelolater | |
angelolatry | |
angelology | |
angelologic | |
angelological | |
angelomachy | |
angelon | |
angelonia | |
angelophany | |
angelophanic | |
angelot | |
angels | |
angelship | |
angelus | |
angeluses | |
anger | |
angered | |
angering | |
angerless | |
angerly | |
angerona | |
angeronalia | |
angers | |
angetenar | |
angevin | |
angia | |
angiasthenia | |
angico | |
angie | |
angiectasis | |
angiectopia | |
angiemphraxis | |
angiitis | |
angild | |
angili | |
angilo | |
angina | |
anginal | |
anginas | |
anginiform | |
anginoid | |
anginophobia | |
anginose | |
anginous | |
angioasthenia | |
angioataxia | |
angioblast | |
angioblastic | |
angiocardiography | |
angiocardiographic | |
angiocardiographies | |
angiocarditis | |
angiocarp | |
angiocarpy | |
angiocarpian | |
angiocarpic | |
angiocarpous | |
angiocavernous | |
angiocholecystitis | |
angiocholitis | |
angiochondroma | |
angiocyst | |
angioclast | |
angiodermatitis | |
angiodiascopy | |
angioelephantiasis | |
angiofibroma | |
angiogenesis | |
angiogeny | |
angiogenic | |
angioglioma | |
angiogram | |
angiograph | |
angiography | |
angiographic | |
angiohemophilia | |
angiohyalinosis | |
angiohydrotomy | |
angiohypertonia | |
angiohypotonia | |
angioid | |
angiokeratoma | |
angiokinesis | |
angiokinetic | |
angioleucitis | |
angiolymphitis | |
angiolymphoma | |
angiolipoma | |
angiolith | |
angiology | |
angioma | |
angiomalacia | |
angiomas | |
angiomata | |
angiomatosis | |
angiomatous | |
angiomegaly | |
angiometer | |
angiomyocardiac | |
angiomyoma | |
angiomyosarcoma | |
angioneoplasm | |
angioneurosis | |
angioneurotic | |
angionoma | |
angionosis | |
angioparalysis | |
angioparalytic | |
angioparesis | |
angiopathy | |
angiophorous | |
angioplany | |
angioplasty | |
angioplerosis | |
angiopoietic | |
angiopressure | |
angiorrhagia | |
angiorrhaphy | |
angiorrhea | |
angiorrhexis | |
angiosarcoma | |
angiosclerosis | |
angiosclerotic | |
angioscope | |
angiosymphysis | |
angiosis | |
angiospasm | |
angiospastic | |
angiosperm | |
angiospermae | |
angiospermal | |
angiospermatous | |
angiospermic | |
angiospermous | |
angiosperms | |
angiosporous | |
angiostegnosis | |
angiostenosis | |
angiosteosis | |
angiostomy | |
angiostomize | |
angiostrophy | |
angiotasis | |
angiotelectasia | |
angiotenosis | |
angiotensin | |
angiotensinase | |
angiothlipsis | |
angiotome | |
angiotomy | |
angiotonase | |
angiotonic | |
angiotonin | |
angiotribe | |
angiotripsy | |
angiotrophic | |
angiport | |
angka | |
angkhak | |
anglaise | |
angle | |
angleberry | |
angled | |
angledog | |
angledozer | |
anglehook | |
anglemeter | |
anglepod | |
anglepods | |
angler | |
anglers | |
angles | |
anglesite | |
anglesmith | |
angletouch | |
angletwitch | |
anglewing | |
anglewise | |
angleworm | |
angleworms | |
angliae | |
anglian | |
anglians | |
anglic | |
anglican | |
anglicanism | |
anglicanisms | |
anglicanize | |
anglicanly | |
anglicans | |
anglicanum | |
anglice | |
anglicisation | |
anglicism | |
anglicisms | |
anglicist | |
anglicization | |
anglicize | |
anglicized | |
anglicizes | |
anglicizing | |
anglify | |
anglification | |
anglimaniac | |
angling | |
anglings | |
anglish | |
anglist | |
anglistics | |
anglo | |
anglogaea | |
anglogaean | |
angloid | |
angloman | |
anglomane | |
anglomania | |
anglomaniac | |
anglophil | |
anglophile | |
anglophiles | |
anglophily | |
anglophilia | |
anglophiliac | |
anglophilic | |
anglophilism | |
anglophobe | |
anglophobes | |
anglophobia | |
anglophobiac | |
anglophobic | |
anglophobist | |
anglos | |
ango | |
angoise | |
angola | |
angolan | |
angolans | |
angolar | |
angolese | |
angor | |
angora | |
angoras | |
angostura | |
angouleme | |
angoumian | |
angraecum | |
angry | |
angrier | |
angriest | |
angrily | |
angriness | |
angrite | |
angst | |
angster | |
angstrom | |
angstroms | |
angsts | |
anguid | |
anguidae | |
anguiform | |
anguilla | |
anguillaria | |
anguille | |
anguillidae | |
anguilliform | |
anguilloid | |
anguillula | |
anguillule | |
anguillulidae | |
anguimorpha | |
anguine | |
anguineal | |
anguineous | |
anguinidae | |
anguiped | |
anguis | |
anguish | |
anguished | |
anguishes | |
anguishful | |
anguishing | |
anguishous | |
anguishously | |
angula | |
angular | |
angulare | |
angularia | |
angularity | |
angularities | |
angularization | |
angularize | |
angularly | |
angularness | |
angulate | |
angulated | |
angulately | |
angulateness | |
angulates | |
angulating | |
angulation | |
angulatogibbous | |
angulatosinuous | |
angule | |
anguliferous | |
angulinerved | |
anguloa | |
angulodentate | |
angulometer | |
angulose | |
angulosity | |
angulosplenial | |
angulous | |
angulus | |
anguria | |
angus | |
anguses | |
angust | |
angustate | |
angustia | |
angusticlave | |
angustifoliate | |
angustifolious | |
angustirostrate | |
angustisellate | |
angustiseptal | |
angustiseptate | |
angustura | |
angwantibo | |
angwich | |
anhaematopoiesis | |
anhaematosis | |
anhaemolytic | |
anhalamine | |
anhaline | |
anhalonidine | |
anhalonin | |
anhalonine | |
anhalonium | |
anhalouidine | |
anhang | |
anhanga | |
anharmonic | |
anhedonia | |
anhedonic | |
anhedral | |
anhedron | |
anhelation | |
anhele | |
anhelose | |
anhelous | |
anhematopoiesis | |
anhematosis | |
anhemitonic | |
anhemolytic | |
anhyd | |
anhydraemia | |
anhydraemic | |
anhydrate | |
anhydrated | |
anhydrating | |
anhydration | |
anhydremia | |
anhydremic | |
anhydric | |
anhydride | |
anhydrides | |
anhydridization | |
anhydridize | |
anhydrite | |
anhydrization | |
anhydrize | |
anhydroglocose | |
anhydromyelia | |
anhidrosis | |
anhydrosis | |
anhidrotic | |
anhydrotic | |
anhydrous | |
anhydrously | |
anhydroxime | |
anhima | |
anhimae | |
anhimidae | |
anhinga | |
anhingas | |
anhysteretic | |
anhistic | |
anhistous | |
anhungered | |
anhungry | |
ani | |
any | |
aniba | |
anybody | |
anybodyd | |
anybodies | |
anicca | |
anice | |
anychia | |
aniconic | |
aniconism | |
anicular | |
anicut | |
anidian | |
anidiomatic | |
anidiomatical | |
anidrosis | |
aniellidae | |
aniente | |
anientise | |
anigh | |
anight | |
anights | |
anyhow | |
anil | |
anilao | |
anilau | |
anile | |
anileness | |
anilic | |
anilid | |
anilide | |
anilidic | |
anilidoxime | |
aniliid | |
anilin | |
anilinctus | |
aniline | |
anilines | |
anilingus | |
anilinism | |
anilino | |
anilinophile | |
anilinophilous | |
anilins | |
anility | |
anilities | |
anilla | |
anilopyrin | |
anilopyrine | |
anils | |
anim | |
anima | |
animability | |
animable | |
animableness | |
animacule | |
animadversal | |
animadversion | |
animadversional | |
animadversions | |
animadversive | |
animadversiveness | |
animadvert | |
animadverted | |
animadverter | |
animadverting | |
animadverts | |
animal | |
animala | |
animalcula | |
animalculae | |
animalcular | |
animalcule | |
animalcules | |
animalculine | |
animalculism | |
animalculist | |
animalculous | |
animalculum | |
animalhood | |
animalia | |
animalian | |
animalic | |
animalier | |
animalillio | |
animalisation | |
animalise | |
animalised | |
animalish | |
animalising | |
animalism | |
animalist | |
animalistic | |
animality | |
animalities | |
animalivora | |
animalivore | |
animalivorous | |
animalization | |
animalize | |
animalized | |
animalizing | |
animally | |
animallike | |
animalness | |
animals | |
animando | |
animant | |
animas | |
animastic | |
animastical | |
animate | |
animated | |
animatedly | |
animately | |
animateness | |
animater | |
animaters | |
animates | |
animating | |
animatingly | |
animation | |
animations | |
animatism | |
animatist | |
animatistic | |
animative | |
animato | |
animatograph | |
animator | |
animators | |
anime | |
animes | |
animetta | |
animi | |
animikean | |
animikite | |
animine | |
animis | |
animism | |
animisms | |
animist | |
animistic | |
animists | |
animize | |
animized | |
animo | |
anymore | |
animose | |
animoseness | |
animosity | |
animosities | |
animoso | |
animotheism | |
animous | |
animus | |
animuses | |
anion | |
anyone | |
anionic | |
anionically | |
anionics | |
anions | |
anyplace | |
aniridia | |
anis | |
anisado | |
anisal | |
anisalcohol | |
anisaldehyde | |
anisaldoxime | |
anisamide | |
anisandrous | |
anisanilide | |
anisanthous | |
anisate | |
anisated | |
anischuria | |
anise | |
aniseed | |
aniseeds | |
aniseikonia | |
aniseikonic | |
aniselike | |
aniseroot | |
anises | |
anisette | |
anisettes | |
anisic | |
anisidin | |
anisidine | |
anisidino | |
anisil | |
anisyl | |
anisilic | |
anisylidene | |
anisobranchiate | |
anisocarpic | |
anisocarpous | |
anisocercal | |
anisochromatic | |
anisochromia | |
anisocycle | |
anisocytosis | |
anisocoria | |
anisocotyledonous | |
anisocotyly | |
anisocratic | |
anisodactyl | |
anisodactyla | |
anisodactyle | |
anisodactyli | |
anisodactylic | |
anisodactylous | |
anisodont | |
anisogamete | |
anisogametes | |
anisogametic | |
anisogamy | |
anisogamic | |
anisogamous | |
anisogeny | |
anisogenous | |
anisogynous | |
anisognathism | |
anisognathous | |
anisoiconia | |
anisoyl | |
anisoin | |
anisokonia | |
anisol | |
anisole | |
anisoles | |
anisoleucocytosis | |
anisomeles | |
anisomelia | |
anisomelus | |
anisomeric | |
anisomerous | |
anisometric | |
anisometrope | |
anisometropia | |
anisometropic | |
anisomyarian | |
anisomyodi | |
anisomyodian | |
anisomyodous | |
anisopetalous | |
anisophylly | |
anisophyllous | |
anisopia | |
anisopleural | |
anisopleurous | |
anisopod | |
anisopoda | |
anisopodal | |
anisopodous | |
anisopogonous | |
anisoptera | |
anisopteran | |
anisopterous | |
anisosepalous | |
anisospore | |
anisostaminous | |
anisostemonous | |
anisosthenic | |
anisostichous | |
anisostichus | |
anisostomous | |
anisotonic | |
anisotropal | |
anisotrope | |
anisotropy | |
anisotropic | |
anisotropical | |
anisotropically | |
anisotropies | |
anisotropism | |
anisotropous | |
anystidae | |
anisum | |
anisuria | |
anita | |
anither | |
anything | |
anythingarian | |
anythingarianism | |
anythings | |
anytime | |
anitinstitutionalism | |
anitos | |
anitrogenous | |
anyway | |
anyways | |
anywhen | |
anywhence | |
anywhere | |
anywhereness | |
anywheres | |
anywhy | |
anywhither | |
anywise | |
anywither | |
anjan | |
anjou | |
ankara | |
ankaramite | |
ankaratrite | |
ankee | |
anker | |
ankerhold | |
ankerite | |
ankerites | |
ankh | |
ankhs | |
ankylenteron | |
ankyloblepharon | |
ankylocheilia | |
ankylodactylia | |
ankylodontia | |
ankyloglossia | |
ankylomele | |
ankylomerism | |
ankylophobia | |
ankylopodia | |
ankylopoietic | |
ankyloproctia | |
ankylorrhinia | |
ankylos | |
ankylosaur | |
ankylosaurus | |
ankylose | |
ankylosed | |
ankyloses | |
ankylosing | |
ankylosis | |
ankylostoma | |
ankylostomiasis | |
ankylotia | |
ankylotic | |
ankylotome | |
ankylotomy | |
ankylurethria | |
ankyroid | |
ankle | |
anklebone | |
anklebones | |
anklejack | |
ankles | |
anklet | |
anklets | |
anklong | |
anklung | |
ankoli | |
ankou | |
ankus | |
ankuses | |
ankush | |
ankusha | |
ankushes | |
anlace | |
anlaces | |
anlage | |
anlagen | |
anlages | |
anlas | |
anlases | |
anlaut | |
anlaute | |
anlet | |
anlia | |
anmia | |
ann | |
anna | |
annabel | |
annabergite | |
annal | |
annale | |
annaly | |
annalia | |
annaline | |
annalism | |
annalist | |
annalistic | |
annalistically | |
annalists | |
annalize | |
annals | |
annam | |
annamese | |
annamite | |
annamitic | |
annapolis | |
annapurna | |
annard | |
annary | |
annas | |
annat | |
annates | |
annats | |
annatto | |
annattos | |
anne | |
anneal | |
annealed | |
annealer | |
annealers | |
annealing | |
anneals | |
annect | |
annectant | |
annectent | |
annection | |
annelid | |
annelida | |
annelidan | |
annelides | |
annelidian | |
annelidous | |
annelids | |
annelism | |
annellata | |
anneloid | |
annerodite | |
annerre | |
anneslia | |
annet | |
annette | |
annex | |
annexa | |
annexable | |
annexal | |
annexation | |
annexational | |
annexationism | |
annexationist | |
annexations | |
annexe | |
annexed | |
annexer | |
annexes | |
annexing | |
annexion | |
annexionist | |
annexitis | |
annexive | |
annexment | |
annexure | |
anni | |
annicut | |
annidalin | |
annie | |
anniellidae | |
annihil | |
annihilability | |
annihilable | |
annihilate | |
annihilated | |
annihilates | |
annihilating | |
annihilation | |
annihilationism | |
annihilationist | |
annihilationistic | |
annihilationistical | |
annihilative | |
annihilator | |
annihilatory | |
annihilators | |
annist | |
annite | |
anniv | |
anniversalily | |
anniversary | |
anniversaries | |
anniversarily | |
anniversariness | |
anniverse | |
anno | |
annodated | |
annoy | |
annoyance | |
annoyancer | |
annoyances | |
annoyed | |
annoyer | |
annoyers | |
annoyful | |
annoying | |
annoyingly | |
annoyingness | |
annoyment | |
annoyous | |
annoyously | |
annoys | |
annominate | |
annomination | |
annona | |
annonaceae | |
annonaceous | |
annonce | |
annot | |
annotate | |
annotated | |
annotater | |
annotates | |
annotating | |
annotation | |
annotations | |
annotative | |
annotatively | |
annotativeness | |
annotator | |
annotatory | |
annotators | |
annotine | |
annotinous | |
annotto | |
announce | |
announceable | |
announced | |
announcement | |
announcements | |
announcer | |
announcers | |
announces | |
announcing | |
annual | |
annualist | |
annualize | |
annualized | |
annually | |
annuals | |
annuary | |
annuation | |
annueler | |
annueller | |
annuent | |
annuisance | |
annuitant | |
annuitants | |
annuity | |
annuities | |
annul | |
annular | |
annulary | |
annularia | |
annularity | |
annularly | |
annulata | |
annulate | |
annulated | |
annulately | |
annulation | |
annulations | |
annule | |
annuler | |
annulet | |
annulets | |
annulettee | |
annuli | |
annulism | |
annullable | |
annullate | |
annullation | |
annulled | |
annuller | |
annulli | |
annulling | |
annulment | |
annulments | |
annuloid | |
annuloida | |
annulosa | |
annulosan | |
annulose | |
annuls | |
annulus | |
annuluses | |
annum | |
annumerate | |
annunciable | |
annunciade | |
annunciate | |
annunciated | |
annunciates | |
annunciating | |
annunciation | |
annunciations | |
annunciative | |
annunciator | |
annunciatory | |
annunciators | |
annus | |
anoa | |
anoas | |
anobiidae | |
anobing | |
anocarpous | |
anocathartic | |
anociassociation | |
anociation | |
anocithesia | |
anococcygeal | |
anodal | |
anodally | |
anode | |
anodendron | |
anodes | |
anodic | |
anodically | |
anodine | |
anodyne | |
anodynes | |
anodynia | |
anodynic | |
anodynous | |
anodization | |
anodize | |
anodized | |
anodizes | |
anodizing | |
anodon | |
anodonta | |
anodontia | |
anodos | |
anoegenetic | |
anoesia | |
anoesis | |
anoestrous | |
anoestrum | |
anoestrus | |
anoetic | |
anogenic | |
anogenital | |
anogra | |
anoia | |
anoil | |
anoine | |
anoint | |
anointed | |
anointer | |
anointers | |
anointing | |
anointment | |
anointments | |
anoints | |
anole | |
anoles | |
anoli | |
anolian | |
anolympiad | |
anolis | |
anolyte | |
anolytes | |
anomal | |
anomala | |
anomaly | |
anomalies | |
anomaliflorous | |
anomaliped | |
anomalipod | |
anomalism | |
anomalist | |
anomalistic | |
anomalistical | |
anomalistically | |
anomalocephalus | |
anomaloflorous | |
anomalogonatae | |
anomalogonatous | |
anomalon | |
anomalonomy | |
anomalopteryx | |
anomaloscope | |
anomalotrophy | |
anomalous | |
anomalously | |
anomalousness | |
anomalure | |
anomaluridae | |
anomalurus | |
anomatheca | |
anomer | |
anomy | |
anomia | |
anomiacea | |
anomic | |
anomie | |
anomies | |
anomiidae | |
anomite | |
anomocarpous | |
anomodont | |
anomodontia | |
anomoean | |
anomoeanism | |
anomoeomery | |
anomophyllous | |
anomorhomboid | |
anomorhomboidal | |
anomouran | |
anomphalous | |
anomura | |
anomural | |
anomuran | |
anomurous | |
anon | |
anonaceous | |
anonad | |
anonang | |
anoncillo | |
anonychia | |
anonym | |
anonyma | |
anonyme | |
anonymity | |
anonymities | |
anonymous | |
anonymously | |
anonymousness | |
anonyms | |
anonymuncule | |
anonol | |
anoopsia | |
anoopsias | |
anoperineal | |
anophele | |
anopheles | |
anophelinae | |
anopheline | |
anophyte | |
anophoria | |
anophthalmia | |
anophthalmos | |
anophthalmus | |
anopia | |
anopias | |
anopisthograph | |
anopisthographic | |
anopisthographically | |
anopla | |
anoplanthus | |
anoplocephalic | |
anoplonemertean | |
anoplonemertini | |
anoplothere | |
anoplotheriidae | |
anoplotherioid | |
anoplotherium | |
anoplotheroid | |
anoplura | |
anopluriform | |
anopsy | |
anopsia | |
anopsias | |
anopubic | |
anorak | |
anoraks | |
anorchi | |
anorchia | |
anorchism | |
anorchous | |
anorchus | |
anorectal | |
anorectic | |
anorectous | |
anoretic | |
anorexy | |
anorexia | |
anorexiant | |
anorexias | |
anorexic | |
anorexics | |
anorexies | |
anorexigenic | |
anorgana | |
anorganic | |
anorganism | |
anorganology | |
anormal | |
anormality | |
anorn | |
anorogenic | |
anorth | |
anorthic | |
anorthite | |
anorthitic | |
anorthitite | |
anorthoclase | |
anorthography | |
anorthographic | |
anorthographical | |
anorthographically | |
anorthophyre | |
anorthopia | |
anorthoscope | |
anorthose | |
anorthosite | |
anoscope | |
anoscopy | |
anosia | |
anosmatic | |
anosmia | |
anosmias | |
anosmic | |
anosognosia | |
anosphrasia | |
anosphresia | |
anospinal | |
anostosis | |
anostraca | |
anoterite | |
another | |
anotherguess | |
anotherkins | |
anotia | |
anotropia | |
anotta | |
anotto | |
anotus | |
anounou | |
anour | |
anoura | |
anoure | |
anourous | |
anous | |
anova | |
anovesical | |
anovulant | |
anovular | |
anovulatory | |
anoxaemia | |
anoxaemic | |
anoxemia | |
anoxemias | |
anoxemic | |
anoxia | |
anoxias | |
anoxybiosis | |
anoxybiotic | |
anoxic | |
anoxidative | |
anoxyscope | |
anquera | |
anre | |
ans | |
ansa | |
ansae | |
ansar | |
ansarian | |
ansarie | |
ansate | |
ansated | |
ansation | |
anschauung | |
anschluss | |
anseis | |
ansel | |
anselm | |
anselmian | |
anser | |
anserated | |
anseres | |
anseriformes | |
anserin | |
anserinae | |
anserine | |
anserines | |
anserous | |
ansi | |
anspessade | |
anstoss | |
anstosse | |
ansu | |
ansulate | |
answer | |
answerability | |
answerable | |
answerableness | |
answerably | |
answered | |
answerer | |
answerers | |
answering | |
answeringly | |
answerless | |
answerlessly | |
answers | |
ant | |
anta | |
antacid | |
antacids | |
antacrid | |
antadiform | |
antae | |
antaean | |
antaeus | |
antagony | |
antagonisable | |
antagonisation | |
antagonise | |
antagonised | |
antagonising | |
antagonism | |
antagonisms | |
antagonist | |
antagonistic | |
antagonistical | |
antagonistically | |
antagonists | |
antagonizable | |
antagonization | |
antagonize | |
antagonized | |
antagonizer | |
antagonizes | |
antagonizing | |
antaimerina | |
antaios | |
antaiva | |
antal | |
antalgesic | |
antalgic | |
antalgics | |
antalgol | |
antalkali | |
antalkalies | |
antalkaline | |
antalkalis | |
antambulacral | |
antanacathartic | |
antanaclasis | |
antanagoge | |
antanandro | |
antanemic | |
antapex | |
antapexes | |
antaphrodisiac | |
antaphroditic | |
antapices | |
antapocha | |
antapodosis | |
antapology | |
antapoplectic | |
antar | |
antara | |
antarala | |
antaranga | |
antarchy | |
antarchism | |
antarchist | |
antarchistic | |
antarchistical | |
antarctalia | |
antarctalian | |
antarctic | |
antarctica | |
antarctical | |
antarctically | |
antarctogaea | |
antarctogaean | |
antares | |
antarthritic | |
antas | |
antasphyctic | |
antasthenic | |
antasthmatic | |
antatrophic | |
antbird | |
antdom | |
ante | |
anteact | |
anteal | |
anteambulate | |
anteambulation | |
anteater | |
anteaters | |
antebaptismal | |
antebath | |
antebellum | |
antebrachia | |
antebrachial | |
antebrachium | |
antebridal | |
antecabinet | |
antecaecal | |
antecardium | |
antecavern | |
antecedal | |
antecedaneous | |
antecedaneously | |
antecede | |
anteceded | |
antecedence | |
antecedency | |
antecedent | |
antecedental | |
antecedently | |
antecedents | |
antecedes | |
anteceding | |
antecell | |
antecessor | |
antechamber | |
antechambers | |
antechapel | |
antechinomys | |
antechoir | |
antechoirs | |
antechurch | |
anteclassical | |
antecloset | |
antecolic | |
antecommunion | |
anteconsonantal | |
antecornu | |
antecourt | |
antecoxal | |
antecubital | |
antecurvature | |
anted | |
antedate | |
antedated | |
antedates | |
antedating | |
antedawn | |
antediluvial | |
antediluvially | |
antediluvian | |
antedon | |
antedonin | |
antedorsal | |
anteed | |
antefact | |
antefebrile | |
antefix | |
antefixa | |
antefixal | |
antefixes | |
anteflected | |
anteflexed | |
anteflexion | |
antefurca | |
antefurcae | |
antefurcal | |
antefuture | |
antegarden | |
antegrade | |
antehall | |
antehypophysis | |
antehistoric | |
antehuman | |
anteing | |
anteinitial | |
antejentacular | |
antejudiciary | |
antejuramentum | |
antelabium | |
antelation | |
antelegal | |
antelocation | |
antelope | |
antelopes | |
antelopian | |
antelopine | |
antelucan | |
antelude | |
anteluminary | |
antemarginal | |
antemarital | |
antemask | |
antemedial | |
antemeridian | |
antemetallic | |
antemetic | |
antemillennial | |
antemingent | |
antemortal | |
antemortem | |
antemundane | |
antemural | |
antenarial | |
antenatal | |
antenatalitial | |
antenati | |
antenatus | |
antenave | |
antenna | |
antennae | |
antennal | |
antennary | |
antennaria | |
antennariid | |
antennariidae | |
antennarius | |
antennas | |
antennata | |
antennate | |
antennifer | |
antenniferous | |
antenniform | |
antennula | |
antennular | |
antennulary | |
antennule | |
antenodal | |
antenoon | |
antenor | |
antenumber | |
antenuptial | |
anteoccupation | |
anteocular | |
anteopercle | |
anteoperculum | |
anteorbital | |
antepagment | |
antepagmenta | |
antepagments | |
antepalatal | |
antepartum | |
antepaschal | |
antepaschel | |
antepast | |
antepasts | |
antepatriarchal | |
antepectoral | |
antepectus | |
antependia | |
antependium | |
antependiums | |
antepenuit | |
antepenult | |
antepenultima | |
antepenultimate | |
antepenults | |
antephialtic | |
antepileptic | |
antepyretic | |
antepirrhema | |
antepone | |
anteporch | |
anteport | |
anteportico | |
anteporticoes | |
anteporticos | |
anteposition | |
anteposthumous | |
anteprandial | |
antepredicament | |
antepredicamental | |
antepreterit | |
antepretonic | |
anteprohibition | |
anteprostate | |
anteprostatic | |
antequalm | |
antereformation | |
antereformational | |
anteresurrection | |
anterethic | |
anterevolutional | |
anterevolutionary | |
antergic | |
anteri | |
anteriad | |
anterin | |
anterioyancer | |
anterior | |
anteriority | |
anteriorly | |
anteriorness | |
anteriors | |
anteroclusion | |
anterodorsal | |
anteroexternal | |
anterofixation | |
anteroflexion | |
anterofrontal | |
anterograde | |
anteroinferior | |
anterointerior | |
anterointernal | |
anterolateral | |
anterolaterally | |
anteromedial | |
anteromedian | |
anteroom | |
anterooms | |
anteroparietal | |
anteropygal | |
anteroposterior | |
anteroposteriorly | |
anterospinal | |
anterosuperior | |
anteroventral | |
anteroventrally | |
antes | |
antescript | |
antesignani | |
antesignanus | |
antespring | |
antestature | |
antesternal | |
antesternum | |
antesunrise | |
antesuperior | |
antetemple | |
antethem | |
antetype | |
antetypes | |
anteva | |
antevenient | |
anteversion | |
antevert | |
anteverted | |
anteverting | |
anteverts | |
antevocalic | |
antewar | |
anthdia | |
anthecology | |
anthecological | |
anthecologist | |
antheia | |
anthela | |
anthelae | |
anthelia | |
anthelices | |
anthelion | |
anthelions | |
anthelix | |
anthelminthic | |
anthelmintic | |
anthem | |
anthema | |
anthemas | |
anthemata | |
anthemed | |
anthemene | |
anthemy | |
anthemia | |
anthemideae | |
antheming | |
anthemion | |
anthemis | |
anthems | |
anthemwise | |
anther | |
antheraea | |
antheral | |
anthericum | |
antherid | |
antheridia | |
antheridial | |
antheridiophore | |
antheridium | |
antherids | |
antheriferous | |
antheriform | |
antherine | |
antherless | |
antherogenous | |
antheroid | |
antherozoid | |
antherozoidal | |
antherozooid | |
antherozooidal | |
anthers | |
antheses | |
anthesis | |
anthesteria | |
anthesteriac | |
anthesterin | |
anthesterion | |
anthesterol | |
antheximeter | |
anthicidae | |
anthidium | |
anthill | |
anthyllis | |
anthills | |
anthinae | |
anthine | |
anthypnotic | |
anthypophora | |
anthypophoretic | |
anthobian | |
anthobiology | |
anthocarp | |
anthocarpous | |
anthocephalous | |
anthoceros | |
anthocerotaceae | |
anthocerotales | |
anthocerote | |
anthochlor | |
anthochlorine | |
anthocyan | |
anthocyanidin | |
anthocyanin | |
anthoclinium | |
anthodia | |
anthodium | |
anthoecology | |
anthoecological | |
anthoecologist | |
anthogenesis | |
anthogenetic | |
anthogenous | |
anthography | |
anthoid | |
anthokyan | |
anthol | |
antholysis | |
antholite | |
antholyza | |
anthology | |
anthological | |
anthologically | |
anthologies | |
anthologion | |
anthologise | |
anthologised | |
anthologising | |
anthologist | |
anthologists | |
anthologize | |
anthologized | |
anthologizer | |
anthologizes | |
anthologizing | |
anthomania | |
anthomaniac | |
anthomedusae | |
anthomedusan | |
anthomyia | |
anthomyiid | |
anthomyiidae | |
anthony | |
anthonin | |
anthonomus | |
anthood | |
anthophagy | |
anthophagous | |
anthophila | |
anthophile | |
anthophilian | |
anthophyllite | |
anthophyllitic | |
anthophilous | |
anthophyta | |
anthophyte | |
anthophobia | |
anthophora | |
anthophore | |
anthophoridae | |
anthophorous | |
anthorine | |
anthos | |
anthosiderite | |
anthospermum | |
anthotaxy | |
anthotaxis | |
anthotropic | |
anthotropism | |
anthoxanthin | |
anthoxanthum | |
anthozoa | |
anthozoan | |
anthozoic | |
anthozooid | |
anthozoon | |
anthracaemia | |
anthracemia | |
anthracene | |
anthraceniferous | |
anthraces | |
anthrachrysone | |
anthracia | |
anthracic | |
anthraciferous | |
anthracyl | |
anthracin | |
anthracite | |
anthracitic | |
anthracitiferous | |
anthracitious | |
anthracitism | |
anthracitization | |
anthracitous | |
anthracnose | |
anthracnosis | |
anthracocide | |
anthracoid | |
anthracolithic | |
anthracomancy | |
anthracomarti | |
anthracomartian | |
anthracomartus | |
anthracometer | |
anthracometric | |
anthraconecrosis | |
anthraconite | |
anthracosaurus | |
anthracosilicosis | |
anthracosis | |
anthracothere | |
anthracotheriidae | |
anthracotherium | |
anthracotic | |
anthracoxen | |
anthradiol | |
anthradiquinone | |
anthraflavic | |
anthragallol | |
anthrahydroquinone | |
anthralin | |
anthramin | |
anthramine | |
anthranil | |
anthranyl | |
anthranilate | |
anthranilic | |
anthranoyl | |
anthranol | |
anthranone | |
anthraphenone | |
anthrapyridine | |
anthrapurpurin | |
anthraquinol | |
anthraquinone | |
anthraquinonyl | |
anthrarufin | |
anthrasilicosis | |
anthratetrol | |
anthrathiophene | |
anthratriol | |
anthrax | |
anthraxylon | |
anthraxolite | |
anthrenus | |
anthribid | |
anthribidae | |
anthryl | |
anthrylene | |
anthriscus | |
anthrohopobiological | |
anthroic | |
anthrol | |
anthrone | |
anthrop | |
anthrophore | |
anthropic | |
anthropical | |
anthropidae | |
anthropobiology | |
anthropobiologist | |
anthropocentric | |
anthropocentrically | |
anthropocentricity | |
anthropocentrism | |
anthropoclimatology | |
anthropoclimatologist | |
anthropocosmic | |
anthropodeoxycholic | |
anthropodus | |
anthropogenesis | |
anthropogenetic | |
anthropogeny | |
anthropogenic | |
anthropogenist | |
anthropogenous | |
anthropogeographer | |
anthropogeography | |
anthropogeographic | |
anthropogeographical | |
anthropoglot | |
anthropogony | |
anthropography | |
anthropographic | |
anthropoid | |
anthropoidal | |
anthropoidea | |
anthropoidean | |
anthropoids | |
anthropol | |
anthropolater | |
anthropolatry | |
anthropolatric | |
anthropolite | |
anthropolith | |
anthropolithic | |
anthropolitic | |
anthropology | |
anthropologic | |
anthropological | |
anthropologically | |
anthropologies | |
anthropologist | |
anthropologists | |
anthropomancy | |
anthropomantic | |
anthropomantist | |
anthropometer | |
anthropometry | |
anthropometric | |
anthropometrical | |
anthropometrically | |
anthropometrist | |
anthropomophitism | |
anthropomorph | |
anthropomorpha | |
anthropomorphic | |
anthropomorphical | |
anthropomorphically | |
anthropomorphidae | |
anthropomorphisation | |
anthropomorphise | |
anthropomorphised | |
anthropomorphising | |
anthropomorphism | |
anthropomorphisms | |
anthropomorphist | |
anthropomorphite | |
anthropomorphitic | |
anthropomorphitical | |
anthropomorphitism | |
anthropomorphization | |
anthropomorphize | |
anthropomorphized | |
anthropomorphizing | |
anthropomorphology | |
anthropomorphological | |
anthropomorphologically | |
anthropomorphosis | |
anthropomorphotheist | |
anthropomorphous | |
anthropomorphously | |
anthroponym | |
anthroponomy | |
anthroponomical | |
anthroponomics | |
anthroponomist | |
anthropopathy | |
anthropopathia | |
anthropopathic | |
anthropopathically | |
anthropopathism | |
anthropopathite | |
anthropophagi | |
anthropophagy | |
anthropophagic | |
anthropophagical | |
anthropophaginian | |
anthropophagism | |
anthropophagist | |
anthropophagistic | |
anthropophagit | |
anthropophagite | |
anthropophagize | |
anthropophagous | |
anthropophagously | |
anthropophagus | |
anthropophilous | |
anthropophysiography | |
anthropophysite | |
anthropophobia | |
anthropophuism | |
anthropophuistic | |
anthropopithecus | |
anthropopsychic | |
anthropopsychism | |
anthropos | |
anthroposcopy | |
anthroposociology | |
anthroposociologist | |
anthroposomatology | |
anthroposophy | |
anthroposophic | |
anthroposophical | |
anthroposophist | |
anthropoteleoclogy | |
anthropoteleological | |
anthropotheism | |
anthropotheist | |
anthropotheistic | |
anthropotomy | |
anthropotomical | |
anthropotomist | |
anthropotoxin | |
anthropozoic | |
anthropurgic | |
anthroropolith | |
anthroxan | |
anthroxanic | |
anththeridia | |
anthurium | |
anthus | |
anti | |
antiabolitionist | |
antiabortion | |
antiabrasion | |
antiabrin | |
antiabsolutist | |
antiacid | |
antiadiaphorist | |
antiaditis | |
antiadministration | |
antiae | |
antiaesthetic | |
antiager | |
antiagglutinant | |
antiagglutinating | |
antiagglutination | |
antiagglutinative | |
antiagglutinin | |
antiaggression | |
antiaggressionist | |
antiaggressive | |
antiaggressively | |
antiaggressiveness | |
antiaircraft | |
antialbumid | |
antialbumin | |
antialbumose | |
antialcoholic | |
antialcoholism | |
antialcoholist | |
antialdoxime | |
antialexin | |
antialien | |
antiamboceptor | |
antiamylase | |
antiamusement | |
antianaphylactogen | |
antianaphylaxis | |
antianarchic | |
antianarchist | |
antiangular | |
antiannexation | |
antiannexationist | |
antianopheline | |
antianthrax | |
antianthropocentric | |
antianthropomorphism | |
antiantibody | |
antiantidote | |
antiantienzyme | |
antiantitoxin | |
antianxiety | |
antiaphrodisiac | |
antiaphthic | |
antiapoplectic | |
antiapostle | |
antiaquatic | |
antiar | |
antiarcha | |
antiarchi | |
antiarin | |
antiarins | |
antiaris | |
antiaristocracy | |
antiaristocracies | |
antiaristocrat | |
antiaristocratic | |
antiaristocratical | |
antiaristocratically | |
antiarrhythmic | |
antiars | |
antiarthritic | |
antiascetic | |
antiasthmatic | |
antiastronomical | |
antiatheism | |
antiatheist | |
antiatheistic | |
antiatheistical | |
antiatheistically | |
antiatom | |
antiatoms | |
antiatonement | |
antiattrition | |
antiauthoritarian | |
antiauthoritarianism | |
antiautolysin | |
antiauxin | |
antibacchic | |
antibacchii | |
antibacchius | |
antibacterial | |
antibacteriolytic | |
antiballistic | |
antiballooner | |
antibalm | |
antibank | |
antibaryon | |
antibasilican | |
antibenzaldoxime | |
antiberiberin | |
antibias | |
antibibliolatry | |
antibigotry | |
antibilious | |
antibiont | |
antibiosis | |
antibiotic | |
antibiotically | |
antibiotics | |
antibishop | |
antiblack | |
antiblackism | |
antiblastic | |
antiblennorrhagic | |
antiblock | |
antiblue | |
antibody | |
antibodies | |
antiboss | |
antiboxing | |
antibrachial | |
antibreakage | |
antibridal | |
antibromic | |
antibubonic | |
antibug | |
antiburgher | |
antibusing | |
antic | |
antica | |
anticachectic | |
antical | |
anticalcimine | |
anticalculous | |
antically | |
anticalligraphic | |
anticamera | |
anticancer | |
anticancerous | |
anticapital | |
anticapitalism | |
anticapitalist | |
anticapitalistic | |
anticapitalistically | |
anticapitalists | |
anticar | |
anticardiac | |
anticardium | |
anticarious | |
anticarnivorous | |
anticaste | |
anticatalase | |
anticatalyst | |
anticatalytic | |
anticatalytically | |
anticatalyzer | |
anticatarrhal | |
anticathexis | |
anticathode | |
anticatholic | |
anticausotic | |
anticaustic | |
anticensorial | |
anticensorious | |
anticensoriously | |
anticensoriousness | |
anticensorship | |
anticentralism | |
anticentralist | |
anticentralization | |
anticephalalgic | |
anticeremonial | |
anticeremonialism | |
anticeremonialist | |
anticeremonially | |
anticeremonious | |
anticeremoniously | |
anticeremoniousness | |
antichamber | |
antichance | |
anticheater | |
antichymosin | |
antichlor | |
antichlorine | |
antichloristic | |
antichlorotic | |
anticholagogue | |
anticholinergic | |
anticholinesterase | |
antichoromanic | |
antichorus | |
antichreses | |
antichresis | |
antichretic | |
antichrist | |
antichristian | |
antichristianism | |
antichristianity | |
antichristianly | |
antichrists | |
antichrome | |
antichronical | |
antichronically | |
antichronism | |
antichthon | |
antichthones | |
antichurch | |
antichurchian | |
anticyclic | |
anticyclical | |
anticyclically | |
anticyclogenesis | |
anticyclolysis | |
anticyclone | |
anticyclones | |
anticyclonic | |
anticyclonically | |
anticynic | |
anticynical | |
anticynically | |
anticynicism | |
anticipant | |
anticipatable | |
anticipate | |
anticipated | |
anticipates | |
anticipating | |
anticipatingly | |
anticipation | |
anticipations | |
anticipative | |
anticipatively | |
anticipator | |
anticipatory | |
anticipatorily | |
anticipators | |
anticity | |
anticytolysin | |
anticytotoxin | |
anticivic | |
anticivil | |
anticivilian | |
anticivism | |
anticize | |
antick | |
anticked | |
anticker | |
anticking | |
anticks | |
antickt | |
anticlactic | |
anticlassical | |
anticlassicalism | |
anticlassicalist | |
anticlassically | |
anticlassicalness | |
anticlassicism | |
anticlassicist | |
anticlastic | |
anticlea | |
anticlergy | |
anticlerical | |
anticlericalism | |
anticlericalist | |
anticly | |
anticlimactic | |
anticlimactical | |
anticlimactically | |
anticlimax | |
anticlimaxes | |
anticlinal | |
anticline | |
anticlines | |
anticlinoria | |
anticlinorium | |
anticlnoria | |
anticlockwise | |
anticlogging | |
anticnemion | |
anticness | |
anticoagulan | |
anticoagulant | |
anticoagulants | |
anticoagulate | |
anticoagulating | |
anticoagulation | |
anticoagulative | |
anticoagulator | |
anticoagulin | |
anticodon | |
anticogitative | |
anticoincidence | |
anticold | |
anticolic | |
anticombination | |
anticomet | |
anticomment | |
anticommercial | |
anticommercialism | |
anticommercialist | |
anticommercialistic | |
anticommerciality | |
anticommercially | |
anticommercialness | |
anticommunism | |
anticommunist | |
anticommunistic | |
anticommunistical | |
anticommunistically | |
anticommunists | |
anticommutative | |
anticompetitive | |
anticomplement | |
anticomplementary | |
anticomplex | |
anticonceptionist | |
anticonductor | |
anticonfederationism | |
anticonfederationist | |
anticonfederative | |
anticonformist | |
anticonformity | |
anticonformities | |
anticonscience | |
anticonscription | |
anticonscriptive | |
anticonservatism | |
anticonservative | |
anticonservatively | |
anticonservativeness | |
anticonstitution | |
anticonstitutional | |
anticonstitutionalism | |
anticonstitutionalist | |
anticonstitutionally | |
anticontagion | |
anticontagionist | |
anticontagious | |
anticontagiously | |
anticontagiousness | |
anticonvellent | |
anticonvention | |
anticonventional | |
anticonventionalism | |
anticonventionalist | |
anticonventionally | |
anticonvulsant | |
anticonvulsive | |
anticor | |
anticorn | |
anticorona | |
anticorrosion | |
anticorrosive | |
anticorrosively | |
anticorrosiveness | |
anticorrosives | |
anticorset | |
anticosine | |
anticosmetic | |
anticosmetics | |
anticouncil | |
anticourt | |
anticourtier | |
anticous | |
anticovenanter | |
anticovenanting | |
anticreation | |
anticreational | |
anticreationism | |
anticreationist | |
anticreative | |
anticreatively | |
anticreativeness | |
anticreativity | |
anticreator | |
anticreep | |
anticreeper | |
anticreeping | |
anticrepuscular | |
anticrepuscule | |
anticryptic | |
anticryptically | |
anticrisis | |
anticritic | |
anticritical | |
anticritically | |
anticriticalness | |
anticritique | |
anticrochet | |
anticrotalic | |
antics | |
anticularia | |
anticult | |
anticum | |
anticus | |
antidactyl | |
antidancing | |
antidecalogue | |
antideflation | |
antidemocracy | |
antidemocracies | |
antidemocrat | |
antidemocratic | |
antidemocratical | |
antidemocratically | |
antidemoniac | |
antidepressant | |
antidepressants | |
antidepressive | |
antiderivative | |
antidetonant | |
antidetonating | |
antidiabetic | |
antidiastase | |
antidicomarian | |
antidicomarianite | |
antidictionary | |
antidiffuser | |
antidynamic | |
antidynasty | |
antidynastic | |
antidynastical | |
antidynastically | |
antidinic | |
antidiphtheria | |
antidiphtheric | |
antidiphtherin | |
antidiphtheritic | |
antidisciplinarian | |
antidyscratic | |
antidysenteric | |
antidisestablishmentarian | |
antidisestablishmentarianism | |
antidysuric | |
antidiuretic | |
antidivine | |
antidivorce | |
antidogmatic | |
antidogmatical | |
antidogmatically | |
antidogmatism | |
antidogmatist | |
antidomestic | |
antidomestically | |
antidominican | |
antidora | |
antidorcas | |
antidoron | |
antidotal | |
antidotally | |
antidotary | |
antidote | |
antidoted | |
antidotes | |
antidotical | |
antidotically | |
antidoting | |
antidotism | |
antidraft | |
antidrag | |
antidromal | |
antidromy | |
antidromic | |
antidromically | |
antidromous | |
antidrug | |
antiduke | |
antidumping | |
antiecclesiastic | |
antiecclesiastical | |
antiecclesiastically | |
antiecclesiasticism | |
antiedemic | |
antieducation | |
antieducational | |
antieducationalist | |
antieducationally | |
antieducationist | |
antiegoism | |
antiegoist | |
antiegoistic | |
antiegoistical | |
antiegoistically | |
antiegotism | |
antiegotist | |
antiegotistic | |
antiegotistical | |
antiegotistically | |
antieyestrain | |
antiejaculation | |
antielectron | |
antielectrons | |
antiemetic | |
antiemperor | |
antiempiric | |
antiempirical | |
antiempirically | |
antiempiricism | |
antiempiricist | |
antiendotoxin | |
antiendowment | |
antienergistic | |
antient | |
antienthusiasm | |
antienthusiast | |
antienthusiastic | |
antienthusiastically | |
antienvironmentalism | |
antienvironmentalist | |
antienvironmentalists | |
antienzymatic | |
antienzyme | |
antienzymic | |
antiepicenter | |
antiepileptic | |
antiepiscopal | |
antiepiscopist | |
antiepithelial | |
antierysipelas | |
antierosion | |
antierosive | |
antiestablishment | |
antietam | |
antiethnic | |
antieugenic | |
antievangelical | |
antievolution | |
antievolutional | |
antievolutionally | |
antievolutionary | |
antievolutionist | |
antievolutionistic | |
antiexpansion | |
antiexpansionism | |
antiexpansionist | |
antiexporting | |
antiexpressionism | |
antiexpressionist | |
antiexpressionistic | |
antiexpressive | |
antiexpressively | |
antiexpressiveness | |
antiextreme | |
antiface | |
antifaction | |
antifame | |
antifanatic | |
antifascism | |
antifascist | |
antifascists | |
antifat | |
antifatigue | |
antifebrile | |
antifebrin | |
antifederal | |
antifederalism | |
antifederalist | |
antifelon | |
antifelony | |
antifeminism | |
antifeminist | |
antifeministic | |
antiferment | |
antifermentative | |
antiferroelectric | |
antiferromagnet | |
antiferromagnetic | |
antiferromagnetism | |
antifertility | |
antifertilizer | |
antifeudal | |
antifeudalism | |
antifeudalist | |
antifeudalistic | |
antifeudalization | |
antifibrinolysin | |
antifibrinolysis | |
antifideism | |
antifire | |
antiflash | |
antiflattering | |
antiflatulent | |
antiflux | |
antifoam | |
antifoaming | |
antifoggant | |
antifogmatic | |
antiforeign | |
antiforeignism | |
antiformant | |
antiformin | |
antifouler | |
antifouling | |
antifowl | |
antifreeze | |
antifreezes | |
antifreezing | |
antifriction | |
antifrictional | |
antifrost | |
antifundamentalism | |
antifundamentalist | |
antifungal | |
antifungin | |
antigay | |
antigalactagogue | |
antigalactic | |
antigambling | |
antiganting | |
antigen | |
antigene | |
antigenes | |
antigenic | |
antigenically | |
antigenicity | |
antigens | |
antighostism | |
antigigmanic | |
antigyrous | |
antiglare | |
antiglyoxalase | |
antiglobulin | |
antignostic | |
antignostical | |
antigod | |
antigone | |
antigonococcic | |
antigonon | |
antigonorrheic | |
antigonus | |
antigorite | |
antigovernment | |
antigovernmental | |
antigovernmentally | |
antigraft | |
antigrammatical | |
antigrammatically | |
antigrammaticalness | |
antigraph | |
antigraphy | |
antigravitate | |
antigravitation | |
antigravitational | |
antigravitationally | |
antigravity | |
antigropelos | |
antigrowth | |
antiguan | |
antiguggler | |
antigun | |
antihalation | |
antiharmonist | |
antihectic | |
antihelices | |
antihelix | |
antihelixes | |
antihelminthic | |
antihemagglutinin | |
antihemisphere | |
antihemoglobin | |
antihemolysin | |
antihemolytic | |
antihemophilic | |
antihemorrhagic | |
antihemorrheidal | |
antihero | |
antiheroes | |
antiheroic | |
antiheroism | |
antiheterolysin | |
antihydrophobic | |
antihydropic | |
antihydropin | |
antihidrotic | |
antihierarchal | |
antihierarchy | |
antihierarchic | |
antihierarchical | |
antihierarchically | |
antihierarchies | |
antihierarchism | |
antihierarchist | |
antihygienic | |
antihygienically | |
antihylist | |
antihypertensive | |
antihypertensives | |
antihypnotic | |
antihypnotically | |
antihypochondriac | |
antihypophora | |
antihistamine | |
antihistamines | |
antihistaminic | |
antihysteric | |
antihistorical | |
antiholiday | |
antihormone | |
antihuff | |
antihum | |
antihuman | |
antihumanism | |
antihumanist | |
antihumanistic | |
antihumbuggist | |
antihunting | |
antiinflammatory | |
antiinflammatories | |
antiinstitutionalist | |
antiinstitutionalists | |
antiinsurrectionally | |
antiinsurrectionists | |
antijam | |
antikamnia | |
antikathode | |
antikenotoxin | |
antiketogen | |
antiketogenesis | |
antiketogenic | |
antikinase | |
antiking | |
antikings | |
antiknock | |
antiknocks | |
antilabor | |
antilaborist | |
antilacrosse | |
antilacrosser | |
antilactase | |
antilapsarian | |
antilapse | |
antileague | |
antileak | |
antileft | |
antilegalist | |
antilegomena | |
antilemic | |
antilens | |
antilepsis | |
antileptic | |
antilepton | |
antilethargic | |
antileukemic | |
antileveling | |
antilevelling | |
antilia | |
antiliberal | |
antiliberalism | |
antiliberalist | |
antiliberalistic | |
antiliberally | |
antiliberalness | |
antiliberals | |
antilibration | |
antilife | |
antilift | |
antilynching | |
antilipase | |
antilipoid | |
antiliquor | |
antilysin | |
antilysis | |
antilyssic | |
antilithic | |
antilytic | |
antilitter | |
antiliturgy | |
antiliturgic | |
antiliturgical | |
antiliturgically | |
antiliturgist | |
antillean | |
antilles | |
antilobium | |
antilocapra | |
antilocapridae | |
antilochus | |
antiloemic | |
antilog | |
antilogarithm | |
antilogarithmic | |
antilogarithms | |
antilogy | |
antilogic | |
antilogical | |
antilogies | |
antilogism | |
antilogistic | |
antilogistically | |
antilogous | |
antilogs | |
antiloimic | |
antilope | |
antilopinae | |
antilopine | |
antiloquy | |
antilottery | |
antiluetic | |
antiluetin | |
antimacassar | |
antimacassars | |
antimachination | |
antimachine | |
antimachinery | |
antimagistratical | |
antimagnetic | |
antimalaria | |
antimalarial | |
antimale | |
antimallein | |
antiman | |
antimaniac | |
antimaniacal | |
antimarian | |
antimark | |
antimartyr | |
antimask | |
antimasker | |
antimasks | |
antimason | |
antimasonic | |
antimasonry | |
antimasque | |
antimasquer | |
antimasquerade | |
antimaterialism | |
antimaterialist | |
antimaterialistic | |
antimaterialistically | |
antimatrimonial | |
antimatrimonialist | |
antimatter | |
antimechanism | |
antimechanist | |
antimechanistic | |
antimechanistically | |
antimechanization | |
antimediaeval | |
antimediaevalism | |
antimediaevalist | |
antimediaevally | |
antimedical | |
antimedically | |
antimedication | |
antimedicative | |
antimedicine | |
antimedieval | |
antimedievalism | |
antimedievalist | |
antimedievally | |
antimelancholic | |
antimellin | |
antimeningococcic | |
antimensia | |
antimension | |
antimensium | |
antimephitic | |
antimere | |
antimeres | |
antimerger | |
antimerging | |
antimeric | |
antimerina | |
antimerism | |
antimeristem | |
antimesia | |
antimeson | |
antimetabole | |
antimetabolite | |
antimetathesis | |
antimetathetic | |
antimeter | |
antimethod | |
antimethodic | |
antimethodical | |
antimethodically | |
antimethodicalness | |
antimetrical | |
antimetropia | |
antimetropic | |
antimiasmatic | |
antimycotic | |
antimicrobial | |
antimicrobic | |
antimilitary | |
antimilitarism | |
antimilitarist | |
antimilitaristic | |
antimilitaristically | |
antiministerial | |
antiministerialist | |
antiministerially | |
antiminsia | |
antiminsion | |
antimiscegenation | |
antimissile | |
antimission | |
antimissionary | |
antimissioner | |
antimystic | |
antimystical | |
antimystically | |
antimysticalness | |
antimysticism | |
antimythic | |
antimythical | |
antimitotic | |
antimixing | |
antimnemonic | |
antimodel | |
antimodern | |
antimodernism | |
antimodernist | |
antimodernistic | |
antimodernization | |
antimodernly | |
antimodernness | |
antimonarch | |
antimonarchal | |
antimonarchally | |
antimonarchy | |
antimonarchial | |
antimonarchic | |
antimonarchical | |
antimonarchically | |
antimonarchicalness | |
antimonarchism | |
antimonarchist | |
antimonarchistic | |
antimonarchists | |
antimonate | |
antimony | |
antimonial | |
antimoniate | |
antimoniated | |
antimonic | |
antimonid | |
antimonide | |
antimonies | |
antimoniferous | |
antimonyl | |
antimonious | |
antimonite | |
antimonium | |
antimoniuret | |
antimoniureted | |
antimoniuretted | |
antimonopoly | |
antimonopolism | |
antimonopolist | |
antimonopolistic | |
antimonopolization | |
antimonous | |
antimonsoon | |
antimoral | |
antimoralism | |
antimoralist | |
antimoralistic | |
antimorality | |
antimosquito | |
antimusical | |
antimusically | |
antimusicalness | |
antinarcotic | |
antinarcotics | |
antinarrative | |
antinational | |
antinationalism | |
antinationalist | |
antinationalistic | |
antinationalistically | |
antinationalists | |
antinationalization | |
antinationally | |
antinatural | |
antinaturalism | |
antinaturalist | |
antinaturalistic | |
antinaturally | |
antinaturalness | |
antinegro | |
antinegroism | |
antineologian | |
antineoplastic | |
antinephritic | |
antinepotic | |
antineuralgic | |
antineuritic | |
antineurotoxin | |
antineutral | |
antineutralism | |
antineutrality | |
antineutrally | |
antineutrino | |
antineutrinos | |
antineutron | |
antineutrons | |
anting | |
antinganting | |
antings | |
antinial | |
antinicotine | |
antinihilism | |
antinihilist | |
antinihilistic | |
antinion | |
antinodal | |
antinode | |
antinodes | |
antinoise | |
antinome | |
antinomy | |
antinomian | |
antinomianism | |
antinomians | |
antinomic | |
antinomical | |
antinomies | |
antinomist | |
antinoness | |
antinormal | |
antinormality | |
antinormalness | |
antinosarian | |
antinous | |
antinovel | |
antinovelist | |
antinovels | |
antinucleon | |
antinucleons | |
antinuke | |
antiochene | |
antiochian | |
antiochianism | |
antiodont | |
antiodontalgic | |
antiope | |
antiopelmous | |
antiophthalmic | |
antiopium | |
antiopiumist | |
antiopiumite | |
antioptimism | |
antioptimist | |
antioptimistic | |
antioptimistical | |
antioptimistically | |
antioptionist | |
antiorgastic | |
antiorthodox | |
antiorthodoxy | |
antiorthodoxly | |
antioxidant | |
antioxidants | |
antioxidase | |
antioxidizer | |
antioxidizing | |
antioxygen | |
antioxygenating | |
antioxygenation | |
antioxygenator | |
antioxygenic | |
antiozonant | |
antipacifism | |
antipacifist | |
antipacifistic | |
antipacifists | |
antipapacy | |
antipapal | |
antipapalist | |
antipapism | |
antipapist | |
antipapistic | |
antipapistical | |
antiparabema | |
antiparabemata | |
antiparagraphe | |
antiparagraphic | |
antiparalytic | |
antiparalytical | |
antiparallel | |
antiparallelogram | |
antiparasitic | |
antiparasitical | |
antiparasitically | |
antiparastatitis | |
antiparliament | |
antiparliamental | |
antiparliamentary | |
antiparliamentarian | |
antiparliamentarians | |
antiparliamentarist | |
antiparliamenteer | |
antipart | |
antiparticle | |
antiparticles | |
antipasch | |
antipascha | |
antipass | |
antipasti | |
antipastic | |
antipasto | |
antipastos | |
antipatharia | |
antipatharian | |
antipathetic | |
antipathetical | |
antipathetically | |
antipatheticalness | |
antipathy | |
antipathic | |
antipathida | |
antipathies | |
antipathist | |
antipathize | |
antipathogen | |
antipathogene | |
antipathogenic | |
antipatriarch | |
antipatriarchal | |
antipatriarchally | |
antipatriarchy | |
antipatriot | |
antipatriotic | |
antipatriotically | |
antipatriotism | |
antipedal | |
antipedobaptism | |
antipedobaptist | |
antipeduncular | |
antipellagric | |
antipendium | |
antipepsin | |
antipeptone | |
antiperiodic | |
antiperistalsis | |
antiperistaltic | |
antiperistasis | |
antiperistatic | |
antiperistatical | |
antiperistatically | |
antipersonnel | |
antiperspirant | |
antiperspirants | |
antiperthite | |
antipestilence | |
antipestilent | |
antipestilential | |
antipestilently | |
antipetalous | |
antipewism | |
antiphagocytic | |
antipharisaic | |
antipharmic | |
antiphase | |
antiphylloxeric | |
antiphilosophy | |
antiphilosophic | |
antiphilosophical | |
antiphilosophically | |
antiphilosophies | |
antiphilosophism | |
antiphysic | |
antiphysical | |
antiphysically | |
antiphysicalness | |
antiphysician | |
antiphlogistian | |
antiphlogistic | |
antiphlogistin | |
antiphon | |
antiphona | |
antiphonal | |
antiphonally | |
antiphonary | |
antiphonaries | |
antiphoner | |
antiphonetic | |
antiphony | |
antiphonic | |
antiphonical | |
antiphonically | |
antiphonies | |
antiphonon | |
antiphons | |
antiphrases | |
antiphrasis | |
antiphrastic | |
antiphrastical | |
antiphrastically | |
antiphthisic | |
antiphthisical | |
antipyic | |
antipyics | |
antipill | |
antipyonin | |
antipyresis | |
antipyretic | |
antipyretics | |
antipyryl | |
antipyrin | |
antipyrine | |
antipyrotic | |
antiplague | |
antiplanet | |
antiplastic | |
antiplatelet | |
antipleion | |
antiplenist | |
antiplethoric | |
antipleuritic | |
antiplurality | |
antipneumococcic | |
antipodagric | |
antipodagron | |
antipodal | |
antipode | |
antipodean | |
antipodeans | |
antipodes | |
antipodic | |
antipodism | |
antipodist | |
antipoetic | |
antipoetical | |
antipoetically | |
antipoints | |
antipolar | |
antipole | |
antipolemist | |
antipoles | |
antipolygamy | |
antipolyneuritic | |
antipolitical | |
antipolitically | |
antipolitics | |
antipollution | |
antipolo | |
antipool | |
antipooling | |
antipope | |
antipopery | |
antipopes | |
antipopular | |
antipopularization | |
antipopulationist | |
antipopulism | |
antiportable | |
antiposition | |
antipot | |
antipoverty | |
antipragmatic | |
antipragmatical | |
antipragmatically | |
antipragmaticism | |
antipragmatism | |
antipragmatist | |
antiprecipitin | |
antipredeterminant | |
antiprelate | |
antiprelatic | |
antiprelatism | |
antiprelatist | |
antipreparedness | |
antiprestidigitation | |
antipriest | |
antipriestcraft | |
antipriesthood | |
antiprime | |
antiprimer | |
antipriming | |
antiprinciple | |
antiprism | |
antiproductionist | |
antiproductive | |
antiproductively | |
antiproductiveness | |
antiproductivity | |
antiprofiteering | |
antiprogressive | |
antiprohibition | |
antiprohibitionist | |
antiprojectivity | |
antiprophet | |
antiprostate | |
antiprostatic | |
antiprotease | |
antiproteolysis | |
antiproton | |
antiprotons | |
antiprotozoal | |
antiprudential | |
antipruritic | |
antipsalmist | |
antipsychiatry | |
antipsychotic | |
antipsoric | |
antiptosis | |
antipudic | |
antipuritan | |
antiputrefaction | |
antiputrefactive | |
antiputrescent | |
antiputrid | |
antiq | |
antiqua | |
antiquary | |
antiquarian | |
antiquarianism | |
antiquarianize | |
antiquarianly | |
antiquarians | |
antiquaries | |
antiquarism | |
antiquarium | |
antiquartan | |
antiquate | |
antiquated | |
antiquatedness | |
antiquates | |
antiquating | |
antiquation | |
antique | |
antiqued | |
antiquely | |
antiqueness | |
antiquer | |
antiquers | |
antiques | |
antiquing | |
antiquist | |
antiquitarian | |
antiquity | |
antiquities | |
antiquum | |
antirabic | |
antirabies | |
antiracemate | |
antiracer | |
antirachitic | |
antirachitically | |
antiracial | |
antiracially | |
antiracing | |
antiracism | |
antiradiant | |
antiradiating | |
antiradiation | |
antiradical | |
antiradicalism | |
antiradically | |
antiradicals | |
antirailwayist | |
antirape | |
antirational | |
antirationalism | |
antirationalist | |
antirationalistic | |
antirationality | |
antirationally | |
antirattler | |
antireacting | |
antireaction | |
antireactionary | |
antireactionaries | |
antireactive | |
antirealism | |
antirealist | |
antirealistic | |
antirealistically | |
antireality | |
antirebating | |
antirecruiting | |
antired | |
antiredeposition | |
antireducer | |
antireducing | |
antireduction | |
antireductive | |
antireflexive | |
antireform | |
antireformer | |
antireforming | |
antireformist | |
antireligion | |
antireligionist | |
antireligiosity | |
antireligious | |
antireligiously | |
antiremonstrant | |
antirennet | |
antirennin | |
antirent | |
antirenter | |
antirentism | |
antirepublican | |
antirepublicanism | |
antireservationist | |
antiresonance | |
antiresonator | |
antirestoration | |
antireticular | |
antirevisionist | |
antirevolution | |
antirevolutionary | |
antirevolutionaries | |
antirevolutionist | |
antirheumatic | |
antiricin | |
antirickets | |
antiriot | |
antiritual | |
antiritualism | |
antiritualist | |
antiritualistic | |
antirobin | |
antiroyal | |
antiroyalism | |
antiroyalist | |
antiroll | |
antiromance | |
antiromantic | |
antiromanticism | |
antiromanticist | |
antirrhinum | |
antirumor | |
antirun | |
antirust | |
antirusts | |
antis | |
antisabbatarian | |
antisacerdotal | |
antisacerdotalist | |
antisag | |
antisaloon | |
antisalooner | |
antisavage | |
antiscabious | |
antiscale | |
antisceptic | |
antisceptical | |
antiscepticism | |
antischolastic | |
antischolastically | |
antischolasticism | |
antischool | |
antiscia | |
antiscians | |
antiscience | |
antiscientific | |
antiscientifically | |
antiscii | |
antiscion | |
antiscolic | |
antiscorbutic | |
antiscorbutical | |
antiscriptural | |
antiscripturism | |
antiscrofulous | |
antiseismic | |
antiselene | |
antisemite | |
antisemitic | |
antisemitism | |
antisensitivity | |
antisensitizer | |
antisensitizing | |
antisensuality | |
antisensuous | |
antisensuously | |
antisensuousness | |
antisepalous | |
antisepsin | |
antisepsis | |
antiseptic | |
antiseptical | |
antiseptically | |
antisepticise | |
antisepticised | |
antisepticising | |
antisepticism | |
antisepticist | |
antisepticize | |
antisepticized | |
antisepticizing | |
antiseptics | |
antiseption | |
antiseptize | |
antisera | |
antiserum | |
antiserums | |
antiserumsera | |
antisex | |
antisexist | |
antiship | |
antishipping | |
antisi | |
antisialagogue | |
antisialic | |
antisiccative | |
antisideric | |
antisilverite | |
antisymmetry | |
antisymmetric | |
antisymmetrical | |
antisimoniacal | |
antisyndicalism | |
antisyndicalist | |
antisyndication | |
antisine | |
antisynod | |
antisyphilitic | |
antisiphon | |
antisiphonal | |
antiskeptic | |
antiskeptical | |
antiskepticism | |
antiskid | |
antiskidding | |
antislavery | |
antislaveryism | |
antislickens | |
antislip | |
antismog | |
antismoking | |
antismut | |
antisnapper | |
antisnob | |
antisocial | |
antisocialist | |
antisocialistic | |
antisocialistically | |
antisociality | |
antisocially | |
antisolar | |
antisophism | |
antisophist | |
antisophistic | |
antisophistication | |
antisophistry | |
antisoporific | |
antispace | |
antispadix | |
antispasis | |
antispasmodic | |
antispasmodics | |
antispast | |
antispastic | |
antispectroscopic | |
antispeculation | |
antispermotoxin | |
antispiritual | |
antispiritualism | |
antispiritualist | |
antispiritualistic | |
antispiritually | |
antispirochetic | |
antisplasher | |
antisplenetic | |
antisplitting | |
antispreader | |
antispreading | |
antisquama | |
antisquatting | |
antistadholder | |
antistadholderian | |
antistalling | |
antistaphylococcic | |
antistat | |
antistate | |
antistater | |
antistatic | |
antistatism | |
antistatist | |
antisteapsin | |
antisterility | |
antistes | |
antistimulant | |
antistimulation | |
antistock | |
antistreptococcal | |
antistreptococcic | |
antistreptococcin | |
antistreptococcus | |
antistrike | |
antistriker | |
antistrophal | |
antistrophe | |
antistrophic | |
antistrophically | |
antistrophize | |
antistrophon | |
antistrumatic | |
antistrumous | |
antisubmarine | |
antisubstance | |
antisudoral | |
antisudorific | |
antisuffrage | |
antisuffragist | |
antisun | |
antisupernatural | |
antisupernaturalism | |
antisupernaturalist | |
antisupernaturalistic | |
antisurplician | |
antitabetic | |
antitabloid | |
antitangent | |
antitank | |
antitarnish | |
antitarnishing | |
antitartaric | |
antitax | |
antitaxation | |
antiteetotalism | |
antitegula | |
antitemperance | |
antitetanic | |
antitetanolysin | |
antithalian | |
antitheft | |
antitheism | |
antitheist | |
antitheistic | |
antitheistical | |
antitheistically | |
antithenar | |
antitheology | |
antitheologian | |
antitheological | |
antitheologizing | |
antithermic | |
antithermin | |
antitheses | |
antithesis | |
antithesism | |
antithesize | |
antithet | |
antithetic | |
antithetical | |
antithetically | |
antithetics | |
antithyroid | |
antithrombic | |
antithrombin | |
antitintinnabularian | |
antitypal | |
antitype | |
antitypes | |
antityphoid | |
antitypy | |
antitypic | |
antitypical | |
antitypically | |
antitypous | |
antityrosinase | |
antitobacco | |
antitobacconal | |
antitobacconist | |
antitonic | |
antitorpedo | |
antitoxic | |
antitoxin | |
antitoxine | |
antitoxins | |
antitrade | |
antitrades | |
antitradition | |
antitraditional | |
antitraditionalist | |
antitraditionally | |
antitragal | |
antitragi | |
antitragic | |
antitragicus | |
antitragus | |
antitrinitarian | |
antitrypsin | |
antitryptic | |
antitrismus | |
antitrochanter | |
antitropal | |
antitrope | |
antitropy | |
antitropic | |
antitropical | |
antitropous | |
antitrust | |
antitruster | |
antitubercular | |
antituberculin | |
antituberculosis | |
antituberculotic | |
antituberculous | |
antitumor | |
antitumoral | |
antiturnpikeism | |
antitussive | |
antitwilight | |
antiuating | |
antiunion | |
antiunionist | |
antiuratic | |
antiurease | |
antiusurious | |
antiutilitarian | |
antiutilitarianism | |
antivaccination | |
antivaccinationist | |
antivaccinator | |
antivaccinist | |
antivariolous | |
antivenefic | |
antivenene | |
antivenereal | |
antivenin | |
antivenine | |
antivenins | |
antivenom | |
antivenomous | |
antivermicular | |
antivibrating | |
antivibrator | |
antivibratory | |
antivice | |
antiviral | |
antivirotic | |
antivirus | |
antivitalist | |
antivitalistic | |
antivitamin | |
antivivisection | |
antivivisectionist | |
antivivisectionists | |
antivolition | |
antiwar | |
antiwarlike | |
antiwaste | |
antiwear | |
antiwedge | |
antiweed | |
antiwhite | |
antiwhitism | |
antiwit | |
antiworld | |
antixerophthalmic | |
antizealot | |
antizymic | |
antizymotic | |
antizoea | |
antjar | |
antler | |
antlered | |
antlerite | |
antlerless | |
antlers | |
antlia | |
antliate | |
antlid | |
antlike | |
antling | |
antlion | |
antlions | |
antlophobia | |
antluetic | |
antocular | |
antodontalgic | |
antoeci | |
antoecian | |
antoecians | |
antoinette | |
anton | |
antonella | |
antony | |
antonia | |
antonym | |
antonymy | |
antonymic | |
antonymies | |
antonymous | |
antonyms | |
antonina | |
antoniniani | |
antoninianus | |
antonio | |
antonomasy | |
antonomasia | |
antonomastic | |
antonomastical | |
antonomastically | |
antonovics | |
antorbital | |
antozone | |
antozonite | |
antproof | |
antra | |
antral | |
antralgia | |
antre | |
antrectomy | |
antres | |
antrin | |
antritis | |
antrocele | |
antronasal | |
antrophore | |
antrophose | |
antrorse | |
antrorsely | |
antroscope | |
antroscopy | |
antrostomus | |
antrotympanic | |
antrotympanitis | |
antrotome | |
antrotomy | |
antroversion | |
antrovert | |
antrum | |
antrums | |
antrustion | |
antrustionship | |
ants | |
antship | |
antshrike | |
antsy | |
antsier | |
antsiest | |
antsigne | |
antthrush | |
antu | |
antum | |
antwerp | |
antwise | |
anubin | |
anubing | |
anubis | |
anucleate | |
anucleated | |
anukabiet | |
anukit | |
anuloma | |
anunder | |
anura | |
anural | |
anuran | |
anurans | |
anureses | |
anuresis | |
anuretic | |
anury | |
anuria | |
anurias | |
anuric | |
anurous | |
anus | |
anuses | |
anusim | |
anusvara | |
anutraminosa | |
anvasser | |
anvil | |
anviled | |
anviling | |
anvilled | |
anvilling | |
anvils | |
anvilsmith | |
anviltop | |
anviltops | |
anxiety | |
anxieties | |
anxietude | |
anxiolytic | |
anxious | |
anxiously | |
anxiousness | |
anzac | |
anzanian | |
ao | |
aob | |
aogiri | |
aoife | |
aoli | |
aonach | |
aonian | |
aor | |
aorist | |
aoristic | |
aoristically | |
aorists | |
aorta | |
aortae | |
aortal | |
aortarctia | |
aortas | |
aortectasia | |
aortectasis | |
aortic | |
aorticorenal | |
aortism | |
aortitis | |
aortoclasia | |
aortoclasis | |
aortography | |
aortographic | |
aortographies | |
aortoiliac | |
aortolith | |
aortomalacia | |
aortomalaxis | |
aortopathy | |
aortoptosia | |
aortoptosis | |
aortorrhaphy | |
aortosclerosis | |
aortostenosis | |
aortotomy | |
aosmic | |
aotea | |
aotearoa | |
aotes | |
aotus | |
aouad | |
aouads | |
aoudad | |
aoudads | |
aouellimiden | |
aoul | |
ap | |
apa | |
apabhramsa | |
apace | |
apache | |
apaches | |
apachette | |
apachism | |
apachite | |
apadana | |
apaesthesia | |
apaesthetic | |
apaesthetize | |
apaestically | |
apagoge | |
apagoges | |
apagogic | |
apagogical | |
apagogically | |
apagogue | |
apay | |
apayao | |
apaid | |
apair | |
apaise | |
apalachee | |
apalit | |
apama | |
apanage | |
apanaged | |
apanages | |
apanaging | |
apandry | |
apanteles | |
apantesis | |
apanthropy | |
apanthropia | |
apar | |
aparai | |
aparaphysate | |
aparavidya | |
apardon | |
aparejo | |
aparejos | |
apargia | |
aparithmesis | |
apart | |
apartado | |
apartheid | |
aparthrosis | |
apartment | |
apartmental | |
apartments | |
apartness | |
apasote | |
apass | |
apast | |
apastra | |
apastron | |
apasttra | |
apatan | |
apatela | |
apatetic | |
apathaton | |
apatheia | |
apathetic | |
apathetical | |
apathetically | |
apathy | |
apathia | |
apathic | |
apathies | |
apathism | |
apathist | |
apathistical | |
apathize | |
apathogenic | |
apathus | |
apatite | |
apatites | |
apatornis | |
apatosaurus | |
apaturia | |
ape | |
apeak | |
apectomy | |
aped | |
apedom | |
apeek | |
apehood | |
apeiron | |
apeirophobia | |
apelet | |
apelike | |
apeling | |
apelles | |
apellous | |
apeman | |
apemantus | |
apennine | |
apennines | |
apenteric | |
apepsy | |
apepsia | |
apepsinia | |
apeptic | |
aper | |
aperch | |
apercu | |
apercus | |
aperea | |
apery | |
aperient | |
aperients | |
aperies | |
aperiodic | |
aperiodically | |
aperiodicity | |
aperispermic | |
aperistalsis | |
aperitif | |
aperitifs | |
aperitive | |
apers | |
apersee | |
apert | |
apertion | |
apertly | |
apertness | |
apertometer | |
apertum | |
apertural | |
aperture | |
apertured | |
apertures | |
aperu | |
aperulosid | |
apes | |
apesthesia | |
apesthetic | |
apesthetize | |
apetalae | |
apetaly | |
apetalies | |
apetaloid | |
apetalose | |
apetalous | |
apetalousness | |
apex | |
apexed | |
apexes | |
apexing | |
aph | |
aphacia | |
aphacial | |
aphacic | |
aphaeresis | |
aphaeretic | |
aphagia | |
aphagias | |
aphakia | |
aphakial | |
aphakic | |
aphanapteryx | |
aphanes | |
aphanesite | |
aphaniptera | |
aphanipterous | |
aphanisia | |
aphanisis | |
aphanite | |
aphanites | |
aphanitic | |
aphanitism | |
aphanomyces | |
aphanophyre | |
aphanozygous | |
apharsathacites | |
aphasia | |
aphasiac | |
aphasiacs | |
aphasias | |
aphasic | |
aphasics | |
aphasiology | |
aphelandra | |
aphelenchus | |
aphelia | |
aphelian | |
aphelilia | |
aphelilions | |
aphelinus | |
aphelion | |
apheliotropic | |
apheliotropically | |
apheliotropism | |
aphelops | |
aphemia | |
aphemic | |
aphengescope | |
aphengoscope | |
aphenoscope | |
apheresis | |
apheretic | |
apheses | |
aphesis | |
apheta | |
aphetic | |
aphetically | |
aphetism | |
aphetize | |
aphicidal | |
aphicide | |
aphid | |
aphides | |
aphidian | |
aphidians | |
aphidicide | |
aphidicolous | |
aphidid | |
aphididae | |
aphidiinae | |
aphidious | |
aphidius | |
aphidivorous | |
aphidlion | |
aphidolysin | |
aphidophagous | |
aphidozer | |
aphydrotropic | |
aphydrotropism | |
aphids | |
aphilanthropy | |
aphylly | |
aphyllies | |
aphyllose | |
aphyllous | |
aphyric | |
aphis | |
aphislion | |
aphizog | |
aphlaston | |
aphlebia | |
aphlogistic | |
aphnology | |
aphodal | |
aphodi | |
aphodian | |
aphodius | |
aphodus | |
apholate | |
apholates | |
aphony | |
aphonia | |
aphonias | |
aphonic | |
aphonics | |
aphonous | |
aphoria | |
aphorise | |
aphorised | |
aphoriser | |
aphorises | |
aphorising | |
aphorism | |
aphorismatic | |
aphorismer | |
aphorismic | |
aphorismical | |
aphorismos | |
aphorisms | |
aphorist | |
aphoristic | |
aphoristical | |
aphoristically | |
aphorists | |
aphorize | |
aphorized | |
aphorizer | |
aphorizes | |
aphorizing | |
aphoruridae | |
aphotaxis | |
aphotic | |
aphototactic | |
aphototaxis | |
aphototropic | |
aphototropism | |
aphra | |
aphrasia | |
aphrite | |
aphrizite | |
aphrodesiac | |
aphrodisia | |
aphrodisiac | |
aphrodisiacal | |
aphrodisiacs | |
aphrodisian | |
aphrodisiomania | |
aphrodisiomaniac | |
aphrodisiomaniacal | |
aphrodision | |
aphrodistic | |
aphrodite | |
aphroditeum | |
aphroditic | |
aphroditidae | |
aphroditous | |
aphrolite | |
aphronia | |
aphronitre | |
aphrosiderite | |
aphtha | |
aphthae | |
aphthartodocetae | |
aphthartodocetic | |
aphthartodocetism | |
aphthic | |
aphthitalite | |
aphthoid | |
aphthong | |
aphthongal | |
aphthongia | |
aphthonite | |
aphthous | |
apiaca | |
apiaceae | |
apiaceous | |
apiales | |
apian | |
apiararies | |
apiary | |
apiarian | |
apiarians | |
apiaries | |
apiarist | |
apiarists | |
apiator | |
apicad | |
apical | |
apically | |
apices | |
apicial | |
apician | |
apicifixed | |
apicilar | |
apicillary | |
apicitis | |
apickaback | |
apickback | |
apickpack | |
apicoectomy | |
apicolysis | |
apicula | |
apicular | |
apiculate | |
apiculated | |
apiculation | |
apiculi | |
apicultural | |
apiculture | |
apiculturist | |
apiculus | |
apidae | |
apiece | |
apieces | |
apigenin | |
apii | |
apiin | |
apikores | |
apikoros | |
apikorsim | |
apilary | |
apili | |
apimania | |
apimanias | |
apina | |
apinae | |
apinage | |
apinch | |
aping | |
apinoid | |
apio | |
apioceridae | |
apiocrinite | |
apioid | |
apioidal | |
apiol | |
apiole | |
apiolin | |
apiology | |
apiologies | |
apiologist | |
apyonin | |
apionol | |
apios | |
apiose | |
apiosoma | |
apiphobia | |
apyrase | |
apyrases | |
apyrene | |
apyretic | |
apyrexy | |
apyrexia | |
apyrexial | |
apyrotype | |
apyrous | |
apis | |
apish | |
apishamore | |
apishly | |
apishness | |
apism | |
apitong | |
apitpat | |
apium | |
apivorous | |
apjohnite | |
apl | |
aplace | |
aplacental | |
aplacentalia | |
aplacentaria | |
aplacophora | |
aplacophoran | |
aplacophorous | |
aplanat | |
aplanatic | |
aplanatically | |
aplanatism | |
aplanobacter | |
aplanogamete | |
aplanospore | |
aplasia | |
aplasias | |
aplastic | |
aplectrum | |
aplenty | |
aplysia | |
aplite | |
aplites | |
aplitic | |
aplobasalt | |
aplodiorite | |
aplodontia | |
aplodontiidae | |
aplomb | |
aplombs | |
aplome | |
aplopappus | |
aploperistomatous | |
aplostemonous | |
aplotaxene | |
aplotomy | |
apluda | |
aplustra | |
aplustre | |
aplustria | |
apnea | |
apneal | |
apneas | |
apneic | |
apneumatic | |
apneumatosis | |
apneumona | |
apneumonous | |
apneusis | |
apneustic | |
apnoea | |
apnoeal | |
apnoeas | |
apnoeic | |
apoaconitine | |
apoapsides | |
apoapsis | |
apoatropine | |
apobiotic | |
apoblast | |
apocaffeine | |
apocalypse | |
apocalypses | |
apocalypst | |
apocalypt | |
apocalyptic | |
apocalyptical | |
apocalyptically | |
apocalypticism | |
apocalyptism | |
apocalyptist | |
apocamphoric | |
apocarp | |
apocarpy | |
apocarpies | |
apocarpous | |
apocarps | |
apocatastasis | |
apocatastatic | |
apocatharsis | |
apocathartic | |
apocenter | |
apocentre | |
apocentric | |
apocentricity | |
apocha | |
apochae | |
apocholic | |
apochromat | |
apochromatic | |
apochromatism | |
apocynaceae | |
apocynaceous | |
apocinchonine | |
apocyneous | |
apocynthion | |
apocynthions | |
apocynum | |
apocyte | |
apocodeine | |
apocopate | |
apocopated | |
apocopating | |
apocopation | |
apocope | |
apocopes | |
apocopic | |
apocrenic | |
apocrine | |
apocryph | |
apocrypha | |
apocryphal | |
apocryphalist | |
apocryphally | |
apocryphalness | |
apocryphate | |
apocryphon | |
apocrisiary | |
apocrita | |
apocrustic | |
apod | |
apoda | |
apodal | |
apodan | |
apodedeipna | |
apodeictic | |
apodeictical | |
apodeictically | |
apodeipna | |
apodeipnon | |
apodeixis | |
apodema | |
apodemal | |
apodemas | |
apodemata | |
apodematal | |
apodeme | |
apodes | |
apodia | |
apodiabolosis | |
apodictic | |
apodictical | |
apodictically | |
apodictive | |
apodidae | |
apodioxis | |
apodyteria | |
apodyterium | |
apodixis | |
apodoses | |
apodosis | |
apodous | |
apods | |
apoembryony | |
apoenzyme | |
apofenchene | |
apoferritin | |
apogaeic | |
apogaic | |
apogalacteum | |
apogamy | |
apogamic | |
apogamically | |
apogamies | |
apogamous | |
apogamously | |
apogeal | |
apogean | |
apogee | |
apogees | |
apogeic | |
apogeny | |
apogenous | |
apogeotropic | |
apogeotropically | |
apogeotropism | |
apogon | |
apogonid | |
apogonidae | |
apograph | |
apographal | |
apographic | |
apographical | |
apoharmine | |
apohyal | |
apoidea | |
apoikia | |
apoious | |
apoise | |
apojove | |
apokatastasis | |
apokatastatic | |
apokrea | |
apokreos | |
apolar | |
apolarity | |
apolaustic | |
apolegamic | |
apolysin | |
apolysis | |
apolista | |
apolistan | |
apolitical | |
apolitically | |
apolytikion | |
apollinarian | |
apollinarianism | |
apolline | |
apollinian | |
apollyon | |
apollo | |
apollonia | |
apollonian | |
apollonic | |
apollonicon | |
apollonistic | |
apollos | |
apolloship | |
apolog | |
apologal | |
apologer | |
apologete | |
apologetic | |
apologetical | |
apologetically | |
apologetics | |
apology | |
apologia | |
apologiae | |
apologias | |
apological | |
apologies | |
apologise | |
apologised | |
apologiser | |
apologising | |
apologist | |
apologists | |
apologize | |
apologized | |
apologizer | |
apologizers | |
apologizes | |
apologizing | |
apologs | |
apologue | |
apologues | |
apolousis | |
apolune | |
apolunes | |
apolusis | |
apomecometer | |
apomecometry | |
apometaboly | |
apometabolic | |
apometabolism | |
apometabolous | |
apomict | |
apomictic | |
apomictical | |
apomictically | |
apomicts | |
apomixes | |
apomixis | |
apomorphia | |
apomorphin | |
apomorphine | |
aponeurology | |
aponeurorrhaphy | |
aponeuroses | |
aponeurosis | |
aponeurositis | |
aponeurotic | |
aponeurotome | |
aponeurotomy | |
aponia | |
aponic | |
aponogeton | |
aponogetonaceae | |
aponogetonaceous | |
apoop | |
apopemptic | |
apopenptic | |
apopetalous | |
apophantic | |
apophasis | |
apophatic | |
apophyeeal | |
apophyge | |
apophyges | |
apophylactic | |
apophylaxis | |
apophyllite | |
apophyllous | |
apophis | |
apophysary | |
apophysate | |
apophyseal | |
apophyses | |
apophysial | |
apophysis | |
apophysitis | |
apophlegm | |
apophlegmatic | |
apophlegmatism | |
apophony | |
apophonia | |
apophonic | |
apophonies | |
apophorometer | |
apophthegm | |
apophthegmatic | |
apophthegmatical | |
apophthegmatist | |
apopyle | |
apoplasmodial | |
apoplastogamous | |
apoplectic | |
apoplectical | |
apoplectically | |
apoplectiform | |
apoplectoid | |
apoplex | |
apoplexy | |
apoplexies | |
apoplexious | |
apoquinamine | |
apoquinine | |
aporetic | |
aporetical | |
aporhyolite | |
aporia | |
aporiae | |
aporias | |
aporobranchia | |
aporobranchian | |
aporobranchiata | |
aporocactus | |
aporosa | |
aporose | |
aporphin | |
aporphine | |
aporrhaidae | |
aporrhais | |
aporrhaoid | |
aporrhea | |
aporrhegma | |
aporrhiegma | |
aporrhoea | |
aport | |
aportlast | |
aportoise | |
aposafranine | |
aposaturn | |
aposaturnium | |
aposelene | |
aposematic | |
aposematically | |
aposepalous | |
aposia | |
aposiopeses | |
aposiopesis | |
aposiopestic | |
aposiopetic | |
apositia | |
apositic | |
aposoro | |
apospory | |
aposporic | |
apospories | |
aposporogony | |
aposporous | |
apostacy | |
apostacies | |
apostacize | |
apostasy | |
apostasies | |
apostasis | |
apostate | |
apostates | |
apostatic | |
apostatical | |
apostatically | |
apostatise | |
apostatised | |
apostatising | |
apostatism | |
apostatize | |
apostatized | |
apostatizes | |
apostatizing | |
apostaxis | |
apostem | |
apostemate | |
apostematic | |
apostemation | |
apostematous | |
aposteme | |
aposteriori | |
aposthia | |
aposthume | |
apostil | |
apostille | |
apostils | |
apostle | |
apostlehood | |
apostles | |
apostleship | |
apostleships | |
apostoile | |
apostolate | |
apostoless | |
apostoli | |
apostolian | |
apostolic | |
apostolical | |
apostolically | |
apostolicalness | |
apostolici | |
apostolicism | |
apostolicity | |
apostolize | |
apostolos | |
apostrophal | |
apostrophation | |
apostrophe | |
apostrophes | |
apostrophi | |
apostrophic | |
apostrophied | |
apostrophise | |
apostrophised | |
apostrophising | |
apostrophize | |
apostrophized | |
apostrophizes | |
apostrophizing | |
apostrophus | |
apostume | |
apotactic | |
apotactici | |
apotactite | |
apotelesm | |
apotelesmatic | |
apotelesmatical | |
apothec | |
apothecal | |
apothecarcaries | |
apothecary | |
apothecaries | |
apothecaryship | |
apothece | |
apotheces | |
apothecia | |
apothecial | |
apothecium | |
apothegm | |
apothegmatic | |
apothegmatical | |
apothegmatically | |
apothegmatist | |
apothegmatize | |
apothegms | |
apothem | |
apothems | |
apotheose | |
apotheoses | |
apotheosis | |
apotheosise | |
apotheosised | |
apotheosising | |
apotheosize | |
apotheosized | |
apotheosizing | |
apothesine | |
apothesis | |
apothgm | |
apotihecal | |
apotype | |
apotypic | |
apotome | |
apotracheal | |
apotropaic | |
apotropaically | |
apotropaion | |
apotropaism | |
apotropous | |
apoturmeric | |
apout | |
apoxesis | |
apoxyomenos | |
apozem | |
apozema | |
apozemical | |
apozymase | |
app | |
appay | |
appair | |
appal | |
appalachia | |
appalachian | |
appalachians | |
appale | |
appall | |
appalled | |
appalling | |
appallingly | |
appallingness | |
appallment | |
appalls | |
appalment | |
appaloosa | |
appaloosas | |
appals | |
appalto | |
appanage | |
appanaged | |
appanages | |
appanaging | |
appanagist | |
appar | |
apparail | |
apparance | |
apparat | |
apparatchik | |
apparatchiki | |
apparatchiks | |
apparation | |
apparats | |
apparatus | |
apparatuses | |
apparel | |
appareled | |
appareling | |
apparelled | |
apparelling | |
apparelment | |
apparels | |
apparence | |
apparency | |
apparencies | |
apparens | |
apparent | |
apparentation | |
apparentement | |
apparentements | |
apparently | |
apparentness | |
apparition | |
apparitional | |
apparitions | |
apparitor | |
appartement | |
appassionata | |
appassionatamente | |
appassionate | |
appassionato | |
appast | |
appaume | |
appaumee | |
appd | |
appeach | |
appeacher | |
appeachment | |
appeal | |
appealability | |
appealable | |
appealed | |
appealer | |
appealers | |
appealing | |
appealingly | |
appealingness | |
appeals | |
appear | |
appearance | |
appearanced | |
appearances | |
appeared | |
appearer | |
appearers | |
appearing | |
appears | |
appeasable | |
appeasableness | |
appeasably | |
appease | |
appeased | |
appeasement | |
appeasements | |
appeaser | |
appeasers | |
appeases | |
appeasing | |
appeasingly | |
appeasive | |
appel | |
appellability | |
appellable | |
appellancy | |
appellant | |
appellants | |
appellate | |
appellation | |
appellational | |
appellations | |
appellative | |
appellatived | |
appellatively | |
appellativeness | |
appellatory | |
appellee | |
appellees | |
appellor | |
appellors | |
appels | |
appenage | |
append | |
appendage | |
appendaged | |
appendages | |
appendalgia | |
appendance | |
appendancy | |
appendant | |
appendectomy | |
appendectomies | |
appended | |
appendence | |
appendency | |
appendent | |
appender | |
appenders | |
appendical | |
appendicalgia | |
appendicate | |
appendice | |
appendiceal | |
appendicectasis | |
appendicectomy | |
appendicectomies | |
appendices | |
appendicial | |
appendicious | |
appendicitis | |
appendicle | |
appendicocaecostomy | |
appendicostomy | |
appendicular | |
appendicularia | |
appendicularian | |
appendiculariidae | |
appendiculata | |
appendiculate | |
appendiculated | |
appending | |
appenditious | |
appendix | |
appendixed | |
appendixes | |
appendixing | |
appendorontgenography | |
appendotome | |
appends | |
appennage | |
appense | |
appentice | |
appenzell | |
apperceive | |
apperceived | |
apperceiving | |
apperception | |
apperceptionism | |
apperceptionist | |
apperceptionistic | |
apperceptive | |
apperceptively | |
appercipient | |
appere | |
apperil | |
appersonation | |
appersonification | |
appert | |
appertain | |
appertained | |
appertaining | |
appertainment | |
appertains | |
appertinent | |
appertise | |
appestat | |
appestats | |
appet | |
appete | |
appetence | |
appetency | |
appetencies | |
appetent | |
appetently | |
appetibility | |
appetible | |
appetibleness | |
appetiser | |
appetising | |
appetisse | |
appetit | |
appetite | |
appetites | |
appetition | |
appetitional | |
appetitious | |
appetitive | |
appetitiveness | |
appetitost | |
appetize | |
appetized | |
appetizement | |
appetizer | |
appetizers | |
appetizing | |
appetizingly | |
appinite | |
appius | |
appl | |
applanate | |
applanation | |
applaud | |
applaudable | |
applaudably | |
applauded | |
applauder | |
applauders | |
applauding | |
applaudingly | |
applauds | |
applause | |
applauses | |
applausive | |
applausively | |
apple | |
appleberry | |
appleblossom | |
applecart | |
appled | |
appledrane | |
appledrone | |
applegrower | |
applejack | |
applejohn | |
applemonger | |
applenut | |
appleringy | |
appleringie | |
appleroot | |
apples | |
applesauce | |
applesnits | |
applewife | |
applewoman | |
applewood | |
apply | |
appliable | |
appliableness | |
appliably | |
appliance | |
appliances | |
appliant | |
applicability | |
applicabilities | |
applicable | |
applicableness | |
applicably | |
applicancy | |
applicant | |
applicants | |
applicate | |
application | |
applications | |
applicative | |
applicatively | |
applicator | |
applicatory | |
applicatorily | |
applicators | |
applied | |
appliedly | |
applier | |
appliers | |
applies | |
applying | |
applyingly | |
applyment | |
appling | |
applique | |
appliqued | |
appliqueing | |
appliques | |
applosion | |
applosive | |
applot | |
applotment | |
appmt | |
appoggiatura | |
appoggiaturas | |
appoggiature | |
appoint | |
appointable | |
appointe | |
appointed | |
appointee | |
appointees | |
appointer | |
appointers | |
appointing | |
appointive | |
appointively | |
appointment | |
appointments | |
appointor | |
appoints | |
appomatox | |
appomattoc | |
appomattox | |
apport | |
apportion | |
apportionable | |
apportionate | |
apportioned | |
apportioner | |
apportioning | |
apportionment | |
apportionments | |
apportions | |
apposability | |
apposable | |
appose | |
apposed | |
apposer | |
apposers | |
apposes | |
apposing | |
apposiopestic | |
apposite | |
appositely | |
appositeness | |
apposition | |
appositional | |
appositionally | |
appositions | |
appositive | |
appositively | |
apppetible | |
appraisable | |
appraisal | |
appraisals | |
appraise | |
appraised | |
appraisement | |
appraiser | |
appraisers | |
appraises | |
appraising | |
appraisingly | |
appraisive | |
apprecate | |
appreciable | |
appreciably | |
appreciant | |
appreciate | |
appreciated | |
appreciates | |
appreciating | |
appreciatingly | |
appreciation | |
appreciational | |
appreciations | |
appreciativ | |
appreciative | |
appreciatively | |
appreciativeness | |
appreciator | |
appreciatory | |
appreciatorily | |
appreciators | |
appredicate | |
apprehend | |
apprehendable | |
apprehended | |
apprehender | |
apprehending | |
apprehendingly | |
apprehends | |
apprehensibility | |
apprehensible | |
apprehensibly | |
apprehension | |
apprehensions | |
apprehensive | |
apprehensively | |
apprehensiveness | |
apprend | |
apprense | |
apprentice | |
apprenticed | |
apprenticehood | |
apprenticement | |
apprentices | |
apprenticeship | |
apprenticeships | |
apprenticing | |
appress | |
appressed | |
appressor | |
appressoria | |
appressorial | |
appressorium | |
apprest | |
appreteur | |
appreve | |
apprise | |
apprised | |
appriser | |
apprisers | |
apprises | |
apprising | |
apprizal | |
apprize | |
apprized | |
apprizement | |
apprizer | |
apprizers | |
apprizes | |
apprizing | |
appro | |
approach | |
approachability | |
approachabl | |
approachable | |
approachableness | |
approached | |
approacher | |
approachers | |
approaches | |
approaching | |
approachless | |
approachment | |
approbate | |
approbated | |
approbating | |
approbation | |
approbations | |
approbative | |
approbativeness | |
approbator | |
approbatory | |
apprompt | |
approof | |
appropinquate | |
appropinquation | |
appropinquity | |
appropre | |
appropriable | |
appropriament | |
appropriate | |
appropriated | |
appropriately | |
appropriateness | |
appropriates | |
appropriating | |
appropriation | |
appropriations | |
appropriative | |
appropriativeness | |
appropriator | |
appropriators | |
approvability | |
approvable | |
approvableness | |
approvably | |
approval | |
approvals | |
approvance | |
approve | |
approved | |
approvedly | |
approvedness | |
approvement | |
approver | |
approvers | |
approves | |
approving | |
approvingly | |
approx | |
approximable | |
approximal | |
approximant | |
approximants | |
approximate | |
approximated | |
approximately | |
approximates | |
approximating | |
approximation | |
approximations | |
approximative | |
approximatively | |
approximativeness | |
approximator | |
appt | |
apptd | |
appui | |
appulse | |
appulses | |
appulsion | |
appulsive | |
appulsively | |
appunctuation | |
appurtenance | |
appurtenances | |
appurtenant | |
apr | |
apractic | |
apraxia | |
apraxias | |
apraxic | |
apreynte | |
aprendiz | |
apres | |
apricate | |
aprication | |
aprickle | |
apricot | |
apricots | |
april | |
aprilesque | |
apriline | |
aprilis | |
apriori | |
apriorism | |
apriorist | |
aprioristic | |
aprioristically | |
apriority | |
apritif | |
aprocta | |
aproctia | |
aproctous | |
apron | |
aproned | |
aproneer | |
apronful | |
aproning | |
apronless | |
apronlike | |
aprons | |
apronstring | |
apropos | |
aprosexia | |
aprosopia | |
aprosopous | |
aproterodont | |
aprowl | |
apse | |
apselaphesia | |
apselaphesis | |
apses | |
apsychia | |
apsychical | |
apsid | |
apsidal | |
apsidally | |
apsides | |
apsidiole | |
apsinthion | |
apsis | |
apt | |
aptal | |
aptate | |
aptenodytes | |
apter | |
aptera | |
apteral | |
apteran | |
apteria | |
apterial | |
apteryges | |
apterygial | |
apterygidae | |
apterygiformes | |
apterygogenea | |
apterygota | |
apterygote | |
apterygotous | |
apteryla | |
apterium | |
apteryx | |
apteryxes | |
apteroid | |
apterous | |
aptest | |
aptyalia | |
aptyalism | |
aptian | |
aptiana | |
aptychus | |
aptitude | |
aptitudes | |
aptitudinal | |
aptitudinally | |
aptly | |
aptness | |
aptnesses | |
aptote | |
aptotic | |
apts | |
apulian | |
apulmonic | |
apulse | |
apurpose | |
apus | |
apx | |
aq | |
aqua | |
aquabelle | |
aquabib | |
aquacade | |
aquacades | |
aquacultural | |
aquaculture | |
aquadag | |
aquaduct | |
aquaducts | |
aquae | |
aquaemanale | |
aquaemanalia | |
aquafer | |
aquafortis | |
aquafortist | |
aquage | |
aquagreen | |
aquake | |
aqualung | |
aqualunger | |
aquamanale | |
aquamanalia | |
aquamanile | |
aquamaniles | |
aquamanilia | |
aquamarine | |
aquamarines | |
aquameter | |
aquanaut | |
aquanauts | |
aquaphobia | |
aquaplane | |
aquaplaned | |
aquaplaner | |
aquaplanes | |
aquaplaning | |
aquapuncture | |
aquaregia | |
aquarelle | |
aquarelles | |
aquarellist | |
aquaria | |
aquarial | |
aquarian | |
aquarians | |
aquarid | |
aquarii | |
aquariia | |
aquariist | |
aquariiums | |
aquarist | |
aquarists | |
aquarium | |
aquariums | |
aquarius | |
aquarter | |
aquas | |
aquascope | |
aquascutum | |
aquashow | |
aquate | |
aquatic | |
aquatical | |
aquatically | |
aquatics | |
aquatile | |
aquatint | |
aquatinta | |
aquatinted | |
aquatinter | |
aquatinting | |
aquatintist | |
aquatints | |
aquation | |
aquativeness | |
aquatone | |
aquatones | |
aquavalent | |
aquavit | |
aquavits | |
aqueduct | |
aqueducts | |
aqueity | |
aquench | |
aqueoglacial | |
aqueoigneous | |
aqueomercurial | |
aqueous | |
aqueously | |
aqueousness | |
aquerne | |
aquiclude | |
aquicolous | |
aquicultural | |
aquiculture | |
aquiculturist | |
aquifer | |
aquiferous | |
aquifers | |
aquifoliaceae | |
aquifoliaceous | |
aquiform | |
aquifuge | |
aquila | |
aquilaria | |
aquilawood | |
aquilege | |
aquilegia | |
aquilia | |
aquilian | |
aquilid | |
aquiline | |
aquilinity | |
aquilino | |
aquilon | |
aquinas | |
aquincubital | |
aquincubitalism | |
aquinist | |
aquintocubital | |
aquintocubitalism | |
aquiparous | |
aquitanian | |
aquiver | |
aquo | |
aquocapsulitis | |
aquocarbonic | |
aquocellolitis | |
aquopentamminecobaltic | |
aquose | |
aquosity | |
aquotization | |
aquotize | |
ar | |
ara | |
arab | |
araba | |
araban | |
arabana | |
arabella | |
arabesk | |
arabesks | |
arabesque | |
arabesquely | |
arabesquerie | |
arabesques | |
araby | |
arabia | |
arabian | |
arabianize | |
arabians | |
arabic | |
arabica | |
arabicism | |
arabicize | |
arabidopsis | |
arabiyeh | |
arability | |
arabin | |
arabine | |
arabinic | |
arabinose | |
arabinosic | |
arabinoside | |
arabis | |
arabism | |
arabist | |
arabit | |
arabite | |
arabitol | |
arabize | |
arabized | |
arabizes | |
arabizing | |
arable | |
arables | |
arabophil | |
arabs | |
araca | |
aracana | |
aracanga | |
aracari | |
arace | |
araceae | |
araceous | |
arach | |
arache | |
arachic | |
arachide | |
arachidic | |
arachidonic | |
arachin | |
arachis | |
arachnactis | |
arachne | |
arachnean | |
arachnephobia | |
arachnid | |
arachnida | |
arachnidan | |
arachnidial | |
arachnidism | |
arachnidium | |
arachnids | |
arachnism | |
arachnites | |
arachnitis | |
arachnoid | |
arachnoidal | |
arachnoidea | |
arachnoidean | |
arachnoiditis | |
arachnology | |
arachnological | |
arachnologist | |
arachnomorphae | |
arachnophagous | |
arachnopia | |
arad | |
aradid | |
aradidae | |
arado | |
araeometer | |
araeosystyle | |
araeostyle | |
araeotic | |
aragallus | |
arage | |
aragonese | |
aragonian | |
aragonite | |
aragonitic | |
aragonspath | |
araguane | |
araguato | |
araignee | |
arain | |
arayne | |
arains | |
araire | |
araise | |
arak | |
arakanese | |
arakawaite | |
arake | |
araks | |
arales | |
aralia | |
araliaceae | |
araliaceous | |
araliad | |
araliaephyllum | |
aralie | |
araliophyllum | |
aralkyl | |
aralkylated | |
aramaean | |
aramaic | |
aramaicize | |
aramayoite | |
aramaism | |
aramid | |
aramidae | |
aramids | |
aramina | |
araminta | |
aramis | |
aramitess | |
aramu | |
aramus | |
aranea | |
araneae | |
araneid | |
araneida | |
araneidal | |
araneidan | |
araneids | |
araneiform | |
araneiformes | |
araneiformia | |
aranein | |
araneina | |
araneoidea | |
araneology | |
araneologist | |
araneose | |
araneous | |
aranga | |
arango | |
arangoes | |
aranyaka | |
arank | |
aranzada | |
arapahite | |
arapaho | |
arapahos | |
arapaima | |
arapaimas | |
araphorostic | |
araphostic | |
araponga | |
arapunga | |
araquaju | |
arar | |
arara | |
araracanga | |
ararao | |
ararauna | |
arariba | |
araroba | |
ararobas | |
araru | |
arase | |
arati | |
aratinga | |
aration | |
aratory | |
araua | |
arauan | |
araucan | |
araucanian | |
araucano | |
araucaria | |
araucariaceae | |
araucarian | |
araucarioxylon | |
araujia | |
arauna | |
arawa | |
arawak | |
arawakan | |
arawakian | |
arb | |
arba | |
arbacia | |
arbacin | |
arbalest | |
arbalester | |
arbalestre | |
arbalestrier | |
arbalests | |
arbalist | |
arbalister | |
arbalists | |
arbalo | |
arbalos | |
arbela | |
arber | |
arbinose | |
arbiter | |
arbiters | |
arbith | |
arbitrable | |
arbitrage | |
arbitrager | |
arbitragers | |
arbitrages | |
arbitrageur | |
arbitragist | |
arbitral | |
arbitrament | |
arbitraments | |
arbitrary | |
arbitraries | |
arbitrarily | |
arbitrariness | |
arbitrate | |
arbitrated | |
arbitrates | |
arbitrating | |
arbitration | |
arbitrational | |
arbitrationist | |
arbitrations | |
arbitrative | |
arbitrator | |
arbitrators | |
arbitratorship | |
arbitratrix | |
arbitre | |
arbitrement | |
arbitrer | |
arbitress | |
arbitry | |
arblast | |
arboloco | |
arbor | |
arboraceous | |
arboral | |
arborary | |
arborator | |
arborea | |
arboreal | |
arboreally | |
arborean | |
arbored | |
arboreous | |
arborer | |
arbores | |
arborescence | |
arborescent | |
arborescently | |
arboresque | |
arboret | |
arboreta | |
arboretum | |
arboretums | |
arbory | |
arborical | |
arboricole | |
arboricoline | |
arboricolous | |
arboricultural | |
arboriculture | |
arboriculturist | |
arboriform | |
arborise | |
arborist | |
arborists | |
arborization | |
arborize | |
arborized | |
arborizes | |
arborizing | |
arboroid | |
arborolater | |
arborolatry | |
arborous | |
arbors | |
arborvitae | |
arborvitaes | |
arborway | |
arbota | |
arbour | |
arboured | |
arbours | |
arbovirus | |
arbs | |
arbtrn | |
arbuscle | |
arbuscles | |
arbuscula | |
arbuscular | |
arbuscule | |
arbust | |
arbusta | |
arbusterin | |
arbusterol | |
arbustum | |
arbutase | |
arbute | |
arbutean | |
arbutes | |
arbutin | |
arbutinase | |
arbutus | |
arbutuses | |
arc | |
arca | |
arcabucero | |
arcacea | |
arcade | |
arcaded | |
arcades | |
arcady | |
arcadia | |
arcadian | |
arcadianism | |
arcadianly | |
arcadians | |
arcadias | |
arcadic | |
arcading | |
arcadings | |
arcae | |
arcana | |
arcanal | |
arcane | |
arcanist | |
arcanite | |
arcanum | |
arcate | |
arcato | |
arcature | |
arcatures | |
arcboutant | |
arccos | |
arccosine | |
arced | |
arcella | |
arces | |
arceuthobium | |
arcform | |
arch | |
archabomination | |
archae | |
archaean | |
archaecraniate | |
archaeoceti | |
archaeocyathidae | |
archaeocyathus | |
archaeocyte | |
archaeogeology | |
archaeography | |
archaeographic | |
archaeographical | |
archaeohippus | |
archaeol | |
archaeolater | |
archaeolatry | |
archaeolith | |
archaeolithic | |
archaeologer | |
archaeology | |
archaeologian | |
archaeologic | |
archaeological | |
archaeologically | |
archaeologist | |
archaeologists | |
archaeomagnetism | |
archaeopithecus | |
archaeopterygiformes | |
archaeopteris | |
archaeopteryx | |
archaeornis | |
archaeornithes | |
archaeostoma | |
archaeostomata | |
archaeostomatous | |
archaeotherium | |
archaeus | |
archagitator | |
archai | |
archaic | |
archaical | |
archaically | |
archaicism | |
archaicness | |
archaise | |
archaised | |
archaiser | |
archaises | |
archaising | |
archaism | |
archaisms | |
archaist | |
archaistic | |
archaists | |
archaize | |
archaized | |
archaizer | |
archaizes | |
archaizing | |
archangel | |
archangelic | |
archangelica | |
archangelical | |
archangels | |
archangelship | |
archantagonist | |
archanthropine | |
archantiquary | |
archapostate | |
archapostle | |
archarchitect | |
archarios | |
archartist | |
archbanc | |
archbancs | |
archband | |
archbeacon | |
archbeadle | |
archbishop | |
archbishopess | |
archbishopry | |
archbishopric | |
archbishoprics | |
archbishops | |
archbotcher | |
archboutefeu | |
archbuffoon | |
archbuilder | |
archchampion | |
archchaplain | |
archcharlatan | |
archcheater | |
archchemic | |
archchief | |
archchronicler | |
archcity | |
archconfraternity | |
archconfraternities | |
archconsoler | |
archconspirator | |
archcorrupter | |
archcorsair | |
archcount | |
archcozener | |
archcriminal | |
archcritic | |
archcrown | |
archcupbearer | |
archd | |
archdapifer | |
archdapifership | |
archdeacon | |
archdeaconate | |
archdeaconess | |
archdeaconry | |
archdeaconries | |
archdeacons | |
archdeaconship | |
archdean | |
archdeanery | |
archdeceiver | |
archdefender | |
archdemon | |
archdepredator | |
archdespot | |
archdetective | |
archdevil | |
archdiocesan | |
archdiocese | |
archdioceses | |
archdiplomatist | |
archdissembler | |
archdisturber | |
archdivine | |
archdogmatist | |
archdolt | |
archdruid | |
archducal | |
archduchess | |
archduchesses | |
archduchy | |
archduchies | |
archduke | |
archdukedom | |
archdukes | |
archduxe | |
arche | |
archeal | |
archean | |
archearl | |
archebanc | |
archebancs | |
archebiosis | |
archecclesiastic | |
archecentric | |
arched | |
archegay | |
archegone | |
archegony | |
archegonia | |
archegonial | |
archegoniata | |
archegoniatae | |
archegoniate | |
archegoniophore | |
archegonium | |
archegosaurus | |
archeion | |
archelaus | |
archelenis | |
archelogy | |
archelon | |
archemastry | |
archemperor | |
archencephala | |
archencephalic | |
archenemy | |
archenemies | |
archengineer | |
archenia | |
archenteric | |
archenteron | |
archeocyte | |
archeol | |
archeolithic | |
archeology | |
archeologian | |
archeologic | |
archeological | |
archeologically | |
archeologist | |
archeopteryx | |
archeostome | |
archeozoic | |
archer | |
archeress | |
archerfish | |
archerfishes | |
archery | |
archeries | |
archers | |
archership | |
arches | |
archespore | |
archespores | |
archesporia | |
archesporial | |
archesporium | |
archespsporia | |
archest | |
archetypal | |
archetypally | |
archetype | |
archetypes | |
archetypic | |
archetypical | |
archetypically | |
archetypist | |
archetto | |
archettos | |
archeunuch | |
archeus | |
archexorcist | |
archfelon | |
archfiend | |
archfiends | |
archfire | |
archflamen | |
archflatterer | |
archfoe | |
archfool | |
archform | |
archfounder | |
archfriend | |
archgenethliac | |
archgod | |
archgomeral | |
archgovernor | |
archgunner | |
archhead | |
archheart | |
archheresy | |
archheretic | |
archhypocrisy | |
archhypocrite | |
archhost | |
archhouse | |
archhumbug | |
archy | |
archiannelida | |
archiater | |
archibald | |
archibenthal | |
archibenthic | |
archibenthos | |
archiblast | |
archiblastic | |
archiblastoma | |
archiblastula | |
archibuteo | |
archical | |
archicantor | |
archicarp | |
archicerebra | |
archicerebrum | |
archichlamydeae | |
archichlamydeous | |
archicyte | |
archicytula | |
archicleistogamy | |
archicleistogamous | |
archicoele | |
archicontinent | |
archidamus | |
archidiaceae | |
archidiaconal | |
archidiaconate | |
archididascalian | |
archididascalos | |
archidiskodon | |
archidium | |
archidome | |
archidoxis | |
archie | |
archiepiscopacy | |
archiepiscopal | |
archiepiscopality | |
archiepiscopally | |
archiepiscopate | |
archiereus | |
archigaster | |
archigastrula | |
archigenesis | |
archigony | |
archigonic | |
archigonocyte | |
archiheretical | |
archikaryon | |
archil | |
archilithic | |
archilla | |
archilochian | |
archilowe | |
archils | |
archilute | |
archimage | |
archimago | |
archimagus | |
archimandrite | |
archimandrites | |
archimedean | |
archimedes | |
archimycetes | |
archimime | |
archimorphic | |
archimorula | |
archimperial | |
archimperialism | |
archimperialist | |
archimperialistic | |
archimpressionist | |
archin | |
archine | |
archines | |
archineuron | |
archinfamy | |
archinformer | |
arching | |
archings | |
archipallial | |
archipallium | |
archipelagian | |
archipelagic | |
archipelago | |
archipelagoes | |
archipelagos | |
archiphoneme | |
archipin | |
archiplasm | |
archiplasmic | |
archiplata | |
archiprelatical | |
archipresbyter | |
archipterygial | |
archipterygium | |
archisymbolical | |
archisynagogue | |
archisperm | |
archispermae | |
archisphere | |
archispore | |
archistome | |
archisupreme | |
archit | |
architect | |
architective | |
architectonic | |
architectonica | |
architectonically | |
architectonics | |
architectress | |
architects | |
architectural | |
architecturalist | |
architecturally | |
architecture | |
architectures | |
architecturesque | |
architecure | |
architeuthis | |
architypographer | |
architis | |
architraval | |
architrave | |
architraved | |
architraves | |
architricline | |
archival | |
archivault | |
archive | |
archived | |
archiver | |
archivers | |
archives | |
archiving | |
archivist | |
archivists | |
archivolt | |
archizoic | |
archjockey | |
archking | |
archknave | |
archleader | |
archlecher | |
archlet | |
archleveler | |
archlexicographer | |
archly | |
archliar | |
archlute | |
archmachine | |
archmagician | |
archmagirist | |
archmarshal | |
archmediocrity | |
archmessenger | |
archmilitarist | |
archmime | |
archminister | |
archmystagogue | |
archmock | |
archmocker | |
archmockery | |
archmonarch | |
archmonarchy | |
archmonarchist | |
archmugwump | |
archmurderer | |
archness | |
archnesses | |
archocele | |
archocystosyrinx | |
archology | |
archon | |
archons | |
archonship | |
archonships | |
archont | |
archontate | |
archontia | |
archontic | |
archoplasm | |
archoplasma | |
archoplasmic | |
archoptoma | |
archoptosis | |
archorrhagia | |
archorrhea | |
archosyrinx | |
archostegnosis | |
archostenosis | |
archoverseer | |
archpall | |
archpapist | |
archpastor | |
archpatriarch | |
archpatron | |
archphylarch | |
archphilosopher | |
archpiece | |
archpilferer | |
archpillar | |
archpirate | |
archplagiary | |
archplagiarist | |
archplayer | |
archplotter | |
archplunderer | |
archplutocrat | |
archpoet | |
archpolitician | |
archpontiff | |
archpractice | |
archprelate | |
archprelatic | |
archprelatical | |
archpresbyter | |
archpresbyterate | |
archpresbytery | |
archpretender | |
archpriest | |
archpriesthood | |
archpriestship | |
archprimate | |
archprince | |
archprophet | |
archprotopope | |
archprototype | |
archpublican | |
archpuritan | |
archradical | |
archrascal | |
archreactionary | |
archrebel | |
archregent | |
archrepresentative | |
archrobber | |
archrogue | |
archruler | |
archsacrificator | |
archsacrificer | |
archsaint | |
archsatrap | |
archscoundrel | |
archseducer | |
archsee | |
archsewer | |
archshepherd | |
archsin | |
archsynagogue | |
archsnob | |
archspy | |
archspirit | |
archsteward | |
archswindler | |
archt | |
archtempter | |
archthief | |
archtyrant | |
archtraitor | |
archtreasurer | |
archtreasurership | |
archturncoat | |
archurger | |
archvagabond | |
archvampire | |
archvestryman | |
archvillain | |
archvillainy | |
archvisitor | |
archwag | |
archway | |
archways | |
archwench | |
archwife | |
archwise | |
archworker | |
archworkmaster | |
arcidae | |
arcifera | |
arciferous | |
arcifinious | |
arciform | |
arcing | |
arcite | |
arcked | |
arcking | |
arclength | |
arclike | |
arco | |
arcocentrous | |
arcocentrum | |
arcograph | |
arcos | |
arcose | |
arcosolia | |
arcosoliulia | |
arcosolium | |
arcs | |
arcsin | |
arcsine | |
arcsines | |
arctalia | |
arctalian | |
arctamerican | |
arctan | |
arctangent | |
arctation | |
arctia | |
arctian | |
arctic | |
arctically | |
arctician | |
arcticize | |
arcticized | |
arcticizing | |
arcticology | |
arcticologist | |
arctics | |
arcticward | |
arcticwards | |
arctiid | |
arctiidae | |
arctisca | |
arctitude | |
arctium | |
arctocephalus | |
arctogaea | |
arctogaeal | |
arctogaean | |
arctoid | |
arctoidea | |
arctoidean | |
arctomys | |
arctos | |
arctosis | |
arctostaphylos | |
arcturia | |
arcturus | |
arcual | |
arcuale | |
arcualia | |
arcuate | |
arcuated | |
arcuately | |
arcuation | |
arcubalist | |
arcubalister | |
arcubos | |
arcula | |
arculite | |
arcus | |
arcuses | |
ardass | |
ardassine | |
ardea | |
ardeae | |
ardeb | |
ardebs | |
ardeid | |
ardeidae | |
ardelia | |
ardelio | |
ardella | |
ardellae | |
ardency | |
ardencies | |
ardennite | |
ardent | |
ardently | |
ardentness | |
arder | |
ardhamagadhi | |
ardhanari | |
ardilla | |
ardish | |
ardisia | |
ardisiaceae | |
arditi | |
ardito | |
ardoise | |
ardor | |
ardors | |
ardour | |
ardours | |
ardri | |
ardrigh | |
ardu | |
arduinite | |
arduous | |
arduously | |
arduousness | |
ardure | |
ardurous | |
are | |
area | |
areach | |
aread | |
aready | |
areae | |
areal | |
areality | |
areally | |
arean | |
arear | |
areas | |
areason | |
areasoner | |
areaway | |
areaways | |
areawide | |
areca | |
arecaceae | |
arecaceous | |
arecaidin | |
arecaidine | |
arecain | |
arecaine | |
arecales | |
arecas | |
areche | |
arecolidin | |
arecolidine | |
arecolin | |
arecoline | |
arecuna | |
ared | |
areek | |
areel | |
arefact | |
arefaction | |
arefy | |
areg | |
aregenerative | |
aregeneratory | |
areic | |
areito | |
aren | |
arena | |
arenaceous | |
arenae | |
arenaria | |
arenariae | |
arenarious | |
arenas | |
arenation | |
arend | |
arendalite | |
arendator | |
areng | |
arenga | |
arenicola | |
arenicole | |
arenicolite | |
arenicolor | |
arenicolous | |
arenig | |
arenilitic | |
arenite | |
arenites | |
arenoid | |
arenose | |
arenosity | |
arenous | |
arent | |
arenulous | |
areocentric | |
areographer | |
areography | |
areographic | |
areographical | |
areographically | |
areola | |
areolae | |
areolar | |
areolas | |
areolate | |
areolated | |
areolation | |
areole | |
areoles | |
areolet | |
areology | |
areologic | |
areological | |
areologically | |
areologies | |
areologist | |
areometer | |
areometry | |
areometric | |
areometrical | |
areopagy | |
areopagist | |
areopagite | |
areopagitic | |
areopagitica | |
areopagus | |
areosystyle | |
areostyle | |
areotectonics | |
arere | |
arerola | |
areroscope | |
ares | |
arest | |
aret | |
aretaics | |
aretalogy | |
arete | |
aretes | |
arethusa | |
arethusas | |
arethuse | |
aretinian | |
arette | |
arew | |
arf | |
arfillite | |
arfvedsonite | |
arg | |
argaile | |
argal | |
argala | |
argalas | |
argali | |
argalis | |
argals | |
argan | |
argand | |
argans | |
argante | |
argas | |
argasid | |
argasidae | |
argean | |
argeers | |
argel | |
argema | |
argemone | |
argemony | |
argenol | |
argent | |
argental | |
argentamid | |
argentamide | |
argentamin | |
argentamine | |
argentan | |
argentarii | |
argentarius | |
argentate | |
argentation | |
argenteous | |
argenter | |
argenteum | |
argentic | |
argenticyanide | |
argentide | |
argentiferous | |
argentin | |
argentina | |
argentine | |
argentinean | |
argentineans | |
argentines | |
argentinian | |
argentinidae | |
argentinitrate | |
argentinize | |
argentino | |
argention | |
argentite | |
argentojarosite | |
argentol | |
argentometer | |
argentometry | |
argentometric | |
argentometrically | |
argenton | |
argentoproteinum | |
argentose | |
argentous | |
argentry | |
argents | |
argentum | |
argentums | |
argestes | |
argh | |
arghan | |
arghel | |
arghool | |
arghoul | |
argid | |
argify | |
argil | |
argyle | |
argyles | |
argyll | |
argillaceous | |
argillic | |
argilliferous | |
argillite | |
argillitic | |
argilloarenaceous | |
argillocalcareous | |
argillocalcite | |
argilloferruginous | |
argilloid | |
argillomagnesian | |
argillous | |
argylls | |
argils | |
argin | |
arginase | |
arginases | |
argine | |
arginine | |
argininephosphoric | |
arginines | |
argynnis | |
argiope | |
argiopidae | |
argiopoidea | |
argyranthemous | |
argyranthous | |
argyraspides | |
argyria | |
argyric | |
argyrite | |
argyrythrose | |
argyrocephalous | |
argyrodite | |
argyrol | |
argyroneta | |
argyropelecus | |
argyrose | |
argyrosis | |
argyrosomus | |
argive | |
argle | |
arglebargle | |
arglebargled | |
arglebargling | |
argled | |
argles | |
argling | |
argo | |
argoan | |
argol | |
argolet | |
argoletier | |
argolian | |
argolic | |
argolid | |
argols | |
argon | |
argonaut | |
argonauta | |
argonautic | |
argonautid | |
argonauts | |
argonne | |
argonon | |
argons | |
argos | |
argosy | |
argosies | |
argosine | |
argot | |
argotic | |
argots | |
argovian | |
arguable | |
arguably | |
argue | |
argued | |
arguendo | |
arguer | |
arguers | |
argues | |
argufy | |
argufied | |
argufier | |
argufiers | |
argufies | |
argufying | |
arguing | |
arguitively | |
argulus | |
argument | |
argumenta | |
argumental | |
argumentation | |
argumentatious | |
argumentative | |
argumentatively | |
argumentativeness | |
argumentator | |
argumentatory | |
argumentive | |
arguments | |
argumentum | |
argus | |
arguses | |
argusfish | |
argusfishes | |
argusianus | |
arguslike | |
arguta | |
argutation | |
argute | |
argutely | |
arguteness | |
arhar | |
arhat | |
arhats | |
arhatship | |
arhauaco | |
arhythmia | |
arhythmic | |
arhythmical | |
arhythmically | |
ary | |
aria | |
arya | |
ariadne | |
arian | |
aryan | |
ariana | |
arianism | |
aryanism | |
arianist | |
arianistic | |
arianistical | |
arianists | |
aryanization | |
arianize | |
aryanize | |
arianizer | |
arianrhod | |
aryans | |
arias | |
aryballi | |
aryballoi | |
aryballoid | |
aryballos | |
aryballus | |
arybballi | |
aribin | |
aribine | |
ariboflavinosis | |
arician | |
aricin | |
aricine | |
arid | |
arided | |
arider | |
aridest | |
aridge | |
aridian | |
aridity | |
aridities | |
aridly | |
aridness | |
aridnesses | |
ariegite | |
ariel | |
ariels | |
arienzo | |
aryepiglottic | |
aryepiglottidean | |
aries | |
arietate | |
arietation | |
arietid | |
arietinous | |
arietta | |
ariettas | |
ariette | |
ariettes | |
aright | |
arightly | |
arigue | |
ariidae | |
arikara | |
ariki | |
aril | |
aryl | |
arylamine | |
arylamino | |
arylate | |
arylated | |
arylating | |
arylation | |
ariled | |
arylide | |
arillary | |
arillate | |
arillated | |
arilled | |
arilli | |
arilliform | |
arillode | |
arillodes | |
arillodium | |
arilloid | |
arillus | |
arils | |
aryls | |
arimasp | |
arimaspian | |
arimathaean | |
ariocarpus | |
arioi | |
arioian | |
ariolate | |
ariole | |
arion | |
ariose | |
ariosi | |
arioso | |
ariosos | |
ariot | |
aripple | |
arisaema | |
arisaid | |
arisard | |
arise | |
arised | |
arisen | |
ariser | |
arises | |
arish | |
arising | |
arisings | |
arist | |
arista | |
aristae | |
aristarch | |
aristarchy | |
aristarchian | |
aristarchies | |
aristas | |
aristate | |
ariste | |
aristeas | |
aristeia | |
aristida | |
aristides | |
aristippus | |
aristo | |
aristocracy | |
aristocracies | |
aristocrat | |
aristocratic | |
aristocratical | |
aristocratically | |
aristocraticalness | |
aristocraticism | |
aristocraticness | |
aristocratism | |
aristocrats | |
aristodemocracy | |
aristodemocracies | |
aristodemocratical | |
aristogenesis | |
aristogenetic | |
aristogenic | |
aristogenics | |
aristoi | |
aristol | |
aristolochia | |
aristolochiaceae | |
aristolochiaceous | |
aristolochiales | |
aristolochin | |
aristolochine | |
aristology | |
aristological | |
aristologist | |
aristomonarchy | |
aristophanic | |
aristorepublicanism | |
aristos | |
aristotelean | |
aristotelian | |
aristotelianism | |
aristotelic | |
aristotelism | |
aristotype | |
aristotle | |
aristulate | |
arite | |
arytenoepiglottic | |
arytenoid | |
arytenoidal | |
arith | |
arithmancy | |
arithmetic | |
arithmetical | |
arithmetically | |
arithmetician | |
arithmeticians | |
arithmetics | |
arithmetization | |
arithmetizations | |
arithmetize | |
arithmetized | |
arithmetizes | |
arythmia | |
arythmias | |
arithmic | |
arythmic | |
arythmical | |
arythmically | |
arithmocracy | |
arithmocratic | |
arithmogram | |
arithmograph | |
arithmography | |
arithmomancy | |
arithmomania | |
arithmometer | |
arithromania | |
arius | |
arivaipa | |
arizona | |
arizonan | |
arizonans | |
arizonian | |
arizonians | |
arizonite | |
arjun | |
ark | |
arkab | |
arkansan | |
arkansans | |
arkansas | |
arkansawyer | |
arkansite | |
arkie | |
arkite | |
arkose | |
arkoses | |
arkosic | |
arks | |
arksutite | |
arkwright | |
arle | |
arlene | |
arleng | |
arlequinade | |
arles | |
arless | |
arline | |
arling | |
arlington | |
arloup | |
arm | |
armada | |
armadas | |
armadilla | |
armadillididae | |
armadillidium | |
armadillo | |
armadillos | |
armado | |
armageddon | |
armageddonist | |
armagnac | |
armagnacs | |
armament | |
armamentary | |
armamentaria | |
armamentarium | |
armaments | |
armangite | |
armary | |
armaria | |
armarian | |
armaries | |
armariolum | |
armarium | |
armariumaria | |
armata | |
armatoles | |
armatoli | |
armature | |
armatured | |
armatures | |
armaturing | |
armband | |
armbands | |
armbone | |
armchair | |
armchaired | |
armchairs | |
armed | |
armenia | |
armeniaceous | |
armenian | |
armenians | |
armenic | |
armenite | |
armenize | |
armenoid | |
armer | |
armeria | |
armeriaceae | |
armers | |
armet | |
armets | |
armful | |
armfuls | |
armgaunt | |
armguard | |
armhole | |
armholes | |
armhoop | |
army | |
armida | |
armied | |
armies | |
armiferous | |
armiger | |
armigeral | |
armigeri | |
armigero | |
armigeros | |
armigerous | |
armigers | |
armil | |
armill | |
armilla | |
armillae | |
armillary | |
armillaria | |
armillas | |
armillate | |
armillated | |
armine | |
arming | |
armings | |
arminian | |
arminianism | |
arminianize | |
arminianizer | |
armipotence | |
armipotent | |
armisonant | |
armisonous | |
armistice | |
armistices | |
armit | |
armitas | |
armyworm | |
armyworms | |
armless | |
armlessly | |
armlessness | |
armlet | |
armlets | |
armlike | |
armload | |
armloads | |
armlock | |
armlocks | |
armoire | |
armoires | |
armomancy | |
armoniac | |
armonica | |
armonicas | |
armor | |
armoracia | |
armorbearer | |
armored | |
armorer | |
armorers | |
armory | |
armorial | |
armorially | |
armorials | |
armoric | |
armorica | |
armorican | |
armorician | |
armoried | |
armories | |
armoring | |
armorist | |
armorless | |
armorplated | |
armorproof | |
armors | |
armorwise | |
armouchiquois | |
armour | |
armourbearer | |
armoured | |
armourer | |
armourers | |
armoury | |
armouries | |
armouring | |
armours | |
armozeen | |
armozine | |
armpad | |
armpiece | |
armpit | |
armpits | |
armplate | |
armrack | |
armrest | |
armrests | |
arms | |
armscye | |
armseye | |
armsful | |
armsize | |
armstrong | |
armure | |
armures | |
arn | |
arna | |
arnatta | |
arnatto | |
arnattos | |
arnaut | |
arnberry | |
arne | |
arneb | |
arnebia | |
arnee | |
arnement | |
arni | |
arnica | |
arnicas | |
arnold | |
arnoldist | |
arnoseris | |
arnotta | |
arnotto | |
arnottos | |
arnusian | |
arnut | |
aro | |
aroar | |
aroast | |
arock | |
aroeira | |
aroid | |
aroideous | |
aroides | |
aroids | |
aroint | |
aroynt | |
arointed | |
aroynted | |
arointing | |
aroynting | |
aroints | |
aroynts | |
arolia | |
arolium | |
arolla | |
aroma | |
aromacity | |
aromadendrin | |
aromal | |
aromas | |
aromata | |
aromatic | |
aromatical | |
aromatically | |
aromaticity | |
aromaticness | |
aromatics | |
aromatise | |
aromatised | |
aromatiser | |
aromatising | |
aromatitae | |
aromatite | |
aromatites | |
aromatization | |
aromatize | |
aromatized | |
aromatizer | |
aromatizing | |
aromatophor | |
aromatophore | |
aromatous | |
aronia | |
aroon | |
aroph | |
aroras | |
arosaguntacook | |
arose | |
around | |
arousable | |
arousal | |
arousals | |
arouse | |
aroused | |
arousement | |
arouser | |
arousers | |
arouses | |
arousing | |
arow | |
aroxyl | |
arpanet | |
arpeggiando | |
arpeggiated | |
arpeggiation | |
arpeggio | |
arpeggioed | |
arpeggios | |
arpen | |
arpens | |
arpent | |
arpenteur | |
arpents | |
arquated | |
arquebus | |
arquebuses | |
arquebusier | |
arquerite | |
arquifoux | |
arr | |
arracach | |
arracacha | |
arracacia | |
arrace | |
arrach | |
arrack | |
arracks | |
arrage | |
arragonite | |
arrah | |
array | |
arrayal | |
arrayals | |
arrayan | |
arrayed | |
arrayer | |
arrayers | |
arraign | |
arraignability | |
arraignable | |
arraignableness | |
arraigned | |
arraigner | |
arraigning | |
arraignment | |
arraignments | |
arraigns | |
arraying | |
arrayment | |
arrays | |
arrame | |
arrand | |
arrange | |
arrangeable | |
arranged | |
arrangement | |
arrangements | |
arranger | |
arrangers | |
arranges | |
arranging | |
arrant | |
arrantly | |
arrantness | |
arras | |
arrased | |
arrasene | |
arrases | |
arrastra | |
arrastre | |
arratel | |
arrau | |
arrear | |
arrearage | |
arrearages | |
arrears | |
arrect | |
arrectary | |
arrector | |
arrendation | |
arrendator | |
arrenotoky | |
arrenotokous | |
arrent | |
arrentable | |
arrentation | |
arreption | |
arreptitious | |
arrest | |
arrestable | |
arrestant | |
arrestation | |
arrested | |
arrestee | |
arrestees | |
arrester | |
arresters | |
arresting | |
arrestingly | |
arrestive | |
arrestment | |
arrestor | |
arrestors | |
arrests | |
arret | |
arretez | |
arretine | |
arrgt | |
arrha | |
arrhal | |
arrhenal | |
arrhenatherum | |
arrhenoid | |
arrhenotoky | |
arrhenotokous | |
arrhinia | |
arrhythmy | |
arrhythmia | |
arrhythmias | |
arrhythmic | |
arrhythmical | |
arrhythmically | |
arrhythmous | |
arrhizal | |
arrhizous | |
arri | |
arry | |
arriage | |
arriba | |
arribadas | |
arricci | |
arricciati | |
arricciato | |
arricciatos | |
arriccio | |
arriccioci | |
arriccios | |
arride | |
arrided | |
arridge | |
arriding | |
arrie | |
arriere | |
arriero | |
arriet | |
arryish | |
arrimby | |
arris | |
arrises | |
arrish | |
arrisways | |
arriswise | |
arrythmia | |
arrythmic | |
arrythmical | |
arrythmically | |
arrivage | |
arrival | |
arrivals | |
arrivance | |
arrive | |
arrived | |
arrivederci | |
arrivederla | |
arriver | |
arrivers | |
arrives | |
arriving | |
arrivism | |
arrivisme | |
arrivist | |
arriviste | |
arrivistes | |
arroba | |
arrobas | |
arrode | |
arrogance | |
arrogancy | |
arrogant | |
arrogantly | |
arrogantness | |
arrogate | |
arrogated | |
arrogates | |
arrogating | |
arrogatingly | |
arrogation | |
arrogations | |
arrogative | |
arrogator | |
arroya | |
arroyo | |
arroyos | |
arroyuelo | |
arrojadite | |
arrondi | |
arrondissement | |
arrondissements | |
arrope | |
arrosion | |
arrosive | |
arround | |
arrouse | |
arrow | |
arrowbush | |
arrowed | |
arrowhead | |
arrowheaded | |
arrowheads | |
arrowy | |
arrowing | |
arrowleaf | |
arrowless | |
arrowlet | |
arrowlike | |
arrowplate | |
arrowroot | |
arrowroots | |
arrows | |
arrowsmith | |
arrowstone | |
arrowweed | |
arrowwood | |
arrowworm | |
arroz | |
arrtez | |
arruague | |
ars | |
arsacid | |
arsacidan | |
arsanilic | |
arse | |
arsedine | |
arsefoot | |
arsehole | |
arsenal | |
arsenals | |
arsenate | |
arsenates | |
arsenation | |
arseneted | |
arsenetted | |
arsenfast | |
arsenferratose | |
arsenhemol | |
arseniasis | |
arseniate | |
arsenic | |
arsenical | |
arsenicalism | |
arsenicate | |
arsenicated | |
arsenicating | |
arsenicism | |
arsenicize | |
arsenicked | |
arsenicking | |
arsenicophagy | |
arsenics | |
arsenide | |
arsenides | |
arseniferous | |
arsenyl | |
arsenillo | |
arseniopleite | |
arseniosiderite | |
arsenious | |
arsenism | |
arsenite | |
arsenites | |
arsenium | |
arseniuret | |
arseniureted | |
arseniuretted | |
arsenization | |
arseno | |
arsenobenzene | |
arsenobenzol | |
arsenobismite | |
arsenoferratin | |
arsenofuran | |
arsenohemol | |
arsenolite | |
arsenophagy | |
arsenophen | |
arsenophenylglycin | |
arsenophenol | |
arsenopyrite | |
arsenostyracol | |
arsenotherapy | |
arsenotungstates | |
arsenotungstic | |
arsenous | |
arsenoxide | |
arses | |
arsesmart | |
arsheen | |
arshin | |
arshine | |
arshins | |
arsyl | |
arsylene | |
arsine | |
arsines | |
arsinic | |
arsino | |
arsinoitherium | |
arsis | |
arsyversy | |
arsle | |
arsmetik | |
arsmetry | |
arsmetrik | |
arsmetrike | |
arsnicker | |
arsoite | |
arson | |
arsonate | |
arsonation | |
arsonic | |
arsonist | |
arsonists | |
arsonite | |
arsonium | |
arsono | |
arsonous | |
arsons | |
arsonvalization | |
arsphenamine | |
art | |
artaba | |
artabe | |
artal | |
artamidae | |
artamus | |
artar | |
artarin | |
artarine | |
artcraft | |
arte | |
artefac | |
artefact | |
artefacts | |
artel | |
artels | |
artemas | |
artemia | |
artemis | |
artemisia | |
artemisic | |
artemisin | |
artemision | |
artemisium | |
artemon | |
arter | |
artery | |
arteria | |
arteriac | |
arteriae | |
arteriagra | |
arterial | |
arterialisation | |
arterialise | |
arterialised | |
arterialising | |
arterialization | |
arterialize | |
arterialized | |
arterializing | |
arterially | |
arterials | |
arteriarctia | |
arteriasis | |
arteriectasia | |
arteriectasis | |
arteriectomy | |
arteriectopia | |
arteried | |
arteries | |
arterying | |
arterin | |
arterioarctia | |
arteriocapillary | |
arteriococcygeal | |
arteriodialysis | |
arteriodiastasis | |
arteriofibrosis | |
arteriogenesis | |
arteriogram | |
arteriograph | |
arteriography | |
arteriographic | |
arteriolar | |
arteriole | |
arterioles | |
arteriolith | |
arteriology | |
arterioloscleroses | |
arteriolosclerosis | |
arteriomalacia | |
arteriometer | |
arteriomotor | |
arterionecrosis | |
arteriopalmus | |
arteriopathy | |
arteriophlebotomy | |
arterioplania | |
arterioplasty | |
arteriopressor | |
arteriorenal | |
arteriorrhagia | |
arteriorrhaphy | |
arteriorrhexis | |
arterioscleroses | |
arteriosclerosis | |
arteriosclerotic | |
arteriosympathectomy | |
arteriospasm | |
arteriostenosis | |
arteriostosis | |
arteriostrepsis | |
arteriotome | |
arteriotomy | |
arteriotomies | |
arteriotrepsis | |
arterious | |
arteriovenous | |
arterioversion | |
arterioverter | |
arteritis | |
artesian | |
artesonado | |
artesonados | |
artful | |
artfully | |
artfulness | |
artgum | |
artha | |
arthel | |
arthemis | |
arthogram | |
arthra | |
arthragra | |
arthral | |
arthralgia | |
arthralgic | |
arthrectomy | |
arthrectomies | |
arthredema | |
arthrempyesis | |
arthresthesia | |
arthritic | |
arthritical | |
arthritically | |
arthriticine | |
arthritics | |
arthritides | |
arthritis | |
arthritism | |
arthrobacterium | |
arthrobranch | |
arthrobranchia | |
arthrocace | |
arthrocarcinoma | |
arthrocele | |
arthrochondritis | |
arthroclasia | |
arthrocleisis | |
arthroclisis | |
arthroderm | |
arthrodesis | |
arthrodia | |
arthrodiae | |
arthrodial | |
arthrodic | |
arthrodymic | |
arthrodynia | |
arthrodynic | |
arthrodira | |
arthrodiran | |
arthrodire | |
arthrodirous | |
arthrodonteae | |
arthroempyema | |
arthroempyesis | |
arthroendoscopy | |
arthrogastra | |
arthrogastran | |
arthrogenous | |
arthrography | |
arthrogryposis | |
arthrolite | |
arthrolith | |
arthrolithiasis | |
arthrology | |
arthromeningitis | |
arthromere | |
arthromeric | |
arthrometer | |
arthrometry | |
arthron | |
arthroncus | |
arthroneuralgia | |
arthropathy | |
arthropathic | |
arthropathology | |
arthrophyma | |
arthrophlogosis | |
arthropyosis | |
arthroplasty | |
arthroplastic | |
arthropleura | |
arthropleure | |
arthropod | |
arthropoda | |
arthropodal | |
arthropodan | |
arthropody | |
arthropodous | |
arthropods | |
arthropomata | |
arthropomatous | |
arthropterous | |
arthrorheumatism | |
arthrorrhagia | |
arthrosclerosis | |
arthroses | |
arthrosia | |
arthrosynovitis | |
arthrosyrinx | |
arthrosis | |
arthrospore | |
arthrosporic | |
arthrosporous | |
arthrosteitis | |
arthrosterigma | |
arthrostome | |
arthrostomy | |
arthrostraca | |
arthrotyphoid | |
arthrotome | |
arthrotomy | |
arthrotomies | |
arthrotrauma | |
arthrotropic | |
arthrous | |
arthroxerosis | |
arthrozoa | |
arthrozoan | |
arthrozoic | |
arthur | |
arthurian | |
arthuriana | |
arty | |
artiad | |
artic | |
artichoke | |
artichokes | |
article | |
articled | |
articles | |
articling | |
articulability | |
articulable | |
articulacy | |
articulant | |
articular | |
articulare | |
articulary | |
articularly | |
articulars | |
articulata | |
articulate | |
articulated | |
articulately | |
articulateness | |
articulates | |
articulating | |
articulation | |
articulationes | |
articulationist | |
articulations | |
articulative | |
articulator | |
articulatory | |
articulatorily | |
articulators | |
articulite | |
articulus | |
artie | |
artier | |
artiest | |
artifact | |
artifactitious | |
artifacts | |
artifactual | |
artifactually | |
artifex | |
artifice | |
artificer | |
artificers | |
artificership | |
artifices | |
artificial | |
artificialism | |
artificiality | |
artificialities | |
artificialize | |
artificially | |
artificialness | |
artificious | |
artily | |
artilize | |
artiller | |
artillery | |
artilleries | |
artilleryman | |
artillerymen | |
artilleryship | |
artillerist | |
artillerists | |
artiness | |
artinesses | |
artinite | |
artinskian | |
artiodactyl | |
artiodactyla | |
artiodactylous | |
artiphyllous | |
artisan | |
artisanal | |
artisanry | |
artisans | |
artisanship | |
artist | |
artistdom | |
artiste | |
artistes | |
artistess | |
artistic | |
artistical | |
artistically | |
artistry | |
artistries | |
artists | |
artize | |
artless | |
artlessly | |
artlessness | |
artlet | |
artly | |
artlike | |
artmobile | |
artocarpaceae | |
artocarpad | |
artocarpeous | |
artocarpous | |
artocarpus | |
artolater | |
artolatry | |
artophagous | |
artophophoria | |
artophoria | |
artophorion | |
artotype | |
artotypy | |
artotyrite | |
artou | |
arts | |
artsy | |
artsman | |
artus | |
artware | |
artwork | |
artworks | |
aru | |
aruac | |
arugola | |
arugolas | |
arugula | |
arugulas | |
arui | |
aruke | |
arulo | |
arum | |
arumin | |
arumlike | |
arums | |
aruncus | |
arundiferous | |
arundinaceous | |
arundinaria | |
arundineous | |
arundo | |
arunta | |
arupa | |
arusa | |
arusha | |
aruspex | |
aruspice | |
aruspices | |
aruspicy | |
arustle | |
arval | |
arvejon | |
arvel | |
arverni | |
arvicola | |
arvicole | |
arvicolinae | |
arvicoline | |
arvicolous | |
arviculture | |
arvo | |
arvos | |
arx | |
arzan | |
arzava | |
arzawa | |
arzrunite | |
arzun | |
as | |
asa | |
asaddle | |
asafetida | |
asafoetida | |
asahel | |
asak | |
asale | |
asamblea | |
asana | |
asap | |
asaph | |
asaphia | |
asaphic | |
asaphid | |
asaphidae | |
asaphus | |
asaprol | |
asarabacca | |
asaraceae | |
asarh | |
asarin | |
asarite | |
asaron | |
asarone | |
asarota | |
asarotum | |
asarta | |
asarum | |
asarums | |
asb | |
asbest | |
asbestic | |
asbestiform | |
asbestine | |
asbestinize | |
asbestoid | |
asbestoidal | |
asbestos | |
asbestoses | |
asbestosis | |
asbestous | |
asbestus | |
asbestuses | |
asbolan | |
asbolane | |
asbolin | |
asboline | |
asbolite | |
ascabart | |
ascalabota | |
ascan | |
ascanian | |
ascanius | |
ascape | |
ascare | |
ascared | |
ascariasis | |
ascaricidal | |
ascaricide | |
ascarid | |
ascaridae | |
ascarides | |
ascaridia | |
ascaridiasis | |
ascaridol | |
ascaridole | |
ascarids | |
ascaris | |
ascaron | |
ascebc | |
ascella | |
ascelli | |
ascellus | |
ascence | |
ascend | |
ascendable | |
ascendance | |
ascendancy | |
ascendant | |
ascendantly | |
ascendants | |
ascended | |
ascendence | |
ascendency | |
ascendent | |
ascender | |
ascenders | |
ascendible | |
ascending | |
ascendingly | |
ascends | |
ascenseur | |
ascension | |
ascensional | |
ascensionist | |
ascensions | |
ascensiontide | |
ascensive | |
ascensor | |
ascent | |
ascents | |
ascertain | |
ascertainability | |
ascertainable | |
ascertainableness | |
ascertainably | |
ascertained | |
ascertainer | |
ascertaining | |
ascertainment | |
ascertains | |
ascescency | |
ascescent | |
asceses | |
ascesis | |
ascetic | |
ascetical | |
ascetically | |
asceticism | |
ascetics | |
ascetta | |
aschaffite | |
ascham | |
ascher | |
aschistic | |
asci | |
ascian | |
ascians | |
ascicidia | |
ascidia | |
ascidiacea | |
ascidiae | |
ascidian | |
ascidians | |
ascidiate | |
ascidicolous | |
ascidiferous | |
ascidiform | |
ascidiia | |
ascidioid | |
ascidioida | |
ascidioidea | |
ascidiozoa | |
ascidiozooid | |
ascidium | |
asciferous | |
ascigerous | |
ascii | |
ascill | |
ascyphous | |
ascyrum | |
ascitan | |
ascitb | |
ascite | |
ascites | |
ascitic | |
ascitical | |
ascititious | |
asclent | |
asclepiad | |
asclepiadaceae | |
asclepiadaceous | |
asclepiadae | |
asclepiadean | |
asclepiadeous | |
asclepiadic | |
asclepian | |
asclepias | |
asclepidin | |
asclepidoid | |
asclepieion | |
asclepin | |
asclepius | |
ascocarp | |
ascocarpous | |
ascocarps | |
ascochyta | |
ascogenous | |
ascogone | |
ascogonia | |
ascogonial | |
ascogonidia | |
ascogonidium | |
ascogonium | |
ascolichen | |
ascolichenes | |
ascoma | |
ascomata | |
ascomycetal | |
ascomycete | |
ascomycetes | |
ascomycetous | |
ascon | |
ascones | |
asconia | |
asconoid | |
ascophyllum | |
ascophore | |
ascophorous | |
ascorbate | |
ascorbic | |
ascospore | |
ascosporic | |
ascosporous | |
ascot | |
ascothoracica | |
ascots | |
ascry | |
ascribable | |
ascribe | |
ascribed | |
ascribes | |
ascribing | |
ascript | |
ascription | |
ascriptions | |
ascriptitii | |
ascriptitious | |
ascriptitius | |
ascriptive | |
ascrive | |
ascula | |
asculae | |
ascupart | |
ascus | |
asdic | |
asdics | |
ase | |
asea | |
asearch | |
asecretory | |
aseethe | |
aseismatic | |
aseismic | |
aseismicity | |
aseitas | |
aseity | |
aselar | |
aselgeia | |
asellate | |
aselli | |
asellidae | |
aselline | |
asellus | |
asem | |
asemasia | |
asemia | |
asemic | |
asepalous | |
asepses | |
asepsis | |
aseptate | |
aseptic | |
aseptically | |
asepticism | |
asepticize | |
asepticized | |
asepticizing | |
aseptify | |
aseptol | |
aseptolin | |
asexual | |
asexualisation | |
asexualise | |
asexualised | |
asexualising | |
asexuality | |
asexualization | |
asexualize | |
asexualized | |
asexualizing | |
asexually | |
asexuals | |
asfast | |
asfetida | |
asg | |
asgard | |
asgd | |
asgmt | |
ash | |
asha | |
ashake | |
ashame | |
ashamed | |
ashamedly | |
ashamedness | |
ashamnu | |
ashangos | |
ashantee | |
ashanti | |
asharasi | |
ashberry | |
ashcake | |
ashcan | |
ashcans | |
ashed | |
ashen | |
asher | |
asherah | |
asherahs | |
ashery | |
asheries | |
asherim | |
asherites | |
ashes | |
ashet | |
ashfall | |
ashy | |
ashier | |
ashiest | |
ashily | |
ashimmer | |
ashine | |
ashiness | |
ashing | |
ashipboard | |
ashir | |
ashiver | |
ashkey | |
ashkenazi | |
ashkenazic | |
ashkenazim | |
ashkoko | |
ashlar | |
ashlared | |
ashlaring | |
ashlars | |
ashler | |
ashlered | |
ashlering | |
ashlers | |
ashless | |
ashling | |
ashluslay | |
ashman | |
ashmen | |
ashmolean | |
ashochimi | |
ashore | |
ashot | |
ashpan | |
ashpit | |
ashplant | |
ashplants | |
ashraf | |
ashrafi | |
ashram | |
ashrama | |
ashrams | |
ashstone | |
ashthroat | |
ashtoreth | |
ashtray | |
ashtrays | |
ashur | |
ashvamedha | |
ashweed | |
ashwort | |
asia | |
asialia | |
asian | |
asianic | |
asianism | |
asians | |
asiarch | |
asiarchate | |
asiatic | |
asiatical | |
asiatically | |
asiatican | |
asiaticism | |
asiaticization | |
asiaticize | |
asiatize | |
aside | |
asidehand | |
asiden | |
asideness | |
asiderite | |
asides | |
asideu | |
asiento | |
asyla | |
asylabia | |
asyle | |
asilid | |
asilidae | |
asyllabia | |
asyllabic | |
asyllabical | |
asylum | |
asylums | |
asilus | |
asymbiotic | |
asymbolia | |
asymbolic | |
asymbolical | |
asimen | |
asimina | |
asimmer | |
asymmetral | |
asymmetranthous | |
asymmetry | |
asymmetric | |
asymmetrical | |
asymmetrically | |
asymmetries | |
asymmetrocarpous | |
asymmetron | |
asymptomatic | |
asymptomatically | |
asymptote | |
asymptotes | |
asymptotic | |
asymptotical | |
asymptotically | |
asymtote | |
asymtotes | |
asymtotic | |
asymtotically | |
asynapsis | |
asynaptic | |
asynartete | |
asynartetic | |
async | |
asynchrony | |
asynchronism | |
asynchronisms | |
asynchronous | |
asynchronously | |
asyndesis | |
asyndeta | |
asyndetic | |
asyndetically | |
asyndeton | |
asyndetons | |
asinego | |
asinegoes | |
asynergy | |
asynergia | |
asyngamy | |
asyngamic | |
asinine | |
asininely | |
asininity | |
asininities | |
asyntactic | |
asyntrophy | |
asiphonate | |
asiphonogama | |
asystematic | |
asystole | |
asystolic | |
asystolism | |
asitia | |
asyzygetic | |
ask | |
askable | |
askance | |
askant | |
askapart | |
askar | |
askarel | |
askari | |
askaris | |
asked | |
asker | |
askers | |
askeses | |
askesis | |
askew | |
askewgee | |
askewness | |
askile | |
asking | |
askingly | |
askings | |
askip | |
asklent | |
asklepios | |
askoi | |
askoye | |
askos | |
askr | |
asks | |
aslake | |
aslant | |
aslantwise | |
aslaver | |
asleep | |
aslop | |
aslope | |
aslumber | |
asmack | |
asmalte | |
asmear | |
asmile | |
asmodeus | |
asmoke | |
asmolder | |
asniffle | |
asnort | |
asoak | |
asocial | |
asok | |
asoka | |
asomatophyte | |
asomatous | |
asonant | |
asonia | |
asop | |
asor | |
asouth | |
asp | |
aspace | |
aspalathus | |
aspalax | |
asparagic | |
asparagyl | |
asparagin | |
asparagine | |
asparaginic | |
asparaginous | |
asparagus | |
asparaguses | |
asparamic | |
asparkle | |
aspartame | |
aspartate | |
aspartic | |
aspartyl | |
aspartokinase | |
aspasia | |
aspatia | |
aspca | |
aspect | |
aspectable | |
aspectant | |
aspection | |
aspects | |
aspectual | |
aspen | |
aspens | |
asper | |
asperate | |
asperated | |
asperates | |
asperating | |
asperation | |
aspergation | |
asperge | |
asperger | |
asperges | |
asperggilla | |
asperggilli | |
aspergil | |
aspergill | |
aspergilla | |
aspergillaceae | |
aspergillales | |
aspergilli | |
aspergilliform | |
aspergillin | |
aspergilloses | |
aspergillosis | |
aspergillum | |
aspergillums | |
aspergillus | |
asperifoliae | |
asperifoliate | |
asperifolious | |
asperite | |
asperity | |
asperities | |
asperly | |
aspermatic | |
aspermatism | |
aspermatous | |
aspermia | |
aspermic | |
aspermous | |
aspern | |
asperness | |
asperous | |
asperously | |
aspers | |
asperse | |
aspersed | |
asperser | |
aspersers | |
asperses | |
aspersing | |
aspersion | |
aspersions | |
aspersive | |
aspersively | |
aspersoir | |
aspersor | |
aspersory | |
aspersoria | |
aspersorium | |
aspersoriums | |
aspersors | |
asperugo | |
asperula | |
asperuloside | |
asperulous | |
asphalt | |
asphalted | |
asphaltene | |
asphalter | |
asphaltic | |
asphalting | |
asphaltite | |
asphaltlike | |
asphalts | |
asphaltum | |
asphaltus | |
aspheric | |
aspherical | |
aspheterism | |
aspheterize | |
asphyctic | |
asphyctous | |
asphyxy | |
asphyxia | |
asphyxial | |
asphyxiant | |
asphyxias | |
asphyxiate | |
asphyxiated | |
asphyxiates | |
asphyxiating | |
asphyxiation | |
asphyxiative | |
asphyxiator | |
asphyxied | |
asphyxies | |
asphodel | |
asphodelaceae | |
asphodeline | |
asphodels | |
asphodelus | |
aspy | |
aspic | |
aspics | |
aspiculate | |
aspiculous | |
aspidate | |
aspide | |
aspidiaria | |
aspidinol | |
aspidiotus | |
aspidiske | |
aspidistra | |
aspidistras | |
aspidium | |
aspidobranchia | |
aspidobranchiata | |
aspidobranchiate | |
aspidocephali | |
aspidochirota | |
aspidoganoidei | |
aspidomancy | |
aspidosperma | |
aspidospermine | |
aspiquee | |
aspirant | |
aspirants | |
aspirata | |
aspiratae | |
aspirate | |
aspirated | |
aspirates | |
aspirating | |
aspiration | |
aspirations | |
aspirator | |
aspiratory | |
aspirators | |
aspire | |
aspired | |
aspiree | |
aspirer | |
aspirers | |
aspires | |
aspirin | |
aspiring | |
aspiringly | |
aspiringness | |
aspirins | |
aspis | |
aspises | |
aspish | |
asplanchnic | |
asplenieae | |
asplenioid | |
asplenium | |
asporogenic | |
asporogenous | |
asporous | |
asport | |
asportation | |
asporulate | |
aspout | |
asprawl | |
aspread | |
aspredinidae | |
aspredo | |
asprete | |
aspring | |
asprout | |
asps | |
asquare | |
asquat | |
asqueal | |
asquint | |
asquirm | |
asrama | |
asramas | |
ass | |
assacu | |
assafetida | |
assafoetida | |
assagai | |
assagaied | |
assagaiing | |
assagais | |
assahy | |
assai | |
assay | |
assayable | |
assayed | |
assayer | |
assayers | |
assaying | |
assail | |
assailability | |
assailable | |
assailableness | |
assailant | |
assailants | |
assailed | |
assailer | |
assailers | |
assailing | |
assailment | |
assails | |
assais | |
assays | |
assalto | |
assam | |
assamar | |
assamese | |
assamites | |
assapan | |
assapanic | |
assapanick | |
assary | |
assarion | |
assart | |
assassin | |
assassinate | |
assassinated | |
assassinates | |
assassinating | |
assassination | |
assassinations | |
assassinative | |
assassinator | |
assassinatress | |
assassinist | |
assassins | |
assate | |
assation | |
assaugement | |
assault | |
assaultable | |
assaulted | |
assaulter | |
assaulters | |
assaulting | |
assaultive | |
assaults | |
assausive | |
assaut | |
assbaa | |
asse | |
asseal | |
assecuration | |
assecurator | |
assecure | |
assecution | |
assedat | |
assedation | |
assegai | |
assegaied | |
assegaiing | |
assegaing | |
assegais | |
asseize | |
asself | |
assembl | |
assemblable | |
assemblage | |
assemblages | |
assemblagist | |
assemblance | |
assemble | |
assembled | |
assemblee | |
assemblement | |
assembler | |
assemblers | |
assembles | |
assembly | |
assemblies | |
assemblyman | |
assemblymen | |
assembling | |
assemblywoman | |
assemblywomen | |
assent | |
assentaneous | |
assentation | |
assentatious | |
assentator | |
assentatory | |
assentatorily | |
assented | |
assenter | |
assenters | |
assentient | |
assenting | |
assentingly | |
assentive | |
assentiveness | |
assentor | |
assentors | |
assents | |
asseour | |
assert | |
asserta | |
assertable | |
assertative | |
asserted | |
assertedly | |
asserter | |
asserters | |
assertible | |
asserting | |
assertingly | |
assertion | |
assertional | |
assertions | |
assertive | |
assertively | |
assertiveness | |
assertor | |
assertory | |
assertorial | |
assertorially | |
assertoric | |
assertorical | |
assertorically | |
assertorily | |
assertors | |
assertress | |
assertrix | |
asserts | |
assertum | |
asserve | |
asservilize | |
asses | |
assess | |
assessable | |
assessably | |
assessed | |
assessee | |
assesses | |
assessing | |
assession | |
assessionary | |
assessment | |
assessments | |
assessor | |
assessory | |
assessorial | |
assessors | |
assessorship | |
asset | |
asseth | |
assets | |
assever | |
asseverate | |
asseverated | |
asseverates | |
asseverating | |
asseveratingly | |
asseveration | |
asseverations | |
asseverative | |
asseveratively | |
asseveratory | |
assewer | |
asshead | |
assheadedness | |
asshole | |
assholes | |
assi | |
assibilate | |
assibilated | |
assibilating | |
assibilation | |
assidaean | |
assidean | |
assident | |
assidual | |
assidually | |
assiduate | |
assiduity | |
assiduities | |
assiduous | |
assiduously | |
assiduousness | |
assiege | |
assientist | |
assiento | |
assiette | |
assify | |
assign | |
assignability | |
assignable | |
assignably | |
assignat | |
assignation | |
assignations | |
assignats | |
assigned | |
assignee | |
assignees | |
assigneeship | |
assigner | |
assigners | |
assigning | |
assignment | |
assignments | |
assignor | |
assignors | |
assigns | |
assilag | |
assimilability | |
assimilable | |
assimilate | |
assimilated | |
assimilates | |
assimilating | |
assimilation | |
assimilationist | |
assimilations | |
assimilative | |
assimilativeness | |
assimilator | |
assimilatory | |
assimulate | |
assinego | |
assiniboin | |
assyntite | |
assinuate | |
assyria | |
assyrian | |
assyrianize | |
assyrians | |
assyriology | |
assyriological | |
assyriologist | |
assyriologue | |
assyroid | |
assis | |
assisa | |
assisan | |
assise | |
assish | |
assishly | |
assishness | |
assisi | |
assist | |
assistance | |
assistances | |
assistant | |
assistanted | |
assistants | |
assistantship | |
assistantships | |
assisted | |
assistency | |
assister | |
assisters | |
assistful | |
assisting | |
assistive | |
assistless | |
assistor | |
assistors | |
assists | |
assith | |
assyth | |
assythment | |
assize | |
assized | |
assizement | |
assizer | |
assizes | |
assizing | |
asslike | |
assman | |
assmannshauser | |
assmanship | |
assn | |
assobre | |
assoc | |
associability | |
associable | |
associableness | |
associate | |
associated | |
associatedness | |
associates | |
associateship | |
associating | |
association | |
associational | |
associationalism | |
associationalist | |
associationism | |
associationist | |
associationistic | |
associations | |
associative | |
associatively | |
associativeness | |
associativity | |
associator | |
associatory | |
associators | |
associe | |
assoil | |
assoiled | |
assoiling | |
assoilment | |
assoils | |
assoilzie | |
assoin | |
assoluto | |
assonance | |
assonanced | |
assonances | |
assonant | |
assonantal | |
assonantic | |
assonantly | |
assonants | |
assonate | |
assonia | |
assoria | |
assort | |
assortative | |
assortatively | |
assorted | |
assortedness | |
assorter | |
assorters | |
assorting | |
assortive | |
assortment | |
assortments | |
assorts | |
assot | |
asssembler | |
asst | |
assuade | |
assuagable | |
assuage | |
assuaged | |
assuagement | |
assuagements | |
assuager | |
assuages | |
assuaging | |
assuasive | |
assubjugate | |
assuefaction | |
assuetude | |
assumable | |
assumably | |
assume | |
assumed | |
assumedly | |
assument | |
assumer | |
assumers | |
assumes | |
assuming | |
assumingly | |
assumingness | |
assummon | |
assumpsit | |
assumpt | |
assumption | |
assumptionist | |
assumptions | |
assumptious | |
assumptiousness | |
assumptive | |
assumptively | |
assumptiveness | |
assurable | |
assurance | |
assurances | |
assurant | |
assurate | |
assurd | |
assure | |
assured | |
assuredly | |
assuredness | |
assureds | |
assurer | |
assurers | |
assures | |
assurge | |
assurgency | |
assurgent | |
assuring | |
assuringly | |
assuror | |
assurors | |
asswage | |
asswaged | |
asswages | |
asswaging | |
ast | |
asta | |
astable | |
astacian | |
astacidae | |
astacus | |
astay | |
astakiwi | |
astalk | |
astarboard | |
astare | |
astart | |
astarte | |
astartian | |
astartidae | |
astasia | |
astasias | |
astate | |
astatic | |
astatically | |
astaticism | |
astatine | |
astatines | |
astatize | |
astatized | |
astatizer | |
astatizing | |
asteam | |
asteatosis | |
asteep | |
asteer | |
asteism | |
astel | |
astely | |
astelic | |
aster | |
asteraceae | |
asteraceous | |
asterales | |
asterella | |
astereognosis | |
asteria | |
asteriae | |
asterial | |
asterias | |
asteriated | |
asteriidae | |
asterikos | |
asterin | |
asterina | |
asterinidae | |
asterioid | |
asterion | |
asterionella | |
asteriscus | |
asteriscuses | |
asterisk | |
asterisked | |
asterisking | |
asteriskless | |
asteriskos | |
asterisks | |
asterism | |
asterismal | |
asterisms | |
asterite | |
asterixis | |
astern | |
asternal | |
asternata | |
asternia | |
asterochiton | |
asteroid | |
asteroidal | |
asteroidea | |
asteroidean | |
asteroids | |
asterolepidae | |
asterolepis | |
asterope | |
asterophyllite | |
asterophyllites | |
asterospondyli | |
asterospondylic | |
asterospondylous | |
asteroxylaceae | |
asteroxylon | |
asterozoa | |
asters | |
astert | |
asterwort | |
asthamatic | |
astheny | |
asthenia | |
asthenias | |
asthenic | |
asthenical | |
asthenics | |
asthenies | |
asthenobiosis | |
asthenobiotic | |
asthenolith | |
asthenology | |
asthenope | |
asthenophobia | |
asthenopia | |
asthenopic | |
asthenosphere | |
asthma | |
asthmas | |
asthmatic | |
asthmatical | |
asthmatically | |
asthmatics | |
asthmatoid | |
asthmogenic | |
asthore | |
asthorin | |
astian | |
astyanax | |
astichous | |
astigmat | |
astigmatic | |
astigmatical | |
astigmatically | |
astigmatism | |
astigmatizer | |
astigmatometer | |
astigmatometry | |
astigmatoscope | |
astigmatoscopy | |
astigmatoscopies | |
astigmia | |
astigmias | |
astigmic | |
astigmism | |
astigmometer | |
astigmometry | |
astigmoscope | |
astylar | |
astilbe | |
astyllen | |
astylospongia | |
astylosternus | |
astint | |
astipulate | |
astipulation | |
astir | |
astite | |
astogeny | |
astomatal | |
astomatous | |
astomia | |
astomous | |
astond | |
astone | |
astoned | |
astony | |
astonied | |
astonies | |
astonying | |
astonish | |
astonished | |
astonishedly | |
astonisher | |
astonishes | |
astonishing | |
astonishingly | |
astonishingness | |
astonishment | |
astonishments | |
astoop | |
astor | |
astore | |
astound | |
astoundable | |
astounded | |
astounding | |
astoundingly | |
astoundment | |
astounds | |
astr | |
astrachan | |
astracism | |
astraddle | |
astraea | |
astraean | |
astraeid | |
astraeidae | |
astraeiform | |
astragal | |
astragalar | |
astragalectomy | |
astragali | |
astragalocalcaneal | |
astragalocentral | |
astragalomancy | |
astragalonavicular | |
astragaloscaphoid | |
astragalotibial | |
astragals | |
astragalus | |
astray | |
astrain | |
astrakanite | |
astrakhan | |
astral | |
astrally | |
astrals | |
astrand | |
astrantia | |
astraphobia | |
astrapophobia | |
astre | |
astream | |
astrean | |
astrer | |
astrict | |
astricted | |
astricting | |
astriction | |
astrictive | |
astrictively | |
astrictiveness | |
astricts | |
astrid | |
astride | |
astrier | |
astriferous | |
astrild | |
astringe | |
astringed | |
astringence | |
astringency | |
astringent | |
astringently | |
astringents | |
astringer | |
astringes | |
astringing | |
astrion | |
astrionics | |
astroalchemist | |
astrobiology | |
astrobiological | |
astrobiologically | |
astrobiologies | |
astrobiologist | |
astrobiologists | |
astroblast | |
astrobotany | |
astrocaryum | |
astrochemist | |
astrochemistry | |
astrochronological | |
astrocyte | |
astrocytic | |
astrocytoma | |
astrocytomas | |
astrocytomata | |
astrocompass | |
astrodiagnosis | |
astrodynamic | |
astrodynamics | |
astrodome | |
astrofel | |
astrofell | |
astrogate | |
astrogated | |
astrogating | |
astrogation | |
astrogational | |
astrogator | |
astrogeny | |
astrogeology | |
astrogeologist | |
astroglia | |
astrognosy | |
astrogony | |
astrogonic | |
astrograph | |
astrographer | |
astrography | |
astrographic | |
astrohatch | |
astroid | |
astroite | |
astrol | |
astrolabe | |
astrolabes | |
astrolabical | |
astrolater | |
astrolatry | |
astrolithology | |
astrolog | |
astrologaster | |
astrologe | |
astrologer | |
astrologers | |
astrology | |
astrologian | |
astrologic | |
astrological | |
astrologically | |
astrologist | |
astrologistic | |
astrologists | |
astrologize | |
astrologous | |
astromancer | |
astromancy | |
astromantic | |
astromeda | |
astrometeorology | |
astrometeorological | |
astrometeorologist | |
astrometer | |
astrometry | |
astrometric | |
astrometrical | |
astron | |
astronaut | |
astronautic | |
astronautical | |
astronautically | |
astronautics | |
astronauts | |
astronavigation | |
astronavigator | |
astronomer | |
astronomers | |
astronomy | |
astronomic | |
astronomical | |
astronomically | |
astronomics | |
astronomien | |
astronomize | |
astropecten | |
astropectinidae | |
astrophel | |
astrophil | |
astrophyllite | |
astrophysical | |
astrophysicist | |
astrophysicists | |
astrophysics | |
astrophyton | |
astrophobia | |
astrophotographer | |
astrophotography | |
astrophotographic | |
astrophotometer | |
astrophotometry | |
astrophotometrical | |
astroscope | |
astroscopy | |
astroscopus | |
astrose | |
astrospectral | |
astrospectroscopic | |
astrosphere | |
astrospherecentrosomic | |
astrotheology | |
astructive | |
astrut | |
astucious | |
astuciously | |
astucity | |
astur | |
asturian | |
astute | |
astutely | |
astuteness | |
astutious | |
asuang | |
asudden | |
asunder | |
asuri | |
asway | |
aswail | |
aswarm | |
aswash | |
asweat | |
aswell | |
asweve | |
aswim | |
aswing | |
aswirl | |
aswithe | |
aswoon | |
aswooned | |
aswough | |
at | |
ata | |
atabal | |
atabals | |
atabeg | |
atabek | |
atabrine | |
atacaman | |
atacamenan | |
atacamenian | |
atacameno | |
atacamite | |
atactic | |
atactiform | |
ataentsic | |
atafter | |
ataghan | |
ataghans | |
ataigal | |
ataiyal | |
atake | |
atalaya | |
atalayas | |
atalan | |
atalanta | |
atalantis | |
ataman | |
atamans | |
atamasco | |
atamascos | |
atame | |
atamosco | |
atangle | |
atap | |
atar | |
ataractic | |
ataraxy | |
ataraxia | |
ataraxias | |
ataraxic | |
ataraxics | |
ataraxies | |
atatschite | |
ataunt | |
ataunto | |
atavi | |
atavic | |
atavism | |
atavisms | |
atavist | |
atavistic | |
atavistically | |
atavists | |
atavus | |
ataxaphasia | |
ataxy | |
ataxia | |
ataxiagram | |
ataxiagraph | |
ataxiameter | |
ataxiaphasia | |
ataxias | |
ataxic | |
ataxics | |
ataxies | |
ataxinomic | |
ataxite | |
ataxonomic | |
ataxophemia | |
atazir | |
atbash | |
atchison | |
ate | |
ateba | |
atebrin | |
atechny | |
atechnic | |
atechnical | |
ated | |
atees | |
ateeter | |
atef | |
ateknia | |
atelectasis | |
atelectatic | |
ateleiosis | |
atelene | |
ateleological | |
ateles | |
atelestite | |
atelets | |
ately | |
atelic | |
atelier | |
ateliers | |
ateliosis | |
ateliotic | |
atellan | |
atelo | |
atelocardia | |
atelocephalous | |
ateloglossia | |
atelognathia | |
atelomyelia | |
atelomitic | |
atelophobia | |
atelopodia | |
ateloprosopia | |
atelorachidia | |
atelostomia | |
atemoya | |
atemporal | |
aten | |
atenism | |
atenist | |
aterian | |
ates | |
atestine | |
ateuchi | |
ateuchus | |
atfalati | |
athabasca | |
athabascan | |
athalamous | |
athalline | |
athamantid | |
athamantin | |
athamaunte | |
athanasy | |
athanasia | |
athanasian | |
athanasianism | |
athanasianist | |
athanasies | |
athanor | |
athapascan | |
athapaskan | |
athar | |
atharvan | |
athbash | |
athecae | |
athecata | |
athecate | |
atheism | |
atheisms | |
atheist | |
atheistic | |
atheistical | |
atheistically | |
atheisticalness | |
atheisticness | |
atheists | |
atheize | |
atheizer | |
athel | |
athelia | |
atheling | |
athelings | |
athematic | |
athena | |
athenaea | |
athenaeum | |
athenaeums | |
athenee | |
atheneum | |
atheneums | |
athenian | |
athenianly | |
athenians | |
athenor | |
athens | |
atheology | |
atheological | |
atheologically | |
atheous | |
athericera | |
athericeran | |
athericerous | |
atherine | |
atherinidae | |
atheriogaea | |
atheriogaean | |
atheris | |
athermancy | |
athermanous | |
athermic | |
athermous | |
atherogenesis | |
atherogenic | |
atheroma | |
atheromas | |
atheromasia | |
atheromata | |
atheromatosis | |
atheromatous | |
atheroscleroses | |
atherosclerosis | |
atherosclerotic | |
atherosclerotically | |
atherosperma | |
atherurus | |
athetesis | |
atheticize | |
athetize | |
athetized | |
athetizing | |
athetoid | |
athetoids | |
athetosic | |
athetosis | |
athetotic | |
athymy | |
athymia | |
athymic | |
athing | |
athink | |
athyreosis | |
athyria | |
athyrid | |
athyridae | |
athyris | |
athyrium | |
athyroid | |
athyroidism | |
athyrosis | |
athirst | |
athlete | |
athletehood | |
athletes | |
athletic | |
athletical | |
athletically | |
athleticism | |
athletics | |
athletism | |
athletocracy | |
athlothete | |
athlothetes | |
athodyd | |
athodyds | |
athogen | |
athold | |
athonite | |
athort | |
athrepsia | |
athreptic | |
athrill | |
athrive | |
athrob | |
athrocyte | |
athrocytosis | |
athrogenic | |
athrong | |
athrough | |
athumia | |
athwart | |
athwarthawse | |
athwartship | |
athwartships | |
athwartwise | |
ati | |
atik | |
atikokania | |
atilt | |
atimy | |
atimon | |
ating | |
atinga | |
atingle | |
atinkle | |
atip | |
atypy | |
atypic | |
atypical | |
atypicality | |
atypically | |
atiptoe | |
atis | |
atka | |
atlanta | |
atlantad | |
atlantal | |
atlantean | |
atlantes | |
atlantic | |
atlantica | |
atlantid | |
atlantides | |
atlantis | |
atlantite | |
atlantoaxial | |
atlantodidymus | |
atlantomastoid | |
atlantoodontoid | |
atlantosaurus | |
atlas | |
atlases | |
atlaslike | |
atlatl | |
atlatls | |
atle | |
atlee | |
atli | |
atloaxoid | |
atloid | |
atloidean | |
atloidoaxoid | |
atm | |
atma | |
atman | |
atmans | |
atmas | |
atmiatry | |
atmiatrics | |
atmid | |
atmidalbumin | |
atmidometer | |
atmidometry | |
atmo | |
atmocausis | |
atmocautery | |
atmoclastic | |
atmogenic | |
atmograph | |
atmolyses | |
atmolysis | |
atmolyzation | |
atmolyze | |
atmolyzer | |
atmology | |
atmologic | |
atmological | |
atmologist | |
atmometer | |
atmometry | |
atmometric | |
atmophile | |
atmos | |
atmosphere | |
atmosphered | |
atmosphereful | |
atmosphereless | |
atmospheres | |
atmospheric | |
atmospherical | |
atmospherically | |
atmospherics | |
atmospherium | |
atmospherology | |
atmostea | |
atmosteal | |
atmosteon | |
atnah | |
atocha | |
atocia | |
atokal | |
atoke | |
atokous | |
atole | |
atoll | |
atolls | |
atom | |
atomatic | |
atomechanics | |
atomerg | |
atomy | |
atomic | |
atomical | |
atomically | |
atomician | |
atomicism | |
atomicity | |
atomics | |
atomies | |
atomiferous | |
atomisation | |
atomise | |
atomised | |
atomises | |
atomising | |
atomism | |
atomisms | |
atomist | |
atomistic | |
atomistical | |
atomistically | |
atomistics | |
atomists | |
atomity | |
atomization | |
atomize | |
atomized | |
atomizer | |
atomizers | |
atomizes | |
atomizing | |
atomology | |
atoms | |
atonable | |
atonal | |
atonalism | |
atonalist | |
atonalistic | |
atonality | |
atonally | |
atone | |
atoneable | |
atoned | |
atonement | |
atonements | |
atoneness | |
atoner | |
atoners | |
atones | |
atony | |
atonia | |
atonic | |
atonicity | |
atonics | |
atonies | |
atoning | |
atoningly | |
atop | |
atopen | |
atophan | |
atopy | |
atopic | |
atopies | |
atopite | |
atorai | |
atossa | |
atour | |
atoxic | |
atoxyl | |
atpoints | |
atrabilaire | |
atrabilar | |
atrabilarian | |
atrabilarious | |
atrabile | |
atrabiliar | |
atrabiliary | |
atrabiliarious | |
atrabilious | |
atrabiliousness | |
atracheate | |
atractaspis | |
atragene | |
atrail | |
atrament | |
atramental | |
atramentary | |
atramentous | |
atraumatic | |
atrazine | |
atrazines | |
atrebates | |
atrede | |
atremata | |
atremate | |
atrematous | |
atremble | |
atren | |
atrenne | |
atrepsy | |
atreptic | |
atresy | |
atresia | |
atresias | |
atresic | |
atretic | |
atreus | |
atry | |
atria | |
atrial | |
atrible | |
atrichia | |
atrichic | |
atrichosis | |
atrichous | |
atrickle | |
atridean | |
atrienses | |
atriensis | |
atriocoelomic | |
atrioporal | |
atriopore | |
atrioventricular | |
atrip | |
atrypa | |
atriplex | |
atrypoid | |
atrium | |
atriums | |
atroce | |
atroceruleous | |
atroceruleus | |
atrocha | |
atrochal | |
atrochous | |
atrocious | |
atrociously | |
atrociousness | |
atrocity | |
atrocities | |
atrocoeruleus | |
atrolactic | |
atropa | |
atropaceous | |
atropal | |
atropamine | |
atrophy | |
atrophia | |
atrophias | |
atrophiated | |
atrophic | |
atrophied | |
atrophies | |
atrophying | |
atrophoderma | |
atrophous | |
atropia | |
atropic | |
atropidae | |
atropin | |
atropine | |
atropines | |
atropinism | |
atropinization | |
atropinize | |
atropins | |
atropism | |
atropisms | |
atropos | |
atropous | |
atrorubent | |
atrosanguineous | |
atroscine | |
atrous | |
atsara | |
att | |
atta | |
attababy | |
attabal | |
attaboy | |
attacapan | |
attacca | |
attacco | |
attach | |
attachable | |
attachableness | |
attache | |
attached | |
attachedly | |
attacher | |
attachers | |
attaches | |
attacheship | |
attaching | |
attachment | |
attachments | |
attack | |
attackable | |
attacked | |
attacker | |
attackers | |
attacking | |
attackingly | |
attackman | |
attacks | |
attacolite | |
attacus | |
attagal | |
attagen | |
attaghan | |
attagirl | |
attain | |
attainability | |
attainable | |
attainableness | |
attainably | |
attainder | |
attainders | |
attained | |
attainer | |
attainers | |
attaining | |
attainment | |
attainments | |
attainor | |
attains | |
attaint | |
attainted | |
attainting | |
attaintment | |
attaints | |
attainture | |
attal | |
attalea | |
attaleh | |
attalid | |
attame | |
attapulgite | |
attar | |
attargul | |
attars | |
attask | |
attaste | |
attatched | |
attatches | |
atte | |
atteal | |
attemper | |
attemperament | |
attemperance | |
attemperate | |
attemperately | |
attemperation | |
attemperator | |
attempered | |
attempering | |
attempers | |
attempre | |
attempt | |
attemptability | |
attemptable | |
attempted | |
attempter | |
attempters | |
attempting | |
attemptive | |
attemptless | |
attempts | |
attend | |
attendance | |
attendances | |
attendancy | |
attendant | |
attendantly | |
attendants | |
attended | |
attendee | |
attendees | |
attender | |
attenders | |
attending | |
attendingly | |
attendment | |
attendress | |
attends | |
attensity | |
attent | |
attentat | |
attentate | |
attention | |
attentional | |
attentionality | |
attentions | |
attentive | |
attentively | |
attentiveness | |
attently | |
attenuable | |
attenuant | |
attenuate | |
attenuated | |
attenuates | |
attenuating | |
attenuation | |
attenuations | |
attenuative | |
attenuator | |
attenuators | |
atter | |
attercop | |
attercrop | |
attery | |
atterminal | |
attermine | |
attermined | |
atterminement | |
attern | |
atterr | |
atterrate | |
attest | |
attestable | |
attestant | |
attestation | |
attestations | |
attestative | |
attestator | |
attested | |
attester | |
attesters | |
attesting | |
attestive | |
attestor | |
attestors | |
attests | |
atty | |
attic | |
attical | |
attice | |
atticism | |
atticisms | |
atticist | |
atticists | |
atticize | |
atticized | |
atticizing | |
atticomastoid | |
attics | |
attid | |
attidae | |
attila | |
attinge | |
attingence | |
attingency | |
attingent | |
attirail | |
attire | |
attired | |
attirement | |
attirer | |
attires | |
attiring | |
attitude | |
attitudes | |
attitudinal | |
attitudinarian | |
attitudinarianism | |
attitudinise | |
attitudinised | |
attitudiniser | |
attitudinising | |
attitudinize | |
attitudinized | |
attitudinizer | |
attitudinizes | |
attitudinizing | |
attitudist | |
attiwendaronk | |
attle | |
attn | |
attntrp | |
attollent | |
attomy | |
attorn | |
attornare | |
attorned | |
attorney | |
attorneydom | |
attorneyism | |
attorneys | |
attorneyship | |
attorning | |
attornment | |
attorns | |
attouchement | |
attour | |
attourne | |
attract | |
attractability | |
attractable | |
attractableness | |
attractance | |
attractancy | |
attractant | |
attractants | |
attracted | |
attracter | |
attractile | |
attracting | |
attractingly | |
attraction | |
attractionally | |
attractions | |
attractive | |
attractively | |
attractiveness | |
attractivity | |
attractor | |
attractors | |
attracts | |
attrahent | |
attrap | |
attrectation | |
attry | |
attrib | |
attributable | |
attributal | |
attribute | |
attributed | |
attributer | |
attributes | |
attributing | |
attribution | |
attributional | |
attributions | |
attributive | |
attributively | |
attributiveness | |
attributives | |
attributor | |
attrist | |
attrite | |
attrited | |
attriteness | |
attriting | |
attrition | |
attritional | |
attritive | |
attritus | |
attriutively | |
attroopment | |
attroupement | |
attune | |
attuned | |
attunely | |
attunement | |
attunes | |
attuning | |
atturn | |
atua | |
atuami | |
atule | |
atumble | |
atune | |
atveen | |
atwain | |
atweel | |
atween | |
atwin | |
atwind | |
atwirl | |
atwist | |
atwitch | |
atwite | |
atwitter | |
atwixt | |
atwo | |
auantic | |
aubade | |
aubades | |
aubain | |
aubaine | |
aube | |
aubepine | |
auberge | |
auberges | |
aubergine | |
aubergiste | |
aubergistes | |
aubin | |
aubrey | |
aubretia | |
aubretias | |
aubrieta | |
aubrietas | |
aubrietia | |
aubrite | |
auburn | |
auburns | |
aubusson | |
auca | |
aucan | |
aucaner | |
aucanian | |
auchenia | |
auchenium | |
auchlet | |
aucht | |
auckland | |
auctary | |
auction | |
auctionary | |
auctioned | |
auctioneer | |
auctioneers | |
auctioning | |
auctions | |
auctor | |
auctorial | |
auctorizate | |
auctors | |
aucuba | |
aucubas | |
aucupate | |
aud | |
audace | |
audacious | |
audaciously | |
audaciousness | |
audacity | |
audacities | |
audad | |
audads | |
audaean | |
audian | |
audibertia | |
audibility | |
audible | |
audibleness | |
audibles | |
audibly | |
audience | |
audiencer | |
audiences | |
audiencia | |
audiencier | |
audient | |
audients | |
audile | |
audiles | |
auding | |
audings | |
audio | |
audioemission | |
audiogenic | |
audiogram | |
audiograms | |
audiology | |
audiological | |
audiologies | |
audiologist | |
audiologists | |
audiometer | |
audiometers | |
audiometry | |
audiometric | |
audiometrically | |
audiometries | |
audiometrist | |
audion | |
audiophile | |
audiophiles | |
audios | |
audiotape | |
audiotapes | |
audiotypist | |
audiovisual | |
audiovisuals | |
audiphone | |
audit | |
auditable | |
audited | |
auditing | |
audition | |
auditioned | |
auditioning | |
auditions | |
auditive | |
auditives | |
auditor | |
auditory | |
auditoria | |
auditorial | |
auditorially | |
auditories | |
auditorily | |
auditorium | |
auditoriums | |
auditors | |
auditorship | |
auditotoria | |
auditress | |
audits | |
auditual | |
audivise | |
audiviser | |
audivision | |
audrey | |
audubon | |
audubonistic | |
aueto | |
auf | |
aufait | |
aufgabe | |
aufklarung | |
auftakt | |
aug | |
auganite | |
auge | |
augean | |
augelite | |
augen | |
augend | |
augends | |
auger | |
augerer | |
augers | |
auget | |
augh | |
aught | |
aughtlins | |
aughts | |
augite | |
augites | |
augitic | |
augitite | |
augitophyre | |
augment | |
augmentable | |
augmentation | |
augmentationer | |
augmentations | |
augmentative | |
augmentatively | |
augmented | |
augmentedly | |
augmenter | |
augmenters | |
augmenting | |
augmentive | |
augmentor | |
augments | |
augrim | |
augur | |
augural | |
augurate | |
auguration | |
augure | |
augured | |
augurer | |
augurers | |
augury | |
augurial | |
auguries | |
auguring | |
augurous | |
augurs | |
augurship | |
august | |
augusta | |
augustal | |
augustan | |
auguste | |
auguster | |
augustest | |
augusti | |
augustin | |
augustine | |
augustinian | |
augustinianism | |
augustinism | |
augustly | |
augustness | |
augustus | |
auh | |
auhuhu | |
auk | |
auklet | |
auklets | |
auks | |
auksinai | |
auksinas | |
auksinu | |
aul | |
aula | |
aulacocarpous | |
aulacodus | |
aulacomniaceae | |
aulacomnium | |
aulae | |
aularian | |
aulas | |
auld | |
aulder | |
auldest | |
auldfarrantlike | |
auletai | |
aulete | |
auletes | |
auletic | |
auletrides | |
auletris | |
aulic | |
aulical | |
aulicism | |
aullay | |
auloi | |
aulophyte | |
aulophobia | |
aulos | |
aulostoma | |
aulostomatidae | |
aulostomi | |
aulostomid | |
aulostomidae | |
aulostomus | |
aulu | |
aum | |
aumaga | |
aumail | |
aumakua | |
aumbry | |
aumbries | |
aumery | |
aumil | |
aumildar | |
aummbulatory | |
aumoniere | |
aumous | |
aumrie | |
auncel | |
aune | |
aunjetitz | |
aunt | |
aunter | |
aunters | |
aunthood | |
aunthoods | |
aunty | |
auntie | |
aunties | |
auntish | |
auntly | |
auntlier | |
auntliest | |
auntlike | |
auntre | |
auntrous | |
aunts | |
auntsary | |
auntship | |
aupaka | |
aura | |
aurae | |
aural | |
aurally | |
auramin | |
auramine | |
aurang | |
aurantia | |
aurantiaceae | |
aurantiaceous | |
aurantium | |
aurar | |
auras | |
aurata | |
aurate | |
aurated | |
aureal | |
aureate | |
aureately | |
aureateness | |
aureation | |
aurei | |
aureity | |
aurelia | |
aurelian | |
aurelius | |
aurene | |
aureocasidium | |
aureola | |
aureolae | |
aureolas | |
aureole | |
aureoled | |
aureoles | |
aureolin | |
aureoline | |
aureoling | |
aureomycin | |
aureous | |
aureously | |
aures | |
auresca | |
aureus | |
auribromide | |
auric | |
aurichalcite | |
aurichalcum | |
aurichloride | |
aurichlorohydric | |
auricyanhydric | |
auricyanic | |
auricyanide | |
auricle | |
auricled | |
auricles | |
auricomous | |
auricula | |
auriculae | |
auricular | |
auriculare | |
auriculares | |
auricularia | |
auriculariaceae | |
auriculariae | |
auriculariales | |
auricularian | |
auricularias | |
auricularis | |
auricularly | |
auriculars | |
auriculas | |
auriculate | |
auriculated | |
auriculately | |
auriculidae | |
auriculo | |
auriculocranial | |
auriculoid | |
auriculoparietal | |
auriculotemporal | |
auriculoventricular | |
auriculovertical | |
auride | |
auriferous | |
aurifex | |
aurify | |
aurific | |
aurification | |
aurified | |
aurifying | |
auriflamme | |
auriform | |
auriga | |
aurigal | |
aurigation | |
aurigerous | |
aurigid | |
aurignacian | |
aurigo | |
aurigraphy | |
auryl | |
aurilave | |
aurin | |
aurinasal | |
aurine | |
auriphone | |
auriphrygia | |
auriphrygiate | |
auripigment | |
auripuncture | |
aurir | |
auris | |
auriscalp | |
auriscalpia | |
auriscalpium | |
auriscope | |
auriscopy | |
auriscopic | |
auriscopically | |
aurist | |
aurists | |
aurite | |
aurited | |
aurivorous | |
auroauric | |
aurobromide | |
auroch | |
aurochloride | |
aurochs | |
aurochses | |
aurocyanide | |
aurodiamine | |
auronal | |
aurophobia | |
aurophore | |
aurora | |
aurorae | |
auroral | |
aurorally | |
auroras | |
aurore | |
aurorean | |
aurorian | |
aurorium | |
aurotellurite | |
aurothiosulphate | |
aurothiosulphuric | |
aurous | |
aurrescu | |
aurulent | |
aurum | |
aurums | |
aurung | |
aurure | |
aus | |
auscult | |
auscultascope | |
auscultate | |
auscultated | |
auscultates | |
auscultating | |
auscultation | |
auscultations | |
auscultative | |
auscultator | |
auscultatory | |
auscultoscope | |
ausform | |
ausformed | |
ausforming | |
ausforms | |
ausgespielt | |
aushar | |
auslander | |
auslaut | |
auslaute | |
ausones | |
ausonian | |
auspex | |
auspicate | |
auspicated | |
auspicating | |
auspice | |
auspices | |
auspicy | |
auspicial | |
auspicious | |
auspiciously | |
auspiciousness | |
aussie | |
aussies | |
austafrican | |
austausch | |
austemper | |
austenite | |
austenitic | |
austenitize | |
austenitized | |
austenitizing | |
auster | |
austere | |
austerely | |
austereness | |
austerer | |
austerest | |
austerity | |
austerities | |
austerlitz | |
austerus | |
austin | |
austral | |
australasian | |
australene | |
australia | |
australian | |
australianism | |
australianize | |
australians | |
australic | |
australioid | |
australis | |
australite | |
australoid | |
australopithecinae | |
australopithecine | |
australopithecus | |
australorp | |
austrasian | |
austria | |
austrian | |
austrianize | |
austrians | |
austric | |
austrine | |
austringer | |
austrium | |
austroasiatic | |
austrogaea | |
austrogaean | |
austromancy | |
austronesian | |
austrophil | |
austrophile | |
austrophilism | |
austroriparian | |
ausu | |
ausubo | |
ausubos | |
autacoid | |
autacoidal | |
autacoids | |
autaesthesy | |
autallotriomorphic | |
autantitypy | |
autarch | |
autarchy | |
autarchic | |
autarchical | |
autarchically | |
autarchies | |
autarchist | |
autarchoglossa | |
autarky | |
autarkic | |
autarkical | |
autarkically | |
autarkies | |
autarkik | |
autarkikal | |
autarkist | |
aute | |
autechoscope | |
autecy | |
autecious | |
auteciously | |
auteciousness | |
autecism | |
autecisms | |
autecology | |
autecologic | |
autecological | |
autecologically | |
autecologist | |
autem | |
autere | |
auteur | |
auteurism | |
autexousy | |
auth | |
authentic | |
authentical | |
authentically | |
authenticalness | |
authenticatable | |
authenticate | |
authenticated | |
authenticates | |
authenticating | |
authentication | |
authentications | |
authenticator | |
authenticators | |
authenticity | |
authenticities | |
authenticly | |
authenticness | |
authigene | |
authigenetic | |
authigenic | |
authigenous | |
author | |
authorcraft | |
authored | |
authoress | |
authoresses | |
authorhood | |
authorial | |
authorially | |
authoring | |
authorisable | |
authorisation | |
authorise | |
authorised | |
authoriser | |
authorish | |
authorising | |
authorism | |
authoritarian | |
authoritarianism | |
authoritarianisms | |
authoritarians | |
authoritative | |
authoritatively | |
authoritativeness | |
authority | |
authorities | |
authorizable | |
authorization | |
authorizations | |
authorize | |
authorized | |
authorizer | |
authorizers | |
authorizes | |
authorizing | |
authorless | |
authorly | |
authorling | |
authors | |
authorship | |
authotype | |
autism | |
autisms | |
autist | |
autistic | |
auto | |
autoabstract | |
autoactivation | |
autoactive | |
autoaddress | |
autoagglutinating | |
autoagglutination | |
autoagglutinin | |
autoalarm | |
autoalkylation | |
autoallogamy | |
autoallogamous | |
autoanalysis | |
autoanalytic | |
autoantibody | |
autoanticomplement | |
autoantitoxin | |
autoasphyxiation | |
autoaspiration | |
autoassimilation | |
autobahn | |
autobahnen | |
autobahns | |
autobasidia | |
autobasidiomycetes | |
autobasidiomycetous | |
autobasidium | |
autobasisii | |
autobiographal | |
autobiographer | |
autobiographers | |
autobiography | |
autobiographic | |
autobiographical | |
autobiographically | |
autobiographies | |
autobiographist | |
autobiology | |
autoblast | |
autoboat | |
autoboating | |
autobolide | |
autobus | |
autobuses | |
autobusses | |
autocab | |
autocade | |
autocades | |
autocall | |
autocamp | |
autocamper | |
autocamping | |
autocar | |
autocarist | |
autocarp | |
autocarpian | |
autocarpic | |
autocarpous | |
autocatalepsy | |
autocatalyses | |
autocatalysis | |
autocatalytic | |
autocatalytically | |
autocatalyze | |
autocatharsis | |
autocatheterism | |
autocephaly | |
autocephalia | |
autocephalic | |
autocephality | |
autocephalous | |
autoceptive | |
autochanger | |
autochemical | |
autocholecystectomy | |
autochrome | |
autochromy | |
autochronograph | |
autochthon | |
autochthonal | |
autochthones | |
autochthony | |
autochthonic | |
autochthonism | |
autochthonous | |
autochthonously | |
autochthonousness | |
autochthons | |
autochton | |
autocycle | |
autocide | |
autocinesis | |
autocystoplasty | |
autocytolysis | |
autocytolytic | |
autoclasis | |
autoclastic | |
autoclave | |
autoclaved | |
autoclaves | |
autoclaving | |
autocoder | |
autocoenobium | |
autocoherer | |
autocoid | |
autocoids | |
autocollimate | |
autocollimation | |
autocollimator | |
autocollimators | |
autocolony | |
autocombustible | |
autocombustion | |
autocomplexes | |
autocondensation | |
autoconduction | |
autoconvection | |
autoconverter | |
autocopist | |
autocoprophagous | |
autocorrelate | |
autocorrelation | |
autocorrosion | |
autocosm | |
autocracy | |
autocracies | |
autocrat | |
autocratic | |
autocratical | |
autocratically | |
autocraticalness | |
autocrator | |
autocratoric | |
autocratorical | |
autocratrix | |
autocrats | |
autocratship | |
autocremation | |
autocriticism | |
autocross | |
autocue | |
autodecomposition | |
autodecrement | |
autodecremented | |
autodecrements | |
autodepolymerization | |
autodermic | |
autodestruction | |
autodetector | |
autodiagnosis | |
autodiagnostic | |
autodiagrammatic | |
autodial | |
autodialed | |
autodialer | |
autodialers | |
autodialing | |
autodialled | |
autodialling | |
autodials | |
autodidact | |
autodidactic | |
autodidactically | |
autodidacts | |
autodifferentiation | |
autodiffusion | |
autodigestion | |
autodigestive | |
autodynamic | |
autodyne | |
autodynes | |
autodrainage | |
autodrome | |
autoecholalia | |
autoecy | |
autoecic | |
autoecious | |
autoeciously | |
autoeciousness | |
autoecism | |
autoecous | |
autoed | |
autoeducation | |
autoeducative | |
autoelectrolysis | |
autoelectrolytic | |
autoelectronic | |
autoelevation | |
autoepigraph | |
autoepilation | |
autoerotic | |
autoerotically | |
autoeroticism | |
autoerotism | |
autoette | |
autoexcitation | |
autofecundation | |
autofermentation | |
autofluorescence | |
autoformation | |
autofrettage | |
autogamy | |
autogamic | |
autogamies | |
autogamous | |
autogauge | |
autogeneal | |
autogeneses | |
autogenesis | |
autogenetic | |
autogenetically | |
autogeny | |
autogenic | |
autogenies | |
autogenous | |
autogenously | |
autogenuous | |
autogiro | |
autogyro | |
autogiros | |
autogyros | |
autognosis | |
autognostic | |
autograft | |
autografting | |
autogram | |
autograph | |
autographal | |
autographed | |
autographer | |
autography | |
autographic | |
autographical | |
autographically | |
autographing | |
autographism | |
autographist | |
autographometer | |
autographs | |
autogravure | |
autoharp | |
autoheader | |
autohemic | |
autohemolysin | |
autohemolysis | |
autohemolytic | |
autohemorrhage | |
autohemotherapy | |
autoheterodyne | |
autoheterosis | |
autohexaploid | |
autohybridization | |
autohypnosis | |
autohypnotic | |
autohypnotically | |
autohypnotism | |
autohypnotization | |
autoicous | |
autoignition | |
autoimmune | |
autoimmunity | |
autoimmunities | |
autoimmunization | |
autoimmunize | |
autoimmunized | |
autoimmunizing | |
autoincrement | |
autoincremented | |
autoincrements | |
autoindex | |
autoindexing | |
autoinduction | |
autoinductive | |
autoinfection | |
autoinfusion | |
autoing | |
autoinhibited | |
autoinoculable | |
autoinoculation | |
autointellectual | |
autointoxicant | |
autointoxication | |
autoionization | |
autoirrigation | |
autoist | |
autojigger | |
autojuggernaut | |
autokinesy | |
autokinesis | |
autokinetic | |
autokrator | |
autolaryngoscope | |
autolaryngoscopy | |
autolaryngoscopic | |
autolater | |
autolatry | |
autolavage | |
autolesion | |
autolimnetic | |
autolysate | |
autolyse | |
autolysin | |
autolysis | |
autolith | |
autolithograph | |
autolithographer | |
autolithography | |
autolithographic | |
autolytic | |
autolytus | |
autolyzate | |
autolyze | |
autolyzed | |
autolyzes | |
autolyzing | |
autoloader | |
autoloaders | |
autoloading | |
autology | |
autological | |
autologist | |
autologous | |
autoluminescence | |
autoluminescent | |
automa | |
automacy | |
automaker | |
automan | |
automania | |
automanipulation | |
automanipulative | |
automanual | |
automat | |
automata | |
automatable | |
automate | |
automated | |
automates | |
automatic | |
automatical | |
automatically | |
automaticity | |
automatics | |
automatictacessing | |
automatin | |
automation | |
automatism | |
automatist | |
automative | |
automatization | |
automatize | |
automatized | |
automatizes | |
automatizing | |
automatograph | |
automaton | |
automatonlike | |
automatons | |
automatonta | |
automatontons | |
automatous | |
automats | |
automechanical | |
automechanism | |
automelon | |
automen | |
autometamorphosis | |
autometry | |
autometric | |
automysophobia | |
automobile | |
automobiled | |
automobiles | |
automobiling | |
automobilism | |
automobilist | |
automobilistic | |
automobilists | |
automobility | |
automolite | |
automonstration | |
automorph | |
automorphic | |
automorphically | |
automorphism | |
automotive | |
automotor | |
automower | |
autompne | |
autonavigator | |
autonavigators | |
autonegation | |
autonephrectomy | |
autonephrotoxin | |
autonetics | |
autoneurotoxin | |
autonym | |
autonitridation | |
autonoetic | |
autonomasy | |
autonomy | |
autonomic | |
autonomical | |
autonomically | |
autonomies | |
autonomist | |
autonomize | |
autonomous | |
autonomously | |
autonomousness | |
autooxidation | |
autoparasitism | |
autopathy | |
autopathic | |
autopathography | |
autopelagic | |
autopepsia | |
autophagi | |
autophagy | |
autophagia | |
autophagous | |
autophyllogeny | |
autophyte | |
autophytic | |
autophytically | |
autophytograph | |
autophytography | |
autophoby | |
autophobia | |
autophon | |
autophone | |
autophony | |
autophonoscope | |
autophonous | |
autophotoelectric | |
autophotograph | |
autophotometry | |
autophthalmoscope | |
autopilot | |
autopilots | |
autopyotherapy | |
autopista | |
autoplagiarism | |
autoplasmotherapy | |
autoplast | |
autoplasty | |
autoplastic | |
autoplastically | |
autoplasties | |
autopneumatic | |
autopoint | |
autopoisonous | |
autopolar | |
autopolyploid | |
autopolyploidy | |
autopolo | |
autopoloist | |
autopore | |
autoportrait | |
autoportraiture | |
autopositive | |
autopotamic | |
autopotent | |
autoprogressive | |
autoproteolysis | |
autoprothesis | |
autopsy | |
autopsic | |
autopsical | |
autopsychic | |
autopsychoanalysis | |
autopsychology | |
autopsychorhythmia | |
autopsychosis | |
autopsied | |
autopsies | |
autopsying | |
autopsist | |
autoptic | |
autoptical | |
autoptically | |
autopticity | |
autoput | |
autor | |
autoracemization | |
autoradiogram | |
autoradiograph | |
autoradiography | |
autoradiographic | |
autorail | |
autoreduction | |
autoreflection | |
autoregenerator | |
autoregressive | |
autoregulation | |
autoregulative | |
autoregulatory | |
autoreinfusion | |
autoretardation | |
autorhythmic | |
autorhythmus | |
autoriser | |
autorotate | |
autorotation | |
autorotational | |
autoroute | |
autorrhaphy | |
autos | |
autosauri | |
autosauria | |
autoschediasm | |
autoschediastic | |
autoschediastical | |
autoschediastically | |
autoschediaze | |
autoscience | |
autoscope | |
autoscopy | |
autoscopic | |
autosender | |
autosensitization | |
autosensitized | |
autosepticemia | |
autoserotherapy | |
autoserum | |
autosexing | |
autosight | |
autosign | |
autosymbiontic | |
autosymbolic | |
autosymbolical | |
autosymbolically | |
autosymnoia | |
autosyn | |
autosyndesis | |
autosite | |
autositic | |
autoskeleton | |
autosled | |
autoslip | |
autosomal | |
autosomally | |
autosomatognosis | |
autosomatognostic | |
autosome | |
autosomes | |
autosoteric | |
autosoterism | |
autospore | |
autosporic | |
autospray | |
autostability | |
autostage | |
autostandardization | |
autostarter | |
autostethoscope | |
autostyly | |
autostylic | |
autostylism | |
autostoper | |
autostrada | |
autostradas | |
autosuggest | |
autosuggestibility | |
autosuggestible | |
autosuggestion | |
autosuggestionist | |
autosuggestions | |
autosuggestive | |
autosuppression | |
autota | |
autotelegraph | |
autotelic | |
autotelism | |
autotetraploid | |
autotetraploidy | |
autothaumaturgist | |
autotheater | |
autotheism | |
autotheist | |
autotherapeutic | |
autotherapy | |
autothermy | |
autotimer | |
autotype | |
autotypes | |
autotyphization | |
autotypy | |
autotypic | |
autotypies | |
autotypography | |
autotomy | |
autotomic | |
autotomies | |
autotomise | |
autotomised | |
autotomising | |
autotomize | |
autotomized | |
autotomizing | |
autotomous | |
autotoxaemia | |
autotoxemia | |
autotoxic | |
autotoxication | |
autotoxicity | |
autotoxicosis | |
autotoxin | |
autotoxis | |
autotractor | |
autotransformer | |
autotransfusion | |
autotransplant | |
autotransplantation | |
autotrepanation | |
autotriploid | |
autotriploidy | |
autotroph | |
autotrophy | |
autotrophic | |
autotrophically | |
autotropic | |
autotropically | |
autotropism | |
autotruck | |
autotuberculin | |
autoturning | |
autourine | |
autovaccination | |
autovaccine | |
autovalet | |
autovalve | |
autovivisection | |
autoxeny | |
autoxidation | |
autoxidator | |
autoxidizability | |
autoxidizable | |
autoxidize | |
autoxidizer | |
autozooid | |
autre | |
autrefois | |
autumn | |
autumnal | |
autumnally | |
autumnian | |
autumnity | |
autumns | |
autunian | |
autunite | |
autunites | |
auturgy | |
aux | |
auxamylase | |
auxanogram | |
auxanology | |
auxanometer | |
auxeses | |
auxesis | |
auxetic | |
auxetical | |
auxetically | |
auxetics | |
auxil | |
auxiliar | |
auxiliary | |
auxiliaries | |
auxiliarly | |
auxiliate | |
auxiliation | |
auxiliator | |
auxiliatory | |
auxilytic | |
auxilium | |
auxillary | |
auximone | |
auxin | |
auxinic | |
auxinically | |
auxins | |
auxoaction | |
auxoamylase | |
auxoblast | |
auxobody | |
auxocardia | |
auxochrome | |
auxochromic | |
auxochromism | |
auxochromous | |
auxocyte | |
auxoflore | |
auxofluor | |
auxograph | |
auxographic | |
auxohormone | |
auxology | |
auxometer | |
auxospore | |
auxosubstance | |
auxotonic | |
auxotox | |
auxotroph | |
auxotrophy | |
auxotrophic | |
av | |
ava | |
avadana | |
avadavat | |
avadavats | |
avadhuta | |
avahi | |
avail | |
availabile | |
availability | |
availabilities | |
available | |
availableness | |
availably | |
availed | |
availer | |
availers | |
availing | |
availingly | |
availment | |
avails | |
aval | |
avalanche | |
avalanched | |
avalanches | |
avalanching | |
avale | |
avalent | |
avalon | |
avalvular | |
avance | |
avanguardisti | |
avania | |
avanious | |
avanyu | |
avant | |
avantage | |
avanters | |
avantgarde | |
avanti | |
avantlay | |
avanturine | |
avar | |
avaradrano | |
avaram | |
avaremotemo | |
avarian | |
avarice | |
avarices | |
avaricious | |
avariciously | |
avariciousness | |
avarish | |
avaritia | |
avars | |
avascular | |
avast | |
avatar | |
avatara | |
avatars | |
avaunt | |
avdp | |
ave | |
avell | |
avellan | |
avellane | |
avellaneous | |
avellano | |
avelonge | |
aveloz | |
avena | |
avenaceous | |
avenage | |
avenalin | |
avenant | |
avenary | |
avener | |
avenery | |
avenge | |
avenged | |
avengeful | |
avengement | |
avenger | |
avengeress | |
avengers | |
avenges | |
avenging | |
avengingly | |
aveny | |
avenida | |
aveniform | |
avenin | |
avenine | |
avenolith | |
avenous | |
avens | |
avenses | |
aventail | |
aventayle | |
aventails | |
aventine | |
aventre | |
aventure | |
aventurin | |
aventurine | |
avenue | |
avenues | |
aver | |
avera | |
average | |
averaged | |
averagely | |
averageness | |
averager | |
averages | |
averaging | |
averah | |
avery | |
averia | |
averil | |
averin | |
averish | |
averment | |
averments | |
avern | |
avernal | |
avernus | |
averrable | |
averral | |
averred | |
averrer | |
averrhoa | |
averring | |
averroism | |
averroist | |
averroistic | |
averruncate | |
averruncation | |
averruncator | |
avers | |
aversant | |
aversation | |
averse | |
aversely | |
averseness | |
aversion | |
aversions | |
aversive | |
avert | |
avertable | |
averted | |
avertedly | |
averter | |
avertible | |
avertiment | |
avertin | |
averting | |
avertive | |
averts | |
aves | |
avesta | |
avestan | |
avestruz | |
aveugle | |
avg | |
avgas | |
avgases | |
avgasses | |
aviador | |
avyayibhava | |
avian | |
avianization | |
avianize | |
avianized | |
avianizes | |
avianizing | |
avians | |
aviararies | |
aviary | |
aviaries | |
aviarist | |
aviarists | |
aviate | |
aviated | |
aviates | |
aviatic | |
aviating | |
aviation | |
aviational | |
aviations | |
aviator | |
aviatory | |
aviatorial | |
aviatoriality | |
aviators | |
aviatress | |
aviatrice | |
aviatrices | |
aviatrix | |
aviatrixes | |
avicennia | |
avicenniaceae | |
avicennism | |
avichi | |
avicide | |
avick | |
avicolous | |
avicula | |
avicular | |
avicularia | |
avicularian | |
aviculariidae | |
avicularimorphae | |
avicularium | |
aviculidae | |
aviculture | |
aviculturist | |
avid | |
avidya | |
avidin | |
avidins | |
avidious | |
avidiously | |
avidity | |
avidities | |
avidly | |
avidness | |
avidnesses | |
avidous | |
avie | |
aview | |
avifauna | |
avifaunae | |
avifaunal | |
avifaunally | |
avifaunas | |
avifaunistic | |
avigate | |
avigation | |
avigator | |
avigators | |
avignonese | |
avijja | |
avikom | |
avilaria | |
avile | |
avilement | |
avilion | |
avine | |
aviolite | |
avion | |
avionic | |
avionics | |
avions | |
avirulence | |
avirulent | |
avis | |
avys | |
avision | |
aviso | |
avisos | |
avital | |
avitaminoses | |
avitaminosis | |
avitaminotic | |
avitic | |
avives | |
avizandum | |
avn | |
avo | |
avocado | |
avocadoes | |
avocados | |
avocat | |
avocate | |
avocation | |
avocational | |
avocationally | |
avocations | |
avocative | |
avocatory | |
avocet | |
avocets | |
avodire | |
avodires | |
avogadrite | |
avogadro | |
avogram | |
avoy | |
avoid | |
avoidable | |
avoidably | |
avoidance | |
avoidances | |
avoidant | |
avoided | |
avoider | |
avoiders | |
avoiding | |
avoidless | |
avoidment | |
avoids | |
avoyer | |
avoyership | |
avoir | |
avoirdupois | |
avoke | |
avolate | |
avolation | |
avolitional | |
avondbloem | |
avos | |
avoset | |
avosets | |
avouch | |
avouchable | |
avouched | |
avoucher | |
avouchers | |
avouches | |
avouching | |
avouchment | |
avoue | |
avour | |
avoure | |
avourneen | |
avouter | |
avoutry | |
avow | |
avowable | |
avowableness | |
avowably | |
avowal | |
avowals | |
avowance | |
avowant | |
avowe | |
avowed | |
avowedly | |
avowedness | |
avower | |
avowers | |
avowing | |
avowry | |
avowries | |
avows | |
avowter | |
avshar | |
avulse | |
avulsed | |
avulses | |
avulsing | |
avulsion | |
avulsions | |
avuncular | |
avunculate | |
avunculize | |
aw | |
awa | |
awabakal | |
awabi | |
awacs | |
awadhi | |
awaft | |
awag | |
away | |
awayness | |
awaynesses | |
aways | |
await | |
awaited | |
awaiter | |
awaiters | |
awaiting | |
awaitlala | |
awaits | |
awakable | |
awake | |
awakeable | |
awaked | |
awaken | |
awakenable | |
awakened | |
awakener | |
awakeners | |
awakening | |
awakeningly | |
awakenings | |
awakenment | |
awakens | |
awakes | |
awaking | |
awakings | |
awald | |
awalim | |
awalt | |
awan | |
awane | |
awanyu | |
awanting | |
awapuhi | |
award | |
awardable | |
awarded | |
awardee | |
awardees | |
awarder | |
awarders | |
awarding | |
awardment | |
awards | |
aware | |
awaredom | |
awareness | |
awarn | |
awarrant | |
awaruite | |
awash | |
awaste | |
awat | |
awatch | |
awater | |
awave | |
awber | |
awd | |
awe | |
aweary | |
awearied | |
aweather | |
aweband | |
awed | |
awedly | |
awedness | |
awee | |
aweek | |
aweel | |
aweigh | |
aweing | |
aweless | |
awelessness | |
awellimiden | |
awes | |
awesome | |
awesomely | |
awesomeness | |
awest | |
awestricken | |
awestrike | |
awestruck | |
aweto | |
awfu | |
awful | |
awfuller | |
awfullest | |
awfully | |
awfulness | |
awhape | |
awheel | |
awheft | |
awhet | |
awhile | |
awhir | |
awhirl | |
awide | |
awiggle | |
awikiwiki | |
awin | |
awing | |
awingly | |
awink | |
awiwi | |
awk | |
awkly | |
awkward | |
awkwarder | |
awkwardest | |
awkwardish | |
awkwardly | |
awkwardness | |
awl | |
awless | |
awlessness | |
awls | |
awlwort | |
awlworts | |
awm | |
awmbrie | |
awmous | |
awn | |
awned | |
awner | |
awny | |
awning | |
awninged | |
awnings | |
awnless | |
awnlike | |
awns | |
awoke | |
awoken | |
awol | |
awols | |
awonder | |
awork | |
aworry | |
aworth | |
awreak | |
awreck | |
awry | |
awrist | |
awrong | |
awshar | |
awunctive | |
ax | |
axal | |
axanthopsia | |
axbreaker | |
axe | |
axebreaker | |
axed | |
axel | |
axels | |
axeman | |
axemaster | |
axemen | |
axenic | |
axenically | |
axer | |
axerophthol | |
axers | |
axes | |
axfetch | |
axhammer | |
axhammered | |
axhead | |
axial | |
axiality | |
axialities | |
axially | |
axiate | |
axiation | |
axifera | |
axiferous | |
axiform | |
axifugal | |
axil | |
axile | |
axilemma | |
axilemmas | |
axilemmata | |
axilla | |
axillae | |
axillant | |
axillar | |
axillary | |
axillaries | |
axillars | |
axillas | |
axils | |
axin | |
axine | |
axing | |
axiniform | |
axinite | |
axinomancy | |
axiolite | |
axiolitic | |
axiology | |
axiological | |
axiologically | |
axiologies | |
axiologist | |
axiom | |
axiomatic | |
axiomatical | |
axiomatically | |
axiomatization | |
axiomatizations | |
axiomatize | |
axiomatized | |
axiomatizes | |
axiomatizing | |
axioms | |
axion | |
axiopisty | |
axis | |
axised | |
axises | |
axisymmetry | |
axisymmetric | |
axisymmetrical | |
axisymmetrically | |
axite | |
axites | |
axle | |
axled | |
axles | |
axlesmith | |
axletree | |
axletrees | |
axlike | |
axmaker | |
axmaking | |
axman | |
axmanship | |
axmaster | |
axmen | |
axminster | |
axodendrite | |
axofugal | |
axogamy | |
axoid | |
axoidean | |
axolemma | |
axolysis | |
axolotl | |
axolotls | |
axometer | |
axometry | |
axometric | |
axon | |
axonal | |
axone | |
axonemal | |
axoneme | |
axonemes | |
axones | |
axoneure | |
axoneuron | |
axonia | |
axonic | |
axonolipa | |
axonolipous | |
axonometry | |
axonometric | |
axonophora | |
axonophorous | |
axonopus | |
axonost | |
axons | |
axopetal | |
axophyte | |
axoplasm | |
axoplasmic | |
axoplasms | |
axopodia | |
axopodium | |
axospermous | |
axostyle | |
axotomous | |
axseed | |
axseeds | |
axstone | |
axtree | |
axumite | |
axunge | |
axweed | |
axwise | |
axwort | |
az | |
azadirachta | |
azadrachta | |
azafran | |
azafrin | |
azalea | |
azaleamum | |
azaleas | |
azan | |
azande | |
azans | |
azarole | |
azaserine | |
azathioprine | |
azazel | |
azedarac | |
azedarach | |
azelaic | |
azelate | |
azelfafage | |
azeotrope | |
azeotropy | |
azeotropic | |
azeotropism | |
azerbaijanese | |
azerbaijani | |
azerbaijanian | |
azha | |
azide | |
azides | |
azido | |
aziethane | |
azygobranchia | |
azygobranchiata | |
azygobranchiate | |
azygomatous | |
azygos | |
azygoses | |
azygosperm | |
azygospore | |
azygote | |
azygous | |
azilian | |
azilut | |
azyme | |
azimech | |
azimene | |
azimethylene | |
azimide | |
azimin | |
azimine | |
azimino | |
aziminobenzene | |
azymite | |
azymous | |
azimuth | |
azimuthal | |
azimuthally | |
azimuths | |
azine | |
azines | |
azinphosmethyl | |
aziola | |
azlactone | |
azlon | |
azlons | |
azo | |
azobacter | |
azobenzene | |
azobenzil | |
azobenzoic | |
azobenzol | |
azoblack | |
azoch | |
azocyanide | |
azocyclic | |
azocochineal | |
azocoralline | |
azocorinth | |
azodicarboxylic | |
azodiphenyl | |
azodisulphonic | |
azoeosin | |
azoerythrin | |
azofy | |
azofication | |
azofier | |
azoflavine | |
azoformamide | |
azoformic | |
azogallein | |
azogreen | |
azogrenadine | |
azohumic | |
azoic | |
azoimide | |
azoisobutyronitrile | |
azole | |
azoles | |
azolitmin | |
azolla | |
azomethine | |
azon | |
azonal | |
azonaphthalene | |
azonic | |
azonium | |
azons | |
azoology | |
azoospermia | |
azoparaffin | |
azophen | |
azophenetole | |
azophenyl | |
azophenylene | |
azophenine | |
azophenol | |
azophosphin | |
azophosphore | |
azoprotein | |
azores | |
azorian | |
azorite | |
azorubine | |
azosulphine | |
azosulphonic | |
azotaemia | |
azotate | |
azote | |
azotea | |
azoted | |
azotemia | |
azotemias | |
azotemic | |
azotenesis | |
azotes | |
azotetrazole | |
azoth | |
azothionium | |
azoths | |
azotic | |
azotin | |
azotine | |
azotise | |
azotised | |
azotises | |
azotising | |
azotite | |
azotize | |
azotized | |
azotizes | |
azotizing | |
azotobacter | |
azotobacterieae | |
azotoluene | |
azotometer | |
azotorrhea | |
azotorrhoea | |
azotous | |
azoturia | |
azoturias | |
azovernine | |
azox | |
azoxazole | |
azoxy | |
azoxyanisole | |
azoxybenzene | |
azoxybenzoic | |
azoxime | |
azoxynaphthalene | |
azoxine | |
azoxyphenetole | |
azoxytoluidine | |
azoxonium | |
azrael | |
aztec | |
azteca | |
aztecan | |
aztecs | |
azthionium | |
azulejo | |
azulejos | |
azulene | |
azuline | |
azulite | |
azulmic | |
azumbre | |
azure | |
azurean | |
azured | |
azureness | |
azureous | |
azures | |
azury | |
azurine | |
azurite | |
azurites | |
azurmalachite | |
azurous | |
b | |
ba | |
baa | |
baaed | |
baahling | |
baaing | |
baal | |
baalath | |
baalim | |
baalish | |
baalism | |
baalisms | |
baalist | |
baalite | |
baalitical | |
baalize | |
baals | |
baalshem | |
baar | |
baas | |
baaskaap | |
baaskaaps | |
baaskap | |
bab | |
baba | |
babacoote | |
babai | |
babaylan | |
babaylanes | |
babajaga | |
babakoto | |
babas | |
babasco | |
babassu | |
babassus | |
babasu | |
babbage | |
babby | |
babbie | |
babbishly | |
babbit | |
babbitt | |
babbitted | |
babbitter | |
babbittess | |
babbittian | |
babbitting | |
babbittism | |
babbittry | |
babbitts | |
babblative | |
babble | |
babbled | |
babblement | |
babbler | |
babblers | |
babbles | |
babblesome | |
babbly | |
babbling | |
babblingly | |
babblings | |
babblish | |
babblishly | |
babbool | |
babbools | |
babcock | |
babe | |
babehood | |
babel | |
babeldom | |
babelet | |
babelic | |
babelike | |
babelish | |
babelism | |
babelize | |
babels | |
babery | |
babes | |
babeship | |
babesia | |
babesias | |
babesiasis | |
babesiosis | |
babhan | |
babi | |
baby | |
babiana | |
babiche | |
babiches | |
babydom | |
babied | |
babies | |
babyfied | |
babyhood | |
babyhoods | |
babyhouse | |
babying | |
babyish | |
babyishly | |
babyishness | |
babiism | |
babyism | |
babylike | |
babillard | |
babylon | |
babylonia | |
babylonian | |
babylonians | |
babylonic | |
babylonish | |
babylonism | |
babylonite | |
babylonize | |
babine | |
babingtonite | |
babyolatry | |
babion | |
babirousa | |
babiroussa | |
babirusa | |
babirusas | |
babirussa | |
babis | |
babysat | |
babish | |
babished | |
babyship | |
babishly | |
babishness | |
babysit | |
babysitter | |
babysitting | |
babism | |
babist | |
babite | |
babka | |
babkas | |
bablah | |
bable | |
babloh | |
baboen | |
babongo | |
baboo | |
baboodom | |
babooism | |
babool | |
babools | |
baboon | |
baboonery | |
baboonish | |
baboonroot | |
baboons | |
baboos | |
baboosh | |
baboot | |
babouche | |
babouvism | |
babouvist | |
babracot | |
babroot | |
babs | |
babu | |
babua | |
babudom | |
babuina | |
babuism | |
babul | |
babuls | |
babuma | |
babungera | |
baburd | |
babus | |
babushka | |
babushkas | |
bac | |
bacaba | |
bacach | |
bacalao | |
bacalaos | |
bacao | |
bacauan | |
bacbakiri | |
bacca | |
baccaceous | |
baccae | |
baccalaurean | |
baccalaureat | |
baccalaureate | |
baccalaureates | |
baccalaureus | |
baccar | |
baccara | |
baccaras | |
baccarat | |
baccarats | |
baccare | |
baccate | |
baccated | |
bacchae | |
bacchanal | |
bacchanalia | |
bacchanalian | |
bacchanalianism | |
bacchanalianly | |
bacchanalias | |
bacchanalism | |
bacchanalization | |
bacchanalize | |
bacchanals | |
bacchant | |
bacchante | |
bacchantes | |
bacchantic | |
bacchants | |
bacchar | |
baccharis | |
baccharoid | |
baccheion | |
bacchiac | |
bacchian | |
bacchic | |
bacchical | |
bacchides | |
bacchii | |
bacchiuchii | |
bacchius | |
bacchus | |
bacchuslike | |
baccy | |
baccies | |
bacciferous | |
bacciform | |
baccilla | |
baccilli | |
baccillla | |
baccillum | |
baccivorous | |
bach | |
bacharach | |
bache | |
bached | |
bachel | |
bachelor | |
bachelordom | |
bachelorette | |
bachelorhood | |
bachelorism | |
bachelorize | |
bachelorly | |
bachelorlike | |
bachelors | |
bachelorship | |
bachelorwise | |
bachelry | |
baches | |
bachichi | |
baching | |
bacilary | |
bacile | |
bacillaceae | |
bacillar | |
bacillary | |
bacillariaceae | |
bacillariaceous | |
bacillariales | |
bacillarieae | |
bacillariophyta | |
bacillemia | |
bacilli | |
bacillian | |
bacillicidal | |
bacillicide | |
bacillicidic | |
bacilliculture | |
bacilliform | |
bacilligenic | |
bacilliparous | |
bacillite | |
bacillogenic | |
bacillogenous | |
bacillophobia | |
bacillosis | |
bacilluria | |
bacillus | |
bacin | |
bacis | |
bacitracin | |
back | |
backache | |
backaches | |
backachy | |
backaching | |
backadation | |
backage | |
backare | |
backarrow | |
backarrows | |
backband | |
backbar | |
backbear | |
backbearing | |
backbeat | |
backbeats | |
backbencher | |
backbenchers | |
backbend | |
backbends | |
backberand | |
backberend | |
backbit | |
backbite | |
backbiter | |
backbiters | |
backbites | |
backbiting | |
backbitingly | |
backbitten | |
backblocks | |
backblow | |
backboard | |
backboards | |
backbone | |
backboned | |
backboneless | |
backbonelessness | |
backbones | |
backbrand | |
backbreaker | |
backbreaking | |
backcap | |
backcast | |
backcasts | |
backchain | |
backchat | |
backchats | |
backcloth | |
backcomb | |
backcountry | |
backcourt | |
backcourtman | |
backcross | |
backdate | |
backdated | |
backdates | |
backdating | |
backdoor | |
backdown | |
backdrop | |
backdrops | |
backed | |
backen | |
backened | |
backening | |
backer | |
backers | |
backet | |
backfall | |
backfatter | |
backfield | |
backfields | |
backfill | |
backfilled | |
backfiller | |
backfilling | |
backfills | |
backfire | |
backfired | |
backfires | |
backfiring | |
backflap | |
backflash | |
backflip | |
backflow | |
backflowing | |
backfold | |
backframe | |
backfriend | |
backfurrow | |
backgame | |
backgammon | |
backgeared | |
background | |
backgrounds | |
backhand | |
backhanded | |
backhandedly | |
backhandedness | |
backhander | |
backhanding | |
backhands | |
backhatch | |
backhaul | |
backhauled | |
backhauling | |
backhauls | |
backheel | |
backhoe | |
backhoes | |
backhooker | |
backhouse | |
backhouses | |
backy | |
backyard | |
backyarder | |
backyards | |
backie | |
backiebird | |
backing | |
backings | |
backjaw | |
backjoint | |
backland | |
backlands | |
backlash | |
backlashed | |
backlasher | |
backlashes | |
backlashing | |
backless | |
backlet | |
backliding | |
backlighting | |
backlings | |
backlins | |
backlist | |
backlists | |
backlit | |
backlog | |
backlogged | |
backlogging | |
backlogs | |
backlotter | |
backmost | |
backoff | |
backorder | |
backout | |
backouts | |
backpack | |
backpacked | |
backpacker | |
backpackers | |
backpacking | |
backpacks | |
backpedal | |
backpedaled | |
backpedaling | |
backpiece | |
backplane | |
backplanes | |
backplate | |
backpointer | |
backpointers | |
backrest | |
backrests | |
backrope | |
backropes | |
backrun | |
backrush | |
backrushes | |
backs | |
backsaw | |
backsaws | |
backscatter | |
backscattered | |
backscattering | |
backscatters | |
backscraper | |
backscratcher | |
backscratching | |
backseat | |
backseats | |
backsey | |
backset | |
backsets | |
backsetting | |
backsettler | |
backsheesh | |
backshift | |
backshish | |
backside | |
backsides | |
backsight | |
backsite | |
backslap | |
backslapped | |
backslapper | |
backslappers | |
backslapping | |
backslaps | |
backslash | |
backslashes | |
backslid | |
backslidden | |
backslide | |
backslided | |
backslider | |
backsliders | |
backslides | |
backsliding | |
backslidingness | |
backspace | |
backspaced | |
backspacefile | |
backspacer | |
backspaces | |
backspacing | |
backspang | |
backspear | |
backspeer | |
backspeir | |
backspier | |
backspierer | |
backspin | |
backspins | |
backsplice | |
backspliced | |
backsplicing | |
backspread | |
backspringing | |
backstab | |
backstabbed | |
backstabber | |
backstabbing | |
backstaff | |
backstage | |
backstay | |
backstair | |
backstairs | |
backstays | |
backstamp | |
backster | |
backstick | |
backstitch | |
backstitched | |
backstitches | |
backstitching | |
backstone | |
backstop | |
backstopped | |
backstopping | |
backstops | |
backstrap | |
backstrapped | |
backstreet | |
backstretch | |
backstretches | |
backstring | |
backstrip | |
backstroke | |
backstroked | |
backstrokes | |
backstroking | |
backstromite | |
backswept | |
backswimmer | |
backswing | |
backsword | |
backswording | |
backswordman | |
backswordmen | |
backswordsman | |
backtack | |
backtalk | |
backtender | |
backtenter | |
backtrace | |
backtrack | |
backtracked | |
backtracker | |
backtrackers | |
backtracking | |
backtracks | |
backtrail | |
backtrick | |
backup | |
backups | |
backus | |
backveld | |
backvelder | |
backway | |
backwall | |
backward | |
backwardation | |
backwardly | |
backwardness | |
backwards | |
backwash | |
backwashed | |
backwasher | |
backwashes | |
backwashing | |
backwater | |
backwatered | |
backwaters | |
backwind | |
backwinded | |
backwinding | |
backwood | |
backwoods | |
backwoodser | |
backwoodsy | |
backwoodsiness | |
backwoodsman | |
backwoodsmen | |
backword | |
backworm | |
backwort | |
backwrap | |
backwraps | |
baclava | |
baclin | |
bacon | |
baconer | |
bacony | |
baconian | |
baconianism | |
baconic | |
baconism | |
baconist | |
baconize | |
bacons | |
baconweed | |
bacopa | |
bacquet | |
bact | |
bacteraemia | |
bacteremia | |
bacteremic | |
bacteria | |
bacteriaceae | |
bacteriaceous | |
bacteriaemia | |
bacterial | |
bacterially | |
bacterian | |
bacteric | |
bactericholia | |
bactericidal | |
bactericidally | |
bactericide | |
bactericides | |
bactericidin | |
bacterid | |
bacteriemia | |
bacteriform | |
bacterin | |
bacterins | |
bacterioagglutinin | |
bacterioblast | |
bacteriochlorophyll | |
bacteriocidal | |
bacteriocin | |
bacteriocyte | |
bacteriodiagnosis | |
bacteriofluorescin | |
bacteriogenic | |
bacteriogenous | |
bacteriohemolysin | |
bacterioid | |
bacterioidal | |
bacteriol | |
bacteriolysin | |
bacteriolysis | |
bacteriolytic | |
bacteriolyze | |
bacteriology | |
bacteriologic | |
bacteriological | |
bacteriologically | |
bacteriologies | |
bacteriologist | |
bacteriologists | |
bacteriopathology | |
bacteriophage | |
bacteriophages | |
bacteriophagy | |
bacteriophagia | |
bacteriophagic | |
bacteriophagous | |
bacteriophobia | |
bacterioprecipitin | |
bacterioprotein | |
bacteriopsonic | |
bacteriopsonin | |
bacteriopurpurin | |
bacteriorhodopsin | |
bacterioscopy | |
bacterioscopic | |
bacterioscopical | |
bacterioscopically | |
bacterioscopist | |
bacteriosis | |
bacteriosolvent | |
bacteriostasis | |
bacteriostat | |
bacteriostatic | |
bacteriostatically | |
bacteriotherapeutic | |
bacteriotherapy | |
bacteriotoxic | |
bacteriotoxin | |
bacteriotrypsin | |
bacteriotropic | |
bacteriotropin | |
bacterious | |
bacteririum | |
bacteritic | |
bacterium | |
bacteriuria | |
bacterization | |
bacterize | |
bacterized | |
bacterizing | |
bacteroid | |
bacteroidal | |
bacteroideae | |
bacteroides | |
bactetiophage | |
bactrian | |
bactris | |
bactrites | |
bactriticone | |
bactritoid | |
bacubert | |
bacula | |
bacule | |
baculere | |
baculi | |
baculiferous | |
baculiform | |
baculine | |
baculite | |
baculites | |
baculitic | |
baculiticone | |
baculoid | |
baculum | |
baculums | |
baculus | |
bacury | |
bad | |
badaga | |
badan | |
badarian | |
badarrah | |
badass | |
badassed | |
badasses | |
badaud | |
badawi | |
badaxe | |
badchan | |
baddeleyite | |
badder | |
badderlocks | |
baddest | |
baddy | |
baddie | |
baddies | |
baddish | |
baddishly | |
baddishness | |
baddock | |
bade | |
badenite | |
badge | |
badged | |
badgeless | |
badgeman | |
badgemen | |
badger | |
badgerbrush | |
badgered | |
badgerer | |
badgering | |
badgeringly | |
badgerly | |
badgerlike | |
badgers | |
badgerweed | |
badges | |
badging | |
badgir | |
badhan | |
badiaga | |
badian | |
badigeon | |
badinage | |
badinaged | |
badinages | |
badinaging | |
badiner | |
badinerie | |
badineur | |
badious | |
badju | |
badland | |
badlands | |
badly | |
badling | |
badman | |
badmash | |
badmen | |
badminton | |
badmouth | |
badmouthed | |
badmouthing | |
badmouths | |
badness | |
badnesses | |
badon | |
badrans | |
bads | |
baduhenna | |
bae | |
baedeker | |
baedekerian | |
baedekers | |
bael | |
baeria | |
baetyl | |
baetylic | |
baetylus | |
baetuli | |
baetulus | |
baetzner | |
bafaro | |
baff | |
baffed | |
baffeta | |
baffy | |
baffies | |
baffing | |
baffle | |
baffled | |
bafflement | |
bafflements | |
baffleplate | |
baffler | |
bafflers | |
baffles | |
baffling | |
bafflingly | |
bafflingness | |
baffs | |
bafyot | |
baft | |
bafta | |
baftah | |
bag | |
baga | |
baganda | |
bagani | |
bagass | |
bagasse | |
bagasses | |
bagataway | |
bagatelle | |
bagatelles | |
bagatine | |
bagattini | |
bagattino | |
bagaudae | |
bagdad | |
bagdi | |
bagel | |
bagels | |
bagful | |
bagfuls | |
baggage | |
baggageman | |
baggagemaster | |
baggager | |
baggages | |
baggala | |
bagganet | |
baggara | |
bagge | |
bagged | |
bagger | |
baggers | |
baggy | |
baggie | |
baggier | |
baggies | |
baggiest | |
baggily | |
bagginess | |
bagging | |
baggings | |
baggyrinkle | |
baggit | |
baggywrinkle | |
bagh | |
baghdad | |
bagheli | |
baghla | |
baghouse | |
bagie | |
baginda | |
bagio | |
bagios | |
bagirmi | |
bagle | |
bagleaves | |
baglike | |
bagmaker | |
bagmaking | |
bagman | |
bagmen | |
bagne | |
bagnes | |
bagnet | |
bagnette | |
bagnio | |
bagnios | |
bagnut | |
bago | |
bagobo | |
bagonet | |
bagong | |
bagoong | |
bagpipe | |
bagpiped | |
bagpiper | |
bagpipers | |
bagpipes | |
bagpiping | |
bagplant | |
bagpod | |
bagpudding | |
bagrationite | |
bagre | |
bagreef | |
bagroom | |
bags | |
bagsful | |
bagtikan | |
baguet | |
baguets | |
baguette | |
baguettes | |
baguio | |
baguios | |
bagwash | |
bagwig | |
bagwigged | |
bagwigs | |
bagwyn | |
bagwoman | |
bagwomen | |
bagwork | |
bagworm | |
bagworms | |
bah | |
bahada | |
bahadur | |
bahadurs | |
bahai | |
bahay | |
bahaism | |
bahaist | |
baham | |
bahama | |
bahamas | |
bahamian | |
bahamians | |
bahan | |
bahar | |
bahaullah | |
bahawder | |
bahera | |
bahiaite | |
bahima | |
bahisti | |
bahmani | |
bahmanid | |
bahnung | |
baho | |
bahoe | |
bahoo | |
baht | |
bahts | |
bahuma | |
bahur | |
bahut | |
bahuts | |
bahutu | |
bahuvrihi | |
bahuvrihis | |
bai | |
bay | |
baya | |
bayadeer | |
bayadeers | |
bayadere | |
bayaderes | |
bayal | |
bayamo | |
bayamos | |
baianism | |
bayano | |
bayard | |
bayardly | |
bayards | |
bayberry | |
bayberries | |
baybolt | |
baybush | |
baycuru | |
baidak | |
baidar | |
baidarka | |
baidarkas | |
baidya | |
bayed | |
baiera | |
bayesian | |
bayeta | |
bayete | |
baygall | |
baiginet | |
baign | |
baignet | |
baigneuse | |
baigneuses | |
baignoire | |
bayhead | |
baying | |
bayish | |
baikalite | |
baikerinite | |
baikerite | |
baikie | |
bail | |
bailable | |
bailage | |
bayldonite | |
baile | |
bailed | |
bailee | |
bailees | |
bailey | |
baileys | |
bailer | |
bailers | |
baylet | |
bailiary | |
bailiaries | |
bailie | |
bailiery | |
bailieries | |
bailies | |
bailieship | |
bailiff | |
bailiffry | |
bailiffs | |
bailiffship | |
bailiffwick | |
baylike | |
bailing | |
bailiwick | |
bailiwicks | |
bailli | |
bailliage | |
baillie | |
baillone | |
baillonella | |
bailment | |
bailments | |
bailo | |
bailor | |
bailors | |
bailout | |
bailouts | |
bailpiece | |
bails | |
bailsman | |
bailsmen | |
bailwood | |
bayman | |
baymen | |
bain | |
bayness | |
bainie | |
baining | |
bainite | |
baioc | |
baiocchi | |
baiocco | |
bayogoula | |
bayok | |
bayonet | |
bayoneted | |
bayoneteer | |
bayoneting | |
bayonets | |
bayonetted | |
bayonetting | |
bayong | |
bayou | |
bayous | |
bairagi | |
bairam | |
bairdi | |
bairn | |
bairnie | |
bairnish | |
bairnishness | |
bairnly | |
bairnlier | |
bairnliest | |
bairnliness | |
bairns | |
bairnteam | |
bairnteem | |
bairntime | |
bairnwort | |
bais | |
bays | |
baisakh | |
baisemain | |
baysmelt | |
baysmelts | |
baister | |
bait | |
baited | |
baiter | |
baiters | |
baitfish | |
baith | |
baitylos | |
baiting | |
baits | |
baittle | |
baywood | |
baywoods | |
bayz | |
baiza | |
baizas | |
baize | |
baized | |
baizes | |
baizing | |
baja | |
bajada | |
bajan | |
bajardo | |
bajarigar | |
bajau | |
bajocco | |
bajochi | |
bajocian | |
bajoire | |
bajonado | |
bajra | |
bajree | |
bajri | |
bajulate | |
bajury | |
baka | |
bakairi | |
bakal | |
bakalai | |
bakalei | |
bakatan | |
bake | |
bakeapple | |
bakeboard | |
baked | |
bakehead | |
bakehouse | |
bakehouses | |
bakelite | |
bakelize | |
bakemeat | |
bakemeats | |
baken | |
bakeout | |
bakeoven | |
bakepan | |
baker | |
bakerdom | |
bakeress | |
bakery | |
bakeries | |
bakerite | |
bakerless | |
bakerly | |
bakerlike | |
bakers | |
bakersfield | |
bakership | |
bakes | |
bakeshop | |
bakeshops | |
bakestone | |
bakeware | |
bakhtiari | |
bakie | |
baking | |
bakingly | |
bakings | |
baklava | |
baklavas | |
baklawa | |
baklawas | |
bakli | |
bakongo | |
bakra | |
bakshaish | |
baksheesh | |
baksheeshes | |
bakshi | |
bakshis | |
bakshish | |
bakshished | |
bakshishes | |
bakshishing | |
baktun | |
baku | |
bakuba | |
bakula | |
bakunda | |
bakuninism | |
bakuninist | |
bakupari | |
bakutu | |
bakwiri | |
bal | |
bala | |
balaam | |
balaamite | |
balaamitical | |
balabos | |
balachan | |
balachong | |
balaclava | |
balada | |
baladine | |
balaena | |
balaenicipites | |
balaenid | |
balaenidae | |
balaenoid | |
balaenoidea | |
balaenoidean | |
balaenoptera | |
balaenopteridae | |
balafo | |
balagan | |
balaghat | |
balaghaut | |
balai | |
balaic | |
balayeuse | |
balak | |
balaklava | |
balalaika | |
balalaikas | |
balan | |
balance | |
balanceable | |
balanced | |
balancedness | |
balancelle | |
balanceman | |
balancement | |
balancer | |
balancers | |
balances | |
balancewise | |
balancing | |
balander | |
balandra | |
balandrana | |
balaneutics | |
balangay | |
balanic | |
balanid | |
balanidae | |
balaniferous | |
balanism | |
balanite | |
balanites | |
balanitis | |
balanoblennorrhea | |
balanocele | |
balanoglossida | |
balanoglossus | |
balanoid | |
balanophora | |
balanophoraceae | |
balanophoraceous | |
balanophore | |
balanophorin | |
balanoplasty | |
balanoposthitis | |
balanopreputial | |
balanops | |
balanopsidaceae | |
balanopsidales | |
balanorrhagia | |
balant | |
balanta | |
balante | |
balantidial | |
balantidiasis | |
balantidic | |
balantidiosis | |
balantidium | |
balanus | |
balao | |
balaos | |
balaphon | |
balarama | |
balarao | |
balas | |
balases | |
balat | |
balata | |
balatas | |
balate | |
balatong | |
balatron | |
balatronic | |
balatte | |
balau | |
balausta | |
balaustine | |
balaustre | |
balawa | |
balawu | |
balboa | |
balboas | |
balbriggan | |
balbusard | |
balbutiate | |
balbutient | |
balbuties | |
balche | |
balcon | |
balcone | |
balconet | |
balconette | |
balcony | |
balconied | |
balconies | |
bald | |
baldacchini | |
baldacchino | |
baldachin | |
baldachined | |
baldachini | |
baldachino | |
baldachinos | |
baldachins | |
baldakin | |
baldaquin | |
baldberry | |
baldcrown | |
balded | |
balden | |
balder | |
balderdash | |
baldest | |
baldfaced | |
baldhead | |
baldheaded | |
baldheads | |
baldy | |
baldicoot | |
baldie | |
balding | |
baldish | |
baldly | |
baldling | |
baldmoney | |
baldmoneys | |
baldness | |
baldnesses | |
baldoquin | |
baldpate | |
baldpated | |
baldpatedness | |
baldpates | |
baldrib | |
baldric | |
baldrick | |
baldricked | |
baldricks | |
baldrics | |
baldricwise | |
balds | |
balducta | |
balductum | |
baldwin | |
bale | |
baleare | |
balearian | |
balearic | |
balearica | |
balebos | |
baled | |
baleen | |
baleens | |
balefire | |
balefires | |
baleful | |
balefully | |
balefulness | |
balei | |
baleys | |
baleise | |
baleless | |
baler | |
balers | |
bales | |
balestra | |
balete | |
balewort | |
bali | |
balian | |
balibago | |
balibuntal | |
balibuntl | |
balija | |
balilla | |
balimbing | |
baline | |
balinese | |
baling | |
balinger | |
balinghasay | |
balisaur | |
balisaurs | |
balisier | |
balistarii | |
balistarius | |
balister | |
balistes | |
balistid | |
balistidae | |
balistraria | |
balita | |
balitao | |
baliti | |
balize | |
balk | |
balkan | |
balkanic | |
balkanization | |
balkanize | |
balkanized | |
balkanizing | |
balkans | |
balkar | |
balked | |
balker | |
balkers | |
balky | |
balkier | |
balkiest | |
balkily | |
balkiness | |
balking | |
balkingly | |
balkis | |
balkish | |
balkline | |
balklines | |
balks | |
ball | |
ballad | |
ballade | |
balladeer | |
balladeers | |
ballader | |
balladeroyal | |
ballades | |
balladic | |
balladical | |
balladier | |
balladise | |
balladised | |
balladising | |
balladism | |
balladist | |
balladize | |
balladized | |
balladizing | |
balladlike | |
balladling | |
balladmonger | |
balladmongering | |
balladry | |
balladries | |
balladromic | |
ballads | |
balladwise | |
ballahoo | |
ballahou | |
ballam | |
ballan | |
ballant | |
ballarag | |
ballard | |
ballas | |
ballast | |
ballastage | |
ballasted | |
ballaster | |
ballastic | |
ballasting | |
ballasts | |
ballat | |
ballata | |
ballate | |
ballaton | |
ballatoon | |
ballbuster | |
ballcarrier | |
balldom | |
balldress | |
balled | |
baller | |
ballerina | |
ballerinas | |
ballerine | |
ballers | |
ballet | |
balletic | |
balletically | |
balletomane | |
balletomanes | |
balletomania | |
ballets | |
ballett | |
ballfield | |
ballflower | |
ballgame | |
ballgames | |
ballgown | |
ballgowns | |
ballhausplatz | |
ballhawk | |
ballhawks | |
ballhooter | |
balli | |
bally | |
balliage | |
ballies | |
ballyhack | |
ballyhoo | |
ballyhooed | |
ballyhooer | |
ballyhooing | |
ballyhoos | |
balling | |
ballyrag | |
ballyragged | |
ballyragging | |
ballyrags | |
ballised | |
ballism | |
ballismus | |
ballist | |
ballista | |
ballistae | |
ballistic | |
ballistically | |
ballistician | |
ballisticians | |
ballistics | |
ballistite | |
ballistocardiogram | |
ballistocardiograph | |
ballistocardiography | |
ballistocardiographic | |
ballistophobia | |
ballium | |
ballywack | |
ballywrack | |
ballmine | |
ballo | |
ballock | |
ballocks | |
balloen | |
ballogan | |
ballon | |
ballone | |
ballones | |
ballonet | |
ballonets | |
ballonette | |
ballonne | |
ballonnes | |
ballons | |
balloon | |
balloonation | |
ballooned | |
ballooner | |
balloonery | |
ballooners | |
balloonet | |
balloonfish | |
balloonfishes | |
balloonflower | |
balloonful | |
ballooning | |
balloonish | |
balloonist | |
balloonlike | |
balloons | |
ballot | |
ballota | |
ballotade | |
ballotage | |
ballote | |
balloted | |
balloter | |
balloters | |
balloting | |
ballotist | |
ballots | |
ballottable | |
ballottement | |
ballottine | |
ballottines | |
ballow | |
ballpark | |
ballparks | |
ballplayer | |
ballplayers | |
ballplatz | |
ballpoint | |
ballpoints | |
ballproof | |
ballroom | |
ballrooms | |
balls | |
ballsy | |
ballsier | |
ballsiest | |
ballstock | |
ballup | |
ballute | |
ballutes | |
ballweed | |
balm | |
balmacaan | |
balmarcodes | |
balmawhapple | |
balmy | |
balmier | |
balmiest | |
balmily | |
balminess | |
balmlike | |
balmony | |
balmonies | |
balmoral | |
balmorals | |
balms | |
balnea | |
balneae | |
balneal | |
balneary | |
balneation | |
balneatory | |
balneographer | |
balneography | |
balneology | |
balneologic | |
balneological | |
balneologist | |
balneophysiology | |
balneotechnics | |
balneotherapeutics | |
balneotherapy | |
balneotherapia | |
balneum | |
balnibarbi | |
baloch | |
baloghia | |
balolo | |
balon | |
balonea | |
baloney | |
baloneys | |
baloo | |
balopticon | |
balor | |
baloskion | |
baloskionaceae | |
balotade | |
balourdise | |
balow | |
balr | |
bals | |
balsa | |
balsam | |
balsamaceous | |
balsamation | |
balsamea | |
balsameaceae | |
balsameaceous | |
balsamed | |
balsamer | |
balsamy | |
balsamic | |
balsamical | |
balsamically | |
balsamiferous | |
balsamina | |
balsaminaceae | |
balsaminaceous | |
balsamine | |
balsaming | |
balsamitic | |
balsamiticness | |
balsamize | |
balsamo | |
balsamodendron | |
balsamorrhiza | |
balsamous | |
balsamroot | |
balsams | |
balsamum | |
balsamweed | |
balsas | |
balsawood | |
balt | |
baltei | |
balter | |
baltetei | |
balteus | |
balthasar | |
baltheus | |
balti | |
baltic | |
baltimore | |
baltimorean | |
baltimorite | |
baltis | |
balu | |
baluba | |
baluch | |
baluchi | |
baluchistan | |
baluchithere | |
baluchitheria | |
baluchitherium | |
baluga | |
balun | |
balunda | |
balushai | |
baluster | |
balustered | |
balusters | |
balustrade | |
balustraded | |
balustrades | |
balustrading | |
balut | |
balwarra | |
balza | |
balzacian | |
balzarine | |
bam | |
bamah | |
bamalip | |
bamangwato | |
bambacciata | |
bamban | |
bambara | |
bambini | |
bambino | |
bambinos | |
bambocciade | |
bambochade | |
bamboche | |
bamboo | |
bamboos | |
bamboozle | |
bamboozled | |
bamboozlement | |
bamboozler | |
bamboozlers | |
bamboozles | |
bamboozling | |
bambos | |
bamboula | |
bambuba | |
bambuco | |
bambuk | |
bambusa | |
bambuseae | |
bambute | |
bammed | |
bamming | |
bamoth | |
bams | |
ban | |
bana | |
banaba | |
banago | |
banagos | |
banak | |
banakite | |
banal | |
banality | |
banalities | |
banalize | |
banally | |
banalness | |
banana | |
bananaland | |
bananalander | |
bananaquit | |
bananas | |
banande | |
bananist | |
bananivorous | |
banat | |
banate | |
banatite | |
banausic | |
banba | |
banbury | |
banc | |
banca | |
bancal | |
bancales | |
bancha | |
banchi | |
banco | |
bancos | |
bancus | |
band | |
banda | |
bandage | |
bandaged | |
bandager | |
bandagers | |
bandages | |
bandaging | |
bandagist | |
bandaid | |
bandaite | |
bandaka | |
bandala | |
bandalore | |
bandana | |
bandanaed | |
bandanas | |
bandanna | |
bandannaed | |
bandannas | |
bandar | |
bandarlog | |
bandbox | |
bandboxes | |
bandboxy | |
bandboxical | |
bandcase | |
bandcutter | |
bande | |
bandeau | |
bandeaus | |
bandeaux | |
banded | |
bandel | |
bandelet | |
bandelette | |
bandeng | |
bander | |
banderilla | |
banderillas | |
banderillero | |
banderilleros | |
banderlog | |
banderma | |
banderol | |
banderole | |
banderoled | |
banderoles | |
banderoling | |
banderols | |
banders | |
bandersnatch | |
bandfile | |
bandfiled | |
bandfiling | |
bandfish | |
bandgap | |
bandh | |
bandhava | |
bandhook | |
bandhor | |
bandhu | |
bandi | |
bandy | |
bandyball | |
bandicoy | |
bandicoot | |
bandicoots | |
bandido | |
bandidos | |
bandie | |
bandied | |
bandies | |
bandying | |
bandikai | |
bandylegged | |
bandyman | |
bandiness | |
banding | |
bandit | |
banditism | |
banditry | |
banditries | |
bandits | |
banditti | |
bandle | |
bandleader | |
bandless | |
bandlessly | |
bandlessness | |
bandlet | |
bandlimit | |
bandlimited | |
bandlimiting | |
bandlimits | |
bandman | |
bandmaster | |
bandmasters | |
bando | |
bandobust | |
bandog | |
bandogs | |
bandoleer | |
bandoleered | |
bandoleers | |
bandolerismo | |
bandolero | |
bandoleros | |
bandolier | |
bandoliered | |
bandoline | |
bandon | |
bandonion | |
bandor | |
bandora | |
bandoras | |
bandore | |
bandores | |
bandos | |
bandpass | |
bandrol | |
bands | |
bandsaw | |
bandsawed | |
bandsawing | |
bandsawn | |
bandsman | |
bandsmen | |
bandspreading | |
bandstand | |
bandstands | |
bandster | |
bandstop | |
bandstring | |
bandura | |
bandurria | |
bandurrias | |
bandusia | |
bandusian | |
bandwagon | |
bandwagons | |
bandwidth | |
bandwidths | |
bandwork | |
bandworm | |
bane | |
baneberry | |
baneberries | |
baned | |
baneful | |
banefully | |
banefulness | |
banes | |
banewort | |
banff | |
bang | |
banga | |
bangala | |
bangalay | |
bangalow | |
bangash | |
bangboard | |
bange | |
banged | |
banger | |
bangers | |
banghy | |
bangy | |
bangia | |
bangiaceae | |
bangiaceous | |
bangiales | |
banging | |
bangkok | |
bangkoks | |
bangladesh | |
bangle | |
bangled | |
bangles | |
bangling | |
bangos | |
bangs | |
bangster | |
bangtail | |
bangtailed | |
bangtails | |
bangup | |
bangwaketsi | |
bani | |
bania | |
banya | |
banyai | |
banian | |
banyan | |
banians | |
banyans | |
banig | |
baniya | |
banilad | |
baning | |
banyoro | |
banish | |
banished | |
banisher | |
banishers | |
banishes | |
banishing | |
banishment | |
banishments | |
banister | |
banisterine | |
banisters | |
banyuls | |
baniva | |
baniwa | |
banjara | |
banjo | |
banjoes | |
banjoist | |
banjoists | |
banjore | |
banjorine | |
banjos | |
banjuke | |
banjulele | |
bank | |
bankable | |
bankalachi | |
bankbook | |
bankbooks | |
bankcard | |
bankcards | |
banked | |
banker | |
bankera | |
bankerdom | |
bankeress | |
bankers | |
banket | |
bankfull | |
banky | |
banking | |
bankings | |
bankman | |
bankmen | |
banknote | |
banknotes | |
bankrider | |
bankroll | |
bankrolled | |
bankroller | |
bankrolling | |
bankrolls | |
bankrupcy | |
bankrupt | |
bankruptcy | |
bankruptcies | |
bankrupted | |
bankrupting | |
bankruptism | |
bankruptly | |
bankruptlike | |
bankrupts | |
bankruptship | |
bankrupture | |
banks | |
bankshall | |
banksia | |
banksian | |
banksias | |
bankside | |
banksides | |
banksman | |
banksmen | |
bankweed | |
banlieu | |
banlieue | |
bannack | |
bannat | |
banned | |
banner | |
bannered | |
bannerer | |
banneret | |
bannerets | |
bannerette | |
bannerfish | |
bannerless | |
bannerlike | |
bannerline | |
bannerman | |
bannermen | |
bannerol | |
bannerole | |
bannerols | |
banners | |
bannerwise | |
bannet | |
bannets | |
bannimus | |
banning | |
bannister | |
bannisters | |
bannition | |
bannock | |
bannockburn | |
bannocks | |
banns | |
bannut | |
banovina | |
banque | |
banquet | |
banqueted | |
banqueteer | |
banqueteering | |
banqueter | |
banqueters | |
banqueting | |
banquetings | |
banquets | |
banquette | |
banquettes | |
banquo | |
bans | |
bansalague | |
bansela | |
banshee | |
banshees | |
banshie | |
banshies | |
banstickle | |
bant | |
bantay | |
bantayan | |
bantam | |
bantamize | |
bantams | |
bantamweight | |
bantamweights | |
banteng | |
banter | |
bantered | |
banterer | |
banterers | |
bantery | |
bantering | |
banteringly | |
banters | |
banty | |
bantin | |
banting | |
bantingism | |
bantingize | |
bantings | |
bantling | |
bantlings | |
bantoid | |
bantu | |
bantus | |
banuyo | |
banus | |
banxring | |
banzai | |
banzais | |
baobab | |
baobabs | |
bap | |
baphia | |
baphomet | |
baphometic | |
bapistery | |
bapt | |
baptanodon | |
baptise | |
baptised | |
baptises | |
baptisia | |
baptisias | |
baptisin | |
baptising | |
baptism | |
baptismal | |
baptismally | |
baptisms | |
baptist | |
baptistery | |
baptisteries | |
baptistic | |
baptistry | |
baptistries | |
baptists | |
baptizable | |
baptize | |
baptized | |
baptizee | |
baptizement | |
baptizer | |
baptizers | |
baptizes | |
baptizing | |
baptornis | |
bar | |
bara | |
barabara | |
barabbas | |
barabora | |
barabra | |
baraca | |
barad | |
baradari | |
baragnosis | |
baragouin | |
baragouinish | |
baraita | |
baraithas | |
barajillo | |
baraka | |
baralipton | |
baramika | |
baramin | |
barandos | |
barangay | |
barani | |
bararesque | |
bararite | |
barasingha | |
barat | |
barathea | |
baratheas | |
barathra | |
barathron | |
barathrum | |
barato | |
baratte | |
barauna | |
baraza | |
barb | |
barba | |
barbacan | |
barbacoa | |
barbacoan | |
barbacou | |
barbadian | |
barbadoes | |
barbados | |
barbal | |
barbaloin | |
barbar | |
barbara | |
barbaralalia | |
barbarea | |
barbaresque | |
barbary | |
barbarian | |
barbarianism | |
barbarianize | |
barbarianized | |
barbarianizing | |
barbarians | |
barbaric | |
barbarical | |
barbarically | |
barbarious | |
barbariousness | |
barbarisation | |
barbarise | |
barbarised | |
barbarising | |
barbarism | |
barbarisms | |
barbarity | |
barbarities | |
barbarization | |
barbarize | |
barbarized | |
barbarizes | |
barbarizing | |
barbarous | |
barbarously | |
barbarousness | |
barbas | |
barbasco | |
barbascoes | |
barbascos | |
barbastel | |
barbastelle | |
barbate | |
barbated | |
barbatimao | |
barbe | |
barbeau | |
barbecue | |
barbecued | |
barbecueing | |
barbecuer | |
barbecues | |
barbecuing | |
barbed | |
barbedness | |
barbeyaceae | |
barbeiro | |
barbel | |
barbeled | |
barbell | |
barbellate | |
barbells | |
barbellula | |
barbellulae | |
barbellulate | |
barbels | |
barbeque | |
barbequed | |
barbequing | |
barber | |
barbera | |
barbered | |
barberess | |
barberfish | |
barbery | |
barbering | |
barberish | |
barberite | |
barbermonger | |
barbero | |
barberry | |
barberries | |
barbers | |
barbershop | |
barbershops | |
barbes | |
barbet | |
barbets | |
barbette | |
barbettes | |
barbican | |
barbicanage | |
barbicans | |
barbicel | |
barbicels | |
barbierite | |
barbigerous | |
barbing | |
barbion | |
barbita | |
barbital | |
barbitalism | |
barbitals | |
barbiton | |
barbitone | |
barbitos | |
barbituism | |
barbiturate | |
barbiturates | |
barbituric | |
barbiturism | |
barble | |
barbless | |
barblet | |
barboy | |
barbola | |
barbone | |
barbotine | |
barbotte | |
barbouillage | |
barbra | |
barbre | |
barbs | |
barbu | |
barbudo | |
barbudos | |
barbula | |
barbulate | |
barbule | |
barbules | |
barbulyie | |
barbut | |
barbute | |
barbuts | |
barbwire | |
barbwires | |
barcan | |
barcarole | |
barcaroles | |
barcarolle | |
barcas | |
barcella | |
barcelona | |
barcelonas | |
barchan | |
barchans | |
barche | |
barcolongo | |
barcone | |
barcoo | |
bard | |
bardane | |
bardash | |
bardcraft | |
barde | |
barded | |
bardee | |
bardel | |
bardelle | |
bardes | |
bardesanism | |
bardesanist | |
bardesanite | |
bardess | |
bardy | |
bardic | |
bardie | |
bardier | |
bardiest | |
bardiglio | |
bardily | |
bardiness | |
barding | |
bardings | |
bardish | |
bardism | |
bardlet | |
bardlike | |
bardling | |
bardo | |
bardocucullus | |
bardolater | |
bardolatry | |
bardolph | |
bardolphian | |
bards | |
bardship | |
bardulph | |
bare | |
bareback | |
barebacked | |
bareboat | |
bareboats | |
barebone | |
bareboned | |
barebones | |
bareca | |
bared | |
barefaced | |
barefacedly | |
barefacedness | |
barefisted | |
barefit | |
barefoot | |
barefooted | |
barege | |
bareges | |
barehanded | |
barehead | |
bareheaded | |
bareheadedness | |
bareka | |
bareknuckle | |
bareknuckled | |
barelegged | |
barely | |
barenecked | |
bareness | |
barenesses | |
barer | |
bares | |
baresark | |
baresarks | |
baresma | |
barest | |
baresthesia | |
baret | |
baretta | |
barf | |
barfed | |
barff | |
barfy | |
barfing | |
barfish | |
barfly | |
barflies | |
barfs | |
barful | |
bargain | |
bargainable | |
bargained | |
bargainee | |
bargainer | |
bargainers | |
bargaining | |
bargainor | |
bargains | |
bargainwise | |
bargander | |
barge | |
bargeboard | |
barged | |
bargee | |
bargeer | |
bargees | |
bargeese | |
bargehouse | |
bargelike | |
bargelli | |
bargello | |
bargellos | |
bargeload | |
bargeman | |
bargemaster | |
bargemen | |
bargepole | |
barger | |
barges | |
bargestone | |
bargh | |
bargham | |
barghest | |
barghests | |
barging | |
bargir | |
bargoose | |
barguest | |
barguests | |
barhal | |
barhop | |
barhopped | |
barhopping | |
barhops | |
bari | |
baria | |
bariatrician | |
bariatrics | |
baric | |
barycenter | |
barycentre | |
barycentric | |
barid | |
barie | |
barye | |
baryecoia | |
baryes | |
baryglossia | |
barih | |
barylalia | |
barile | |
barylite | |
barilla | |
barillas | |
baring | |
bariolage | |
baryon | |
baryonic | |
baryons | |
baryphony | |
baryphonia | |
baryphonic | |
baris | |
barish | |
barysilite | |
barysphere | |
barit | |
baryta | |
barytas | |
barite | |
baryte | |
baritenor | |
barites | |
barytes | |
barythymia | |
barytic | |
barytine | |
barytocalcite | |
barytocelestine | |
barytocelestite | |
baryton | |
baritonal | |
baritone | |
barytone | |
baritones | |
barytones | |
barytons | |
barytophyllite | |
barytostrontianite | |
barytosulphate | |
barium | |
bariums | |
bark | |
barkan | |
barkantine | |
barkary | |
barkbound | |
barkcutter | |
barked | |
barkeep | |
barkeeper | |
barkeepers | |
barkeeps | |
barkey | |
barken | |
barkened | |
barkening | |
barkentine | |
barkentines | |
barker | |
barkery | |
barkers | |
barkevikite | |
barkevikitic | |
barkhan | |
barky | |
barkier | |
barkiest | |
barking | |
barkingly | |
barkinji | |
barkle | |
barkless | |
barklyite | |
barkometer | |
barkpeel | |
barkpeeler | |
barkpeeling | |
barks | |
barksome | |
barkstone | |
barlafumble | |
barlafummil | |
barleduc | |
barleducs | |
barley | |
barleybird | |
barleybrake | |
barleybreak | |
barleycorn | |
barleyhood | |
barleymow | |
barleys | |
barleysick | |
barless | |
barly | |
barling | |
barlock | |
barlow | |
barlows | |
barm | |
barmaid | |
barmaids | |
barman | |
barmaster | |
barmbrack | |
barmcloth | |
barmecidal | |
barmecide | |
barmen | |
barmfel | |
barmy | |
barmybrained | |
barmie | |
barmier | |
barmiest | |
barming | |
barmkin | |
barmote | |
barms | |
barmskin | |
barn | |
barnabas | |
barnaby | |
barnabite | |
barnacle | |
barnacled | |
barnacles | |
barnacling | |
barnage | |
barnard | |
barnbrack | |
barnburner | |
barndoor | |
barney | |
barneys | |
barnful | |
barnhardtite | |
barny | |
barnyard | |
barnyards | |
barnier | |
barniest | |
barnlike | |
barnman | |
barnmen | |
barns | |
barnstorm | |
barnstormed | |
barnstormer | |
barnstormers | |
barnstorming | |
barnstorms | |
barnumism | |
barnumize | |
barocco | |
barocyclonometer | |
baroclinicity | |
baroclinity | |
baroco | |
barodynamic | |
barodynamics | |
barognosis | |
barogram | |
barograms | |
barograph | |
barographic | |
barographs | |
baroi | |
baroko | |
barolo | |
barology | |
barolong | |
baromacrometer | |
barometer | |
barometers | |
barometry | |
barometric | |
barometrical | |
barometrically | |
barometrograph | |
barometrography | |
barometz | |
baromotor | |
baron | |
baronage | |
baronages | |
baronduki | |
baroness | |
baronesses | |
baronet | |
baronetage | |
baronetcy | |
baronetcies | |
baroneted | |
baronethood | |
baronetical | |
baroneting | |
baronetise | |
baronetised | |
baronetising | |
baronetize | |
baronetized | |
baronetizing | |
baronets | |
baronetship | |
barong | |
baronga | |
barongs | |
baroni | |
barony | |
baronial | |
baronies | |
baronize | |
baronized | |
baronizing | |
baronne | |
baronnes | |
baronry | |
baronries | |
barons | |
baronship | |
barophobia | |
baroque | |
baroquely | |
baroqueness | |
baroques | |
baroreceptor | |
baroscope | |
baroscopic | |
baroscopical | |
barosinusitis | |
barosinusitus | |
barosma | |
barosmin | |
barostat | |
baroswitch | |
barotactic | |
barotaxy | |
barotaxis | |
barothermogram | |
barothermograph | |
barothermohygrogram | |
barothermohygrograph | |
baroto | |
barotrauma | |
barotraumas | |
barotraumata | |
barotropy | |
barotropic | |
barotse | |
barouche | |
barouches | |
barouchet | |
barouchette | |
barouni | |
baroxyton | |
barpost | |
barquantine | |
barque | |
barquentine | |
barques | |
barquest | |
barquette | |
barr | |
barra | |
barrabkie | |
barrable | |
barrabora | |
barracan | |
barrace | |
barrack | |
barracked | |
barracker | |
barracking | |
barracks | |
barraclade | |
barracoon | |
barracouta | |
barracoutas | |
barracuda | |
barracudas | |
barracudina | |
barrad | |
barragan | |
barrage | |
barraged | |
barrages | |
barraging | |
barragon | |
barramunda | |
barramundas | |
barramundi | |
barramundies | |
barramundis | |
barranca | |
barrancas | |
barranco | |
barrancos | |
barrandite | |
barras | |
barrat | |
barrater | |
barraters | |
barrator | |
barrators | |
barratry | |
barratries | |
barratrous | |
barratrously | |
barre | |
barred | |
barrel | |
barrelage | |
barreled | |
barreleye | |
barreleyes | |
barreler | |
barrelet | |
barrelfish | |
barrelfishes | |
barrelful | |
barrelfuls | |
barrelhead | |
barrelhouse | |
barrelhouses | |
barreling | |
barrelled | |
barrelling | |
barrelmaker | |
barrelmaking | |
barrels | |
barrelsful | |
barrelwise | |
barren | |
barrener | |
barrenest | |
barrenly | |
barrenness | |
barrens | |
barrenwort | |
barrer | |
barrera | |
barres | |
barret | |
barretor | |
barretors | |
barretry | |
barretries | |
barrets | |
barrett | |
barrette | |
barretter | |
barrettes | |
barry | |
barricade | |
barricaded | |
barricader | |
barricaders | |
barricades | |
barricading | |
barricado | |
barricadoed | |
barricadoes | |
barricadoing | |
barricados | |
barrico | |
barricoes | |
barricos | |
barrier | |
barriers | |
barriguda | |
barrigudo | |
barrigudos | |
barrikin | |
barriness | |
barring | |
barringer | |
barrington | |
barringtonia | |
barrio | |
barrios | |
barrister | |
barristerial | |
barristers | |
barristership | |
barristress | |
barroom | |
barrooms | |
barrow | |
barrowcoat | |
barrowful | |
barrowist | |
barrowman | |
barrows | |
barrulee | |
barrulet | |
barrulety | |
barruly | |
bars | |
barsac | |
barse | |
barsom | |
barspoon | |
barstool | |
barstools | |
bart | |
bartend | |
bartended | |
bartender | |
bartenders | |
bartending | |
bartends | |
barter | |
bartered | |
barterer | |
barterers | |
bartering | |
barters | |
barth | |
barthian | |
barthite | |
bartholinitis | |
bartholomean | |
bartholomew | |
bartholomewtide | |
bartholomite | |
bartisan | |
bartisans | |
bartizan | |
bartizaned | |
bartizans | |
bartlemy | |
bartlett | |
bartletts | |
barton | |
bartonella | |
bartonia | |
bartram | |
bartramia | |
bartramiaceae | |
bartramian | |
bartree | |
bartsia | |
baru | |
baruch | |
barukhzy | |
barundi | |
baruria | |
barvel | |
barvell | |
barway | |
barways | |
barwal | |
barware | |
barwares | |
barwin | |
barwing | |
barwise | |
barwood | |
bas | |
basad | |
basal | |
basale | |
basalia | |
basally | |
basalt | |
basaltes | |
basaltic | |
basaltiform | |
basaltine | |
basaltoid | |
basalts | |
basaltware | |
basan | |
basanite | |
basaree | |
basat | |
bascinet | |
bascology | |
basculation | |
bascule | |
bascules | |
bascunan | |
base | |
baseball | |
baseballdom | |
baseballer | |
baseballs | |
baseband | |
baseboard | |
baseboards | |
baseborn | |
basebred | |
baseburner | |
basecoat | |
basecourt | |
based | |
basehearted | |
baseheartedness | |
baselard | |
baseless | |
baselessly | |
baselessness | |
baselevel | |
basely | |
baselike | |
baseline | |
baseliner | |
baselines | |
basella | |
basellaceae | |
basellaceous | |
baseman | |
basemen | |
basement | |
basementless | |
basements | |
basementward | |
basename | |
baseness | |
basenesses | |
basenet | |
basenji | |
basenjis | |
baseplate | |
baseplug | |
basepoint | |
baser | |
baserunning | |
bases | |
basest | |
bash | |
bashalick | |
bashara | |
bashaw | |
bashawdom | |
bashawism | |
bashaws | |
bashawship | |
bashed | |
basher | |
bashers | |
bashes | |
bashful | |
bashfully | |
bashfulness | |
bashibazouk | |
bashilange | |
bashyle | |
bashing | |
bashkir | |
bashless | |
bashlik | |
bashlyk | |
bashlyks | |
bashment | |
bashmuric | |
basial | |
basialveolar | |
basiarachnitis | |
basiarachnoiditis | |
basiate | |
basiated | |
basiating | |
basiation | |
basibracteolate | |
basibranchial | |
basibranchiate | |
basibregmatic | |
basic | |
basically | |
basicerite | |
basichromatic | |
basichromatin | |
basichromatinic | |
basichromiole | |
basicity | |
basicities | |
basicytoparaplastin | |
basicranial | |
basics | |
basidia | |
basidial | |
basidigital | |
basidigitale | |
basidigitalia | |
basidiocarp | |
basidiogenetic | |
basidiolichen | |
basidiolichenes | |
basidiomycete | |
basidiomycetes | |
basidiomycetous | |
basidiophore | |
basidiospore | |
basidiosporous | |
basidium | |
basidorsal | |
basifacial | |
basify | |
basification | |
basified | |
basifier | |
basifiers | |
basifies | |
basifying | |
basifixed | |
basifugal | |
basigamy | |
basigamous | |
basigenic | |
basigenous | |
basigynium | |
basiglandular | |
basihyal | |
basihyoid | |
basil | |
basyl | |
basilar | |
basilarchia | |
basilard | |
basilary | |
basilateral | |
basilect | |
basileis | |
basilemma | |
basileus | |
basilian | |
basilic | |
basilica | |
basilicae | |
basilical | |
basilicalike | |
basilican | |
basilicas | |
basilicate | |
basilicock | |
basilicon | |
basilics | |
basilidan | |
basilidian | |
basilidianism | |
basilinna | |
basiliscan | |
basiliscine | |
basiliscus | |
basilysis | |
basilisk | |
basilisks | |
basilissa | |
basilyst | |
basilosauridae | |
basilosaurus | |
basils | |
basilweed | |
basimesostasis | |
basin | |
basinal | |
basinasal | |
basinasial | |
basined | |
basinerved | |
basinet | |
basinets | |
basinful | |
basing | |
basinlike | |
basins | |
basioccipital | |
basion | |
basions | |
basiophitic | |
basiophthalmite | |
basiophthalmous | |
basiotribe | |
basiotripsy | |
basiparachromatin | |
basiparaplastin | |
basipetal | |
basipetally | |
basiphobia | |
basipodite | |
basipoditic | |
basipterygial | |
basipterygium | |
basipterygoid | |
basiradial | |
basirhinal | |
basirostral | |
basis | |
basiscopic | |
basisidia | |
basisolute | |
basisphenoid | |
basisphenoidal | |
basitemporal | |
basitting | |
basiventral | |
basivertebral | |
bask | |
baske | |
basked | |
basker | |
baskerville | |
basket | |
basketball | |
basketballer | |
basketballs | |
basketful | |
basketfuls | |
basketing | |
basketlike | |
basketmaker | |
basketmaking | |
basketry | |
basketries | |
baskets | |
basketware | |
basketweaving | |
basketwoman | |
basketwood | |
basketwork | |
basketworm | |
basking | |
baskish | |
baskonize | |
basks | |
basnat | |
basnet | |
basoche | |
basocyte | |
basoga | |
basoid | |
basoko | |
basommatophora | |
basommatophorous | |
bason | |
basongo | |
basophil | |
basophile | |
basophilia | |
basophilic | |
basophilous | |
basophils | |
basophobia | |
basos | |
basote | |
basotho | |
basque | |
basqued | |
basques | |
basquine | |
bass | |
bassa | |
bassalia | |
bassalian | |
bassan | |
bassanello | |
bassanite | |
bassara | |
bassarid | |
bassaris | |
bassariscus | |
bassarisk | |
basses | |
basset | |
basseted | |
basseting | |
bassetite | |
bassets | |
bassetta | |
bassette | |
bassetted | |
bassetting | |
bassi | |
bassy | |
bassia | |
bassie | |
bassine | |
bassinet | |
bassinets | |
bassing | |
bassirilievi | |
bassist | |
bassists | |
bassly | |
bassness | |
bassnesses | |
basso | |
basson | |
bassoon | |
bassoonist | |
bassoonists | |
bassoons | |
bassorin | |
bassos | |
bassus | |
basswood | |
basswoods | |
bast | |
basta | |
bastaard | |
bastant | |
bastard | |
bastarda | |
bastardy | |
bastardice | |
bastardies | |
bastardisation | |
bastardise | |
bastardised | |
bastardising | |
bastardism | |
bastardization | |
bastardizations | |
bastardize | |
bastardized | |
bastardizes | |
bastardizing | |
bastardly | |
bastardliness | |
bastardry | |
bastards | |
baste | |
basted | |
basten | |
baster | |
basters | |
bastes | |
basti | |
bastian | |
bastide | |
bastile | |
bastiles | |
bastille | |
bastilles | |
bastillion | |
bastiment | |
bastinade | |
bastinaded | |
bastinades | |
bastinading | |
bastinado | |
bastinadoed | |
bastinadoes | |
bastinadoing | |
basting | |
bastings | |
bastion | |
bastionary | |
bastioned | |
bastionet | |
bastions | |
bastite | |
bastnaesite | |
bastnasite | |
basto | |
baston | |
bastonet | |
bastonite | |
basts | |
basural | |
basurale | |
basuto | |
bat | |
bataan | |
batable | |
batad | |
batak | |
batakan | |
bataleur | |
batamote | |
batan | |
batara | |
batarde | |
batardeau | |
batata | |
batatas | |
batatilla | |
batavi | |
batavian | |
batboy | |
batboys | |
batch | |
batched | |
batcher | |
batchers | |
batches | |
batching | |
bate | |
batea | |
bateau | |
bateaux | |
bated | |
bateful | |
batekes | |
batel | |
bateleur | |
batell | |
bateman | |
batement | |
bater | |
bates | |
batete | |
batetela | |
batfish | |
batfishes | |
batfowl | |
batfowled | |
batfowler | |
batfowling | |
batfowls | |
batful | |
bath | |
bathala | |
bathe | |
batheable | |
bathed | |
bather | |
bathers | |
bathes | |
bathetic | |
bathetically | |
bathflower | |
bathhouse | |
bathhouses | |
bathyal | |
bathyanesthesia | |
bathybian | |
bathybic | |
bathybius | |
bathic | |
bathycentesis | |
bathychrome | |
bathycolpian | |
bathycolpic | |
bathycurrent | |
bathyesthesia | |
bathygraphic | |
bathyhyperesthesia | |
bathyhypesthesia | |
bathyl | |
bathylimnetic | |
bathylite | |
bathylith | |
bathylithic | |
bathylitic | |
bathymeter | |
bathymetry | |
bathymetric | |
bathymetrical | |
bathymetrically | |
bathinette | |
bathing | |
bathyorographical | |
bathypelagic | |
bathyplankton | |
bathyscape | |
bathyscaph | |
bathyscaphe | |
bathyscaphes | |
bathyseism | |
bathysmal | |
bathysophic | |
bathysophical | |
bathysphere | |
bathyspheres | |
bathythermogram | |
bathythermograph | |
bathkol | |
bathless | |
bathman | |
bathmat | |
bathmats | |
bathmic | |
bathmism | |
bathmotropic | |
bathmotropism | |
bathochromatic | |
bathochromatism | |
bathochrome | |
bathochromy | |
bathochromic | |
bathoflore | |
bathofloric | |
batholite | |
batholith | |
batholithic | |
batholiths | |
batholitic | |
bathomania | |
bathometer | |
bathometry | |
bathonian | |
bathool | |
bathophobia | |
bathorse | |
bathos | |
bathoses | |
bathrobe | |
bathrobes | |
bathroom | |
bathroomed | |
bathrooms | |
bathroot | |
baths | |
bathtub | |
bathtubful | |
bathtubs | |
bathukolpian | |
bathukolpic | |
bathvillite | |
bathwater | |
bathwort | |
batidaceae | |
batidaceous | |
batik | |
batiked | |
batiker | |
batiking | |
batiks | |
batikulin | |
batikuling | |
bating | |
batino | |
batyphone | |
batis | |
batiste | |
batistes | |
batitinan | |
batlan | |
batler | |
batlet | |
batlike | |
batling | |
batlon | |
batman | |
batmen | |
batocrinidae | |
batocrinus | |
batodendron | |
batoid | |
batoidei | |
batoka | |
baton | |
batoneer | |
batonga | |
batonist | |
batonistic | |
batonne | |
batonnier | |
batons | |
batoon | |
batophobia | |
batrachia | |
batrachian | |
batrachians | |
batrachiate | |
batrachidae | |
batrachite | |
batrachium | |
batrachoid | |
batrachoididae | |
batrachophagous | |
batrachophidia | |
batrachophobia | |
batrachoplasty | |
batrachospermum | |
batrachotoxin | |
bats | |
batsman | |
batsmanship | |
batsmen | |
batster | |
batswing | |
batt | |
batta | |
battable | |
battailant | |
battailous | |
battak | |
battakhin | |
battalia | |
battalias | |
battalion | |
battalions | |
battarism | |
battarismus | |
batteau | |
batteaux | |
batted | |
battel | |
batteled | |
batteler | |
batteling | |
battels | |
battement | |
battements | |
batten | |
battened | |
battener | |
batteners | |
battening | |
battens | |
batter | |
batterable | |
battercake | |
batterdock | |
battered | |
batterer | |
batterfang | |
battery | |
batterie | |
batteried | |
batteries | |
batteryman | |
battering | |
batterman | |
batters | |
batteuse | |
batty | |
battycake | |
battier | |
batties | |
battiest | |
battik | |
battiks | |
battiness | |
batting | |
battings | |
battish | |
battle | |
battled | |
battledore | |
battledored | |
battledores | |
battledoring | |
battlefield | |
battlefields | |
battlefront | |
battlefronts | |
battleful | |
battleground | |
battlegrounds | |
battlement | |
battlemented | |
battlements | |
battlepiece | |
battleplane | |
battler | |
battlers | |
battles | |
battleship | |
battleships | |
battlesome | |
battlestead | |
battlewagon | |
battleward | |
battlewise | |
battling | |
battology | |
battological | |
battologise | |
battologised | |
battologising | |
battologist | |
battologize | |
battologized | |
battologizing | |
batton | |
batts | |
battu | |
battue | |
battues | |
batture | |
battuta | |
battutas | |
battute | |
battuto | |
battutos | |
batukite | |
batule | |
batuque | |
batussi | |
batwa | |
batwing | |
batwoman | |
batwomen | |
batz | |
batzen | |
baubee | |
baubees | |
bauble | |
baublery | |
baubles | |
baubling | |
baubo | |
bauch | |
bauchle | |
bauckie | |
bauckiebird | |
baud | |
baudekin | |
baudekins | |
baudery | |
baudrons | |
baudronses | |
bauds | |
bauera | |
baufrey | |
bauge | |
bauhinia | |
bauhinias | |
bauk | |
baul | |
bauld | |
baulea | |
bauleah | |
baulk | |
baulked | |
baulky | |
baulkier | |
baulkiest | |
baulking | |
baulks | |
baume | |
baumhauerite | |
baumier | |
baun | |
bauno | |
baure | |
bauson | |
bausond | |
bauta | |
bautta | |
bauxite | |
bauxites | |
bauxitic | |
bauxitite | |
bavardage | |
bavary | |
bavarian | |
bavaroy | |
bavarois | |
bavaroise | |
bavenite | |
bavette | |
baviaantje | |
bavian | |
baviere | |
bavin | |
bavius | |
bavoso | |
baw | |
bawarchi | |
bawbee | |
bawbees | |
bawble | |
bawcock | |
bawcocks | |
bawd | |
bawdy | |
bawdier | |
bawdies | |
bawdiest | |
bawdyhouse | |
bawdyhouses | |
bawdily | |
bawdiness | |
bawdry | |
bawdric | |
bawdrick | |
bawdrics | |
bawdries | |
bawds | |
bawdship | |
bawdstrot | |
bawhorse | |
bawke | |
bawl | |
bawled | |
bawley | |
bawler | |
bawlers | |
bawly | |
bawling | |
bawls | |
bawn | |
bawneen | |
bawra | |
bawrel | |
bawsint | |
bawsunt | |
bawty | |
bawtie | |
bawties | |
baxter | |
baxterian | |
baxterianism | |
baxtone | |
bazaar | |
bazaars | |
bazar | |
bazars | |
baze | |
bazigar | |
bazoo | |
bazooka | |
bazookaman | |
bazookamen | |
bazookas | |
bazoos | |
bazzite | |
bb | |
bbl | |
bbls | |
bbs | |
bcd | |
bcf | |
bch | |
bchs | |
bd | |
bde | |
bdellatomy | |
bdellid | |
bdellidae | |
bdellium | |
bdelliums | |
bdelloid | |
bdelloida | |
bdellometer | |
bdellostoma | |
bdellostomatidae | |
bdellostomidae | |
bdellotomy | |
bdelloura | |
bdellouridae | |
bdellovibrio | |
bdft | |
bdl | |
bdle | |
bdls | |
bdrm | |
bds | |
be | |
bea | |
beach | |
beachboy | |
beachboys | |
beachcomb | |
beachcomber | |
beachcombers | |
beachcombing | |
beachdrops | |
beached | |
beacher | |
beaches | |
beachfront | |
beachhead | |
beachheads | |
beachy | |
beachie | |
beachier | |
beachiest | |
beaching | |
beachlamar | |
beachless | |
beachman | |
beachmaster | |
beachmen | |
beachside | |
beachward | |
beachwear | |
beacon | |
beaconage | |
beaconed | |
beaconing | |
beaconless | |
beacons | |
beaconwise | |
bead | |
beaded | |
beadeye | |
beadeyes | |
beader | |
beadflush | |
beadhouse | |
beadhouses | |
beady | |
beadier | |
beadiest | |
beadily | |
beadiness | |
beading | |
beadings | |
beadle | |
beadledom | |
beadlehood | |
beadleism | |
beadlery | |
beadles | |
beadleship | |
beadlet | |
beadlike | |
beadman | |
beadmen | |
beadroll | |
beadrolls | |
beadrow | |
beads | |
beadsman | |
beadsmen | |
beadswoman | |
beadswomen | |
beadwork | |
beadworks | |
beagle | |
beagles | |
beagling | |
beak | |
beaked | |
beaker | |
beakerful | |
beakerman | |
beakermen | |
beakers | |
beakful | |
beakhead | |
beaky | |
beakier | |
beakiest | |
beakiron | |
beakless | |
beaklike | |
beaks | |
beal | |
beala | |
bealach | |
bealing | |
beallach | |
bealtared | |
bealtine | |
bealtuinn | |
beam | |
beamage | |
beambird | |
beamed | |
beamer | |
beamers | |
beamfilling | |
beamful | |
beamhouse | |
beamy | |
beamier | |
beamiest | |
beamily | |
beaminess | |
beaming | |
beamingly | |
beamish | |
beamishly | |
beamless | |
beamlet | |
beamlike | |
beamman | |
beamroom | |
beams | |
beamsman | |
beamsmen | |
beamster | |
beamwork | |
bean | |
beanbag | |
beanbags | |
beanball | |
beanballs | |
beancod | |
beaned | |
beaner | |
beanery | |
beaneries | |
beaners | |
beanfeast | |
beanfeaster | |
beanfest | |
beanfield | |
beany | |
beanie | |
beanier | |
beanies | |
beaniest | |
beaning | |
beanlike | |
beano | |
beanos | |
beanpole | |
beanpoles | |
beans | |
beansetter | |
beanshooter | |
beanstalk | |
beanstalks | |
beant | |
beanweed | |
beaproned | |
bear | |
bearability | |
bearable | |
bearableness | |
bearably | |
bearance | |
bearbaiter | |
bearbaiting | |
bearbane | |
bearberry | |
bearberries | |
bearbind | |
bearbine | |
bearbush | |
bearcat | |
bearcats | |
bearcoot | |
beard | |
bearded | |
beardedness | |
bearder | |
beardfish | |
beardfishes | |
beardy | |
beardie | |
bearding | |
beardless | |
beardlessness | |
beardlike | |
beardom | |
beards | |
beardtongue | |
beared | |
bearer | |
bearers | |
bearess | |
bearfoot | |
bearfoots | |
bearherd | |
bearhide | |
bearhound | |
bearhug | |
bearhugs | |
bearing | |
bearings | |
bearish | |
bearishly | |
bearishness | |
bearleap | |
bearlet | |
bearlike | |
bearm | |
bearnaise | |
bearpaw | |
bears | |
bearship | |
bearskin | |
bearskins | |
beartongue | |
bearward | |
bearwood | |
bearwoods | |
bearwort | |
beast | |
beastbane | |
beastdom | |
beasthood | |
beastie | |
beasties | |
beastily | |
beastings | |
beastish | |
beastishness | |
beastly | |
beastlier | |
beastliest | |
beastlike | |
beastlily | |
beastliness | |
beastling | |
beastlings | |
beastman | |
beasts | |
beastship | |
beat | |
beata | |
beatable | |
beatably | |
beatae | |
beatas | |
beatee | |
beaten | |
beater | |
beaterman | |
beatermen | |
beaters | |
beath | |
beati | |
beatify | |
beatific | |
beatifical | |
beatifically | |
beatificate | |
beatification | |
beatified | |
beatifies | |
beatifying | |
beatille | |
beatinest | |
beating | |
beatings | |
beatitude | |
beatitudes | |
beatles | |
beatless | |
beatnik | |
beatnikism | |
beatniks | |
beatrice | |
beatrix | |
beats | |
beatster | |
beatus | |
beatuti | |
beau | |
beauclerc | |
beauclerk | |
beaucoup | |
beaued | |
beauetry | |
beaufet | |
beaufin | |
beaufort | |
beaugregory | |
beaugregories | |
beauing | |
beauish | |
beauism | |
beaujolais | |
beaume | |
beaumont | |
beaumontia | |
beaune | |
beaupere | |
beaupers | |
beaus | |
beauseant | |
beauship | |
beausire | |
beaut | |
beauteous | |
beauteously | |
beauteousness | |
beauti | |
beauty | |
beautician | |
beauticians | |
beautydom | |
beautied | |
beauties | |
beautify | |
beautification | |
beautifications | |
beautified | |
beautifier | |
beautifiers | |
beautifies | |
beautifying | |
beautiful | |
beautifully | |
beautifulness | |
beautihood | |
beautiless | |
beautyship | |
beauts | |
beaux | |
beauxite | |
beaver | |
beaverboard | |
beavered | |
beaverette | |
beavery | |
beaveries | |
beavering | |
beaverish | |
beaverism | |
beaverite | |
beaverize | |
beaverkill | |
beaverkin | |
beaverlike | |
beaverpelt | |
beaverroot | |
beavers | |
beaverskin | |
beaverteen | |
beaverwood | |
beback | |
bebay | |
bebait | |
beballed | |
bebang | |
bebannered | |
bebar | |
bebaron | |
bebaste | |
bebat | |
bebathe | |
bebatter | |
bebeast | |
bebed | |
bebeerin | |
bebeerine | |
bebeeru | |
bebeerus | |
bebelted | |
bebilya | |
bebite | |
bebization | |
beblain | |
beblear | |
bebled | |
bebleed | |
bebless | |
beblister | |
beblood | |
beblooded | |
beblooding | |
bebloods | |
bebloom | |
beblot | |
beblotch | |
beblubber | |
beblubbered | |
bebog | |
bebop | |
bebopper | |
beboppers | |
bebops | |
beboss | |
bebotch | |
bebothered | |
bebouldered | |
bebrave | |
bebreech | |
bebrine | |
bebrother | |
bebrush | |
bebump | |
bebusy | |
bebuttoned | |
bec | |
becafico | |
becall | |
becalm | |
becalmed | |
becalming | |
becalmment | |
becalms | |
became | |
becap | |
becapped | |
becapping | |
becaps | |
becard | |
becarpet | |
becarpeted | |
becarpeting | |
becarpets | |
becarve | |
becasse | |
becassine | |
becassocked | |
becater | |
because | |
beccabunga | |
beccaccia | |
beccafico | |
beccaficoes | |
beccaficos | |
becchi | |
becco | |
becense | |
bechained | |
bechalk | |
bechalked | |
bechalking | |
bechalks | |
bechamel | |
bechamels | |
bechance | |
bechanced | |
bechances | |
bechancing | |
becharm | |
becharmed | |
becharming | |
becharms | |
bechase | |
bechatter | |
bechauffeur | |
beche | |
becheck | |
becher | |
bechern | |
bechic | |
bechignoned | |
bechirp | |
bechtler | |
bechuana | |
becircled | |
becivet | |
beck | |
becked | |
beckelite | |
becker | |
becket | |
beckets | |
beckett | |
becky | |
beckie | |
becking | |
beckiron | |
beckon | |
beckoned | |
beckoner | |
beckoners | |
beckoning | |
beckoningly | |
beckons | |
becks | |
beclad | |
beclamor | |
beclamored | |
beclamoring | |
beclamors | |
beclamour | |
beclang | |
beclap | |
beclart | |
beclasp | |
beclasped | |
beclasping | |
beclasps | |
beclatter | |
beclaw | |
beclip | |
becloak | |
becloaked | |
becloaking | |
becloaks | |
beclog | |
beclogged | |
beclogging | |
beclogs | |
beclose | |
beclothe | |
beclothed | |
beclothes | |
beclothing | |
becloud | |
beclouded | |
beclouding | |
beclouds | |
beclout | |
beclown | |
beclowned | |
beclowning | |
beclowns | |
becluster | |
becobweb | |
becoiffed | |
becollier | |
becolme | |
becolor | |
becombed | |
become | |
becomed | |
becomes | |
becometh | |
becoming | |
becomingly | |
becomingness | |
becomings | |
becomma | |
becompass | |
becompliment | |
becoom | |
becoresh | |
becost | |
becousined | |
becovet | |
becoward | |
becowarded | |
becowarding | |
becowards | |
becquerelite | |
becram | |
becramp | |
becrampon | |
becrawl | |
becrawled | |
becrawling | |
becrawls | |
becreep | |
becry | |
becrime | |
becrimed | |
becrimes | |
becriming | |
becrimson | |
becrinolined | |
becripple | |
becrippled | |
becrippling | |
becroak | |
becross | |
becrowd | |
becrowded | |
becrowding | |
becrowds | |
becrown | |
becrush | |
becrust | |
becrusted | |
becrusting | |
becrusts | |
becudgel | |
becudgeled | |
becudgeling | |
becudgelled | |
becudgelling | |
becudgels | |
becuffed | |
becuiba | |
becumber | |
becuna | |
becurl | |
becurry | |
becurse | |
becursed | |
becurses | |
becursing | |
becurst | |
becurtained | |
becushioned | |
becut | |
bed | |
bedabble | |
bedabbled | |
bedabbles | |
bedabbling | |
bedad | |
bedaff | |
bedaggered | |
bedaggle | |
beday | |
bedamn | |
bedamned | |
bedamning | |
bedamns | |
bedamp | |
bedangled | |
bedare | |
bedark | |
bedarken | |
bedarkened | |
bedarkening | |
bedarkens | |
bedash | |
bedaub | |
bedaubed | |
bedaubing | |
bedaubs | |
bedawee | |
bedawn | |
bedaze | |
bedazed | |
bedazement | |
bedazzle | |
bedazzled | |
bedazzlement | |
bedazzles | |
bedazzling | |
bedazzlingly | |
bedboard | |
bedbug | |
bedbugs | |
bedcap | |
bedcase | |
bedchair | |
bedchairs | |
bedchamber | |
bedclothes | |
bedclothing | |
bedcord | |
bedcover | |
bedcovers | |
beddable | |
bedded | |
bedder | |
bedders | |
bedding | |
beddingroll | |
beddings | |
bede | |
bedead | |
bedeaf | |
bedeafen | |
bedeafened | |
bedeafening | |
bedeafens | |
bedebt | |
bedeck | |
bedecked | |
bedecking | |
bedecks | |
bedecorate | |
bedeen | |
bedegar | |
bedeguar | |
bedehouse | |
bedehouses | |
bedel | |
bedell | |
bedells | |
bedels | |
bedelve | |
bedeman | |
bedemen | |
beden | |
bedene | |
bedesman | |
bedesmen | |
bedeswoman | |
bedeswomen | |
bedevil | |
bedeviled | |
bedeviling | |
bedevilled | |
bedevilling | |
bedevilment | |
bedevils | |
bedew | |
bedewed | |
bedewer | |
bedewing | |
bedewoman | |
bedews | |
bedfast | |
bedfellow | |
bedfellows | |
bedfellowship | |
bedflower | |
bedfoot | |
bedford | |
bedfordshire | |
bedframe | |
bedframes | |
bedgery | |
bedgoer | |
bedgown | |
bedgowns | |
bediademed | |
bediamonded | |
bediaper | |
bediapered | |
bediapering | |
bediapers | |
bedye | |
bedight | |
bedighted | |
bedighting | |
bedights | |
bedikah | |
bedim | |
bedimmed | |
bedimming | |
bedimple | |
bedimpled | |
bedimples | |
bedimplies | |
bedimpling | |
bedims | |
bedin | |
bedip | |
bedirt | |
bedirter | |
bedirty | |
bedirtied | |
bedirties | |
bedirtying | |
bedismal | |
bedivere | |
bedizen | |
bedizened | |
bedizening | |
bedizenment | |
bedizens | |
bedkey | |
bedlam | |
bedlamer | |
bedlamic | |
bedlamise | |
bedlamised | |
bedlamising | |
bedlamism | |
bedlamite | |
bedlamitish | |
bedlamize | |
bedlamized | |
bedlamizing | |
bedlamp | |
bedlamps | |
bedlams | |
bedlar | |
bedless | |
bedlids | |
bedlight | |
bedlike | |
bedmaker | |
bedmakers | |
bedmaking | |
bedman | |
bedmate | |
bedmates | |
bednighted | |
bednights | |
bedoctor | |
bedog | |
bedoyo | |
bedolt | |
bedot | |
bedote | |
bedotted | |
bedouin | |
bedouinism | |
bedouins | |
bedouse | |
bedown | |
bedpad | |
bedpan | |
bedpans | |
bedplate | |
bedplates | |
bedpost | |
bedposts | |
bedquilt | |
bedquilts | |
bedrabble | |
bedrabbled | |
bedrabbling | |
bedraggle | |
bedraggled | |
bedragglement | |
bedraggles | |
bedraggling | |
bedrail | |
bedrails | |
bedral | |
bedrape | |
bedraped | |
bedrapes | |
bedraping | |
bedravel | |
bedread | |
bedrel | |
bedrench | |
bedrenched | |
bedrenches | |
bedrenching | |
bedress | |
bedribble | |
bedrid | |
bedridden | |
bedriddenness | |
bedrift | |
bedright | |
bedrip | |
bedrite | |
bedrivel | |
bedriveled | |
bedriveling | |
bedrivelled | |
bedrivelling | |
bedrivels | |
bedrizzle | |
bedrock | |
bedrocks | |
bedroll | |
bedrolls | |
bedroom | |
bedrooms | |
bedrop | |
bedrown | |
bedrowse | |
bedrug | |
bedrugged | |
bedrugging | |
bedrugs | |
beds | |
bedscrew | |
bedsheet | |
bedsheets | |
bedsick | |
bedside | |
bedsides | |
bedsit | |
bedsite | |
bedsitter | |
bedsock | |
bedsonia | |
bedsonias | |
bedsore | |
bedsores | |
bedspread | |
bedspreads | |
bedspring | |
bedsprings | |
bedstaff | |
bedstand | |
bedstands | |
bedstaves | |
bedstead | |
bedsteads | |
bedstock | |
bedstraw | |
bedstraws | |
bedstring | |
bedswerver | |
bedtick | |
bedticking | |
bedticks | |
bedtime | |
bedtimes | |
bedub | |
beduchess | |
beduck | |
beduin | |
beduins | |
beduke | |
bedull | |
bedumb | |
bedumbed | |
bedumbing | |
bedumbs | |
bedunce | |
bedunced | |
bedunces | |
bedunch | |
beduncing | |
bedung | |
bedur | |
bedusk | |
bedust | |
bedway | |
bedways | |
bedward | |
bedwards | |
bedwarf | |
bedwarfed | |
bedwarfing | |
bedwarfs | |
bedwarmer | |
bedwell | |
bee | |
beearn | |
beeball | |
beebee | |
beebees | |
beebread | |
beebreads | |
beech | |
beechdrops | |
beechen | |
beecher | |
beeches | |
beechy | |
beechier | |
beechiest | |
beechnut | |
beechnuts | |
beechwood | |
beechwoods | |
beedged | |
beedi | |
beedom | |
beef | |
beefalo | |
beefaloes | |
beefalos | |
beefburger | |
beefburgers | |
beefcake | |
beefcakes | |
beefeater | |
beefeaters | |
beefed | |
beefer | |
beefers | |
beefhead | |
beefheaded | |
beefy | |
beefier | |
beefiest | |
beefily | |
beefin | |
beefiness | |
beefing | |
beefish | |
beefishness | |
beefless | |
beeflower | |
beefs | |
beefsteak | |
beefsteaks | |
beeftongue | |
beefwood | |
beefwoods | |
beegerite | |
beehead | |
beeheaded | |
beeherd | |
beehive | |
beehives | |
beehouse | |
beeyard | |
beeish | |
beeishness | |
beek | |
beekeeper | |
beekeepers | |
beekeeping | |
beekite | |
beekmantown | |
beelbow | |
beele | |
beelike | |
beeline | |
beelines | |
beelol | |
beelzebub | |
beelzebubian | |
beelzebul | |
beeman | |
beemaster | |
beemen | |
been | |
beennut | |
beent | |
beento | |
beep | |
beeped | |
beeper | |
beepers | |
beeping | |
beeps | |
beer | |
beerage | |
beerbachite | |
beerbelly | |
beerbibber | |
beeregar | |
beerhouse | |
beerhouses | |
beery | |
beerier | |
beeriest | |
beerily | |
beeriness | |
beerish | |
beerishly | |
beermaker | |
beermaking | |
beermonger | |
beerocracy | |
beerothite | |
beerpull | |
beers | |
bees | |
beest | |
beesting | |
beestings | |
beestride | |
beeswax | |
beeswaxes | |
beeswing | |
beeswinged | |
beeswings | |
beet | |
beetewk | |
beetfly | |
beeth | |
beethoven | |
beethovenian | |
beethovenish | |
beethovian | |
beety | |
beetiest | |
beetle | |
beetled | |
beetlehead | |
beetleheaded | |
beetleheadedness | |
beetler | |
beetlers | |
beetles | |
beetlestock | |
beetlestone | |
beetleweed | |
beetlike | |
beetling | |
beetmister | |
beetrave | |
beetroot | |
beetrooty | |
beetroots | |
beets | |
beeve | |
beeves | |
beevish | |
beeway | |
beeware | |
beeweed | |
beewinged | |
beewise | |
beewort | |
beezer | |
beezers | |
bef | |
befall | |
befallen | |
befalling | |
befalls | |
befame | |
befamilied | |
befamine | |
befan | |
befancy | |
befanned | |
befathered | |
befavor | |
befavour | |
befeather | |
befell | |
beferned | |
befetished | |
befetter | |
befezzed | |
beffroy | |
befiddle | |
befilch | |
befile | |
befilleted | |
befilmed | |
befilth | |
befinger | |
befingered | |
befingering | |
befingers | |
befire | |
befist | |
befit | |
befits | |
befitted | |
befitting | |
befittingly | |
befittingness | |
beflag | |
beflagged | |
beflagging | |
beflags | |
beflannel | |
beflap | |
beflatter | |
beflea | |
befleaed | |
befleaing | |
befleas | |
befleck | |
beflecked | |
beflecking | |
beflecks | |
beflounce | |
beflour | |
beflout | |
beflower | |
beflowered | |
beflowering | |
beflowers | |
beflum | |
befluster | |
befoam | |
befog | |
befogged | |
befogging | |
befogs | |
befool | |
befoolable | |
befooled | |
befooling | |
befoolment | |
befools | |
befop | |
before | |
beforehand | |
beforehandedness | |
beforementioned | |
beforeness | |
beforesaid | |
beforested | |
beforetime | |
beforetimes | |
befortune | |
befoul | |
befouled | |
befouler | |
befoulers | |
befoulier | |
befouling | |
befoulment | |
befouls | |
befountained | |
befraught | |
befreckle | |
befreeze | |
befreight | |
befret | |
befrets | |
befretted | |
befretting | |
befriend | |
befriended | |
befriender | |
befriending | |
befriendment | |
befriends | |
befrill | |
befrilled | |
befringe | |
befringed | |
befringes | |
befringing | |
befriz | |
befrocked | |
befrogged | |
befrounce | |
befrumple | |
befuddle | |
befuddled | |
befuddlement | |
befuddlements | |
befuddler | |
befuddlers | |
befuddles | |
befuddling | |
befume | |
befur | |
befurbelowed | |
befurred | |
beg | |
begabled | |
begad | |
begay | |
begall | |
begalled | |
begalling | |
begalls | |
began | |
begani | |
begar | |
begari | |
begary | |
begarie | |
begarlanded | |
begarnish | |
begartered | |
begash | |
begass | |
begat | |
begats | |
begattal | |
begaud | |
begaudy | |
begaze | |
begazed | |
begazes | |
begazing | |
begeck | |
begem | |
begemmed | |
begemming | |
beget | |
begets | |
begettal | |
begetter | |
begetters | |
begetting | |
beggable | |
beggar | |
beggardom | |
beggared | |
beggarer | |
beggaress | |
beggarhood | |
beggary | |
beggaries | |
beggaring | |
beggarism | |
beggarly | |
beggarlice | |
beggarlike | |
beggarliness | |
beggarman | |
beggars | |
beggarweed | |
beggarwise | |
beggarwoman | |
begged | |
begger | |
beggiatoa | |
beggiatoaceae | |
beggiatoaceous | |
begging | |
beggingly | |
beggingwise | |
beghard | |
begift | |
begiggle | |
begild | |
begin | |
beginger | |
beginner | |
beginners | |
beginning | |
beginnings | |
begins | |
begird | |
begirded | |
begirding | |
begirdle | |
begirdled | |
begirdles | |
begirdling | |
begirds | |
begirt | |
beglad | |
begladded | |
begladding | |
beglads | |
beglamour | |
beglare | |
beglerbeg | |
beglerbeglic | |
beglerbeglik | |
beglerbegluc | |
beglerbegship | |
beglerbey | |
beglew | |
beglic | |
beglide | |
beglitter | |
beglobed | |
begloom | |
begloomed | |
beglooming | |
beglooms | |
begloze | |
begluc | |
beglue | |
begnaw | |
begnawed | |
begnawn | |
bego | |
begob | |
begobs | |
begod | |
begoggled | |
begohm | |
begone | |
begonia | |
begoniaceae | |
begoniaceous | |
begoniales | |
begonias | |
begorah | |
begorra | |
begorrah | |
begorry | |
begot | |
begotten | |
begottenness | |
begoud | |
begowk | |
begowned | |
begrace | |
begray | |
begrain | |
begrave | |
begrease | |
begreen | |
begrett | |
begrim | |
begrime | |
begrimed | |
begrimer | |
begrimes | |
begriming | |
begrimmed | |
begrimming | |
begrims | |
begripe | |
begroan | |
begroaned | |
begroaning | |
begroans | |
begrown | |
begrudge | |
begrudged | |
begrudger | |
begrudges | |
begrudging | |
begrudgingly | |
begruntle | |
begrutch | |
begrutten | |
begs | |
begster | |
beguard | |
beguess | |
beguile | |
beguiled | |
beguileful | |
beguilement | |
beguilements | |
beguiler | |
beguilers | |
beguiles | |
beguiling | |
beguilingly | |
beguilingness | |
beguin | |
beguine | |
beguines | |
begulf | |
begulfed | |
begulfing | |
begulfs | |
begum | |
begummed | |
begumming | |
begums | |
begun | |
begunk | |
begut | |
behale | |
behalf | |
behallow | |
behalves | |
behammer | |
behang | |
behap | |
behatted | |
behav | |
behave | |
behaved | |
behaver | |
behavers | |
behaves | |
behaving | |
behavior | |
behavioral | |
behaviorally | |
behaviored | |
behaviorism | |
behaviorist | |
behavioristic | |
behavioristically | |
behaviorists | |
behaviors | |
behaviour | |
behavioural | |
behaviourally | |
behaviourism | |
behaviourist | |
behaviours | |
behead | |
beheadal | |
beheaded | |
beheader | |
beheading | |
beheadlined | |
beheads | |
behear | |
behears | |
behearse | |
behedge | |
beheira | |
beheld | |
behelp | |
behemoth | |
behemothic | |
behemoths | |
behen | |
behenate | |
behenic | |
behest | |
behests | |
behew | |
behight | |
behymn | |
behind | |
behinder | |
behindhand | |
behinds | |
behindsight | |
behint | |
behypocrite | |
behither | |
behn | |
behold | |
beholdable | |
beholden | |
beholder | |
beholders | |
beholding | |
beholdingness | |
beholds | |
behoney | |
behoof | |
behooped | |
behoot | |
behoove | |
behooved | |
behooveful | |
behoovefully | |
behoovefulness | |
behooves | |
behooving | |
behoovingly | |
behorn | |
behorror | |
behove | |
behoved | |
behovely | |
behoves | |
behoving | |
behowl | |
behowled | |
behowling | |
behowls | |
behung | |
behusband | |
bey | |
beice | |
beid | |
beydom | |
beyerite | |
beige | |
beigel | |
beiges | |
beigy | |
beignet | |
beignets | |
beild | |
beylic | |
beylical | |
beylics | |
beylik | |
beyliks | |
bein | |
being | |
beingless | |
beingness | |
beings | |
beinked | |
beinly | |
beinness | |
beyond | |
beyondness | |
beyonds | |
beira | |
beyrichite | |
beirut | |
beys | |
beisa | |
beisance | |
beyship | |
beja | |
bejabbers | |
bejabers | |
bejade | |
bejan | |
bejant | |
bejape | |
bejaundice | |
bejazz | |
bejel | |
bejeled | |
bejeling | |
bejelled | |
bejelling | |
bejesuit | |
bejesus | |
bejewel | |
bejeweled | |
bejeweling | |
bejewelled | |
bejewelling | |
bejewels | |
bejezebel | |
bejig | |
bejuco | |
bejuggle | |
bejumble | |
bejumbled | |
bejumbles | |
bejumbling | |
bekah | |
bekerchief | |
bekick | |
bekilted | |
beking | |
bekinkinite | |
bekiss | |
bekissed | |
bekisses | |
bekissing | |
bekko | |
beknave | |
beknight | |
beknighted | |
beknighting | |
beknights | |
beknit | |
beknived | |
beknot | |
beknots | |
beknotted | |
beknottedly | |
beknottedness | |
beknotting | |
beknow | |
beknown | |
bel | |
bela | |
belabor | |
belabored | |
belaboring | |
belabors | |
belabour | |
belaboured | |
belabouring | |
belabours | |
belace | |
belaced | |
belady | |
beladied | |
beladies | |
beladying | |
beladle | |
belage | |
belah | |
belay | |
belayed | |
belayer | |
belaying | |
belays | |
belait | |
belaites | |
belam | |
belamcanda | |
belamy | |
belamour | |
belanda | |
belander | |
belap | |
belar | |
belard | |
belash | |
belast | |
belat | |
belate | |
belated | |
belatedly | |
belatedness | |
belating | |
belatticed | |
belaud | |
belauded | |
belauder | |
belauding | |
belauds | |
belavendered | |
belch | |
belched | |
belcher | |
belchers | |
belches | |
belching | |
beld | |
beldam | |
beldame | |
beldames | |
beldams | |
beldamship | |
belder | |
belderroot | |
belduque | |
beleaf | |
beleaguer | |
beleaguered | |
beleaguerer | |
beleaguering | |
beleaguerment | |
beleaguers | |
beleap | |
beleaped | |
beleaping | |
beleaps | |
beleapt | |
beleave | |
belection | |
belecture | |
beledgered | |
belee | |
beleed | |
beleft | |
belemnid | |
belemnite | |
belemnites | |
belemnitic | |
belemnitidae | |
belemnoid | |
belemnoidea | |
beleper | |
belesprit | |
beletter | |
beleve | |
belfast | |
belfather | |
belfry | |
belfried | |
belfries | |
belga | |
belgae | |
belgard | |
belgas | |
belgian | |
belgians | |
belgic | |
belgium | |
belgophile | |
belgrade | |
belgravia | |
belgravian | |
bely | |
belial | |
belialic | |
belialist | |
belibel | |
belibeled | |
belibeling | |
belick | |
belicoseness | |
belie | |
belied | |
belief | |
beliefful | |
belieffulness | |
beliefless | |
beliefs | |
belier | |
beliers | |
belies | |
believability | |
believable | |
believableness | |
believably | |
believe | |
believed | |
believer | |
believers | |
believes | |
believeth | |
believing | |
believingly | |
belight | |
beliing | |
belying | |
belyingly | |
belike | |
beliked | |
belikely | |
belili | |
belime | |
belimousined | |
belinda | |
belinuridae | |
belinurus | |
belion | |
beliquor | |
beliquored | |
beliquoring | |
beliquors | |
belis | |
belite | |
belitter | |
belittle | |
belittled | |
belittlement | |
belittler | |
belittlers | |
belittles | |
belittling | |
belive | |
belk | |
belknap | |
bell | |
bella | |
bellabella | |
bellacoola | |
belladonna | |
bellarmine | |
bellatrix | |
bellbind | |
bellbinder | |
bellbine | |
bellbird | |
bellbirds | |
bellboy | |
bellboys | |
bellbottle | |
belle | |
belled | |
belledom | |
belleek | |
belleeks | |
bellehood | |
belleric | |
bellerophon | |
bellerophontidae | |
belles | |
belleter | |
belletrist | |
belletristic | |
belletrists | |
bellevue | |
bellflower | |
bellhanger | |
bellhanging | |
bellhop | |
bellhops | |
bellhouse | |
belli | |
belly | |
bellyache | |
bellyached | |
bellyacher | |
bellyaches | |
bellyaching | |
bellyband | |
bellibone | |
bellybutton | |
bellybuttons | |
bellic | |
bellical | |
bellicism | |
bellicist | |
bellicose | |
bellicosely | |
bellicoseness | |
bellicosity | |
bellicosities | |
bellied | |
bellyer | |
bellies | |
belliferous | |
bellyfish | |
bellyflaught | |
bellyful | |
bellyfull | |
bellyfulls | |
bellyfuls | |
belligerence | |
belligerency | |
belligerencies | |
belligerent | |
belligerently | |
belligerents | |
bellying | |
bellyland | |
bellylike | |
bellyman | |
belling | |
bellypiece | |
bellypinch | |
bellipotent | |
bellis | |
bellite | |
bellmaker | |
bellmaking | |
bellman | |
bellmanship | |
bellmaster | |
bellmen | |
bellmouth | |
bellmouthed | |
bello | |
bellon | |
bellona | |
bellonian | |
bellonion | |
belloot | |
bellota | |
bellote | |
bellovaci | |
bellow | |
bellowed | |
bellower | |
bellowers | |
bellowing | |
bellows | |
bellowsful | |
bellowslike | |
bellowsmaker | |
bellowsmaking | |
bellowsman | |
bellpull | |
bellpulls | |
bellrags | |
bells | |
belltail | |
belltopper | |
belltopperdom | |
belluine | |
bellum | |
bellware | |
bellwaver | |
bellweather | |
bellweed | |
bellwether | |
bellwethers | |
bellwind | |
bellwine | |
bellwood | |
bellwort | |
bellworts | |
beloam | |
belock | |
beloeilite | |
beloid | |
belomancy | |
belone | |
belonephobia | |
belonesite | |
belong | |
belonged | |
belonger | |
belonging | |
belongings | |
belongs | |
belonid | |
belonidae | |
belonite | |
belonoid | |
belonosphaerite | |
belook | |
belord | |
belorussian | |
belostoma | |
belostomatidae | |
belostomidae | |
belotte | |
belouke | |
belout | |
belove | |
beloved | |
beloveds | |
below | |
belowdecks | |
belowground | |
belows | |
belowstairs | |
belozenged | |
bels | |
belshazzar | |
belshazzaresque | |
belsire | |
belswagger | |
belt | |
beltane | |
beltcourse | |
belted | |
beltene | |
belter | |
beltian | |
beltie | |
beltine | |
belting | |
beltings | |
beltir | |
beltis | |
beltless | |
beltline | |
beltlines | |
beltmaker | |
beltmaking | |
beltman | |
beltmen | |
belton | |
belts | |
beltway | |
beltways | |
beltwise | |
beluchi | |
belucki | |
belue | |
beluga | |
belugas | |
belugite | |
belute | |
belve | |
belvedere | |
belvedered | |
belvederes | |
belverdian | |
belvidere | |
belzebub | |
belzebuth | |
bema | |
bemad | |
bemadam | |
bemadamed | |
bemadaming | |
bemadams | |
bemadden | |
bemaddened | |
bemaddening | |
bemaddens | |
bemail | |
bemaim | |
bemajesty | |
beman | |
bemangle | |
bemantle | |
bemar | |
bemartyr | |
bemas | |
bemask | |
bemaster | |
bemat | |
bemata | |
bemaul | |
bemazed | |
bemba | |
bembecidae | |
bembex | |
beme | |
bemeal | |
bemean | |
bemeaned | |
bemeaning | |
bemeans | |
bemedaled | |
bemedalled | |
bemeet | |
bementite | |
bemercy | |
bemete | |
bemingle | |
bemingled | |
bemingles | |
bemingling | |
beminstrel | |
bemire | |
bemired | |
bemirement | |
bemires | |
bemiring | |
bemirror | |
bemirrorment | |
bemist | |
bemisted | |
bemisting | |
bemistress | |
bemists | |
bemitered | |
bemitred | |
bemix | |
bemixed | |
bemixes | |
bemixing | |
bemixt | |
bemoan | |
bemoanable | |
bemoaned | |
bemoaner | |
bemoaning | |
bemoaningly | |
bemoans | |
bemoat | |
bemock | |
bemocked | |
bemocking | |
bemocks | |
bemoil | |
bemoisten | |
bemol | |
bemole | |
bemolt | |
bemonster | |
bemoon | |
bemotto | |
bemoult | |
bemourn | |
bemouth | |
bemuck | |
bemud | |
bemuddy | |
bemuddle | |
bemuddled | |
bemuddlement | |
bemuddles | |
bemuddling | |
bemuffle | |
bemurmur | |
bemurmure | |
bemurmured | |
bemurmuring | |
bemurmurs | |
bemuse | |
bemused | |
bemusedly | |
bemusement | |
bemuses | |
bemusing | |
bemusk | |
bemuslined | |
bemuzzle | |
bemuzzled | |
bemuzzles | |
bemuzzling | |
ben | |
bena | |
benab | |
benacus | |
benadryl | |
bename | |
benamed | |
benamee | |
benames | |
benami | |
benamidar | |
benaming | |
benasty | |
benben | |
bench | |
benchboard | |
benched | |
bencher | |
benchers | |
benchership | |
benches | |
benchfellow | |
benchful | |
benchy | |
benching | |
benchland | |
benchless | |
benchlet | |
benchman | |
benchmar | |
benchmark | |
benchmarked | |
benchmarking | |
benchmarks | |
benchmen | |
benchwarmer | |
benchwork | |
bencite | |
bend | |
benda | |
bendability | |
bendable | |
benday | |
bendayed | |
bendaying | |
bendays | |
bended | |
bendee | |
bendees | |
bendel | |
bendell | |
bender | |
benders | |
bendy | |
bendies | |
bending | |
bendingly | |
bendys | |
bendlet | |
bends | |
bendsome | |
bendways | |
bendwise | |
bene | |
beneaped | |
beneath | |
beneception | |
beneceptive | |
beneceptor | |
benedicite | |
benedick | |
benedicks | |
benedict | |
benedicta | |
benedictine | |
benedictinism | |
benediction | |
benedictional | |
benedictionale | |
benedictionary | |
benedictions | |
benedictive | |
benedictively | |
benedictory | |
benedicts | |
benedictus | |
benedight | |
benefact | |
benefaction | |
benefactions | |
benefactive | |
benefactor | |
benefactory | |
benefactors | |
benefactorship | |
benefactress | |
benefactresses | |
benefactrices | |
benefactrix | |
benefactrixes | |
benefic | |
benefice | |
beneficed | |
beneficeless | |
beneficence | |
beneficences | |
beneficency | |
beneficent | |
beneficential | |
beneficently | |
benefices | |
beneficiaire | |
beneficial | |
beneficially | |
beneficialness | |
beneficiary | |
beneficiaries | |
beneficiaryship | |
beneficiate | |
beneficiated | |
beneficiating | |
beneficiation | |
beneficience | |
beneficient | |
beneficing | |
beneficium | |
benefit | |
benefited | |
benefiter | |
benefiting | |
benefits | |
benefitted | |
benefitting | |
benegro | |
beneighbored | |
benelux | |
beneme | |
benempt | |
benempted | |
beneplacit | |
beneplacity | |
beneplacito | |
benes | |
benet | |
benetnasch | |
benetted | |
benetting | |
benettle | |
beneurous | |
beneventan | |
beneventana | |
benevolence | |
benevolences | |
benevolency | |
benevolent | |
benevolently | |
benevolentness | |
benevolist | |
beng | |
bengal | |
bengalese | |
bengali | |
bengalic | |
bengaline | |
bengals | |
bengola | |
beni | |
benic | |
benight | |
benighted | |
benightedly | |
benightedness | |
benighten | |
benighter | |
benighting | |
benightmare | |
benightment | |
benign | |
benignancy | |
benignancies | |
benignant | |
benignantly | |
benignity | |
benignities | |
benignly | |
benignness | |
benim | |
benin | |
benincasa | |
beniseed | |
benison | |
benisons | |
benitier | |
benitoite | |
benj | |
benjamin | |
benjaminite | |
benjamins | |
benjamite | |
benjy | |
benjoin | |
benkulen | |
benmost | |
benn | |
benne | |
bennel | |
bennes | |
bennet | |
bennets | |
bennettitaceae | |
bennettitaceous | |
bennettitales | |
bennettites | |
bennetweed | |
benni | |
benny | |
bennies | |
bennis | |
benniseed | |
beno | |
benomyl | |
benomyls | |
benorth | |
benote | |
bens | |
bensail | |
bensall | |
bensel | |
bensell | |
bensh | |
benshea | |
benshee | |
benshi | |
bensil | |
benson | |
bent | |
bentang | |
bentgrass | |
benthal | |
benthamic | |
benthamism | |
benthamite | |
benthic | |
benthon | |
benthonic | |
benthopelagic | |
benthos | |
benthoscope | |
benthoses | |
benty | |
bentinck | |
bentincks | |
bentiness | |
benting | |
bentlet | |
benton | |
bentonite | |
bentonitic | |
bents | |
bentstar | |
bentwood | |
bentwoods | |
benu | |
benumb | |
benumbed | |
benumbedness | |
benumbing | |
benumbingly | |
benumbment | |
benumbs | |
benvenuto | |
benward | |
benweed | |
benzacridine | |
benzal | |
benzalacetone | |
benzalacetophenone | |
benzalaniline | |
benzalazine | |
benzalcyanhydrin | |
benzalcohol | |
benzaldehyde | |
benzaldiphenyl | |
benzaldoxime | |
benzalethylamine | |
benzalhydrazine | |
benzalphenylhydrazone | |
benzalphthalide | |
benzamide | |
benzamido | |
benzamine | |
benzaminic | |
benzamino | |
benzanalgen | |
benzanilide | |
benzanthracene | |
benzanthrone | |
benzantialdoxime | |
benzazide | |
benzazimide | |
benzazine | |
benzazole | |
benzbitriazole | |
benzdiazine | |
benzdifuran | |
benzdioxazine | |
benzdioxdiazine | |
benzdioxtriazine | |
benzedrine | |
benzein | |
benzene | |
benzeneazobenzene | |
benzenediazonium | |
benzenes | |
benzenyl | |
benzenoid | |
benzhydrol | |
benzhydroxamic | |
benzidin | |
benzidine | |
benzidino | |
benzidins | |
benzil | |
benzyl | |
benzylamine | |
benzilic | |
benzylic | |
benzylidene | |
benzylpenicillin | |
benzyls | |
benzimidazole | |
benziminazole | |
benzin | |
benzinduline | |
benzine | |
benzines | |
benzins | |
benzo | |
benzoate | |
benzoated | |
benzoates | |
benzoazurine | |
benzobis | |
benzocaine | |
benzocoumaran | |
benzodiazine | |
benzodiazole | |
benzoflavine | |
benzofluorene | |
benzofulvene | |
benzofuran | |
benzofuryl | |
benzofuroquinoxaline | |
benzoglycolic | |
benzoglyoxaline | |
benzohydrol | |
benzoic | |
benzoid | |
benzoyl | |
benzoylate | |
benzoylated | |
benzoylating | |
benzoylation | |
benzoylformic | |
benzoylglycine | |
benzoyls | |
benzoin | |
benzoinated | |
benzoins | |
benzoiodohydrin | |
benzol | |
benzolate | |
benzole | |
benzoles | |
benzoline | |
benzolize | |
benzols | |
benzomorpholine | |
benzonaphthol | |
benzonitrile | |
benzonitrol | |
benzoperoxide | |
benzophenanthrazine | |
benzophenanthroline | |
benzophenazine | |
benzophenol | |
benzophenone | |
benzophenothiazine | |
benzophenoxazine | |
benzophloroglucinol | |
benzophosphinic | |
benzophthalazine | |
benzopinacone | |
benzopyran | |
benzopyranyl | |
benzopyrazolone | |
benzopyrene | |
benzopyrylium | |
benzoquinoline | |
benzoquinone | |
benzoquinoxaline | |
benzosulfimide | |
benzosulphimide | |
benzotetrazine | |
benzotetrazole | |
benzothiazine | |
benzothiazole | |
benzothiazoline | |
benzothiodiazole | |
benzothiofuran | |
benzothiophene | |
benzothiopyran | |
benzotoluide | |
benzotriazine | |
benzotriazole | |
benzotrichloride | |
benzotrifluoride | |
benzotrifuran | |
benzoxate | |
benzoxy | |
benzoxyacetic | |
benzoxycamphor | |
benzoxyphenanthrene | |
benzpinacone | |
benzpyrene | |
benzthiophen | |
benztrioxazine | |
beode | |
beothuk | |
beothukan | |
beowulf | |
bepaid | |
bepaint | |
bepainted | |
bepainting | |
bepaints | |
bepale | |
bepaper | |
beparch | |
beparody | |
beparse | |
bepart | |
bepaste | |
bepastured | |
bepat | |
bepatched | |
bepaw | |
bepearl | |
bepelt | |
bepen | |
bepepper | |
beperiwigged | |
bepester | |
bepewed | |
bephilter | |
bephrase | |
bepicture | |
bepiece | |
bepierce | |
bepile | |
bepill | |
bepillared | |
bepimple | |
bepimpled | |
bepimples | |
bepimpling | |
bepinch | |
bepistoled | |
bepity | |
beplague | |
beplaided | |
beplaster | |
beplumed | |
bepommel | |
bepowder | |
bepray | |
bepraise | |
bepraisement | |
bepraiser | |
beprank | |
bepranked | |
bepreach | |
bepress | |
bepretty | |
bepride | |
beprose | |
bepuddle | |
bepuff | |
bepuffed | |
bepun | |
bepurple | |
bepuzzle | |
bepuzzlement | |
bequalm | |
bequeath | |
bequeathable | |
bequeathal | |
bequeathed | |
bequeather | |
bequeathing | |
bequeathment | |
bequeaths | |
bequest | |
bequests | |
bequirtle | |
bequote | |
beqwete | |
ber | |
beray | |
berain | |
berairou | |
berakah | |
berake | |
beraked | |
berakes | |
beraking | |
berakot | |
berakoth | |
berapt | |
berascal | |
berascaled | |
berascaling | |
berascals | |
berat | |
berate | |
berated | |
berates | |
berating | |
berattle | |
beraunite | |
berbamine | |
berber | |
berberi | |
berbery | |
berberia | |
berberian | |
berberid | |
berberidaceae | |
berberidaceous | |
berberin | |
berberine | |
berberins | |
berberis | |
berberry | |
berbers | |
berceau | |
berceaunette | |
bercelet | |
berceuse | |
berceuses | |
berchemia | |
berchta | |
berdache | |
berdaches | |
berdash | |
bere | |
berean | |
bereareft | |
bereason | |
bereave | |
bereaved | |
bereavement | |
bereavements | |
bereaven | |
bereaver | |
bereavers | |
bereaves | |
bereaving | |
berede | |
bereft | |
berend | |
berendo | |
berengaria | |
berengarian | |
berengarianism | |
berengelite | |
berengena | |
berenice | |
bereshith | |
beresite | |
beret | |
berets | |
beretta | |
berettas | |
berewick | |
berg | |
bergalith | |
bergall | |
bergama | |
bergamasca | |
bergamasche | |
bergamask | |
bergamiol | |
bergamo | |
bergamot | |
bergamots | |
bergander | |
bergaptene | |
berger | |
bergere | |
bergeres | |
bergeret | |
bergerette | |
bergfall | |
berggylt | |
bergh | |
berghaan | |
bergy | |
bergylt | |
berginization | |
berginize | |
berglet | |
bergman | |
bergmannite | |
bergomask | |
bergs | |
bergschrund | |
bergsonian | |
bergsonism | |
bergut | |
berhyme | |
berhymed | |
berhymes | |
berhyming | |
beri | |
beribanded | |
beribbon | |
beribboned | |
beriber | |
beriberi | |
beriberic | |
beriberis | |
beribers | |
berycid | |
berycidae | |
beryciform | |
berycine | |
berycoid | |
berycoidea | |
berycoidean | |
berycoidei | |
berycomorphi | |
beride | |
berigora | |
beryl | |
berylate | |
beryline | |
beryllate | |
beryllia | |
berylline | |
berylliosis | |
beryllium | |
berylloid | |
beryllonate | |
beryllonite | |
beryllosis | |
beryls | |
berime | |
berimed | |
berimes | |
beriming | |
bering | |
beringed | |
beringite | |
beringleted | |
berinse | |
berith | |
berytidae | |
beryx | |
berk | |
berkeley | |
berkeleian | |
berkeleianism | |
berkeleyism | |
berkeleyite | |
berkelium | |
berkovets | |
berkovtsi | |
berkowitz | |
berkshire | |
berley | |
berlin | |
berlina | |
berline | |
berliner | |
berliners | |
berlines | |
berlinite | |
berlinize | |
berlins | |
berloque | |
berm | |
berme | |
bermensch | |
bermes | |
berms | |
bermuda | |
bermudas | |
bermudian | |
bermudians | |
bermudite | |
bern | |
bernacle | |
bernard | |
bernardina | |
bernardine | |
berne | |
bernese | |
bernice | |
bernicia | |
bernicle | |
bernicles | |
bernie | |
berninesque | |
bernoo | |
bernoullian | |
berob | |
berobed | |
beroe | |
berogue | |
beroida | |
beroidae | |
beroll | |
berossos | |
berouged | |
beround | |
berreave | |
berreaved | |
berreaves | |
berreaving | |
berrendo | |
berret | |
berretta | |
berrettas | |
berrettino | |
berri | |
berry | |
berrybush | |
berrichon | |
berrichonne | |
berried | |
berrier | |
berries | |
berrigan | |
berrying | |
berryless | |
berrylike | |
berryman | |
berrypicker | |
berrypicking | |
berrugate | |
bersagliere | |
bersaglieri | |
berseem | |
berseems | |
berserk | |
berserker | |
berserks | |
bersiamite | |
bersil | |
bersim | |
berskin | |
berstel | |
bert | |
bertat | |
berteroa | |
berth | |
bertha | |
berthage | |
berthas | |
berthed | |
berther | |
berthierite | |
berthing | |
berthold | |
bertholletia | |
berths | |
bertie | |
bertillonage | |
bertin | |
bertolonia | |
bertram | |
bertrand | |
bertrandite | |
bertrum | |
beruffed | |
beruffled | |
berun | |
berust | |
bervie | |
berwick | |
berzelianite | |
berzeliite | |
bes | |
besa | |
besagne | |
besague | |
besaiel | |
besaile | |
besayle | |
besaint | |
besan | |
besanctify | |
besand | |
besant | |
besauce | |
bescab | |
bescarf | |
bescatter | |
bescent | |
bescorch | |
bescorched | |
bescorches | |
bescorching | |
bescorn | |
bescoundrel | |
bescour | |
bescoured | |
bescourge | |
bescouring | |
bescours | |
bescramble | |
bescrape | |
bescratch | |
bescrawl | |
bescreen | |
bescreened | |
bescreening | |
bescreens | |
bescribble | |
bescribbled | |
bescribbling | |
bescurf | |
bescurvy | |
bescutcheon | |
beseam | |
besee | |
beseech | |
beseeched | |
beseecher | |
beseechers | |
beseeches | |
beseeching | |
beseechingly | |
beseechingness | |
beseechment | |
beseek | |
beseem | |
beseemed | |
beseeming | |
beseemingly | |
beseemingness | |
beseemly | |
beseemliness | |
beseems | |
beseen | |
beseige | |
beset | |
besetment | |
besets | |
besetter | |
besetters | |
besetting | |
besew | |
beshackle | |
beshade | |
beshadow | |
beshadowed | |
beshadowing | |
beshadows | |
beshag | |
beshake | |
beshame | |
beshamed | |
beshames | |
beshaming | |
beshawled | |
beshear | |
beshell | |
beshield | |
beshine | |
beshiver | |
beshivered | |
beshivering | |
beshivers | |
beshlik | |
beshod | |
beshout | |
beshouted | |
beshouting | |
beshouts | |
beshow | |
beshower | |
beshrew | |
beshrewed | |
beshrewing | |
beshrews | |
beshriek | |
beshrivel | |
beshroud | |
beshrouded | |
beshrouding | |
beshrouds | |
besiclometer | |
beside | |
besides | |
besiege | |
besieged | |
besiegement | |
besieger | |
besiegers | |
besieges | |
besieging | |
besiegingly | |
besigh | |
besilver | |
besin | |
besing | |
besiren | |
besit | |
beslab | |
beslabber | |
beslap | |
beslash | |
beslave | |
beslaved | |
beslaver | |
besleeve | |
beslime | |
beslimed | |
beslimer | |
beslimes | |
besliming | |
beslings | |
beslipper | |
beslobber | |
beslow | |
beslubber | |
besluit | |
beslur | |
beslushed | |
besmear | |
besmeared | |
besmearer | |
besmearing | |
besmears | |
besmell | |
besmile | |
besmiled | |
besmiles | |
besmiling | |
besmirch | |
besmirched | |
besmircher | |
besmirchers | |
besmirches | |
besmirching | |
besmirchment | |
besmoke | |
besmoked | |
besmokes | |
besmoking | |
besmooth | |
besmoothed | |
besmoothing | |
besmooths | |
besmother | |
besmottered | |
besmouch | |
besmudge | |
besmudged | |
besmudges | |
besmudging | |
besmut | |
besmutch | |
besmuts | |
besmutted | |
besmutting | |
besnare | |
besneer | |
besnivel | |
besnow | |
besnowed | |
besnowing | |
besnows | |
besnuff | |
besodden | |
besogne | |
besognier | |
besoil | |
besoin | |
besom | |
besomer | |
besoms | |
besonio | |
besonnet | |
besoot | |
besoothe | |
besoothed | |
besoothement | |
besoothes | |
besoothing | |
besort | |
besot | |
besotment | |
besots | |
besotted | |
besottedly | |
besottedness | |
besotter | |
besotting | |
besottingly | |
besought | |
besoul | |
besour | |
besouth | |
bespake | |
bespangle | |
bespangled | |
bespangles | |
bespangling | |
bespate | |
bespatter | |
bespattered | |
bespatterer | |
bespattering | |
bespatterment | |
bespatters | |
bespawl | |
bespeak | |
bespeakable | |
bespeaker | |
bespeaking | |
bespeaks | |
bespecked | |
bespeckle | |
bespeckled | |
bespecklement | |
bespectacled | |
besped | |
bespeech | |
bespeed | |
bespell | |
bespelled | |
bespend | |
bespete | |
bespew | |
bespy | |
bespice | |
bespill | |
bespin | |
bespirit | |
bespit | |
besplash | |
besplatter | |
besplit | |
bespoke | |
bespoken | |
bespot | |
bespotted | |
bespottedness | |
bespotting | |
bespouse | |
bespoused | |
bespouses | |
bespousing | |
bespout | |
bespray | |
bespread | |
bespreading | |
bespreads | |
bespreng | |
besprent | |
bespring | |
besprinkle | |
besprinkled | |
besprinkler | |
besprinkles | |
besprinkling | |
besprizorni | |
bespurred | |
bespurt | |
besputter | |
besqueeze | |
besquib | |
besquirt | |
besra | |
bess | |
bessarabian | |
bessel | |
besselian | |
bessemer | |
bessemerize | |
bessemerized | |
bessemerizing | |
bessera | |
besses | |
bessi | |
bessy | |
bessie | |
best | |
bestab | |
bestad | |
bestay | |
bestayed | |
bestain | |
bestamp | |
bestand | |
bestar | |
bestare | |
bestarve | |
bestatued | |
bestead | |
besteaded | |
besteading | |
besteads | |
besteal | |
bested | |
besteer | |
bestench | |
bester | |
bestial | |
bestialise | |
bestialised | |
bestialising | |
bestialism | |
bestialist | |
bestiality | |
bestialities | |
bestialize | |
bestialized | |
bestializes | |
bestializing | |
bestially | |
bestials | |
bestian | |
bestiary | |
bestiarian | |
bestiarianism | |
bestiaries | |
bestiarist | |
bestick | |
besticking | |
bestill | |
besting | |
bestink | |
bestir | |
bestirred | |
bestirring | |
bestirs | |
bestness | |
bestock | |
bestore | |
bestorm | |
bestove | |
bestow | |
bestowable | |
bestowage | |
bestowal | |
bestowals | |
bestowed | |
bestower | |
bestowing | |
bestowment | |
bestows | |
bestraddle | |
bestraddled | |
bestraddling | |
bestrapped | |
bestraught | |
bestraw | |
bestreak | |
bestream | |
bestrew | |
bestrewed | |
bestrewing | |
bestrewment | |
bestrewn | |
bestrews | |
bestrid | |
bestridden | |
bestride | |
bestrided | |
bestrides | |
bestriding | |
bestripe | |
bestrode | |
bestrow | |
bestrowed | |
bestrowing | |
bestrown | |
bestrows | |
bestrut | |
bests | |
bestseller | |
bestsellerdom | |
bestsellers | |
bestselling | |
bestubble | |
bestubbled | |
bestuck | |
bestud | |
bestudded | |
bestudding | |
bestuds | |
bestuur | |
besugar | |
besugo | |
besuit | |
besully | |
beswarm | |
beswarmed | |
beswarming | |
beswarms | |
besweatered | |
besweeten | |
beswelter | |
beswim | |
beswinge | |
beswink | |
beswitch | |
bet | |
beta | |
betacaine | |
betacism | |
betacismus | |
betafite | |
betag | |
betail | |
betailor | |
betain | |
betaine | |
betaines | |
betainogen | |
betake | |
betaken | |
betakes | |
betaking | |
betalk | |
betallow | |
betanaphthol | |
betangle | |
betanglement | |
betas | |
betask | |
betassel | |
betatron | |
betatrons | |
betatter | |
betattered | |
betattering | |
betatters | |
betaxed | |
bete | |
beteach | |
betear | |
beteela | |
beteem | |
betel | |
betelgeuse | |
betell | |
betelnut | |
betelnuts | |
betels | |
beterschap | |
betes | |
beth | |
bethabara | |
bethank | |
bethanked | |
bethanking | |
bethankit | |
bethanks | |
bethel | |
bethels | |
bethesda | |
bethesdas | |
bethflower | |
bethylid | |
bethylidae | |
bethink | |
bethinking | |
bethinks | |
bethlehem | |
bethlehemite | |
bethorn | |
bethorned | |
bethorning | |
bethorns | |
bethought | |
bethrall | |
bethreaten | |
bethroot | |
beths | |
bethuel | |
bethumb | |
bethump | |
bethumped | |
bethumping | |
bethumps | |
bethunder | |
bethwack | |
bethwine | |
betide | |
betided | |
betides | |
betiding | |
betimber | |
betime | |
betimes | |
betinge | |
betipple | |
betire | |
betis | |
betise | |
betises | |
betitle | |
betocsin | |
betoya | |
betoyan | |
betoil | |
betoken | |
betokened | |
betokener | |
betokening | |
betokenment | |
betokens | |
beton | |
betone | |
betongue | |
betony | |
betonica | |
betonies | |
betons | |
betook | |
betorcin | |
betorcinol | |
betorn | |
betoss | |
betowel | |
betowered | |
betrace | |
betray | |
betrayal | |
betrayals | |
betrayed | |
betrayer | |
betrayers | |
betraying | |
betrail | |
betrayment | |
betrays | |
betraise | |
betrample | |
betrap | |
betravel | |
betread | |
betrend | |
betrim | |
betrinket | |
betroth | |
betrothal | |
betrothals | |
betrothed | |
betrothing | |
betrothment | |
betroths | |
betrough | |
betrousered | |
betrumpet | |
betrunk | |
betrust | |
bets | |
betsey | |
betsy | |
betsileos | |
betsimisaraka | |
betso | |
betta | |
bettas | |
betted | |
better | |
bettered | |
betterer | |
bettergates | |
bettering | |
betterly | |
betterment | |
betterments | |
bettermost | |
betterness | |
betters | |
betty | |
betties | |
bettina | |
bettine | |
betting | |
bettong | |
bettonga | |
bettongia | |
bettor | |
bettors | |
betuckered | |
betula | |
betulaceae | |
betulaceous | |
betulin | |
betulinamaric | |
betulinic | |
betulinol | |
betulites | |
betumbled | |
beturbaned | |
betusked | |
betutor | |
betutored | |
betwattled | |
between | |
betweenbrain | |
betweenity | |
betweenmaid | |
betweenness | |
betweens | |
betweentimes | |
betweenwhiles | |
betwine | |
betwit | |
betwixen | |
betwixt | |
beudanite | |
beudantite | |
beulah | |
beuncled | |
beuniformed | |
beurre | |
bevaring | |
bevatron | |
bevatrons | |
beveil | |
bevel | |
beveled | |
beveler | |
bevelers | |
beveling | |
bevelled | |
beveller | |
bevellers | |
bevelling | |
bevelment | |
bevels | |
bevenom | |
bever | |
beverage | |
beverages | |
beverly | |
beverse | |
bevesseled | |
bevesselled | |
beveto | |
bevy | |
bevies | |
bevil | |
bevillain | |
bevilled | |
bevined | |
bevoiled | |
bevomit | |
bevomited | |
bevomiting | |
bevomits | |
bevor | |
bevors | |
bevue | |
bevvy | |
bewail | |
bewailable | |
bewailed | |
bewailer | |
bewailers | |
bewailing | |
bewailingly | |
bewailment | |
bewails | |
bewaitered | |
bewake | |
bewall | |
beware | |
bewared | |
bewares | |
bewary | |
bewaring | |
bewash | |
bewaste | |
bewater | |
beweary | |
bewearied | |
bewearies | |
bewearying | |
beweep | |
beweeper | |
beweeping | |
beweeps | |
bewelcome | |
bewelter | |
bewend | |
bewept | |
bewest | |
bewet | |
bewhig | |
bewhisker | |
bewhiskered | |
bewhisper | |
bewhistle | |
bewhite | |
bewhiten | |
bewhore | |
bewidow | |
bewield | |
bewig | |
bewigged | |
bewigging | |
bewigs | |
bewilder | |
bewildered | |
bewilderedly | |
bewilderedness | |
bewildering | |
bewilderingly | |
bewilderment | |
bewilders | |
bewimple | |
bewinged | |
bewinter | |
bewired | |
bewit | |
bewitch | |
bewitched | |
bewitchedness | |
bewitcher | |
bewitchery | |
bewitches | |
bewitchful | |
bewitching | |
bewitchingly | |
bewitchingness | |
bewitchment | |
bewitchments | |
bewith | |
bewizard | |
bewonder | |
bework | |
beworm | |
bewormed | |
beworming | |
beworms | |
beworn | |
beworry | |
beworried | |
beworries | |
beworrying | |
beworship | |
bewpers | |
bewray | |
bewrayed | |
bewrayer | |
bewrayers | |
bewraying | |
bewrayingly | |
bewrayment | |
bewrays | |
bewrap | |
bewrapped | |
bewrapping | |
bewraps | |
bewrapt | |
bewrathed | |
bewreak | |
bewreath | |
bewreck | |
bewry | |
bewrite | |
bewrought | |
bewwept | |
bezaleel | |
bezaleelian | |
bezan | |
bezant | |
bezante | |
bezantee | |
bezanty | |
bezants | |
bezazz | |
bezazzes | |
bezel | |
bezels | |
bezesteen | |
bezetta | |
bezette | |
bezil | |
bezils | |
bezique | |
beziques | |
bezoar | |
bezoardic | |
bezoars | |
bezonian | |
bezpopovets | |
bezzant | |
bezzants | |
bezzi | |
bezzle | |
bezzled | |
bezzling | |
bezzo | |
bf | |
bg | |
bhabar | |
bhadon | |
bhaga | |
bhagat | |
bhagavat | |
bhagavata | |
bhaiachara | |
bhaiachari | |
bhaiyachara | |
bhajan | |
bhakta | |
bhaktas | |
bhakti | |
bhaktimarga | |
bhaktis | |
bhalu | |
bhandar | |
bhandari | |
bhang | |
bhangi | |
bhangs | |
bhar | |
bhara | |
bharal | |
bharata | |
bharti | |
bhat | |
bhava | |
bhavan | |
bhavani | |
bhd | |
bheesty | |
bheestie | |
bheesties | |
bhikhari | |
bhikku | |
bhikshu | |
bhil | |
bhili | |
bhima | |
bhindi | |
bhishti | |
bhisti | |
bhistie | |
bhisties | |
bhoy | |
bhojpuri | |
bhokra | |
bhoosa | |
bhoot | |
bhoots | |
bhotia | |
bhotiya | |
bhowani | |
bhp | |
bhumidar | |
bhumij | |
bhunder | |
bhungi | |
bhungini | |
bhut | |
bhutan | |
bhutanese | |
bhutani | |
bhutatathata | |
bhutia | |
bhuts | |
bi | |
by | |
biabo | |
biacetyl | |
biacetylene | |
biacetyls | |
biacid | |
biacromial | |
biacuminate | |
biacuru | |
biajaiba | |
bialate | |
biali | |
bialy | |
bialis | |
bialys | |
bialystoker | |
biallyl | |
bialveolar | |
bianca | |
bianchi | |
bianchite | |
bianco | |
biangular | |
biangulate | |
biangulated | |
biangulous | |
bianisidine | |
biannual | |
biannually | |
biannulate | |
biarchy | |
biarcuate | |
biarcuated | |
byard | |
biarticular | |
biarticulate | |
biarticulated | |
bias | |
biased | |
biasedly | |
biases | |
biasing | |
biasness | |
biasnesses | |
biassed | |
biassedly | |
biasses | |
biassing | |
biasteric | |
biasways | |
biaswise | |
biathlon | |
biathlons | |
biatomic | |
biaural | |
biauricular | |
biauriculate | |
biaxal | |
biaxial | |
biaxiality | |
biaxially | |
biaxillary | |
bib | |
bibacious | |
bibaciousness | |
bibacity | |
bibasic | |
bibation | |
bibb | |
bibbed | |
bibber | |
bibbery | |
bibberies | |
bibbers | |
bibby | |
bibbing | |
bibble | |
bibbled | |
bibbler | |
bibbling | |
bibbons | |
bibbs | |
bibcock | |
bibcocks | |
bibelot | |
bibelots | |
bibenzyl | |
biberon | |
bibi | |
bibio | |
bibionid | |
bibionidae | |
bibiri | |
bibiru | |
bibitory | |
bibl | |
bible | |
bibles | |
bibless | |
biblic | |
biblical | |
biblicality | |
biblically | |
biblicism | |
biblicist | |
biblicistic | |
biblicolegal | |
biblicoliterary | |
biblicopsychological | |
byblidaceae | |
biblike | |
biblioclasm | |
biblioclast | |
bibliofilm | |
bibliog | |
bibliogenesis | |
bibliognost | |
bibliognostic | |
bibliogony | |
bibliograph | |
bibliographer | |
bibliographers | |
bibliography | |
bibliographic | |
bibliographical | |
bibliographically | |
bibliographies | |
bibliographize | |
bibliokelpt | |
biblioklept | |
bibliokleptomania | |
bibliokleptomaniac | |
bibliolater | |
bibliolatry | |
bibliolatrist | |
bibliolatrous | |
bibliology | |
bibliological | |
bibliologies | |
bibliologist | |
bibliomancy | |
bibliomane | |
bibliomania | |
bibliomaniac | |
bibliomaniacal | |
bibliomanian | |
bibliomanianism | |
bibliomanism | |
bibliomanist | |
bibliopegy | |
bibliopegic | |
bibliopegically | |
bibliopegist | |
bibliopegistic | |
bibliopegistical | |
bibliophage | |
bibliophagic | |
bibliophagist | |
bibliophagous | |
bibliophil | |
bibliophile | |
bibliophiles | |
bibliophily | |
bibliophilic | |
bibliophilism | |
bibliophilist | |
bibliophilistic | |
bibliophobe | |
bibliophobia | |
bibliopolar | |
bibliopole | |
bibliopolery | |
bibliopoly | |
bibliopolic | |
bibliopolical | |
bibliopolically | |
bibliopolism | |
bibliopolist | |
bibliopolistic | |
bibliosoph | |
bibliotaph | |
bibliotaphe | |
bibliotaphic | |
bibliothec | |
bibliotheca | |
bibliothecae | |
bibliothecaire | |
bibliothecal | |
bibliothecary | |
bibliothecarial | |
bibliothecarian | |
bibliothecas | |
bibliotheke | |
bibliotheque | |
bibliotherapeutic | |
bibliotherapy | |
bibliotherapies | |
bibliotherapist | |
bibliothetic | |
bibliothque | |
bibliotic | |
bibliotics | |
bibliotist | |
byblis | |
biblism | |
biblist | |
biblists | |
biblos | |
biblus | |
biborate | |
bibracteate | |
bibracteolate | |
bibs | |
bibulosity | |
bibulosities | |
bibulous | |
bibulously | |
bibulousness | |
bibulus | |
bicalcarate | |
bicalvous | |
bicameral | |
bicameralism | |
bicameralist | |
bicamerist | |
bicapitate | |
bicapsular | |
bicarb | |
bicarbide | |
bicarbonate | |
bicarbonates | |
bicarbs | |
bicarbureted | |
bicarburetted | |
bicarinate | |
bicarpellary | |
bicarpellate | |
bicaudal | |
bicaudate | |
bicched | |
bice | |
bicellular | |
bicentenary | |
bicentenaries | |
bicentenarnaries | |
bicentennial | |
bicentennially | |
bicentennials | |
bicentral | |
bicentric | |
bicentrically | |
bicentricity | |
bicep | |
bicephalic | |
bicephalous | |
biceps | |
bicepses | |
bices | |
bicetyl | |
bichy | |
bichir | |
bichloride | |
bichlorides | |
bichord | |
bichos | |
bichromate | |
bichromated | |
bichromatic | |
bichromatize | |
bichrome | |
bichromic | |
bicyanide | |
bicycle | |
bicycled | |
bicycler | |
bicyclers | |
bicycles | |
bicyclic | |
bicyclical | |
bicycling | |
bicyclism | |
bicyclist | |
bicyclists | |
bicyclo | |
bicycloheptane | |
bicycular | |
biciliate | |
biciliated | |
bicylindrical | |
bicipital | |
bicipitous | |
bicircular | |
bicirrose | |
bick | |
bicker | |
bickered | |
bickerer | |
bickerers | |
bickering | |
bickern | |
bickers | |
bickiron | |
biclavate | |
biclinia | |
biclinium | |
bycoket | |
bicollateral | |
bicollaterality | |
bicolligate | |
bicolor | |
bicolored | |
bicolorous | |
bicolors | |
bicolour | |
bicoloured | |
bicolourous | |
bicolours | |
bicompact | |
biconcave | |
biconcavity | |
bicondylar | |
biconditional | |
bicone | |
biconic | |
biconical | |
biconically | |
biconjugate | |
biconnected | |
biconsonantal | |
biconvex | |
biconvexity | |
bicorn | |
bicornate | |
bicorne | |
bicorned | |
bicornes | |
bicornous | |
bicornuate | |
bicornuous | |
bicornute | |
bicorporal | |
bicorporate | |
bicorporeal | |
bicostate | |
bicrenate | |
bicrescentic | |
bicrofarad | |
bicron | |
bicrons | |
bicrural | |
bicuculline | |
bicultural | |
biculturalism | |
bicursal | |
bicuspid | |
bicuspidal | |
bicuspidate | |
bicuspids | |
bid | |
bidactyl | |
bidactyle | |
bidactylous | |
bidar | |
bidarka | |
bidarkas | |
bidarkee | |
bidarkees | |
bidcock | |
biddability | |
biddable | |
biddableness | |
biddably | |
biddance | |
biddelian | |
bidden | |
bidder | |
biddery | |
bidders | |
biddy | |
biddie | |
biddies | |
bidding | |
biddings | |
biddulphia | |
biddulphiaceae | |
bide | |
bided | |
bidene | |
bidens | |
bident | |
bidental | |
bidentalia | |
bidentate | |
bidented | |
bidential | |
bidenticulate | |
bider | |
bidery | |
biders | |
bides | |
bidet | |
bidets | |
bidget | |
bidi | |
bidiagonal | |
bidialectal | |
bidialectalism | |
bidigitate | |
bidimensional | |
biding | |
bidirectional | |
bidirectionally | |
bidiurnal | |
bidonville | |
bidpai | |
bidree | |
bidri | |
bidry | |
bids | |
bidstand | |
biduous | |
bye | |
bieberite | |
biedermeier | |
byee | |
bieennia | |
byegaein | |
byelaw | |
byelaws | |
bielby | |
bielbrief | |
bield | |
bielded | |
bieldy | |
bielding | |
bields | |
bielectrolysis | |
bielenite | |
bielid | |
bielorouss | |
byelorussia | |
byelorussian | |
byelorussians | |
byeman | |
bien | |
bienly | |
biennale | |
biennales | |
bienne | |
bienness | |
biennia | |
biennial | |
biennially | |
biennials | |
biennium | |
bienniums | |
biens | |
bienseance | |
bientt | |
bienvenu | |
bienvenue | |
byepath | |
bier | |
bierbalk | |
byerite | |
bierkeller | |
byerlite | |
biers | |
bierstube | |
bierstuben | |
bierstubes | |
byes | |
biestings | |
byestreet | |
biethnic | |
bietle | |
byeworker | |
byeworkman | |
biface | |
bifaces | |
bifacial | |
bifanged | |
bifara | |
bifarious | |
bifariously | |
bifer | |
biferous | |
biff | |
biffed | |
biffy | |
biffies | |
biffin | |
biffing | |
biffins | |
biffs | |
bifid | |
bifidate | |
bifidated | |
bifidity | |
bifidities | |
bifidly | |
bifilar | |
bifilarly | |
bifistular | |
biflabellate | |
biflagelate | |
biflagellate | |
biflecnode | |
biflected | |
biflex | |
biflorate | |
biflorous | |
bifluorid | |
bifluoride | |
bifocal | |
bifocals | |
bifoil | |
bifold | |
bifolia | |
bifoliate | |
bifoliolate | |
bifolium | |
bifollicular | |
biforate | |
biforin | |
biforine | |
biforked | |
biforking | |
biform | |
biformed | |
biformity | |
biforous | |
bifront | |
bifrontal | |
bifronted | |
bifrost | |
bifteck | |
bifunctional | |
bifurcal | |
bifurcate | |
bifurcated | |
bifurcately | |
bifurcates | |
bifurcating | |
bifurcation | |
bifurcations | |
bifurcous | |
big | |
biga | |
bigae | |
bigam | |
bigamy | |
bigamic | |
bigamies | |
bigamist | |
bigamistic | |
bigamistically | |
bigamists | |
bigamize | |
bigamized | |
bigamizing | |
bigamous | |
bigamously | |
bygane | |
byganging | |
bigarade | |
bigarades | |
bigaroon | |
bigaroons | |
bigarreau | |
bigas | |
bigate | |
bigbloom | |
bigbury | |
bigeye | |
bigeyes | |
bigemina | |
bigeminal | |
bigeminate | |
bigeminated | |
bigeminy | |
bigeminies | |
bigeminum | |
bigener | |
bigeneric | |
bigential | |
bigfoot | |
bigg | |
biggah | |
bigged | |
biggen | |
biggened | |
biggening | |
bigger | |
biggest | |
biggety | |
biggy | |
biggie | |
biggies | |
biggin | |
bigging | |
biggings | |
biggins | |
biggish | |
biggishness | |
biggity | |
biggonet | |
bigha | |
bighead | |
bigheaded | |
bigheads | |
bighearted | |
bigheartedly | |
bigheartedness | |
bighorn | |
bighorns | |
bight | |
bighted | |
bighting | |
bights | |
biglandular | |
biglenoid | |
bigly | |
biglot | |
bigmitt | |
bigmouth | |
bigmouthed | |
bigmouths | |
bigness | |
bignesses | |
bignonia | |
bignoniaceae | |
bignoniaceous | |
bignoniad | |
bignonias | |
bignou | |
bygo | |
bygoing | |
bygone | |
bygones | |
bigoniac | |
bigonial | |
bigot | |
bigoted | |
bigotedly | |
bigotedness | |
bigothero | |
bigotish | |
bigotry | |
bigotries | |
bigots | |
bigotty | |
bigram | |
bigroot | |
bigthatch | |
biguanide | |
biguttate | |
biguttulate | |
bigwig | |
bigwigged | |
bigwiggedness | |
bigwiggery | |
bigwiggism | |
bigwigs | |
bihai | |
bihalve | |
biham | |
bihamate | |
byhand | |
bihari | |
biharmonic | |
bihydrazine | |
bihourly | |
biyearly | |
bija | |
bijasal | |
bijection | |
bijections | |
bijective | |
bijectively | |
bijou | |
bijous | |
bijouterie | |
bijoux | |
bijugate | |
bijugous | |
bijugular | |
bijwoner | |
bike | |
biked | |
biker | |
bikers | |
bikes | |
bikeway | |
bikeways | |
bikh | |
bikhaconitine | |
bikie | |
biking | |
bikini | |
bikinied | |
bikinis | |
bikkurim | |
bikol | |
bikram | |
bikukulla | |
bilaan | |
bilabe | |
bilabial | |
bilabials | |
bilabiate | |
bilaciniate | |
bilayer | |
bilalo | |
bilamellar | |
bilamellate | |
bilamellated | |
bilaminar | |
bilaminate | |
bilaminated | |
biland | |
byland | |
bilander | |
bylander | |
bilanders | |
bilateral | |
bilateralism | |
bilateralistic | |
bilaterality | |
bilateralities | |
bilaterally | |
bilateralness | |
bilati | |
bylaw | |
bylawman | |
bylaws | |
bilberry | |
bilberries | |
bilbi | |
bilby | |
bilbie | |
bilbies | |
bilbo | |
bilboa | |
bilboas | |
bilboes | |
bilboquet | |
bilbos | |
bilch | |
bilcock | |
bildar | |
bilder | |
bilders | |
bile | |
bilection | |
bilertinned | |
biles | |
bilestone | |
bileve | |
bilewhit | |
bilge | |
bilged | |
bilges | |
bilgeway | |
bilgewater | |
bilgy | |
bilgier | |
bilgiest | |
bilging | |
bilharzia | |
bilharzial | |
bilharziasis | |
bilharzic | |
bilharziosis | |
bilianic | |
biliary | |
biliate | |
biliation | |
bilic | |
bilicyanin | |
bilifaction | |
biliferous | |
bilify | |
bilification | |
bilifuscin | |
bilihumin | |
bilimbi | |
bilimbing | |
bilimbis | |
biliment | |
bilin | |
bylina | |
byline | |
bilinear | |
bilineate | |
bilineated | |
bylined | |
byliner | |
byliners | |
bylines | |
bilingual | |
bilingualism | |
bilinguality | |
bilingually | |
bilinguar | |
bilinguist | |
byliny | |
bilinigrin | |
bylining | |
bilinite | |
bilio | |
bilious | |
biliously | |
biliousness | |
bilipyrrhin | |
biliprasin | |
bilipurpurin | |
bilirubin | |
bilirubinemia | |
bilirubinic | |
bilirubinuria | |
biliteral | |
bil |
View raw
(Sorry about that, but we can’t show files that are this big right now.)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment