blob: 8e9187b352b48fb86a4aa291e79f58f430278622 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 (global = global || self, factory(global.csso = {}));
5}(this, (function (exports) { 'use strict';
6
7 var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8
9 function createCommonjsModule(fn, module) {
10 return module = { exports: {} }, fn(module, module.exports), module.exports;
11 }
12
13 function getCjsExportFromNamespace (n) {
14 return n && n['default'] || n;
15 }
16
17 var csstree_min = createCommonjsModule(function (module, exports) {
18 !function(e,t){module.exports=t();}(commonjsGlobal,(function(){function e(e){return {prev:null,next:null,data:e}}function t(e,t,n){var i;return null!==r?(i=r,r=r.cursor,i.prev=t,i.next=n,i.cursor=e.cursor):i={prev:t,next:n,cursor:e.cursor},e.cursor=i,i}function n(e){var t=e.cursor;e.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=r,r=t;}var r=null,i=function(){this.cursor=null,this.head=null,this.tail=null;};i.createItem=e,i.prototype.createItem=e,i.prototype.updateCursors=function(e,t,n,r){for(var i=this.cursor;null!==i;)i.prev===e&&(i.prev=t),i.next===n&&(i.next=r),i=i.cursor;},i.prototype.getSize=function(){for(var e=0,t=this.head;t;)e++,t=t.next;return e},i.prototype.fromArray=function(t){var n=null;this.head=null;for(var r=0;r<t.length;r++){var i=e(t[r]);null!==n?n.next=i:this.head=i,i.prev=n,n=i;}return this.tail=n,this},i.prototype.toArray=function(){for(var e=this.head,t=[];e;)t.push(e.data),e=e.next;return t},i.prototype.toJSON=i.prototype.toArray,i.prototype.isEmpty=function(){return null===this.head},i.prototype.first=function(){return this.head&&this.head.data},i.prototype.last=function(){return this.tail&&this.tail.data},i.prototype.each=function(e,r){var i;void 0===r&&(r=this);for(var a=t(this,null,this.head);null!==a.next;)i=a.next,a.next=i.next,e.call(r,i.data,i,this);n(this);},i.prototype.forEach=i.prototype.each,i.prototype.eachRight=function(e,r){var i;void 0===r&&(r=this);for(var a=t(this,this.tail,null);null!==a.prev;)i=a.prev,a.prev=i.prev,e.call(r,i.data,i,this);n(this);},i.prototype.forEachRight=i.prototype.eachRight,i.prototype.reduce=function(e,r,i){var a;void 0===i&&(i=this);for(var o=t(this,null,this.head),s=r;null!==o.next;)a=o.next,o.next=a.next,s=e.call(i,s,a.data,a,this);return n(this),s},i.prototype.reduceRight=function(e,r,i){var a;void 0===i&&(i=this);for(var o=t(this,this.tail,null),s=r;null!==o.prev;)a=o.prev,o.prev=a.prev,s=e.call(i,s,a.data,a,this);return n(this),s},i.prototype.nextUntil=function(e,r,i){if(null!==e){var a;void 0===i&&(i=this);for(var o=t(this,null,e);null!==o.next&&(a=o.next,o.next=a.next,!r.call(i,a.data,a,this)););n(this);}},i.prototype.prevUntil=function(e,r,i){if(null!==e){var a;void 0===i&&(i=this);for(var o=t(this,e,null);null!==o.prev&&(a=o.prev,o.prev=a.prev,!r.call(i,a.data,a,this)););n(this);}},i.prototype.some=function(e,t){var n=this.head;for(void 0===t&&(t=this);null!==n;){if(e.call(t,n.data,n,this))return !0;n=n.next;}return !1},i.prototype.map=function(e,t){var n=new i,r=this.head;for(void 0===t&&(t=this);null!==r;)n.appendData(e.call(t,r.data,r,this)),r=r.next;return n},i.prototype.filter=function(e,t){var n=new i,r=this.head;for(void 0===t&&(t=this);null!==r;)e.call(t,r.data,r,this)&&n.appendData(r.data),r=r.next;return n},i.prototype.clear=function(){this.head=null,this.tail=null;},i.prototype.copy=function(){for(var t=new i,n=this.head;null!==n;)t.insert(e(n.data)),n=n.next;return t},i.prototype.prepend=function(e){return this.updateCursors(null,e,this.head,e),null!==this.head?(this.head.prev=e,e.next=this.head):this.tail=e,this.head=e,this},i.prototype.prependData=function(t){return this.prepend(e(t))},i.prototype.append=function(e){return this.insert(e)},i.prototype.appendData=function(t){return this.insert(e(t))},i.prototype.insert=function(e,t){if(null!=t)if(this.updateCursors(t.prev,e,t,e),null===t.prev){if(this.head!==t)throw new Error("before doesn't belong to list");this.head=e,t.prev=e,e.next=t,this.updateCursors(null,e);}else t.prev.next=e,e.prev=t.prev,t.prev=e,e.next=t;else this.updateCursors(this.tail,e,null,e),null!==this.tail?(this.tail.next=e,e.prev=this.tail):this.head=e,this.tail=e;return this},i.prototype.insertData=function(t,n){return this.insert(e(t),n)},i.prototype.remove=function(e){if(this.updateCursors(e,e.prev,e,e.next),null!==e.prev)e.prev.next=e.next;else {if(this.head!==e)throw new Error("item doesn't belong to list");this.head=e.next;}if(null!==e.next)e.next.prev=e.prev;else {if(this.tail!==e)throw new Error("item doesn't belong to list");this.tail=e.prev;}return e.prev=null,e.next=null,e},i.prototype.push=function(t){this.insert(e(t));},i.prototype.pop=function(){if(null!==this.tail)return this.remove(this.tail)},i.prototype.unshift=function(t){this.prepend(e(t));},i.prototype.shift=function(){if(null!==this.head)return this.remove(this.head)},i.prototype.prependList=function(e){return this.insertList(e,this.head)},i.prototype.appendList=function(e){return this.insertList(e)},i.prototype.insertList=function(e,t){return null===e.head||(null!=t?(this.updateCursors(t.prev,e.tail,t,e.head),null!==t.prev?(t.prev.next=e.head,e.head.prev=t.prev):this.head=e.head,t.prev=e.tail,e.tail.next=t):(this.updateCursors(this.tail,e.tail,null,e.head),null!==this.tail?(this.tail.next=e.head,e.head.prev=this.tail):this.head=e.head,this.tail=e.tail),e.head=null,e.tail=null),this},i.prototype.replace=function(e,t){"head"in t?this.insertList(t,e):this.insert(t,e),this.remove(e);};var a=i,o=function(e,t){var n=Object.create(SyntaxError.prototype),r=new Error;return n.name=e,n.message=t,Object.defineProperty(n,"stack",{get:function(){return (r.stack||"").replace(/^(.+\n){1,3}/,e+": "+t+"\n")}}),n};function s(e,t){function n(e,t){return r.slice(e,t).map((function(t,n){for(var r=String(e+n+1);r.length<l;)r=" "+r;return r+" |"+t})).join("\n")}var r=e.source.split(/\r\n?|\n|\f/),i=e.line,a=e.column,o=Math.max(1,i-t)-1,s=Math.min(i+t,r.length+1),l=Math.max(4,String(s).length)+1,c=0;(a+=(" ".length-1)*(r[i-1].substr(0,a-1).match(/\t/g)||[]).length)>100&&(c=a-60+3,a=58);for(var u=o;u<=s;u++)u>=0&&u<r.length&&(r[u]=r[u].replace(/\t/g," "),r[u]=(c>0&&r[u].length>c?"…":"")+r[u].substr(c,98)+(r[u].length>c+100-1?"…":""));return [n(o,i),new Array(a+l+2).join("-")+"^",n(i,s)].filter(Boolean).join("\n")}var l=function(e,t,n,r,i){var a=o("SyntaxError",e);return a.source=t,a.offset=n,a.line=r,a.column=i,a.sourceFragment=function(e){return s(a,isNaN(e)?0:e)},Object.defineProperty(a,"formattedMessage",{get:function(){return "Parse error: "+a.message+"\n"+s(a,2)}}),a.parseError={offset:n,line:r,column:i},a},c={EOF:0,Ident:1,Function:2,AtKeyword:3,Hash:4,String:5,BadString:6,Url:7,BadUrl:8,Delim:9,Number:10,Percentage:11,Dimension:12,WhiteSpace:13,CDO:14,CDC:15,Colon:16,Semicolon:17,Comma:18,LeftSquareBracket:19,RightSquareBracket:20,LeftParenthesis:21,RightParenthesis:22,LeftCurlyBracket:23,RightCurlyBracket:24,Comment:25},u=Object.keys(c).reduce((function(e,t){return e[c[t]]=t,e}),{}),h={TYPE:c,NAME:u};function p(e){return e>=48&&e<=57}function d(e){return e>=65&&e<=90}function m(e){return e>=97&&e<=122}function g(e){return d(e)||m(e)}function f(e){return e>=128}function b(e){return g(e)||f(e)||95===e}function y(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e}function k(e){return 10===e||13===e||12===e}function v(e){return k(e)||32===e||9===e}function x(e,t){return 92===e&&(!k(t)&&0!==t)}var w=new Array(128);C.Eof=128,C.WhiteSpace=130,C.Digit=131,C.NameStart=132,C.NonPrintable=133;for(var S=0;S<w.length;S++)switch(!0){case v(S):w[S]=C.WhiteSpace;break;case p(S):w[S]=C.Digit;break;case b(S):w[S]=C.NameStart;break;case y(S):w[S]=C.NonPrintable;break;default:w[S]=S||C.Eof;}function C(e){return e<128?w[e]:C.NameStart}var z={isDigit:p,isHexDigit:function(e){return p(e)||e>=65&&e<=70||e>=97&&e<=102},isUppercaseLetter:d,isLowercaseLetter:m,isLetter:g,isNonAscii:f,isNameStart:b,isName:function(e){return b(e)||p(e)||45===e},isNonPrintable:y,isNewline:k,isWhiteSpace:v,isValidEscape:x,isIdentifierStart:function(e,t,n){return 45===e?b(t)||45===t||x(t,n):!!b(e)||92===e&&x(e,t)},isNumberStart:function(e,t,n){return 43===e||45===e?p(t)?2:46===t&&p(n)?3:0:46===e?p(t)?2:0:p(e)?1:0},isBOM:function(e){return 65279===e||65534===e?1:0},charCodeCategory:C},A=z.isDigit,P=z.isHexDigit,T=z.isUppercaseLetter,L=z.isName,E=z.isWhiteSpace,D=z.isValidEscape;function O(e,t){return t<e.length?e.charCodeAt(t):0}function B(e,t,n){return 13===n&&10===O(e,t+1)?2:1}function I(e,t,n){var r=e.charCodeAt(t);return T(r)&&(r|=32),r===n}function N(e,t){for(;t<e.length&&A(e.charCodeAt(t));t++);return t}function R(e,t){if(P(O(e,(t+=2)-1))){for(var n=Math.min(e.length,t+5);t<n&&P(O(e,t));t++);var r=O(e,t);E(r)&&(t+=B(e,t,r));}return t}var M={consumeEscaped:R,consumeName:function(e,t){for(;t<e.length;t++){var n=e.charCodeAt(t);if(!L(n)){if(!D(n,O(e,t+1)))break;t=R(e,t)-1;}}return t},consumeNumber:function(e,t){var n=e.charCodeAt(t);if(43!==n&&45!==n||(n=e.charCodeAt(t+=1)),A(n)&&(t=N(e,t+1),n=e.charCodeAt(t)),46===n&&A(e.charCodeAt(t+1))&&(n=e.charCodeAt(t+=2),t=N(e,t)),I(e,t,101)){var r=0;45!==(n=e.charCodeAt(t+1))&&43!==n||(r=1,n=e.charCodeAt(t+2)),A(n)&&(t=N(e,t+1+r+1));}return t},consumeBadUrlRemnants:function(e,t){for(;t<e.length;t++){var n=e.charCodeAt(t);if(41===n){t++;break}D(n,O(e,t+1))&&(t=R(e,t));}return t},cmpChar:I,cmpStr:function(e,t,n,r){if(n-t!==r.length)return !1;if(t<0||n>e.length)return !1;for(var i=t;i<n;i++){var a=e.charCodeAt(i),o=r.charCodeAt(i-t);if(T(a)&&(a|=32),a!==o)return !1}return !0},getNewlineLength:B,findWhiteSpaceStart:function(e,t){for(;t>=0&&E(e.charCodeAt(t));t--);return t+1},findWhiteSpaceEnd:function(e,t){for(;t<e.length&&E(e.charCodeAt(t));t++);return t}},j=h.TYPE,_=h.NAME,F=M.cmpStr,W=j.EOF,q=j.WhiteSpace,Y=j.Comment,U=function(){this.offsetAndType=null,this.balance=null,this.reset();};U.prototype={reset:function(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset;},lookupType:function(e){return (e+=this.tokenIndex)<this.tokenCount?this.offsetAndType[e]>>24:W},lookupOffset:function(e){return (e+=this.tokenIndex)<this.tokenCount?16777215&this.offsetAndType[e-1]:this.source.length},lookupValue:function(e,t){return (e+=this.tokenIndex)<this.tokenCount&&F(this.source,16777215&this.offsetAndType[e-1],16777215&this.offsetAndType[e],t)},getTokenStart:function(e){return e===this.tokenIndex?this.tokenStart:e>0?e<this.tokenCount?16777215&this.offsetAndType[e-1]:16777215&this.offsetAndType[this.tokenCount]:this.firstCharOffset},getRawLength:function(e,t){var n,r=e,i=16777215&this.offsetAndType[Math.max(r-1,0)];e:for(;r<this.tokenCount&&!((n=this.balance[r])<e);r++)switch(t(this.offsetAndType[r]>>24,this.source,i)){case 1:break e;case 2:r++;break e;default:i=16777215&this.offsetAndType[r],this.balance[n]===r&&(r=n);}return r-this.tokenIndex},isBalanceEdge:function(e){return this.balance[this.tokenIndex]<e},isDelim:function(e,t){return t?this.lookupType(t)===j.Delim&&this.source.charCodeAt(this.lookupOffset(t))===e:this.tokenType===j.Delim&&this.source.charCodeAt(this.tokenStart)===e},getTokenValue:function(){return this.source.substring(this.tokenStart,this.tokenEnd)},getTokenLength:function(){return this.tokenEnd-this.tokenStart},substrToCursor:function(e){return this.source.substring(e,this.tokenStart)},skipWS:function(){for(var e=this.tokenIndex,t=0;e<this.tokenCount&&this.offsetAndType[e]>>24===q;e++,t++);t>0&&this.skip(t);},skipSC:function(){for(;this.tokenType===q||this.tokenType===Y;)this.next();},skip:function(e){var t=this.tokenIndex+e;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=16777215&this.offsetAndType[t-1],t=this.offsetAndType[t],this.tokenType=t>>24,this.tokenEnd=16777215&t):(this.tokenIndex=this.tokenCount,this.next());},next:function(){var e=this.tokenIndex+1;e<this.tokenCount?(this.tokenIndex=e,this.tokenStart=this.tokenEnd,e=this.offsetAndType[e],this.tokenType=e>>24,this.tokenEnd=16777215&e):(this.tokenIndex=this.tokenCount,this.eof=!0,this.tokenType=W,this.tokenStart=this.tokenEnd=this.source.length);},forEachToken(e){for(var t=0,n=this.firstCharOffset;t<this.tokenCount;t++){var r=n,i=this.offsetAndType[t],a=16777215&i;n=a,e(i>>24,r,a,t);}},dump(){var e=new Array(this.tokenCount);return this.forEachToken((t,n,r,i)=>{e[i]={idx:i,type:_[t],chunk:this.source.substring(n,r),balance:this.balance[i]};}),e}};var H=U;function V(e){return e}function K(e,t,n,r){var i,a;switch(e.type){case"Group":i=function(e,t,n,r){var i=" "===e.combinator||r?e.combinator:" "+e.combinator+" ",a=e.terms.map((function(e){return K(e,t,n,r)})).join(i);return (e.explicit||n)&&(a=(r||","===a[0]?"[":"[ ")+a+(r?"]":" ]")),a}(e,t,n,r)+(e.disallowEmpty?"!":"");break;case"Multiplier":return K(e.term,t,n,r)+t(0===(a=e).min&&0===a.max?"*":0===a.min&&1===a.max?"?":1===a.min&&0===a.max?a.comma?"#":"+":1===a.min&&1===a.max?"":(a.comma?"#":"")+(a.min===a.max?"{"+a.min+"}":"{"+a.min+","+(0!==a.max?a.max:"")+"}"),e);case"Type":i="<"+e.name+(e.opts?t(function(e){switch(e.type){case"Range":return " ["+(null===e.min?"-∞":e.min)+","+(null===e.max?"∞":e.max)+"]";default:throw new Error("Unknown node type `"+e.type+"`")}}(e.opts),e.opts):"")+">";break;case"Property":i="<'"+e.name+"'>";break;case"Keyword":i=e.name;break;case"AtKeyword":i="@"+e.name;break;case"Function":i=e.name+"(";break;case"String":case"Token":i=e.value;break;case"Comma":i=",";break;default:throw new Error("Unknown node type `"+e.type+"`")}return t(i,e)}var G=function(e,t){var n=V,r=!1,i=!1;return "function"==typeof t?n=t:t&&(r=Boolean(t.forceBraces),i=Boolean(t.compact),"function"==typeof t.decorate&&(n=t.decorate)),K(e,n,r,i)};const Q={offset:0,line:1,column:1};function X(e,t){const n=e&&e.loc&&e.loc[t];return n?"line"in n?Z(n):n:null}function Z({offset:e,line:t,column:n},r){const i={offset:e,line:t,column:n};if(r){const e=r.split(/\n|\r\n?|\f/);i.offset+=r.length,i.line+=e.length-1,i.column=1===e.length?i.column+r.length:e.pop().length+1;}return i}var $=function(e,t){const n=o("SyntaxReferenceError",e+(t?" `"+t+"`":""));return n.reference=t,n},J=function(e,t,n,r){const i=o("SyntaxMatchError",e),{css:a,mismatchOffset:s,mismatchLength:l,start:c,end:u}=function(e,t){const n=e.tokens,r=e.longestMatch,i=r<n.length&&n[r].node||null,a=i!==t?i:null;let o,s,l=0,c=0,u=0,h="";for(let e=0;e<n.length;e++){const t=n[e].value;e===r&&(c=t.length,l=h.length),null!==a&&n[e].node===a&&(e<=r?u++:u=0),h+=t;}return r===n.length||u>1?(o=X(a||t,"end")||Z(Q,h),s=Z(o)):(o=X(a,"start")||Z(X(t,"start")||Q,h.slice(0,l)),s=X(a,"end")||Z(o,h.substr(l,c))),{css:h,mismatchOffset:l,mismatchLength:c,start:o,end:s}}(r,n);return i.rawMessage=e,i.syntax=t?G(t):"<generic>",i.css=a,i.mismatchOffset=s,i.mismatchLength=l,i.message=e+"\n syntax: "+i.syntax+"\n value: "+(a||"<empty string>")+"\n --------"+new Array(i.mismatchOffset+1).join("-")+"^",Object.assign(i,c),i.loc={source:n&&n.loc&&n.loc.source||"<unknown>",start:c,end:u},i},ee=Object.prototype.hasOwnProperty,te=Object.create(null),ne=Object.create(null);function re(e,t){return t=t||0,e.length-t>=2&&45===e.charCodeAt(t)&&45===e.charCodeAt(t+1)}function ie(e,t){if(t=t||0,e.length-t>=3&&45===e.charCodeAt(t)&&45!==e.charCodeAt(t+1)){var n=e.indexOf("-",t+2);if(-1!==n)return e.substring(t,n+1)}return ""}var ae={keyword:function(e){if(ee.call(te,e))return te[e];var t=e.toLowerCase();if(ee.call(te,t))return te[e]=te[t];var n=re(t,0),r=n?"":ie(t,0);return te[e]=Object.freeze({basename:t.substr(r.length),name:t,vendor:r,prefix:r,custom:n})},property:function(e){if(ee.call(ne,e))return ne[e];var t=e,n=e[0];"/"===n?n="/"===e[1]?"//":"/":"_"!==n&&"*"!==n&&"$"!==n&&"#"!==n&&"+"!==n&&"&"!==n&&(n="");var r=re(t,n.length);if(!r&&(t=t.toLowerCase(),ee.call(ne,t)))return ne[e]=ne[t];var i=r?"":ie(t,n.length),a=t.substr(0,n.length+i.length);return ne[e]=Object.freeze({basename:t.substr(a.length),name:t.substr(n.length),hack:n,vendor:i,prefix:a,custom:r})},isCustomProperty:re,vendorPrefix:ie},oe="undefined"!=typeof Uint32Array?Uint32Array:Array,se=function(e,t){return null===e||e.length<t?new oe(Math.max(t+1024,16384)):e},le=h.TYPE,ce=z.isNewline,ue=z.isName,he=z.isValidEscape,pe=z.isNumberStart,de=z.isIdentifierStart,me=z.charCodeCategory,ge=z.isBOM,fe=M.cmpStr,be=M.getNewlineLength,ye=M.findWhiteSpaceEnd,ke=M.consumeEscaped,ve=M.consumeName,xe=M.consumeNumber,we=M.consumeBadUrlRemnants;function Se(e,t){function n(t){return t<o?e.charCodeAt(t):0}function r(){return h=xe(e,h),de(n(h),n(h+1),n(h+2))?(f=le.Dimension,void(h=ve(e,h))):37===n(h)?(f=le.Percentage,void h++):void(f=le.Number)}function i(){const t=h;return h=ve(e,h),fe(e,t,h,"url")&&40===n(h)?34===n(h=ye(e,h+1))||39===n(h)?(f=le.Function,void(h=t+4)):void function(){for(f=le.Url,h=ye(e,h);h<e.length;h++){var t=e.charCodeAt(h);switch(me(t)){case 41:return void h++;case me.Eof:return;case me.WhiteSpace:return 41===n(h=ye(e,h))||h>=e.length?void(h<e.length&&h++):(h=we(e,h),void(f=le.BadUrl));case 34:case 39:case 40:case me.NonPrintable:return h=we(e,h),void(f=le.BadUrl);case 92:if(he(t,n(h+1))){h=ke(e,h)-1;break}return h=we(e,h),void(f=le.BadUrl)}}}():40===n(h)?(f=le.Function,void h++):void(f=le.Ident)}function a(t){for(t||(t=n(h++)),f=le.String;h<e.length;h++){var r=e.charCodeAt(h);switch(me(r)){case t:return void h++;case me.Eof:return;case me.WhiteSpace:if(ce(r))return h+=be(e,h,r),void(f=le.BadString);break;case 92:if(h===e.length-1)break;var i=n(h+1);ce(i)?h+=be(e,h+1,i):he(r,i)&&(h=ke(e,h)-1);}}}t||(t=new H);for(var o=(e=String(e||"")).length,s=se(t.offsetAndType,o+1),l=se(t.balance,o+1),c=0,u=ge(n(0)),h=u,p=0,d=0,m=0;h<o;){var g=e.charCodeAt(h),f=0;switch(l[c]=o,me(g)){case me.WhiteSpace:f=le.WhiteSpace,h=ye(e,h+1);break;case 34:a();break;case 35:ue(n(h+1))||he(n(h+1),n(h+2))?(f=le.Hash,h=ve(e,h+1)):(f=le.Delim,h++);break;case 39:a();break;case 40:f=le.LeftParenthesis,h++;break;case 41:f=le.RightParenthesis,h++;break;case 43:pe(g,n(h+1),n(h+2))?r():(f=le.Delim,h++);break;case 44:f=le.Comma,h++;break;case 45:pe(g,n(h+1),n(h+2))?r():45===n(h+1)&&62===n(h+2)?(f=le.CDC,h+=3):de(g,n(h+1),n(h+2))?i():(f=le.Delim,h++);break;case 46:pe(g,n(h+1),n(h+2))?r():(f=le.Delim,h++);break;case 47:42===n(h+1)?(f=le.Comment,1===(h=e.indexOf("*/",h+2)+2)&&(h=e.length)):(f=le.Delim,h++);break;case 58:f=le.Colon,h++;break;case 59:f=le.Semicolon,h++;break;case 60:33===n(h+1)&&45===n(h+2)&&45===n(h+3)?(f=le.CDO,h+=4):(f=le.Delim,h++);break;case 64:de(n(h+1),n(h+2),n(h+3))?(f=le.AtKeyword,h=ve(e,h+1)):(f=le.Delim,h++);break;case 91:f=le.LeftSquareBracket,h++;break;case 92:he(g,n(h+1))?i():(f=le.Delim,h++);break;case 93:f=le.RightSquareBracket,h++;break;case 123:f=le.LeftCurlyBracket,h++;break;case 125:f=le.RightCurlyBracket,h++;break;case me.Digit:r();break;case me.NameStart:i();break;case me.Eof:break;default:f=le.Delim,h++;}switch(f){case p:for(p=(d=l[m=16777215&d])>>24,l[c]=m,l[m++]=c;m<c;m++)l[m]===o&&(l[m]=c);break;case le.LeftParenthesis:case le.Function:l[c]=d,d=(p=le.RightParenthesis)<<24|c;break;case le.LeftSquareBracket:l[c]=d,d=(p=le.RightSquareBracket)<<24|c;break;case le.LeftCurlyBracket:l[c]=d,d=(p=le.RightCurlyBracket)<<24|c;}s[c++]=f<<24|h;}for(s[c]=le.EOF<<24|h,l[c]=o,l[o]=o;0!==d;)d=l[m=16777215&d],l[m]=o;return t.source=e,t.firstCharOffset=u,t.offsetAndType=s,t.tokenCount=c,t.balance=l,t.reset(),t.next(),t}Object.keys(h).forEach((function(e){Se[e]=h[e];})),Object.keys(z).forEach((function(e){Se[e]=z[e];})),Object.keys(M).forEach((function(e){Se[e]=M[e];}));var Ce=Se,ze=Ce.isDigit,Ae=Ce.cmpChar,Pe=Ce.TYPE,Te=Pe.Delim,Le=Pe.WhiteSpace,Ee=Pe.Comment,De=Pe.Ident,Oe=Pe.Number,Be=Pe.Dimension;function Ie(e,t){return null!==e&&e.type===Te&&e.value.charCodeAt(0)===t}function Ne(e,t,n){for(;null!==e&&(e.type===Le||e.type===Ee);)e=n(++t);return t}function Re(e,t,n,r){if(!e)return 0;var i=e.value.charCodeAt(t);if(43===i||45===i){if(n)return 0;t++;}for(;t<e.value.length;t++)if(!ze(e.value.charCodeAt(t)))return 0;return r+1}function Me(e,t,n){var r=!1,i=Ne(e,t,n);if(null===(e=n(i)))return t;if(e.type!==Oe){if(!Ie(e,43)&&!Ie(e,45))return t;if(r=!0,i=Ne(n(++i),i,n),null===(e=n(i))&&e.type!==Oe)return 0}if(!r){var a=e.value.charCodeAt(0);if(43!==a&&45!==a)return 0}return Re(e,r?0:1,r,i)}var je=Ce.isHexDigit,_e=Ce.cmpChar,Fe=Ce.TYPE,We=Fe.Ident,qe=Fe.Delim,Ye=Fe.Number,Ue=Fe.Dimension;function He(e,t){return null!==e&&e.type===qe&&e.value.charCodeAt(0)===t}function Ve(e,t){return e.value.charCodeAt(0)===t}function Ke(e,t,n){for(var r=t,i=0;r<e.value.length;r++){var a=e.value.charCodeAt(r);if(45===a&&n&&0!==i)return Ke(e,t+i+1,!1)>0?6:0;if(!je(a))return 0;if(++i>6)return 0}return i}function Ge(e,t,n){if(!e)return 0;for(;He(n(t),63);){if(++e>6)return 0;t++;}return t}var Qe=Ce.isIdentifierStart,Xe=Ce.isHexDigit,Ze=Ce.isDigit,$e=Ce.cmpStr,Je=Ce.consumeNumber,et=Ce.TYPE,tt=["unset","initial","inherit"],nt=["calc(","-moz-calc(","-webkit-calc("];function rt(e,t){return t<e.length?e.charCodeAt(t):0}function it(e,t){return $e(e,0,e.length,t)}function at(e,t){for(var n=0;n<t.length;n++)if(it(e,t[n]))return !0;return !1}function ot(e,t){return t===e.length-2&&(92===e.charCodeAt(t)&&Ze(e.charCodeAt(t+1)))}function st(e,t,n){if(e&&"Range"===e.type){var r=Number(void 0!==n&&n!==t.length?t.substr(0,n):t);if(isNaN(r))return !0;if(null!==e.min&&r<e.min)return !0;if(null!==e.max&&r>e.max)return !0}return !1}function lt(e,t){var n=e.index,r=0;do{if(r++,e.balance<=n)break}while(e=t(r));return r}function ct(e){return function(t,n,r){return null===t?0:t.type===et.Function&&at(t.value,nt)?lt(t,n):e(t,n,r)}}function ut(e){return function(t){return null===t||t.type!==e?0:1}}function ht(e){return function(t,n,r){if(null===t||t.type!==et.Dimension)return 0;var i=Je(t.value,0);if(null!==e){var a=t.value.indexOf("\\",i),o=-1!==a&&ot(t.value,a)?t.value.substring(i,a):t.value.substr(i);if(!1===e.hasOwnProperty(o.toLowerCase()))return 0}return st(r,t.value,i)?0:1}}function pt(e){return "function"!=typeof e&&(e=function(){return 0}),function(t,n,r){return null!==t&&t.type===et.Number&&0===Number(t.value)?1:e(t,n,r)}}var dt,mt={"ident-token":ut(et.Ident),"function-token":ut(et.Function),"at-keyword-token":ut(et.AtKeyword),"hash-token":ut(et.Hash),"string-token":ut(et.String),"bad-string-token":ut(et.BadString),"url-token":ut(et.Url),"bad-url-token":ut(et.BadUrl),"delim-token":ut(et.Delim),"number-token":ut(et.Number),"percentage-token":ut(et.Percentage),"dimension-token":ut(et.Dimension),"whitespace-token":ut(et.WhiteSpace),"CDO-token":ut(et.CDO),"CDC-token":ut(et.CDC),"colon-token":ut(et.Colon),"semicolon-token":ut(et.Semicolon),"comma-token":ut(et.Comma),"[-token":ut(et.LeftSquareBracket),"]-token":ut(et.RightSquareBracket),"(-token":ut(et.LeftParenthesis),")-token":ut(et.RightParenthesis),"{-token":ut(et.LeftCurlyBracket),"}-token":ut(et.RightCurlyBracket),string:ut(et.String),ident:ut(et.Ident),"custom-ident":function(e){if(null===e||e.type!==et.Ident)return 0;var t=e.value.toLowerCase();return at(t,tt)||it(t,"default")?0:1},"custom-property-name":function(e){return null===e||e.type!==et.Ident||45!==rt(e.value,0)||45!==rt(e.value,1)?0:1},"hex-color":function(e){if(null===e||e.type!==et.Hash)return 0;var t=e.value.length;if(4!==t&&5!==t&&7!==t&&9!==t)return 0;for(var n=1;n<t;n++)if(!Xe(e.value.charCodeAt(n)))return 0;return 1},"id-selector":function(e){return null===e||e.type!==et.Hash?0:Qe(rt(e.value,1),rt(e.value,2),rt(e.value,3))?1:0},"an-plus-b":function(e,t){var n=0;if(!e)return 0;if(e.type===Oe)return Re(e,0,!1,n);if(e.type===De&&45===e.value.charCodeAt(0)){if(!Ae(e.value,1,110))return 0;switch(e.value.length){case 2:return Me(t(++n),n,t);case 3:return 45!==e.value.charCodeAt(2)?0:(n=Ne(t(++n),n,t),Re(e=t(n),0,!0,n));default:return 45!==e.value.charCodeAt(2)?0:Re(e,3,!0,n)}}else if(e.type===De||Ie(e,43)&&t(n+1).type===De){if(e.type!==De&&(e=t(++n)),null===e||!Ae(e.value,0,110))return 0;switch(e.value.length){case 1:return Me(t(++n),n,t);case 2:return 45!==e.value.charCodeAt(1)?0:(n=Ne(t(++n),n,t),Re(e=t(n),0,!0,n));default:return 45!==e.value.charCodeAt(1)?0:Re(e,2,!0,n)}}else if(e.type===Be){for(var r=e.value.charCodeAt(0),i=43===r||45===r?1:0,a=i;a<e.value.length&&ze(e.value.charCodeAt(a));a++);return a===i?0:Ae(e.value,a,110)?a+1===e.value.length?Me(t(++n),n,t):45!==e.value.charCodeAt(a+1)?0:a+2===e.value.length?(n=Ne(t(++n),n,t),Re(e=t(n),0,!0,n)):Re(e,a+2,!0,n):0}return 0},urange:function(e,t){var n=0;if(null===e||e.type!==We||!_e(e.value,0,117))return 0;if(null===(e=t(++n)))return 0;if(He(e,43))return null===(e=t(++n))?0:e.type===We?Ge(Ke(e,0,!0),++n,t):He(e,63)?Ge(1,++n,t):0;if(e.type===Ye){if(!Ve(e,43))return 0;var r=Ke(e,1,!0);return 0===r?0:null===(e=t(++n))?n:e.type===Ue||e.type===Ye?Ve(e,45)&&Ke(e,1,!1)?n+1:0:Ge(r,n,t)}return e.type===Ue&&Ve(e,43)?Ge(Ke(e,1,!0),++n,t):0},"declaration-value":function(e,t){if(!e)return 0;var n=0,r=0,i=e.index;e:do{switch(e.type){case et.BadString:case et.BadUrl:break e;case et.RightCurlyBracket:case et.RightParenthesis:case et.RightSquareBracket:if(e.balance>e.index||e.balance<i)break e;r--;break;case et.Semicolon:if(0===r)break e;break;case et.Delim:if("!"===e.value&&0===r)break e;break;case et.Function:case et.LeftParenthesis:case et.LeftSquareBracket:case et.LeftCurlyBracket:r++;}if(n++,e.balance<=i)break}while(e=t(n));return n},"any-value":function(e,t){if(!e)return 0;var n=e.index,r=0;e:do{switch(e.type){case et.BadString:case et.BadUrl:break e;case et.RightCurlyBracket:case et.RightParenthesis:case et.RightSquareBracket:if(e.balance>e.index||e.balance<n)break e}if(r++,e.balance<=n)break}while(e=t(r));return r},dimension:ct(ht(null)),angle:ct(ht({deg:!0,grad:!0,rad:!0,turn:!0})),decibel:ct(ht({db:!0})),frequency:ct(ht({hz:!0,khz:!0})),flex:ct(ht({fr:!0})),length:ct(pt(ht({px:!0,mm:!0,cm:!0,in:!0,pt:!0,pc:!0,q:!0,em:!0,ex:!0,ch:!0,rem:!0,vh:!0,vw:!0,vmin:!0,vmax:!0,vm:!0}))),resolution:ct(ht({dpi:!0,dpcm:!0,dppx:!0,x:!0})),semitones:ct(ht({st:!0})),time:ct(ht({s:!0,ms:!0})),percentage:ct((function(e,t,n){return null===e||e.type!==et.Percentage||st(n,e.value,e.value.length-1)?0:1})),zero:pt(),number:ct((function(e,t,n){if(null===e)return 0;var r=Je(e.value,0);return r===e.value.length||ot(e.value,r)?st(n,e.value,r)?0:1:0})),integer:ct((function(e,t,n){if(null===e||e.type!==et.Number)return 0;for(var r=43===e.value.charCodeAt(0)||45===e.value.charCodeAt(0)?1:0;r<e.value.length;r++)if(!Ze(e.value.charCodeAt(r)))return 0;return st(n,e.value,r)?0:1})),"-ms-legacy-expression":(dt="expression",dt+="(",function(e,t){return null!==e&&it(e.value,dt)?lt(e,t):0})},gt=function(e,t,n){var r=o("SyntaxError",e);return r.input=t,r.offset=n,r.rawMessage=e,r.message=r.rawMessage+"\n "+r.input+"\n--"+new Array((r.offset||r.input.length)+1).join("-")+"^",r},ft=function(e){this.str=e,this.pos=0;};ft.prototype={charCodeAt:function(e){return e<this.str.length?this.str.charCodeAt(e):0},charCode:function(){return this.charCodeAt(this.pos)},nextCharCode:function(){return this.charCodeAt(this.pos+1)},nextNonWsCode:function(e){return this.charCodeAt(this.findWsEnd(e))},findWsEnd:function(e){for(;e<this.str.length;e++){var t=this.str.charCodeAt(e);if(13!==t&&10!==t&&12!==t&&32!==t&&9!==t)break}return e},substringToPos:function(e){return this.str.substring(this.pos,this.pos=e)},eat:function(e){this.charCode()!==e&&this.error("Expect `"+String.fromCharCode(e)+"`"),this.pos++;},peek:function(){return this.pos<this.str.length?this.str.charAt(this.pos++):""},error:function(e){throw new gt(e,this.str,this.pos)}};var bt=ft,yt=function(e){for(var t="function"==typeof Uint32Array?new Uint32Array(128):new Array(128),n=0;n<128;n++)t[n]=e(String.fromCharCode(n))?1:0;return t}((function(e){return /[a-zA-Z0-9\-]/.test(e)})),kt={" ":1,"&&":2,"||":3,"|":4};function vt(e){return e.substringToPos(e.findWsEnd(e.pos))}function xt(e){for(var t=e.pos;t<e.str.length;t++){var n=e.str.charCodeAt(t);if(n>=128||0===yt[n])break}return e.pos===t&&e.error("Expect a keyword"),e.substringToPos(t)}function wt(e){for(var t=e.pos;t<e.str.length;t++){var n=e.str.charCodeAt(t);if(n<48||n>57)break}return e.pos===t&&e.error("Expect a number"),e.substringToPos(t)}function St(e){var t=e.str.indexOf("'",e.pos+1);return -1===t&&(e.pos=e.str.length,e.error("Expect an apostrophe")),e.substringToPos(t+1)}function Ct(e){var t,n=null;return e.eat(123),t=wt(e),44===e.charCode()?(e.pos++,125!==e.charCode()&&(n=wt(e))):n=t,e.eat(125),{min:Number(t),max:n?Number(n):0}}function zt(e,t){var n=function(e){var t=null,n=!1;switch(e.charCode()){case 42:e.pos++,t={min:0,max:0};break;case 43:e.pos++,t={min:1,max:0};break;case 63:e.pos++,t={min:0,max:1};break;case 35:e.pos++,n=!0,t=123===e.charCode()?Ct(e):{min:1,max:0};break;case 123:t=Ct(e);break;default:return null}return {type:"Multiplier",comma:n,min:t.min,max:t.max,term:null}}(e);return null!==n?(n.term=t,n):t}function At(e){var t=e.peek();return ""===t?null:{type:"Token",value:t}}function Pt(e){var t,n=null;return e.eat(60),t=xt(e),40===e.charCode()&&41===e.nextCharCode()&&(e.pos+=2,t+="()"),91===e.charCodeAt(e.findWsEnd(e.pos))&&(vt(e),n=function(e){var t=null,n=null,r=1;return e.eat(91),45===e.charCode()&&(e.peek(),r=-1),-1==r&&8734===e.charCode()?e.peek():t=r*Number(wt(e)),vt(e),e.eat(44),vt(e),8734===e.charCode()?e.peek():(r=1,45===e.charCode()&&(e.peek(),r=-1),n=r*Number(wt(e))),e.eat(93),null===t&&null===n?null:{type:"Range",min:t,max:n}}(e)),e.eat(62),zt(e,{type:"Type",name:t,opts:n})}function Tt(e,t){function n(e,t){return {type:"Group",terms:e,combinator:t,disallowEmpty:!1,explicit:!1}}for(t=Object.keys(t).sort((function(e,t){return kt[e]-kt[t]}));t.length>0;){for(var r=t.shift(),i=0,a=0;i<e.length;i++){var o=e[i];"Combinator"===o.type&&(o.value===r?(-1===a&&(a=i-1),e.splice(i,1),i--):(-1!==a&&i-a>1&&(e.splice(a,i-a,n(e.slice(a,i),r)),i=a+1),a=-1));}-1!==a&&t.length&&e.splice(a,i-a,n(e.slice(a,i),r));}return r}function Lt(e){for(var t,n=[],r={},i=null,a=e.pos;t=Et(e);)"Spaces"!==t.type&&("Combinator"===t.type?(null!==i&&"Combinator"!==i.type||(e.pos=a,e.error("Unexpected combinator")),r[t.value]=!0):null!==i&&"Combinator"!==i.type&&(r[" "]=!0,n.push({type:"Combinator",value:" "})),n.push(t),i=t,a=e.pos);return null!==i&&"Combinator"===i.type&&(e.pos-=a,e.error("Unexpected combinator")),{type:"Group",terms:n,combinator:Tt(n,r)||" ",disallowEmpty:!1,explicit:!1}}function Et(e){var t=e.charCode();if(t<128&&1===yt[t])return function(e){var t;return t=xt(e),40===e.charCode()?(e.pos++,{type:"Function",name:t}):zt(e,{type:"Keyword",name:t})}(e);switch(t){case 93:break;case 91:return zt(e,function(e){var t;return e.eat(91),t=Lt(e),e.eat(93),t.explicit=!0,33===e.charCode()&&(e.pos++,t.disallowEmpty=!0),t}(e));case 60:return 39===e.nextCharCode()?function(e){var t;return e.eat(60),e.eat(39),t=xt(e),e.eat(39),e.eat(62),zt(e,{type:"Property",name:t})}(e):Pt(e);case 124:return {type:"Combinator",value:e.substringToPos(124===e.nextCharCode()?e.pos+2:e.pos+1)};case 38:return e.pos++,e.eat(38),{type:"Combinator",value:"&&"};case 44:return e.pos++,{type:"Comma"};case 39:return zt(e,{type:"String",value:St(e)});case 32:case 9:case 10:case 13:case 12:return {type:"Spaces",value:vt(e)};case 64:return (t=e.nextCharCode())<128&&1===yt[t]?(e.pos++,{type:"AtKeyword",name:xt(e)}):At(e);case 42:case 43:case 63:case 35:case 33:break;case 123:if((t=e.nextCharCode())<48||t>57)return At(e);break;default:return At(e)}}function Dt(e){var t=new bt(e),n=Lt(t);return t.pos!==e.length&&t.error("Unexpected input"),1===n.terms.length&&"Group"===n.terms[0].type&&(n=n.terms[0]),n}Dt("[a&&<b>#|<'c'>*||e() f{2} /,(% g#{1,2} h{2,})]!");var Ot=Dt,Bt=function(){};function It(e){return "function"==typeof e?e:Bt}var Nt=function(e,t,n){var r=Bt,i=Bt;if("function"==typeof t?r=t:t&&(r=It(t.enter),i=It(t.leave)),r===Bt&&i===Bt)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");!function e(t){switch(r.call(n,t),t.type){case"Group":t.terms.forEach(e);break;case"Multiplier":e(t.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+t.type)}i.call(n,t);}(e);},Rt=new H,Mt={decorator:function(e){var t=null,n={len:0,node:null},r=[n],i="";return {children:e.children,node:function(n){var r=t;t=n,e.node.call(this,n),t=r;},chunk:function(e){i+=e,n.node!==t?r.push({len:e.length,node:t}):n.len+=e.length;},result:function(){return jt(i,r)}}}};function jt(e,t){var n=[],r=0,i=0,a=t?t[i].node:null;for(Ce(e,Rt);!Rt.eof;){if(t)for(;i<t.length&&r+t[i].len<=Rt.tokenStart;)r+=t[i++].len,a=t[i].node;n.push({type:Rt.tokenType,value:Rt.getTokenValue(),index:Rt.tokenIndex,balance:Rt.balance[Rt.tokenIndex],node:a}),Rt.next();}return n}var _t={type:"Match"},Ft={type:"Mismatch"},Wt={type:"DisallowEmpty"};function qt(e,t,n){return t===_t&&n===Ft||e===_t&&t===_t&&n===_t?e:("If"===e.type&&e.else===Ft&&t===_t&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:n})}function Yt(e){return e.length>2&&40===e.charCodeAt(e.length-2)&&41===e.charCodeAt(e.length-1)}function Ut(e){return "Keyword"===e.type||"AtKeyword"===e.type||"Function"===e.type||"Type"===e.type&&Yt(e.name)}function Ht(e){if("function"==typeof e)return {type:"Generic",fn:e};switch(e.type){case"Group":var t=function e(t,n,r){switch(t){case" ":for(var i=_t,a=n.length-1;a>=0;a--){i=qt(l=n[a],i,Ft);}return i;case"|":i=Ft;var o=null;for(a=n.length-1;a>=0;a--){if(Ut(l=n[a])&&(null===o&&a>0&&Ut(n[a-1])&&(i=qt({type:"Enum",map:o=Object.create(null)},_t,i)),null!==o)){var s=(Yt(l.name)?l.name.slice(0,-1):l.name).toLowerCase();if(s in o==!1){o[s]=l;continue}}o=null,i=qt(l,_t,i);}return i;case"&&":if(n.length>5)return {type:"MatchOnce",terms:n,all:!0};for(i=Ft,a=n.length-1;a>=0;a--){var l=n[a];c=n.length>1?e(t,n.filter((function(e){return e!==l})),!1):_t,i=qt(l,c,i);}return i;case"||":if(n.length>5)return {type:"MatchOnce",terms:n,all:!1};for(i=r?_t:Ft,a=n.length-1;a>=0;a--){var c;l=n[a];c=n.length>1?e(t,n.filter((function(e){return e!==l})),!0):_t,i=qt(l,c,i);}return i}}(e.combinator,e.terms.map(Ht),!1);return e.disallowEmpty&&(t=qt(t,Wt,Ft)),t;case"Multiplier":return function(e){var t=_t,n=Ht(e.term);if(0===e.max)n=qt(n,Wt,Ft),(t=qt(n,null,Ft)).then=qt(_t,_t,t),e.comma&&(t.then.else=qt({type:"Comma",syntax:e},t,Ft));else for(var r=e.min||1;r<=e.max;r++)e.comma&&t!==_t&&(t=qt({type:"Comma",syntax:e},t,Ft)),t=qt(n,qt(_t,_t,t),Ft);if(0===e.min)t=qt(_t,_t,t);else for(r=0;r<e.min-1;r++)e.comma&&t!==_t&&(t=qt({type:"Comma",syntax:e},t,Ft)),t=qt(n,t,Ft);return t}(e);case"Type":case"Property":return {type:e.type,name:e.name,syntax:e};case"Keyword":return {type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return {type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return {type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return 3===e.value.length?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return {type:e.type,value:e.value,syntax:e};case"Comma":return {type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}var Vt=_t,Kt=Ft,Gt=Wt,Qt=function(e,t){return "string"==typeof e&&(e=Ot(e)),{type:"MatchGraph",match:Ht(e),syntax:t||null,source:e}},Xt=Object.prototype.hasOwnProperty,Zt=Vt,$t=Kt,Jt=Gt,en=h.TYPE;function tn(e){for(var t=null,n=null,r=e;null!==r;)n=r.prev,r.prev=t,t=r,r=n;return t}function nn(e,t){if(e.length!==t.length)return !1;for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r>=65&&r<=90&&(r|=32),r!==t.charCodeAt(n))return !1}return !0}function rn(e){return null===e||(e.type===en.Comma||e.type===en.Function||e.type===en.LeftParenthesis||e.type===en.LeftSquareBracket||e.type===en.LeftCurlyBracket||function(e){return e.type===en.Delim&&"?"!==e.value}(e))}function an(e){return null===e||(e.type===en.RightParenthesis||e.type===en.RightSquareBracket||e.type===en.RightCurlyBracket||e.type===en.Delim)}function on(e,t,n){function r(){do{b++,f=b<e.length?e[b]:null;}while(null!==f&&(f.type===en.WhiteSpace||f.type===en.Comment))}function i(t){var n=b+t;return n<e.length?e[n]:null}function a(e,t){return {nextState:e,matchStack:k,syntaxStack:u,thenStack:h,tokenIndex:b,prev:t}}function o(e){h={nextState:e,matchStack:k,syntaxStack:u,prev:h};}function s(e){p=a(e,p);}function l(){k={type:1,syntax:t.syntax,token:f,prev:k},r(),d=null,b>y&&(y=b);}function c(){k=2===k.type?k.prev:{type:3,syntax:u.syntax,token:k.token,prev:k},u=u.prev;}var u=null,h=null,p=null,d=null,m=0,g=null,f=null,b=-1,y=0,k={type:0,syntax:null,token:null,prev:null};for(r();null===g&&++m<15e3;)switch(t.type){case"Match":if(null===h){if(null!==f&&(b!==e.length-1||"\\0"!==f.value&&"\\9"!==f.value)){t=$t;break}g="Match";break}if((t=h.nextState)===Jt){if(h.matchStack===k){t=$t;break}t=Zt;}for(;h.syntaxStack!==u;)c();h=h.prev;break;case"Mismatch":if(null!==d&&!1!==d)(null===p||b>p.tokenIndex)&&(p=d,d=!1);else if(null===p){g="Mismatch";break}t=p.nextState,h=p.thenStack,u=p.syntaxStack,k=p.matchStack,b=p.tokenIndex,f=b<e.length?e[b]:null,p=p.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==$t&&s(t.else),t.then!==Zt&&o(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":var v=t.syntax.terms;if(t.index===v.length){if(0===t.mask||t.syntax.all){t=$t;break}t=Zt;break}if(t.mask===(1<<v.length)-1){t=Zt;break}for(;t.index<v.length;t.index++){var x=1<<t.index;if(0==(t.mask&x)){s(t),o({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|x}),t=v[t.index++];break}}break;case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(null!==f)if(-1!==(A=f.value.toLowerCase()).indexOf("\\")&&(A=A.replace(/\\[09].*$/,"")),Xt.call(t.map,A)){t=t.map[A];break}t=$t;break;case"Generic":var w=null!==u?u.opts:null,S=b+Math.floor(t.fn(f,i,w));if(!isNaN(S)&&S>b){for(;b<S;)l();t=Zt;}else t=$t;break;case"Type":case"Property":var C="Type"===t.type?"types":"properties",z=Xt.call(n,C)?n[C][t.name]:null;if(!z||!z.match)throw new Error("Bad syntax reference: "+("Type"===t.type?"<"+t.name+">":"<'"+t.name+"'>"));if(!1!==d&&null!==f&&"Type"===t.type)if("custom-ident"===t.name&&f.type===en.Ident||"length"===t.name&&"0"===f.value){null===d&&(d=a(t,p)),t=$t;break}u={syntax:t.syntax,opts:t.syntax.opts||null!==u&&u.opts||null,prev:u},k={type:2,syntax:t.syntax,token:k.token,prev:k},t=z.match;break;case"Keyword":var A=t.name;if(null!==f){var P=f.value;if(-1!==P.indexOf("\\")&&(P=P.replace(/\\[09].*$/,"")),nn(P,A)){l(),t=Zt;break}}t=$t;break;case"AtKeyword":case"Function":if(null!==f&&nn(f.value,t.name)){l(),t=Zt;break}t=$t;break;case"Token":if(null!==f&&f.value===t.value){l(),t=Zt;break}t=$t;break;case"Comma":null!==f&&f.type===en.Comma?rn(k.token)?t=$t:(l(),t=an(f)?$t:Zt):t=rn(k.token)||an(f)?Zt:$t;break;case"String":var T="";for(S=b;S<e.length&&T.length<t.value.length;S++)T+=e[S].value;if(nn(T,t.value)){for(;b<S;)l();t=Zt;}else t=$t;break;default:throw new Error("Unknown node type: "+t.type)}switch(g){case null:console.warn("[csstree-match] BREAK after 15000 iterations"),g="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",k=null;break;case"Match":for(;null!==u;)c();break;default:k=null;}return {tokens:e,reason:g,iterations:m,match:k,longestMatch:y}}var sn=function(e,t,n){var r=on(e,t,n||{});if(null===r.match)return r;var i=r.match,a=r.match={syntax:t.syntax||null,match:[]},o=[a];for(i=tn(i).prev;null!==i;){switch(i.type){case 2:a.match.push(a={syntax:i.syntax,match:[]}),o.push(a);break;case 3:o.pop(),a=o[o.length-1];break;default:a.match.push({syntax:i.syntax||null,token:i.token.value,node:i.token.node});}i=i.prev;}return r};function ln(e){function t(e){return null!==e&&("Type"===e.type||"Property"===e.type||"Keyword"===e.type)}var n=null;return null!==this.matched&&function r(i){if(Array.isArray(i.match)){for(var a=0;a<i.match.length;a++)if(r(i.match[a]))return t(i.syntax)&&n.unshift(i.syntax),!0}else if(i.node===e)return n=t(i.syntax)?[i.syntax]:[],!0;return !1}(this.matched),n}function cn(e,t,n){var r=ln.call(e,t);return null!==r&&r.some(n)}var un={getTrace:ln,isType:function(e,t){return cn(this,e,(function(e){return "Type"===e.type&&e.name===t}))},isProperty:function(e,t){return cn(this,e,(function(e){return "Property"===e.type&&e.name===t}))},isKeyword:function(e){return cn(this,e,(function(e){return "Keyword"===e.type}))}};var hn={matchFragments:function(e,t,n,r,i){var o=[];return null!==n.matched&&function n(s){if(null!==s.syntax&&s.syntax.type===r&&s.syntax.name===i){var l=function e(t){return "node"in t?t.node:e(t.match[0])}(s),c=function e(t){return "node"in t?t.node:e(t.match[t.match.length-1])}(s);e.syntax.walk(t,(function(e,t,n){if(e===l){var r=new a;do{if(r.appendData(t.data),t.data===c)break;t=t.next;}while(null!==t);o.push({parent:n,nodes:r});}}));}Array.isArray(s.match)&&s.match.forEach(n);}(n.matched),o}},pn=Object.prototype.hasOwnProperty;function dn(e){return "number"==typeof e&&isFinite(e)&&Math.floor(e)===e&&e>=0}function mn(e){return Boolean(e)&&dn(e.offset)&&dn(e.line)&&dn(e.column)}function gn(e,t){return function(n,r){if(!n||n.constructor!==Object)return r(n,"Type of node should be an Object");for(var i in n){var o=!0;if(!1!==pn.call(n,i)){if("type"===i)n.type!==e&&r(n,"Wrong node type `"+n.type+"`, expected `"+e+"`");else if("loc"===i){if(null===n.loc)continue;if(n.loc&&n.loc.constructor===Object)if("string"!=typeof n.loc.source)i+=".source";else if(mn(n.loc.start)){if(mn(n.loc.end))continue;i+=".end";}else i+=".start";o=!1;}else if(t.hasOwnProperty(i)){var s=0;for(o=!1;!o&&s<t[i].length;s++){var l=t[i][s];switch(l){case String:o="string"==typeof n[i];break;case Boolean:o="boolean"==typeof n[i];break;case null:o=null===n[i];break;default:"string"==typeof l?o=n[i]&&n[i].type===l:Array.isArray(l)&&(o=n[i]instanceof a);}}}else r(n,"Unknown field `"+i+"` for "+e+" node type");o||r(n,"Bad value for `"+e+"."+i+"`");}}for(var i in t)pn.call(t,i)&&!1===pn.call(n,i)&&r(n,"Field `"+e+"."+i+"` is missed");}}function fn(e,t){var n=t.structure,r={type:String,loc:!0},i={type:'"'+e+'"'};for(var a in n)if(!1!==pn.call(n,a)){for(var o=[],s=r[a]=Array.isArray(n[a])?n[a].slice():[n[a]],l=0;l<s.length;l++){var c=s[l];if(c===String||c===Boolean)o.push(c.name);else if(null===c)o.push("null");else if("string"==typeof c)o.push("<"+c+">");else {if(!Array.isArray(c))throw new Error("Wrong value `"+c+"` in `"+e+"."+a+"` structure definition");o.push("List");}}i[a]=o.join(" | ");}return {docs:i,check:gn(e,r)}}var bn=$,yn=J,kn=Qt,vn=sn,xn=function(e){var t={};if(e.node)for(var n in e.node)if(pn.call(e.node,n)){var r=e.node[n];if(!r.structure)throw new Error("Missed `structure` field in `"+n+"` node type definition");t[n]=fn(n,r);}return t},wn=kn("inherit | initial | unset"),Sn=kn("inherit | initial | unset | <-ms-legacy-expression>");function Cn(e,t,n){var r={};for(var i in e)e[i].syntax&&(r[i]=n?e[i].syntax:G(e[i].syntax,{compact:t}));return r}function zn(e,t,n){const r={};for(const[i,a]of Object.entries(e))r[i]={prelude:a.prelude&&(n?a.prelude.syntax:G(a.prelude.syntax,{compact:t})),descriptors:a.descriptors&&Cn(a.descriptors,t,n)};return r}function An(e,t,n){return {matched:e,iterations:n,error:t,getTrace:un.getTrace,isType:un.isType,isProperty:un.isProperty,isKeyword:un.isKeyword}}function Pn(e,t,n,r){var i,a=function(e,t){return "string"==typeof e?jt(e,null):t.generate(e,Mt)}(n,e.syntax);return function(e){for(var t=0;t<e.length;t++)if("var("===e[t].value.toLowerCase())return !0;return !1}(a)?An(null,new Error("Matching for a tree with var() is not supported")):(r&&(i=vn(a,e.valueCommonSyntax,e)),r&&i.match||(i=vn(a,t.match,e)).match?An(i.match,null,i.iterations):An(null,new yn(i.reason,t.syntax,n,i),i.iterations))}var Tn=function(e,t,n){if(this.valueCommonSyntax=wn,this.syntax=t,this.generic=!1,this.atrules={},this.properties={},this.types={},this.structure=n||xn(e),e){if(e.types)for(var r in e.types)this.addType_(r,e.types[r]);if(e.generic)for(var r in this.generic=!0,mt)this.addType_(r,mt[r]);if(e.atrules)for(var r in e.atrules)this.addAtrule_(r,e.atrules[r]);if(e.properties)for(var r in e.properties)this.addProperty_(r,e.properties[r]);}};Tn.prototype={structure:{},checkStructure:function(e){function t(e,t){r.push({node:e,message:t});}var n=this.structure,r=[];return this.syntax.walk(e,(function(e){n.hasOwnProperty(e.type)?n[e.type].check(e,t):t(e,"Unknown node type `"+e.type+"`");})),!!r.length&&r},createDescriptor:function(e,t,n,r=null){var i={type:t,name:n},a={type:t,name:n,parent:r,syntax:null,match:null};return "function"==typeof e?a.match=kn(e,i):("string"==typeof e?Object.defineProperty(a,"syntax",{get:function(){return Object.defineProperty(a,"syntax",{value:Ot(e)}),a.syntax}}):a.syntax=e,Object.defineProperty(a,"match",{get:function(){return Object.defineProperty(a,"match",{value:kn(a.syntax,i)}),a.match}})),a},addAtrule_:function(e,t){t&&(this.atrules[e]={type:"Atrule",name:e,prelude:t.prelude?this.createDescriptor(t.prelude,"AtrulePrelude",e):null,descriptors:t.descriptors?Object.keys(t.descriptors).reduce((n,r)=>(n[r]=this.createDescriptor(t.descriptors[r],"AtruleDescriptor",r,e),n),{}):null});},addProperty_:function(e,t){t&&(this.properties[e]=this.createDescriptor(t,"Property",e));},addType_:function(e,t){t&&(this.types[e]=this.createDescriptor(t,"Type",e),t===mt["-ms-legacy-expression"]&&(this.valueCommonSyntax=Sn));},checkAtruleName:function(e){if(!this.getAtrule(e))return new bn("Unknown at-rule","@"+e)},checkAtrulePrelude:function(e,t){let n=this.checkAtruleName(e);if(n)return n;var r=this.getAtrule(e);return !r.prelude&&t?new SyntaxError("At-rule `@"+e+"` should not contain a prelude"):r.prelude&&!t?new SyntaxError("At-rule `@"+e+"` should contain a prelude"):void 0},checkAtruleDescriptorName:function(e,t){let n=this.checkAtruleName(e);if(n)return n;var r=this.getAtrule(e),i=ae.keyword(t);return r.descriptors?r.descriptors[i.name]||r.descriptors[i.basename]?void 0:new bn("Unknown at-rule descriptor",t):new SyntaxError("At-rule `@"+e+"` has no known descriptors")},checkPropertyName:function(e){return ae.property(e).custom?new Error("Lexer matching doesn't applicable for custom properties"):this.getProperty(e)?void 0:new bn("Unknown property",e)},matchAtrulePrelude:function(e,t){var n=this.checkAtrulePrelude(e,t);return n?An(null,n):t?Pn(this,this.getAtrule(e).prelude,t,!0):An(null,null)},matchAtruleDescriptor:function(e,t,n){var r=this.checkAtruleDescriptorName(e,t);if(r)return An(null,r);var i=this.getAtrule(e),a=ae.keyword(t);return Pn(this,i.descriptors[a.name]||i.descriptors[a.basename],n,!0)},matchDeclaration:function(e){return "Declaration"!==e.type?An(null,new Error("Not a Declaration node")):this.matchProperty(e.property,e.value)},matchProperty:function(e,t){var n=this.checkPropertyName(e);return n?An(null,n):Pn(this,this.getProperty(e),t,!0)},matchType:function(e,t){var n=this.getType(e);return n?Pn(this,n,t,!1):An(null,new bn("Unknown type",e))},match:function(e,t){return "string"==typeof e||e&&e.type?("string"!=typeof e&&e.match||(e=this.createDescriptor(e,"Type","anonymous")),Pn(this,e,t,!1)):An(null,new bn("Bad syntax"))},findValueFragments:function(e,t,n,r){return hn.matchFragments(this,t,this.matchProperty(e,t),n,r)},findDeclarationValueFragments:function(e,t,n){return hn.matchFragments(this,e.value,this.matchDeclaration(e),t,n)},findAllFragments:function(e,t,n){var r=[];return this.syntax.walk(e,{visit:"Declaration",enter:function(e){r.push.apply(r,this.findDeclarationValueFragments(e,t,n));}.bind(this)}),r},getAtrule:function(e,t=!0){var n=ae.keyword(e);return (n.vendor&&t?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null},getAtrulePrelude:function(e,t=!0){const n=this.getAtrule(e,t);return n&&n.prelude||null},getAtruleDescriptor:function(e,t){return this.atrules.hasOwnProperty(e)&&this.atrules.declarators&&this.atrules[e].declarators[t]||null},getProperty:function(e,t=!0){var n=ae.property(e);return (n.vendor&&t?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null},getType:function(e){return this.types.hasOwnProperty(e)?this.types[e]:null},validate:function(){function e(r,i,a,o){if(a.hasOwnProperty(i))return a[i];a[i]=!1,null!==o.syntax&&Nt(o.syntax,(function(o){if("Type"===o.type||"Property"===o.type){var s="Type"===o.type?r.types:r.properties,l="Type"===o.type?t:n;s.hasOwnProperty(o.name)&&!e(r,o.name,l,s[o.name])||(a[i]=!0);}}),this);}var t={},n={};for(var r in this.types)e(this,r,t,this.types[r]);for(var r in this.properties)e(this,r,n,this.properties[r]);return t=Object.keys(t).filter((function(e){return t[e]})),n=Object.keys(n).filter((function(e){return n[e]})),t.length||n.length?{types:t,properties:n}:null},dump:function(e,t){return {generic:this.generic,types:Cn(this.types,!t,e),properties:Cn(this.properties,!t,e),atrules:zn(this.atrules,!t,e)}},toString:function(){return JSON.stringify(this.dump())}};var Ln=Tn,En={SyntaxError:gt,parse:Ot,generate:G,walk:Nt},Dn=Ce.isBOM;var On=function(){this.lines=null,this.columns=null,this.linesAndColumnsComputed=!1;};On.prototype={setSource:function(e,t,n,r){this.source=e,this.startOffset=void 0===t?0:t,this.startLine=void 0===n?1:n,this.startColumn=void 0===r?1:r,this.linesAndColumnsComputed=!1;},ensureLinesAndColumnsComputed:function(){this.linesAndColumnsComputed||(!function(e,t){for(var n=t.length,r=se(e.lines,n),i=e.startLine,a=se(e.columns,n),o=e.startColumn,s=t.length>0?Dn(t.charCodeAt(0)):0;s<n;s++){var l=t.charCodeAt(s);r[s]=i,a[s]=o++,10!==l&&13!==l&&12!==l||(13===l&&s+1<n&&10===t.charCodeAt(s+1)&&(r[++s]=i,a[s]=o),i++,o=1);}r[s]=i,a[s]=o,e.lines=r,e.columns=a;}(this,this.source),this.linesAndColumnsComputed=!0);},getLocation:function(e,t){return this.ensureLinesAndColumnsComputed(),{source:t,offset:this.startOffset+e,line:this.lines[e],column:this.columns[e]}},getLocationRange:function(e,t,n){return this.ensureLinesAndColumnsComputed(),{source:n,start:{offset:this.startOffset+e,line:this.lines[e],column:this.columns[e]},end:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}}};var Bn=On,In=Ce.TYPE,Nn=In.WhiteSpace,Rn=In.Comment,Mn=function(e){var t=this.createList(),n=null,r={recognizer:e,space:null,ignoreWS:!1,ignoreWSAfter:!1};for(this.scanner.skipSC();!this.scanner.eof;){switch(this.scanner.tokenType){case Rn:this.scanner.next();continue;case Nn:r.ignoreWS?this.scanner.next():r.space=this.WhiteSpace();continue}if(void 0===(n=e.getNode.call(this,r)))break;null!==r.space&&(t.push(r.space),r.space=null),t.push(n),r.ignoreWSAfter?(r.ignoreWSAfter=!1,r.ignoreWS=!0):r.ignoreWS=!1;}return t},{findWhiteSpaceStart:jn,cmpStr:_n}=M,Fn=function(){},Wn=h.TYPE,qn=h.NAME,Yn=Wn.WhiteSpace,Un=Wn.Comment,Hn=Wn.Ident,Vn=Wn.Function,Kn=Wn.Url,Gn=Wn.Hash,Qn=Wn.Percentage,Xn=Wn.Number;function Zn(e){return function(){return this[e]()}}var $n=function(e){var t={scanner:new H,locationMap:new Bn,filename:"<unknown>",needPositions:!1,onParseError:Fn,onParseErrorThrow:!1,parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Mn,createList:function(){return new a},createSingleNodeList:function(e){return (new a).appendData(e)},getFirstListNode:function(e){return e&&e.first()},getLastListNode:function(e){return e.last()},parseWithFallback:function(e,t){var n=this.scanner.tokenIndex;try{return e.call(this)}catch(e){if(this.onParseErrorThrow)throw e;var r=t.call(this,n);return this.onParseErrorThrow=!0,this.onParseError(e,r),this.onParseErrorThrow=!1,r}},lookupNonWSType:function(e){do{var t=this.scanner.lookupType(e++);if(t!==Yn)return t}while(0!==t);return 0},eat:function(e){if(this.scanner.tokenType!==e){var t=this.scanner.tokenStart,n=qn[e]+" is expected";switch(e){case Hn:this.scanner.tokenType===Vn||this.scanner.tokenType===Kn?(t=this.scanner.tokenEnd-1,n="Identifier is expected but function found"):n="Identifier is expected";break;case Gn:this.scanner.isDelim(35)&&(this.scanner.next(),t++,n="Name is expected");break;case Qn:this.scanner.tokenType===Xn&&(t=this.scanner.tokenEnd,n="Percent sign is expected");break;default:this.scanner.source.charCodeAt(this.scanner.tokenStart)===e&&(t+=1);}this.error(n,t);}this.scanner.next();},consume:function(e){var t=this.scanner.getTokenValue();return this.eat(e),t},consumeFunctionName:function(){var e=this.scanner.source.substring(this.scanner.tokenStart,this.scanner.tokenEnd-1);return this.eat(Vn),e},getLocation:function(e,t){return this.needPositions?this.locationMap.getLocationRange(e,t,this.filename):null},getLocationFromList:function(e){if(this.needPositions){var t=this.getFirstListNode(e),n=this.getLastListNode(e);return this.locationMap.getLocationRange(null!==t?t.loc.start.offset-this.locationMap.startOffset:this.scanner.tokenStart,null!==n?n.loc.end.offset-this.locationMap.startOffset:this.scanner.tokenStart,this.filename)}return null},error:function(e,t){var n=void 0!==t&&t<this.scanner.source.length?this.locationMap.getLocation(t):this.scanner.eof?this.locationMap.getLocation(jn(this.scanner.source,this.scanner.source.length-1)):this.locationMap.getLocation(this.scanner.tokenStart);throw new l(e||"Unexpected input",this.scanner.source,n.offset,n.line,n.column)}};for(var n in e=function(e){var t={context:{},scope:{},atrule:{},pseudo:{}};if(e.parseContext)for(var n in e.parseContext)switch(typeof e.parseContext[n]){case"function":t.context[n]=e.parseContext[n];break;case"string":t.context[n]=Zn(e.parseContext[n]);}if(e.scope)for(var n in e.scope)t.scope[n]=e.scope[n];if(e.atrule)for(var n in e.atrule){var r=e.atrule[n];r.parse&&(t.atrule[n]=r.parse);}if(e.pseudo)for(var n in e.pseudo){var i=e.pseudo[n];i.parse&&(t.pseudo[n]=i.parse);}if(e.node)for(var n in e.node)t[n]=e.node[n].parse;return t}(e||{}))t[n]=e[n];return function(e,n){var r,i=(n=n||{}).context||"default",a=n.onComment;if(Ce(e,t.scanner),t.locationMap.setSource(e,n.offset,n.line,n.column),t.filename=n.filename||"<unknown>",t.needPositions=Boolean(n.positions),t.onParseError="function"==typeof n.onParseError?n.onParseError:Fn,t.onParseErrorThrow=!1,t.parseAtrulePrelude=!("parseAtrulePrelude"in n)||Boolean(n.parseAtrulePrelude),t.parseRulePrelude=!("parseRulePrelude"in n)||Boolean(n.parseRulePrelude),t.parseValue=!("parseValue"in n)||Boolean(n.parseValue),t.parseCustomProperty="parseCustomProperty"in n&&Boolean(n.parseCustomProperty),!t.context.hasOwnProperty(i))throw new Error("Unknown context `"+i+"`");return "function"==typeof a&&t.scanner.forEachToken((n,r,i)=>{if(n===Un){const n=t.getLocation(r,i),o=_n(e,i-2,i,"*/")?e.slice(r+2,i-2):e.slice(r+2,i);a(o,n);}}),r=t.context[i].call(t,n),t.scanner.eof||t.error(),r}},Jn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),er=function(e){if(0<=e&&e<Jn.length)return Jn[e];throw new TypeError("Must be between 0 and 63: "+e)};var tr=function(e){var t,n="",r=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&r,(r>>>=5)>0&&(t|=32),n+=er(t);}while(r>0);return n};var nr=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){t.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,r=/^data:.+\,.+$/;function i(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function a(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function o(e){var n=e,r=i(e);if(r){if(!r.path)return e;n=r.path;}for(var o,s=t.isAbsolute(n),l=n.split(/\/+/),c=0,u=l.length-1;u>=0;u--)"."===(o=l[u])?l.splice(u,1):".."===o?c++:c>0&&(""===o?(l.splice(u+1,c),c=0):(l.splice(u,2),c--));return ""===(n=l.join("/"))&&(n=s?"/":"."),r?(r.path=n,a(r)):n}function s(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),s=i(e);if(s&&(e=s.path||"/"),n&&!n.scheme)return s&&(n.scheme=s.scheme),a(n);if(n||t.match(r))return t;if(s&&!s.host&&!s.path)return s.host=t,a(s);var l="/"===t.charAt(0)?t:o(e.replace(/\/+$/,"")+"/"+t);return s?(s.path=l,a(s)):l}t.urlParse=i,t.urlGenerate=a,t.normalize=o,t.join=s,t.isAbsolute=function(e){return "/"===e.charAt(0)||n.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n;}return Array(n+1).join("../")+t.substr(e.length+1)};var l=!("__proto__"in Object.create(null));function c(e){return e}function u(e){if(!e)return !1;var t=e.length;if(t<9)return !1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return !1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return !1;return !0}function h(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=l?c:function(e){return u(e)?"$"+e:e},t.fromSetString=l?c:function(e){return u(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,n){var r=h(e.source,t.source);return 0!==r||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)||n||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=e.generatedLine-t.generatedLine)?r:h(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r||0!==(r=e.generatedColumn-t.generatedColumn)||n||0!==(r=h(e.source,t.source))||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:h(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=h(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:h(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var r=i(n);if(!r)throw new Error("sourceMapURL could not be parsed");if(r.path){var l=r.path.lastIndexOf("/");l>=0&&(r.path=r.path.substring(0,l+1));}t=s(a(r),t);}return o(t)};})),rr=(nr.getArg,nr.urlParse,nr.urlGenerate,nr.normalize,nr.join,nr.isAbsolute,nr.relative,nr.toSetString,nr.fromSetString,nr.compareByOriginalPositions,nr.compareByGeneratedPositionsDeflated,nr.compareByGeneratedPositionsInflated,nr.parseSourceMapInput,nr.computeSourceURL,Object.prototype.hasOwnProperty),ir="undefined"!=typeof Map;function ar(){this._array=[],this._set=ir?new Map:Object.create(null);}ar.fromArray=function(e,t){for(var n=new ar,r=0,i=e.length;r<i;r++)n.add(e[r],t);return n},ar.prototype.size=function(){return ir?this._set.size:Object.getOwnPropertyNames(this._set).length},ar.prototype.add=function(e,t){var n=ir?e:nr.toSetString(e),r=ir?this.has(e):rr.call(this._set,n),i=this._array.length;r&&!t||this._array.push(e),r||(ir?this._set.set(e,i):this._set[n]=i);},ar.prototype.has=function(e){if(ir)return this._set.has(e);var t=nr.toSetString(e);return rr.call(this._set,t)},ar.prototype.indexOf=function(e){if(ir){var t=this._set.get(e);if(t>=0)return t}else {var n=nr.toSetString(e);if(rr.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},ar.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},ar.prototype.toArray=function(){return this._array.slice()};var or={ArraySet:ar};function sr(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0};}sr.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t);},sr.prototype.add=function(e){var t,n,r,i,a,o;t=this._last,n=e,r=t.generatedLine,i=n.generatedLine,a=t.generatedColumn,o=n.generatedColumn,i>r||i==r&&o>=a||nr.compareByGeneratedPositionsInflated(t,n)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e));},sr.prototype.toArray=function(){return this._sorted||(this._array.sort(nr.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};var lr=or.ArraySet,cr={MappingList:sr}.MappingList;function ur(e){e||(e={}),this._file=nr.getArg(e,"file",null),this._sourceRoot=nr.getArg(e,"sourceRoot",null),this._skipValidation=nr.getArg(e,"skipValidation",!1),this._sources=new lr,this._names=new lr,this._mappings=new cr,this._sourcesContents=null;}ur.prototype._version=3,ur.fromSourceMap=function(e){var t=e.sourceRoot,n=new ur({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=t&&(r.source=nr.relative(t,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),n.addMapping(r);})),e.sources.forEach((function(r){var i=r;null!==t&&(i=nr.relative(t,r)),n._sources.has(i)||n._sources.add(i);var a=e.sourceContentFor(r);null!=a&&n.setSourceContent(r,a);})),n},ur.prototype.addMapping=function(e){var t=nr.getArg(e,"generated"),n=nr.getArg(e,"original",null),r=nr.getArg(e,"source",null),i=nr.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i});},ur.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=nr.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[nr.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[nr.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null));},ur.prototype.applySourceMap=function(e,t,n){var r=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=e.file;}var i=this._sourceRoot;null!=i&&(r=nr.relative(i,r));var a=new lr,o=new lr;this._mappings.unsortedForEach((function(t){if(t.source===r&&null!=t.originalLine){var s=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=s.source&&(t.source=s.source,null!=n&&(t.source=nr.join(n,t.source)),null!=i&&(t.source=nr.relative(i,t.source)),t.originalLine=s.line,t.originalColumn=s.column,null!=s.name&&(t.name=s.name));}var l=t.source;null==l||a.has(l)||a.add(l);var c=t.name;null==c||o.has(c)||o.add(c);}),this),this._sources=a,this._names=o,e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&(null!=n&&(t=nr.join(n,t)),null!=i&&(t=nr.relative(i,t)),this.setSourceContent(t,r));}),this);},ur.prototype._validateMapping=function(e,t,n,r){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},ur.prototype._serializeMappings=function(){for(var e,t,n,r,i=0,a=1,o=0,s=0,l=0,c=0,u="",h=this._mappings.toArray(),p=0,d=h.length;p<d;p++){if(e="",(t=h[p]).generatedLine!==a)for(i=0;t.generatedLine!==a;)e+=";",a++;else if(p>0){if(!nr.compareByGeneratedPositionsInflated(t,h[p-1]))continue;e+=",";}e+=tr(t.generatedColumn-i),i=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=tr(r-c),c=r,e+=tr(t.originalLine-1-s),s=t.originalLine-1,e+=tr(t.originalColumn-o),o=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=tr(n-l),l=n)),u+=e;}return u},ur.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=nr.relative(t,e));var n=nr.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)},ur.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},ur.prototype.toString=function(){return JSON.stringify(this.toJSON())};var hr={SourceMapGenerator:ur}.SourceMapGenerator,pr={Atrule:!0,Selector:!0,Declaration:!0},dr=Object.prototype.hasOwnProperty;function mr(e,t){var n=e.children,r=null;"function"!=typeof t?n.forEach(this.node,this):n.forEach((function(e){null!==r&&t.call(this,r),this.node(e),r=e;}),this);}var gr=function(e){function t(e){if(!dr.call(n,e.type))throw new Error("Unknown node type: "+e.type);n[e.type].call(this,e);}var n={};if(e.node)for(var r in e.node)n[r]=e.node[r].generate;return function(e,n){var r="",i={children:mr,node:t,chunk:function(e){r+=e;},result:function(){return r}};return n&&("function"==typeof n.decorator&&(i=n.decorator(i)),n.sourceMap&&(i=function(e){var t=new hr,n=1,r=0,i={line:1,column:0},a={line:0,column:0},o=!1,s={line:1,column:0},l={generated:s},c=e.node;e.node=function(e){if(e.loc&&e.loc.start&&pr.hasOwnProperty(e.type)){var u=e.loc.start.line,h=e.loc.start.column-1;a.line===u&&a.column===h||(a.line=u,a.column=h,i.line=n,i.column=r,o&&(o=!1,i.line===s.line&&i.column===s.column||t.addMapping(l)),o=!0,t.addMapping({source:e.loc.source,original:a,generated:i}));}c.call(this,e),o&&pr.hasOwnProperty(e.type)&&(s.line=n,s.column=r);};var u=e.chunk;e.chunk=function(e){for(var t=0;t<e.length;t++)10===e.charCodeAt(t)?(n++,r=0):r++;u(e);};var h=e.result;return e.result=function(){return o&&t.addMapping(l),{css:h(),map:t}},e}(i))),i.node(e),i.result()}},fr=Object.prototype.hasOwnProperty,br=function(){};function yr(e){return "function"==typeof e?e:br}function kr(e,t){return function(n,r,i){n.type===t&&e.call(this,n,r,i);}}function vr(e,t){var n=t.structure,r=[];for(var i in n)if(!1!==fr.call(n,i)){var a=n[i],o={name:i,type:!1,nullable:!1};Array.isArray(n[i])||(a=[n[i]]);for(var s=0;s<a.length;s++){var l=a[s];null===l?o.nullable=!0:"string"==typeof l?o.type="node":Array.isArray(l)&&(o.type="list");}o.type&&r.push(o);}return r.length?{context:t.walkContext,fields:r}:null}function xr(e,t){var n=e.fields.slice(),r=e.context,i="string"==typeof r;return t&&n.reverse(),function(e,a,o,s){var l;i&&(l=a[r],a[r]=e);for(var c=0;c<n.length;c++){var u=n[c],h=e[u.name];if(!u.nullable||h)if("list"===u.type){if(t?h.reduceRight(s,!1):h.reduce(s,!1))return !0}else if(o(h))return !0}i&&(a[r]=l);}}function wr(e){return {Atrule:{StyleSheet:e.StyleSheet,Atrule:e.Atrule,Rule:e.Rule,Block:e.Block},Rule:{StyleSheet:e.StyleSheet,Atrule:e.Atrule,Rule:e.Rule,Block:e.Block},Declaration:{StyleSheet:e.StyleSheet,Atrule:e.Atrule,Rule:e.Rule,Block:e.Block,DeclarationList:e.DeclarationList}}}var Sr=function(e){var t=function(e){var t={};for(var n in e.node)if(fr.call(e.node,n)){var r=e.node[n];if(!r.structure)throw new Error("Missed `structure` field in `"+n+"` node type definition");t[n]=vr(0,r);}return t}(e),n={},r={},i=Symbol("break-walk"),a=Symbol("skip-node");for(var o in t)fr.call(t,o)&&null!==t[o]&&(n[o]=xr(t[o],!1),r[o]=xr(t[o],!0));var s=wr(n),l=wr(r),c=function(e,o){function c(e,t,n){var r=h.call(m,e,t,n);return r===i||r!==a&&(!(!d.hasOwnProperty(e.type)||!d[e.type](e,m,c,u))||p.call(m,e,t,n)===i)}var u=(e,t,n,r)=>e||c(t,n,r),h=br,p=br,d=n,m={break:i,skip:a,root:e,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if("function"==typeof o)h=o;else if(o&&(h=yr(o.enter),p=yr(o.leave),o.reverse&&(d=r),o.visit)){if(s.hasOwnProperty(o.visit))d=o.reverse?l[o.visit]:s[o.visit];else if(!t.hasOwnProperty(o.visit))throw new Error("Bad value `"+o.visit+"` for `visit` option (should be: "+Object.keys(t).join(", ")+")");h=kr(h,o.visit),p=kr(p,o.visit);}if(h===br&&p===br)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");c(e);};return c.break=i,c.skip=a,c.find=function(e,t){var n=null;return c(e,(function(e,r,a){if(t.call(this,e,r,a))return n=e,i})),n},c.findLast=function(e,t){var n=null;return c(e,{reverse:!0,enter:function(e,r,a){if(t.call(this,e,r,a))return n=e,i}}),n},c.findAll=function(e,t){var n=[];return c(e,(function(e,r,i){t.call(this,e,r,i)&&n.push(e);})),n},c},Cr=function e(t){var n={};for(var r in t){var i=t[r];i&&(Array.isArray(i)||i instanceof a?i=i.map(e):i.constructor===Object&&(i=e(i))),n[r]=i;}return n};const zr=Object.prototype.hasOwnProperty,Ar={generic:!0,types:Er,atrules:{prelude:Dr,descriptors:Dr},properties:Er,parseContext:function(e,t){return Object.assign(e,t)},scope:function e(t,n){for(const r in n)zr.call(n,r)&&(Pr(t[r])?e(t[r],Tr(n[r])):t[r]=Tr(n[r]));return t},atrule:["parse"],pseudo:["parse"],node:["name","structure","parse","generate","walkContext"]};function Pr(e){return e&&e.constructor===Object}function Tr(e){return Pr(e)?Object.assign({},e):e}function Lr(e,t){return "string"==typeof t&&/^\s*\|/.test(t)?"string"==typeof e?e+t:t.replace(/^\s*\|\s*/,""):t||null}function Er(e,t){if("string"==typeof t)return Lr(e,t);const n=Object.assign({},e);for(let r in t)zr.call(t,r)&&(n[r]=Lr(zr.call(e,r)?e[r]:void 0,t[r]));return n}function Dr(e,t){const n=Er(e,t);return !Pr(n)||Object.keys(n).length?n:null}var Or=(e,t)=>function e(t,n,r){for(const i in r)if(!1!==zr.call(r,i))if(!0===r[i])i in n&&zr.call(n,i)&&(t[i]=Tr(n[i]));else if(r[i])if("function"==typeof r[i]){const e=r[i];t[i]=e({},t[i]),t[i]=e(t[i]||{},n[i]);}else if(Pr(r[i])){const a={};for(let n in t[i])a[n]=e({},t[i][n],r[i]);for(let t in n[i])a[t]=e(a[t]||{},n[i][t],r[i]);t[i]=a;}else if(Array.isArray(r[i])){const a={},o=r[i].reduce((function(e,t){return e[t]=!0,e}),{});for(const[n,r]of Object.entries(t[i]||{}))a[n]={},r&&e(a[n],r,o);for(const t in n[i])zr.call(n[i],t)&&(a[t]||(a[t]={}),n[i]&&n[i][t]&&e(a[t],n[i][t],o));t[i]=a;}return t}(e,t,Ar);function Br(e){var t=$n(e),n=Sr(e),r=gr(e),i=function(e){return {fromPlainObject:function(t){return e(t,{enter:function(e){e.children&&e.children instanceof a==!1&&(e.children=(new a).fromArray(e.children));}}),t},toPlainObject:function(t){return e(t,{leave:function(e){e.children&&e.children instanceof a&&(e.children=e.children.toArray());}}),t}}}(n),o={List:a,SyntaxError:l,TokenStream:H,Lexer:Ln,vendorPrefix:ae.vendorPrefix,keyword:ae.keyword,property:ae.property,isCustomProperty:ae.isCustomProperty,definitionSyntax:En,lexer:null,createLexer:function(e){return new Ln(e,o,o.lexer.structure)},tokenize:Ce,parse:t,walk:n,generate:r,find:n.find,findLast:n.findLast,findAll:n.findAll,clone:Cr,fromPlainObject:i.fromPlainObject,toPlainObject:i.toPlainObject,createSyntax:function(e){return Br(Or({},e))},fork:function(t){var n=Or({},e);return Br("function"==typeof t?t(n,Object.assign):Or(n,t))}};return o.lexer=new Ln({generic:!0,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},o),o}var Ir=function(e){return Br(Or({},e))},Nr={generic:!0,types:{"absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","alpha-value":"<number>|<percentage>","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>","angular-color-stop":"<color>&&<color-stop-angle>?","angular-color-stop-list":"[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>","animateable-feature":"scroll-position|contents|<custom-ident>",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>","bg-image":"none|<image>","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage>|auto]{1,2}|cover|contain","blur()":"blur( <length> )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( <number-percentage> )","calc()":"calc( <calc-sum> )","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-value":"<number>|<dimension>|<percentage>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( [<shape-radius>]? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"<angle-percentage>{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!","compound-selector-list":"<compound-selector>#","complex-selector":"<compound-selector> [<combinator>? <compound-selector>]*","complex-selector-list":"<complex-selector>#","conic-gradient()":"conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<quote>|<target>|<leader()>|<attr()>|counter( <ident> , <'list-style-type'>? )]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contrast()":"contrast( [<number-percentage>] )","counter()":"counter( <custom-ident> , <counter-style>? )","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <custom-ident> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( <length>{2,3} <color>? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( [<shape-radius>{2}]? [at <position>]? )","ending-shape":"circle|ellipse","env()":"env( <custom-ident> , <declaration-value>? )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","fill-rule":"nonzero|evenodd","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-function-list":"[<filter-function>|<url>]+","final-bg-layer":"<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","fit-content()":"fit-content( [<length>|<percentage>] )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<positive-integer>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|<number [1,1000]>","frequency-percentage":"<frequency>|<percentage>","general-enclosed":"[<function-token> <any-value> )]|( <ident> <any-value> )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( <number-percentage> )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )","hsla()":"hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",hue:"<number>|<angle>","hue-rotate()":"hue-rotate( <angle> )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] <resolution>","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length>|<percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( <number-percentage> )","keyframes-name":"<custom-ident>|<string>","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-block-list":"<keyframe-block>+","keyframe-selector":"from|to|<percentage>","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","line-names":"'[' <custom-ident>* ']'","line-name-list":"[<line-names>|<name-repeat>]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-gradient()":"linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"<ident>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"<an-plus-b>|even|odd","opacity()":"opacity( [<number-percentage>] )","overflow-position":"unsafe|safe","outline-radius":"<length>|<percentage>","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[<page-selector>#]?","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","path()":"path( [<fill-rule> ,]? <string> )","paint()":"paint( <ident> , <declaration-value>? )","perspective()":"perspective( <length> )","polygon()":"polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-linear-gradient()":"repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","repeating-radial-gradient()":"repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","rgb()":"rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )","rgba()":"rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","saturate()":"saturate( <number-percentage> )","scale()":"scale( <number> , <number>? )","scale3d()":"scale3d( <number> , <number> , <number> )","scaleX()":"scaleX( <number> )","scaleY()":"scaleY( <number> )","scaleZ()":"scaleZ( <number> )","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"<length-percentage>|closest-side|farthest-side","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sepia()":"sepia( <number-percentage> )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","single-animation":"<time>||<timing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-transition":"[none|<single-transition-property>]||<time>||<timing-function>||<time>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-timing-function":"step-start|step-end|steps( <integer> [, <step-position>]? )","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-decl":"( <declaration> )","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","time-percentage":"<time>|<percentage>","timing-function":"linear|<cubic-bezier-timing-function>|<step-timing-function>","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<positive-integer>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","viewport-length":"auto|<length-percentage>","wq-name":"<ns-prefix>? <ident-token>","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-width":"fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-webkit-mask-clip-style":"border|border-box|padding|padding-box|content|content-box|text","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )","-ms-filter":"<string>",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>","border-radius":"<length-percentage>{1,2}",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral",left:"<length>|auto","mask-image":"<mask-reference>#","name-repeat":"repeat( [<positive-integer>|auto-fill] , <line-names>+ )",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger",ratio:"<integer> / <integer>",right:"<length>|auto","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto","track-group":"'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>","track-list-v0":"[<string>* <track-group> <string>*]+|none","track-minmax":"minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,∞]>","positive-integer":"<integer [0,∞]>","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zooming":"none|zoom","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"<integer [0,1]>","-moz-image-region":"<shape>|auto","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<'color'>","-webkit-border-before-color":"<'color'>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<box>|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",all:"initial|inherit|unset|revert",animation:"<single-animation>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"<time>#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-timing-function":"<timing-function>#",appearance:"none|auto|textfield|menulist-button|<compat-auto>","aspect-ratio":"auto|<ratio>",azimuth:"<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards","backdrop-filter":"none|<filter-function-list>","backface-visibility":"visible|hidden",background:"[<bg-layer> ,]* <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<box>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","block-overflow":"clip|ellipsis|<string>","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-top-width'>||<'border-top-style'>||<'color'>","border-block-color":"<'border-top-color'>{1,2}","border-block-style":"<'border-top-style'>","border-block-width":"<'border-top-width'>","border-block-end":"<'border-top-width'>||<'border-top-style'>||<'color'>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<'color'>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage>{1,2}","border-bottom-right-radius":"<length-percentage>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"collapse|separate","border-color":"<color>{1,4}","border-end-end-radius":"<length-percentage>{1,2}","border-end-start-radius":"<length-percentage>{1,2}","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length>|<number>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"<number-percentage>{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage>|<number>|auto]{1,4}","border-inline":"<'border-top-width'>||<'border-top-style'>||<'color'>","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<'color'>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-style":"<'border-top-style'>","border-inline-width":"<'border-top-width'>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<'color'>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage>{1,4} [/ <length-percentage>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length> <length>?","border-start-end-radius":"<length-percentage>{1,2}","border-start-start-radius":"<length-percentage>{1,2}","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage>{1,2}","border-top-right-radius":"<length-percentage>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"<length>|<percentage>|auto","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom|block-start|block-end|inline-start|inline-end","caret-color":"auto|<color>",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none",color:"<color>","color-adjust":"economy|exact","column-count":"<integer>|auto","column-fill":"auto|balance|balance-all","column-gap":"normal|<length-percentage>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"<length>|auto",columns:"<'column-width'>||<'column-count'>",contain:"none|strict|content|[size||layout||style||paint]",content:"normal|none|[<content-replacement>|<content-list>] [/ <string>]?","counter-increment":"[<custom-ident> <integer>?]+|none","counter-reset":"[<custom-ident> <integer>?]+|none","counter-set":"[<custom-ident> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","empty-cells":"show|hide",filter:"none|<filter-function-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end",font:"[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-variation-settings":"normal|[<string> <number>]#","font-size":"<absolute-size>|<relative-size>|<length-percentage>","font-size-adjust":"none|<number>","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style]","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-weight":"<font-weight-absolute>|bolder|lighter",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length>|<percentage>|min-content|max-content|fit-content( <length-percentage> )",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>",isolation:"auto|isolate","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"<length>|<percentage>|auto","letter-spacing":"normal|<length-percentage>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<url>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"[<length>|<percentage>|auto]{1,4}","margin-block":"<'margin-left'>{1,2}","margin-block-end":"<'margin-left'>","margin-block-start":"<'margin-left'>","margin-bottom":"<length>|<percentage>|auto","margin-inline":"<'margin-left'>{1,2}","margin-inline-end":"<'margin-left'>","margin-inline-start":"<'margin-left'>","margin-left":"<length>|<percentage>|auto","margin-right":"<length>|<percentage>|auto","margin-top":"<length>|<percentage>|auto","margin-trim":"none|in-flow|all",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<geometry-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<geometry-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage>|min-content|max-content|fit-content( <length-percentage> )","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage>|min-content|max-content|fit-content( <length-percentage> )|<-non-standard-width>","min-block-size":"<'min-width'>","min-height":"auto|<length>|<percentage>|min-content|max-content|fit-content( <length-percentage> )","min-inline-size":"<'min-width'>","min-width":"auto|<length-percentage>|min-content|max-content|fit-content( <length-percentage> )|<-non-standard-width>","mix-blend-mode":"<blend-mode>","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]","offset-position":"auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<alpha-value>",order:"<integer>",orphans:"<integer>",outline:"[<'outline-color'>||<'outline-style'>||<'outline-width'>]","outline-color":"<color>|invert","outline-offset":"<length>","outline-style":"auto|<'border-style'>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto","overflow-clip-box":"padding-box|content-box","overflow-inline":"visible|hidden|clip|scroll|auto","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto","overflow-y":"visible|hidden|clip|scroll|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"[<length>|<percentage>]{1,4}","padding-block":"<'padding-left'>{1,2}","padding-block-end":"<'padding-left'>","padding-block-start":"<'padding-left'>","padding-bottom":"<length>|<percentage>","padding-inline":"<'padding-left'>{1,2}","padding-inline-end":"<'padding-left'>","padding-inline-start":"<'padding-left'>","padding-left":"<length>|<percentage>","padding-right":"<length>|<percentage>","padding-top":"<length>|<percentage>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky",quotes:"none|auto|[<string> <string>]+",resize:"none|both|horizontal|vertical|block|inline",right:"<length>|<percentage>|auto",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-position":"over|under|inter-character",scale:"none|<number>{1,3}","scrollbar-color":"auto|dark|light|<color>{2}","scrollbar-gutter":"auto|[stable|always]&&both?&&force?","scrollbar-width":"auto|thin|none","scroll-behavior":"auto|smooth","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-start":"<length>","scroll-margin-block-end":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-start":"<length>","scroll-margin-inline-end":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","shape-image-threshold":"<alpha-value>","shape-margin":"<length-percentage>","shape-outside":"none|<shape-box>||<basic-shape>|<image>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"[over|under]&&[right|left]","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-transform":"none|capitalize|uppercase|lowercase|full-width|full-size-kana","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]",top:"<length>|<percentage>|auto","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<timing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|contain|all","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",visibility:"visible|hidden|collapse","white-space":"normal|pre|nowrap|pre-wrap|pre-line|break-spaces",widows:"<integer>",width:"auto|<length>|<percentage>|min-content|max-content|fit-content( <length-percentage> )","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word","word-spacing":"normal|<length-percentage>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>","z-index":"auto|<integer>",zoom:"normal|reset|<number>|<percentage>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto","-webkit-user-select":"auto|none|text|all","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical","baseline-shift":"baseline|sub|super|<svg-length>",behavior:"<url>+","clip-rule":"nonzero|evenodd",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",fill:"<paint>","fill-opacity":"<number-zero-one>","fill-rule":"nonzero|evenodd","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision",src:"[<url> [format( <string># )]?|local( <family-name> )]#",speak:"auto|none|normal","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]",stroke:"<paint>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<number-zero-one>","stroke-width":"<svg-length>","text-anchor":"start|middle|end","unicode-range":"<urange>#","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"font-display":"[auto|block|swap|fallback|optional]","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-variation-settings":"normal|[<string> <number>]#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-weight":"<font-weight-absolute>{1,2}","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},import:{prelude:"[<string>|<url>] [<media-query-list>]?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]",size:"<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},property:{prelude:"<custom-property-name>",descriptors:{syntax:"<string>",inherits:"true|false","initial-value":"<string>"}},supports:{prelude:"<supports-condition>",descriptors:null},viewport:{prelude:null,descriptors:{height:"<viewport-length>{1,2}","max-height":"<viewport-length>","max-width":"<viewport-length>","max-zoom":"auto|<number>|<percentage>","min-height":"<viewport-length>","min-width":"<viewport-length>","min-zoom":"auto|<number>|<percentage>",orientation:"auto|portrait|landscape","user-zoom":"zoom|fixed","viewport-fit":"auto|contain|cover",width:"<viewport-length>{1,2}",zoom:"auto|<number>|<percentage>"}}}},Rr=Ce.cmpChar,Mr=Ce.isDigit,jr=Ce.TYPE,_r=jr.WhiteSpace,Fr=jr.Comment,Wr=jr.Ident,qr=jr.Number,Yr=jr.Dimension;function Ur(e,t){var n=this.scanner.tokenStart+e,r=this.scanner.source.charCodeAt(n);for(43!==r&&45!==r||(t&&this.error("Number sign is not allowed"),n++);n<this.scanner.tokenEnd;n++)Mr(this.scanner.source.charCodeAt(n))||this.error("Integer is expected",n);}function Hr(e){return Ur.call(this,0,e)}function Vr(e,t){if(!Rr(this.scanner.source,this.scanner.tokenStart+e,t)){var n="";switch(t){case 110:n="N is expected";break;case 45:n="HyphenMinus is expected";}this.error(n,this.scanner.tokenStart+e);}}function Kr(){for(var e=0,t=0,n=this.scanner.tokenType;n===_r||n===Fr;)n=this.scanner.lookupType(++e);if(n!==qr){if(!this.scanner.isDelim(43,e)&&!this.scanner.isDelim(45,e))return null;t=this.scanner.isDelim(43,e)?43:45;do{n=this.scanner.lookupType(++e);}while(n===_r||n===Fr);n!==qr&&(this.scanner.skip(e),Hr.call(this,!0));}return e>0&&this.scanner.skip(e),0===t&&43!==(n=this.scanner.source.charCodeAt(this.scanner.tokenStart))&&45!==n&&this.error("Number sign is expected"),Hr.call(this,0!==t),45===t?"-"+this.consume(qr):this.consume(qr)}var Gr={name:"AnPlusB",structure:{a:[String,null],b:[String,null]},parse:function(){var e=this.scanner.tokenStart,t=null,n=null;if(this.scanner.tokenType===qr)Hr.call(this,!1),n=this.consume(qr);else if(this.scanner.tokenType===Wr&&Rr(this.scanner.source,this.scanner.tokenStart,45))switch(t="-1",Vr.call(this,1,110),this.scanner.getTokenLength()){case 2:this.scanner.next(),n=Kr.call(this);break;case 3:Vr.call(this,2,45),this.scanner.next(),this.scanner.skipSC(),Hr.call(this,!0),n="-"+this.consume(qr);break;default:Vr.call(this,2,45),Ur.call(this,3,!0),this.scanner.next(),n=this.scanner.substrToCursor(e+2);}else if(this.scanner.tokenType===Wr||this.scanner.isDelim(43)&&this.scanner.lookupType(1)===Wr){var r=0;switch(t="1",this.scanner.isDelim(43)&&(r=1,this.scanner.next()),Vr.call(this,0,110),this.scanner.getTokenLength()){case 1:this.scanner.next(),n=Kr.call(this);break;case 2:Vr.call(this,1,45),this.scanner.next(),this.scanner.skipSC(),Hr.call(this,!0),n="-"+this.consume(qr);break;default:Vr.call(this,1,45),Ur.call(this,2,!0),this.scanner.next(),n=this.scanner.substrToCursor(e+r+1);}}else if(this.scanner.tokenType===Yr){for(var i=this.scanner.source.charCodeAt(this.scanner.tokenStart),a=(r=43===i||45===i,this.scanner.tokenStart+r);a<this.scanner.tokenEnd&&Mr(this.scanner.source.charCodeAt(a));a++);a===this.scanner.tokenStart+r&&this.error("Integer is expected",this.scanner.tokenStart+r),Vr.call(this,a-this.scanner.tokenStart,110),t=this.scanner.source.substring(e,a),a+1===this.scanner.tokenEnd?(this.scanner.next(),n=Kr.call(this)):(Vr.call(this,a-this.scanner.tokenStart+1,45),a+2===this.scanner.tokenEnd?(this.scanner.next(),this.scanner.skipSC(),Hr.call(this,!0),n="-"+this.consume(qr)):(Ur.call(this,a-this.scanner.tokenStart+2,!0),this.scanner.next(),n=this.scanner.substrToCursor(a+1)));}else this.error();return null!==t&&43===t.charCodeAt(0)&&(t=t.substr(1)),null!==n&&43===n.charCodeAt(0)&&(n=n.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.scanner.tokenStart),a:t,b:n}},generate:function(e){var t=null!==e.a&&void 0!==e.a,n=null!==e.b&&void 0!==e.b;t?(this.chunk("+1"===e.a?"+n":"1"===e.a?"n":"-1"===e.a?"-n":e.a+"n"),n&&("-"===(n=String(e.b)).charAt(0)||"+"===n.charAt(0)?(this.chunk(n.charAt(0)),this.chunk(n.substr(1))):(this.chunk("+"),this.chunk(n)))):this.chunk(String(e.b));}},Qr=Ce.TYPE,Xr=Qr.WhiteSpace,Zr=Qr.Semicolon,$r=Qr.LeftCurlyBracket,Jr=Qr.Delim;function ei(){return this.scanner.tokenIndex>0&&this.scanner.lookupType(-1)===Xr?this.scanner.tokenIndex>1?this.scanner.getTokenStart(this.scanner.tokenIndex-1):this.scanner.firstCharOffset:this.scanner.tokenStart}function ti(){return 0}var ni={name:"Raw",structure:{value:String},parse:function(e,t,n){var r,i=this.scanner.getTokenStart(e);return this.scanner.skip(this.scanner.getRawLength(e,t||ti)),r=n&&this.scanner.tokenStart>i?ei.call(this):this.scanner.tokenStart,{type:"Raw",loc:this.getLocation(i,r),value:this.scanner.source.substring(i,r)}},generate:function(e){this.chunk(e.value);},mode:{default:ti,leftCurlyBracket:function(e){return e===$r?1:0},leftCurlyBracketOrSemicolon:function(e){return e===$r||e===Zr?1:0},exclamationMarkOrSemicolon:function(e,t,n){return e===Jr&&33===t.charCodeAt(n)||e===Zr?1:0},semicolonIncluded:function(e){return e===Zr?2:0}}},ri=Ce.TYPE,ii=ni.mode,ai=ri.AtKeyword,oi=ri.Semicolon,si=ri.LeftCurlyBracket,li=ri.RightCurlyBracket;function ci(e){return this.Raw(e,ii.leftCurlyBracketOrSemicolon,!0)}function ui(){for(var e,t=1;e=this.scanner.lookupType(t);t++){if(e===li)return !0;if(e===si||e===ai)return !1}return !1}var hi={name:"Atrule",structure:{name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]},parse:function(){var e,t,n=this.scanner.tokenStart,r=null,i=null;switch(this.eat(ai),t=(e=this.scanner.substrToCursor(n+1)).toLowerCase(),this.scanner.skipSC(),!1===this.scanner.eof&&this.scanner.tokenType!==si&&this.scanner.tokenType!==oi&&(this.parseAtrulePrelude?"AtrulePrelude"===(r=this.parseWithFallback(this.AtrulePrelude.bind(this,e),ci)).type&&null===r.children.head&&(r=null):r=ci.call(this,this.scanner.tokenIndex),this.scanner.skipSC()),this.scanner.tokenType){case oi:this.scanner.next();break;case si:i=this.atrule.hasOwnProperty(t)&&"function"==typeof this.atrule[t].block?this.atrule[t].block.call(this):this.Block(ui.call(this));}return {type:"Atrule",loc:this.getLocation(n,this.scanner.tokenStart),name:e,prelude:r,block:i}},generate:function(e){this.chunk("@"),this.chunk(e.name),null!==e.prelude&&(this.chunk(" "),this.node(e.prelude)),e.block?this.node(e.block):this.chunk(";");},walkContext:"atrule"},pi=Ce.TYPE,di=pi.Semicolon,mi=pi.LeftCurlyBracket,gi={name:"AtrulePrelude",structure:{children:[[]]},parse:function(e){var t=null;return null!==e&&(e=e.toLowerCase()),this.scanner.skipSC(),t=this.atrule.hasOwnProperty(e)&&"function"==typeof this.atrule[e].prelude?this.atrule[e].prelude.call(this):this.readSequence(this.scope.AtrulePrelude),this.scanner.skipSC(),!0!==this.scanner.eof&&this.scanner.tokenType!==mi&&this.scanner.tokenType!==di&&this.error("Semicolon or block is expected"),null===t&&(t=this.createList()),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}},generate:function(e){this.children(e);},walkContext:"atrulePrelude"},fi=Ce.TYPE,bi=fi.Ident,yi=fi.String,ki=fi.Colon,vi=fi.LeftSquareBracket,xi=fi.RightSquareBracket;function wi(){this.scanner.eof&&this.error("Unexpected end of input");var e=this.scanner.tokenStart,t=!1,n=!0;return this.scanner.isDelim(42)?(t=!0,n=!1,this.scanner.next()):this.scanner.isDelim(124)||this.eat(bi),this.scanner.isDelim(124)?61!==this.scanner.source.charCodeAt(this.scanner.tokenStart+1)?(this.scanner.next(),this.eat(bi)):t&&this.error("Identifier is expected",this.scanner.tokenEnd):t&&this.error("Vertical line is expected"),n&&this.scanner.tokenType===ki&&(this.scanner.next(),this.eat(bi)),{type:"Identifier",loc:this.getLocation(e,this.scanner.tokenStart),name:this.scanner.substrToCursor(e)}}function Si(){var e=this.scanner.tokenStart,t=this.scanner.source.charCodeAt(e);return 61!==t&&126!==t&&94!==t&&36!==t&&42!==t&&124!==t&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.scanner.next(),61!==t&&(this.scanner.isDelim(61)||this.error("Equal sign is expected"),this.scanner.next()),this.scanner.substrToCursor(e)}var Ci={name:"AttributeSelector",structure:{name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]},parse:function(){var e,t=this.scanner.tokenStart,n=null,r=null,i=null;return this.eat(vi),this.scanner.skipSC(),e=wi.call(this),this.scanner.skipSC(),this.scanner.tokenType!==xi&&(this.scanner.tokenType!==bi&&(n=Si.call(this),this.scanner.skipSC(),r=this.scanner.tokenType===yi?this.String():this.Identifier(),this.scanner.skipSC()),this.scanner.tokenType===bi&&(i=this.scanner.getTokenValue(),this.scanner.next(),this.scanner.skipSC())),this.eat(xi),{type:"AttributeSelector",loc:this.getLocation(t,this.scanner.tokenStart),name:e,matcher:n,value:r,flags:i}},generate:function(e){var t=" ";this.chunk("["),this.node(e.name),null!==e.matcher&&(this.chunk(e.matcher),null!==e.value&&(this.node(e.value),"String"===e.value.type&&(t=""))),null!==e.flags&&(this.chunk(t),this.chunk(e.flags)),this.chunk("]");}},zi=Ce.TYPE,Ai=ni.mode,Pi=zi.WhiteSpace,Ti=zi.Comment,Li=zi.Semicolon,Ei=zi.AtKeyword,Di=zi.LeftCurlyBracket,Oi=zi.RightCurlyBracket;function Bi(e){return this.Raw(e,null,!0)}function Ii(){return this.parseWithFallback(this.Rule,Bi)}function Ni(e){return this.Raw(e,Ai.semicolonIncluded,!0)}function Ri(){if(this.scanner.tokenType===Li)return Ni.call(this,this.scanner.tokenIndex);var e=this.parseWithFallback(this.Declaration,Ni);return this.scanner.tokenType===Li&&this.scanner.next(),e}var Mi={name:"Block",structure:{children:[["Atrule","Rule","Declaration"]]},parse:function(e){var t=e?Ri:Ii,n=this.scanner.tokenStart,r=this.createList();this.eat(Di);e:for(;!this.scanner.eof;)switch(this.scanner.tokenType){case Oi:break e;case Pi:case Ti:this.scanner.next();break;case Ei:r.push(this.parseWithFallback(this.Atrule,Bi));break;default:r.push(t.call(this));}return this.scanner.eof||this.eat(Oi),{type:"Block",loc:this.getLocation(n,this.scanner.tokenStart),children:r}},generate:function(e){this.chunk("{"),this.children(e,(function(e){"Declaration"===e.type&&this.chunk(";");})),this.chunk("}");},walkContext:"block"},ji=Ce.TYPE,_i=ji.LeftSquareBracket,Fi=ji.RightSquareBracket,Wi={name:"Brackets",structure:{children:[[]]},parse:function(e,t){var n,r=this.scanner.tokenStart;return this.eat(_i),n=e.call(this,t),this.scanner.eof||this.eat(Fi),{type:"Brackets",loc:this.getLocation(r,this.scanner.tokenStart),children:n}},generate:function(e){this.chunk("["),this.children(e),this.chunk("]");}},qi=Ce.TYPE.CDC,Yi={name:"CDC",structure:[],parse:function(){var e=this.scanner.tokenStart;return this.eat(qi),{type:"CDC",loc:this.getLocation(e,this.scanner.tokenStart)}},generate:function(){this.chunk("--\x3e");}},Ui=Ce.TYPE.CDO,Hi={name:"CDO",structure:[],parse:function(){var e=this.scanner.tokenStart;return this.eat(Ui),{type:"CDO",loc:this.getLocation(e,this.scanner.tokenStart)}},generate:function(){this.chunk("\x3c!--");}},Vi=Ce.TYPE.Ident,Ki={name:"ClassSelector",structure:{name:String},parse:function(){return this.scanner.isDelim(46)||this.error("Full stop is expected"),this.scanner.next(),{type:"ClassSelector",loc:this.getLocation(this.scanner.tokenStart-1,this.scanner.tokenEnd),name:this.consume(Vi)}},generate:function(e){this.chunk("."),this.chunk(e.name);}},Gi=Ce.TYPE.Ident,Qi={name:"Combinator",structure:{name:String},parse:function(){var e=this.scanner.tokenStart;switch(this.scanner.source.charCodeAt(this.scanner.tokenStart)){case 62:case 43:case 126:this.scanner.next();break;case 47:this.scanner.next(),this.scanner.tokenType===Gi&&!1!==this.scanner.lookupValue(0,"deep")||this.error("Identifier `deep` is expected"),this.scanner.next(),this.scanner.isDelim(47)||this.error("Solidus is expected"),this.scanner.next();break;default:this.error("Combinator is expected");}return {type:"Combinator",loc:this.getLocation(e,this.scanner.tokenStart),name:this.scanner.substrToCursor(e)}},generate:function(e){this.chunk(e.name);}},Xi=Ce.TYPE.Comment,Zi={name:"Comment",structure:{value:String},parse:function(){var e=this.scanner.tokenStart,t=this.scanner.tokenEnd;return this.eat(Xi),t-e+2>=2&&42===this.scanner.source.charCodeAt(t-2)&&47===this.scanner.source.charCodeAt(t-1)&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.scanner.tokenStart),value:this.scanner.source.substring(e+2,t)}},generate:function(e){this.chunk("/*"),this.chunk(e.value),this.chunk("*/");}},$i=ae.isCustomProperty,Ji=Ce.TYPE,ea=ni.mode,ta=Ji.Ident,na=Ji.Hash,ra=Ji.Colon,ia=Ji.Semicolon,aa=Ji.Delim,oa=Ji.WhiteSpace;function sa(e){return this.Raw(e,ea.exclamationMarkOrSemicolon,!0)}function la(e){return this.Raw(e,ea.exclamationMarkOrSemicolon,!1)}function ca(){var e=this.scanner.tokenIndex,t=this.Value();return "Raw"!==t.type&&!1===this.scanner.eof&&this.scanner.tokenType!==ia&&!1===this.scanner.isDelim(33)&&!1===this.scanner.isBalanceEdge(e)&&this.error(),t}var ua={name:"Declaration",structure:{important:[Boolean,String],property:String,value:["Value","Raw"]},parse:function(){var e,t=this.scanner.tokenStart,n=this.scanner.tokenIndex,r=ha.call(this),i=$i(r),a=i?this.parseCustomProperty:this.parseValue,o=i?la:sa,s=!1;this.scanner.skipSC(),this.eat(ra);const l=this.scanner.tokenIndex;if(i||this.scanner.skipSC(),e=a?this.parseWithFallback(ca,o):o.call(this,this.scanner.tokenIndex),i&&"Value"===e.type&&e.children.isEmpty())for(let t=l-this.scanner.tokenIndex;t<=0;t++)if(this.scanner.lookupType(t)===oa){e.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}return this.scanner.isDelim(33)&&(s=pa.call(this),this.scanner.skipSC()),!1===this.scanner.eof&&this.scanner.tokenType!==ia&&!1===this.scanner.isBalanceEdge(n)&&this.error(),{type:"Declaration",loc:this.getLocation(t,this.scanner.tokenStart),important:s,property:r,value:e}},generate:function(e){this.chunk(e.property),this.chunk(":"),this.node(e.value),e.important&&this.chunk(!0===e.important?"!important":"!"+e.important);},walkContext:"declaration"};function ha(){var e=this.scanner.tokenStart;if(this.scanner.tokenType===aa)switch(this.scanner.source.charCodeAt(this.scanner.tokenStart)){case 42:case 36:case 43:case 35:case 38:this.scanner.next();break;case 47:this.scanner.next(),this.scanner.isDelim(47)&&this.scanner.next();}return this.scanner.tokenType===na?this.eat(na):this.eat(ta),this.scanner.substrToCursor(e)}function pa(){this.eat(aa),this.scanner.skipSC();var e=this.consume(ta);return "important"===e||e}var da=Ce.TYPE,ma=ni.mode,ga=da.WhiteSpace,fa=da.Comment,ba=da.Semicolon;function ya(e){return this.Raw(e,ma.semicolonIncluded,!0)}var ka={name:"DeclarationList",structure:{children:[["Declaration"]]},parse:function(){for(var e=this.createList();!this.scanner.eof;)switch(this.scanner.tokenType){case ga:case fa:case ba:this.scanner.next();break;default:e.push(this.parseWithFallback(this.Declaration,ya));}return {type:"DeclarationList",loc:this.getLocationFromList(e),children:e}},generate:function(e){this.children(e,(function(e){"Declaration"===e.type&&this.chunk(";");}));}},va=M.consumeNumber,xa=Ce.TYPE.Dimension,wa={name:"Dimension",structure:{value:String,unit:String},parse:function(){var e=this.scanner.tokenStart,t=va(this.scanner.source,e);return this.eat(xa),{type:"Dimension",loc:this.getLocation(e,this.scanner.tokenStart),value:this.scanner.source.substring(e,t),unit:this.scanner.source.substring(t,this.scanner.tokenStart)}},generate:function(e){this.chunk(e.value),this.chunk(e.unit);}},Sa=Ce.TYPE.RightParenthesis,Ca={name:"Function",structure:{name:String,children:[[]]},parse:function(e,t){var n,r=this.scanner.tokenStart,i=this.consumeFunctionName(),a=i.toLowerCase();return n=t.hasOwnProperty(a)?t[a].call(this,t):e.call(this,t),this.scanner.eof||this.eat(Sa),{type:"Function",loc:this.getLocation(r,this.scanner.tokenStart),name:i,children:n}},generate:function(e){this.chunk(e.name),this.chunk("("),this.children(e),this.chunk(")");},walkContext:"function"},za=Ce.TYPE.Hash,Aa={name:"Hash",structure:{value:String},parse:function(){var e=this.scanner.tokenStart;return this.eat(za),{type:"Hash",loc:this.getLocation(e,this.scanner.tokenStart),value:this.scanner.substrToCursor(e+1)}},generate:function(e){this.chunk("#"),this.chunk(e.value);}},Pa=Ce.TYPE.Ident,Ta={name:"Identifier",structure:{name:String},parse:function(){return {type:"Identifier",loc:this.getLocation(this.scanner.tokenStart,this.scanner.tokenEnd),name:this.consume(Pa)}},generate:function(e){this.chunk(e.name);}},La=Ce.TYPE.Hash,Ea={name:"IdSelector",structure:{name:String},parse:function(){var e=this.scanner.tokenStart;return this.eat(La),{type:"IdSelector",loc:this.getLocation(e,this.scanner.tokenStart),name:this.scanner.substrToCursor(e+1)}},generate:function(e){this.chunk("#"),this.chunk(e.name);}},Da=Ce.TYPE,Oa=Da.Ident,Ba=Da.Number,Ia=Da.Dimension,Na=Da.LeftParenthesis,Ra=Da.RightParenthesis,Ma=Da.Colon,ja=Da.Delim,_a={name:"MediaFeature",structure:{name:String,value:["Identifier","Number","Dimension","Ratio",null]},parse:function(){var e,t=this.scanner.tokenStart,n=null;if(this.eat(Na),this.scanner.skipSC(),e=this.consume(Oa),this.scanner.skipSC(),this.scanner.tokenType!==Ra){switch(this.eat(Ma),this.scanner.skipSC(),this.scanner.tokenType){case Ba:n=this.lookupNonWSType(1)===ja?this.Ratio():this.Number();break;case Ia:n=this.Dimension();break;case Oa:n=this.Identifier();break;default:this.error("Number, dimension, ratio or identifier is expected");}this.scanner.skipSC();}return this.eat(Ra),{type:"MediaFeature",loc:this.getLocation(t,this.scanner.tokenStart),name:e,value:n}},generate:function(e){this.chunk("("),this.chunk(e.name),null!==e.value&&(this.chunk(":"),this.node(e.value)),this.chunk(")");}},Fa=Ce.TYPE,Wa=Fa.WhiteSpace,qa=Fa.Comment,Ya=Fa.Ident,Ua=Fa.LeftParenthesis,Ha={name:"MediaQuery",structure:{children:[["Identifier","MediaFeature","WhiteSpace"]]},parse:function(){this.scanner.skipSC();var e=this.createList(),t=null,n=null;e:for(;!this.scanner.eof;){switch(this.scanner.tokenType){case qa:this.scanner.next();continue;case Wa:n=this.WhiteSpace();continue;case Ya:t=this.Identifier();break;case Ua:t=this.MediaFeature();break;default:break e}null!==n&&(e.push(n),n=null),e.push(t);}return null===t&&this.error("Identifier or parenthesis is expected"),{type:"MediaQuery",loc:this.getLocationFromList(e),children:e}},generate:function(e){this.children(e);}},Va=Ce.TYPE.Comma,Ka={name:"MediaQueryList",structure:{children:[["MediaQuery"]]},parse:function(e){var t=this.createList();for(this.scanner.skipSC();!this.scanner.eof&&(t.push(this.MediaQuery(e)),this.scanner.tokenType===Va);)this.scanner.next();return {type:"MediaQueryList",loc:this.getLocationFromList(t),children:t}},generate:function(e){this.children(e,(function(){this.chunk(",");}));}},Ga=Ce.TYPE.Number,Qa={name:"Number",structure:{value:String},parse:function(){return {type:"Number",loc:this.getLocation(this.scanner.tokenStart,this.scanner.tokenEnd),value:this.consume(Ga)}},generate:function(e){this.chunk(e.value);}},Xa={name:"Operator",structure:{value:String},parse:function(){var e=this.scanner.tokenStart;return this.scanner.next(),{type:"Operator",loc:this.getLocation(e,this.scanner.tokenStart),value:this.scanner.substrToCursor(e)}},generate:function(e){this.chunk(e.value);}},Za=Ce.TYPE,$a=Za.LeftParenthesis,Ja=Za.RightParenthesis,eo={name:"Parentheses",structure:{children:[[]]},parse:function(e,t){var n,r=this.scanner.tokenStart;return this.eat($a),n=e.call(this,t),this.scanner.eof||this.eat(Ja),{type:"Parentheses",loc:this.getLocation(r,this.scanner.tokenStart),children:n}},generate:function(e){this.chunk("("),this.children(e),this.chunk(")");}},to=M.consumeNumber,no=Ce.TYPE.Percentage,ro={name:"Percentage",structure:{value:String},parse:function(){var e=this.scanner.tokenStart,t=to(this.scanner.source,e);return this.eat(no),{type:"Percentage",loc:this.getLocation(e,this.scanner.tokenStart),value:this.scanner.source.substring(e,t)}},generate:function(e){this.chunk(e.value),this.chunk("%");}},io=Ce.TYPE,ao=io.Ident,oo=io.Function,so=io.Colon,lo=io.RightParenthesis,co={name:"PseudoClassSelector",structure:{name:String,children:[["Raw"],null]},parse:function(){var e,t,n=this.scanner.tokenStart,r=null;return this.eat(so),this.scanner.tokenType===oo?(t=(e=this.consumeFunctionName()).toLowerCase(),this.pseudo.hasOwnProperty(t)?(this.scanner.skipSC(),r=this.pseudo[t].call(this),this.scanner.skipSC()):(r=this.createList()).push(this.Raw(this.scanner.tokenIndex,null,!1)),this.eat(lo)):e=this.consume(ao),{type:"PseudoClassSelector",loc:this.getLocation(n,this.scanner.tokenStart),name:e,children:r}},generate:function(e){this.chunk(":"),this.chunk(e.name),null!==e.children&&(this.chunk("("),this.children(e),this.chunk(")"));},walkContext:"function"},uo=Ce.TYPE,ho=uo.Ident,po=uo.Function,mo=uo.Colon,go=uo.RightParenthesis,fo={name:"PseudoElementSelector",structure:{name:String,children:[["Raw"],null]},parse:function(){var e,t,n=this.scanner.tokenStart,r=null;return this.eat(mo),this.eat(mo),this.scanner.tokenType===po?(t=(e=this.consumeFunctionName()).toLowerCase(),this.pseudo.hasOwnProperty(t)?(this.scanner.skipSC(),r=this.pseudo[t].call(this),this.scanner.skipSC()):(r=this.createList()).push(this.Raw(this.scanner.tokenIndex,null,!1)),this.eat(go)):e=this.consume(ho),{type:"PseudoElementSelector",loc:this.getLocation(n,this.scanner.tokenStart),name:e,children:r}},generate:function(e){this.chunk("::"),this.chunk(e.name),null!==e.children&&(this.chunk("("),this.children(e),this.chunk(")"));},walkContext:"function"},bo=Ce.isDigit,yo=Ce.TYPE,ko=yo.Number,vo=yo.Delim;function xo(){this.scanner.skipWS();for(var e=this.consume(ko),t=0;t<e.length;t++){var n=e.charCodeAt(t);bo(n)||46===n||this.error("Unsigned number is expected",this.scanner.tokenStart-e.length+t);}return 0===Number(e)&&this.error("Zero number is not allowed",this.scanner.tokenStart-e.length),e}var wo={name:"Ratio",structure:{left:String,right:String},parse:function(){var e,t=this.scanner.tokenStart,n=xo.call(this);return this.scanner.skipWS(),this.scanner.isDelim(47)||this.error("Solidus is expected"),this.eat(vo),e=xo.call(this),{type:"Ratio",loc:this.getLocation(t,this.scanner.tokenStart),left:n,right:e}},generate:function(e){this.chunk(e.left),this.chunk("/"),this.chunk(e.right);}},So=Ce.TYPE,Co=ni.mode,zo=So.LeftCurlyBracket;function Ao(e){return this.Raw(e,Co.leftCurlyBracket,!0)}function Po(){var e=this.SelectorList();return "Raw"!==e.type&&!1===this.scanner.eof&&this.scanner.tokenType!==zo&&this.error(),e}var To={name:"Rule",structure:{prelude:["SelectorList","Raw"],block:["Block"]},parse:function(){var e,t,n=this.scanner.tokenIndex,r=this.scanner.tokenStart;return e=this.parseRulePrelude?this.parseWithFallback(Po,Ao):Ao.call(this,n),t=this.Block(!0),{type:"Rule",loc:this.getLocation(r,this.scanner.tokenStart),prelude:e,block:t}},generate:function(e){this.node(e.prelude),this.node(e.block);},walkContext:"rule"},Lo=Ce.TYPE.Comma,Eo={name:"SelectorList",structure:{children:[["Selector","Raw"]]},parse:function(){for(var e=this.createList();!this.scanner.eof&&(e.push(this.Selector()),this.scanner.tokenType===Lo);)this.scanner.next();return {type:"SelectorList",loc:this.getLocationFromList(e),children:e}},generate:function(e){this.children(e,(function(){this.chunk(",");}));},walkContext:"selector"},Do=Ce.TYPE.String,Oo={name:"String",structure:{value:String},parse:function(){return {type:"String",loc:this.getLocation(this.scanner.tokenStart,this.scanner.tokenEnd),value:this.consume(Do)}},generate:function(e){this.chunk(e.value);}},Bo=Ce.TYPE,Io=Bo.WhiteSpace,No=Bo.Comment,Ro=Bo.AtKeyword,Mo=Bo.CDO,jo=Bo.CDC;function _o(e){return this.Raw(e,null,!1)}var Fo={name:"StyleSheet",structure:{children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]},parse:function(){for(var e,t=this.scanner.tokenStart,n=this.createList();!this.scanner.eof;){switch(this.scanner.tokenType){case Io:this.scanner.next();continue;case No:if(33!==this.scanner.source.charCodeAt(this.scanner.tokenStart+2)){this.scanner.next();continue}e=this.Comment();break;case Mo:e=this.CDO();break;case jo:e=this.CDC();break;case Ro:e=this.parseWithFallback(this.Atrule,_o);break;default:e=this.parseWithFallback(this.Rule,_o);}n.push(e);}return {type:"StyleSheet",loc:this.getLocation(t,this.scanner.tokenStart),children:n}},generate:function(e){this.children(e);},walkContext:"stylesheet"},Wo=Ce.TYPE.Ident;function qo(){this.scanner.tokenType!==Wo&&!1===this.scanner.isDelim(42)&&this.error("Identifier or asterisk is expected"),this.scanner.next();}var Yo={name:"TypeSelector",structure:{name:String},parse:function(){var e=this.scanner.tokenStart;return this.scanner.isDelim(124)?(this.scanner.next(),qo.call(this)):(qo.call(this),this.scanner.isDelim(124)&&(this.scanner.next(),qo.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.scanner.tokenStart),name:this.scanner.substrToCursor(e)}},generate:function(e){this.chunk(e.name);}},Uo=Ce.isHexDigit,Ho=Ce.cmpChar,Vo=Ce.TYPE,Ko=Ce.NAME,Go=Vo.Ident,Qo=Vo.Number,Xo=Vo.Dimension;function Zo(e,t){for(var n=this.scanner.tokenStart+e,r=0;n<this.scanner.tokenEnd;n++){var i=this.scanner.source.charCodeAt(n);if(45===i&&t&&0!==r)return 0===Zo.call(this,e+r+1,!1)&&this.error(),-1;Uo(i)||this.error(t&&0!==r?"HyphenMinus"+(r<6?" or hex digit":"")+" is expected":r<6?"Hex digit is expected":"Unexpected input",n),++r>6&&this.error("Too many hex digits",n);}return this.scanner.next(),r}function $o(e){for(var t=0;this.scanner.isDelim(63);)++t>e&&this.error("Too many question marks"),this.scanner.next();}function Jo(e){this.scanner.source.charCodeAt(this.scanner.tokenStart)!==e&&this.error(Ko[e]+" is expected");}function es(){var e=0;return this.scanner.isDelim(43)?(this.scanner.next(),this.scanner.tokenType===Go?void((e=Zo.call(this,0,!0))>0&&$o.call(this,6-e)):this.scanner.isDelim(63)?(this.scanner.next(),void $o.call(this,5)):void this.error("Hex digit or question mark is expected")):this.scanner.tokenType===Qo?(Jo.call(this,43),e=Zo.call(this,1,!0),this.scanner.isDelim(63)?void $o.call(this,6-e):this.scanner.tokenType===Xo||this.scanner.tokenType===Qo?(Jo.call(this,45),void Zo.call(this,1,!1)):void 0):this.scanner.tokenType===Xo?(Jo.call(this,43),void((e=Zo.call(this,1,!0))>0&&$o.call(this,6-e))):void this.error()}var ts={name:"UnicodeRange",structure:{value:String},parse:function(){var e=this.scanner.tokenStart;return Ho(this.scanner.source,e,117)||this.error("U is expected"),Ho(this.scanner.source,e+1,43)||this.error("Plus sign is expected"),this.scanner.next(),es.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.scanner.tokenStart),value:this.scanner.substrToCursor(e)}},generate:function(e){this.chunk(e.value);}},ns=Ce.isWhiteSpace,rs=Ce.cmpStr,is=Ce.TYPE,as=is.Function,os=is.Url,ss=is.RightParenthesis,ls={name:"Url",structure:{value:["String","Raw"]},parse:function(){var e,t=this.scanner.tokenStart;switch(this.scanner.tokenType){case os:for(var n=t+4,r=this.scanner.tokenEnd-1;n<r&&ns(this.scanner.source.charCodeAt(n));)n++;for(;n<r&&ns(this.scanner.source.charCodeAt(r-1));)r--;e={type:"Raw",loc:this.getLocation(n,r),value:this.scanner.source.substring(n,r)},this.eat(os);break;case as:rs(this.scanner.source,this.scanner.tokenStart,this.scanner.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(as),this.scanner.skipSC(),e=this.String(),this.scanner.skipSC(),this.eat(ss);break;default:this.error("Url or Function is expected");}return {type:"Url",loc:this.getLocation(t,this.scanner.tokenStart),value:e}},generate:function(e){this.chunk("url"),this.chunk("("),this.node(e.value),this.chunk(")");}},cs=Ce.TYPE.WhiteSpace,us=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),hs={AnPlusB:Gr,Atrule:hi,AtrulePrelude:gi,AttributeSelector:Ci,Block:Mi,Brackets:Wi,CDC:Yi,CDO:Hi,ClassSelector:Ki,Combinator:Qi,Comment:Zi,Declaration:ua,DeclarationList:ka,Dimension:wa,Function:Ca,Hash:Aa,Identifier:Ta,IdSelector:Ea,MediaFeature:_a,MediaQuery:Ha,MediaQueryList:Ka,Nth:{name:"Nth",structure:{nth:["AnPlusB","Identifier"],selector:["SelectorList",null]},parse:function(e){this.scanner.skipSC();var t,n=this.scanner.tokenStart,r=n,i=null;return t=this.scanner.lookupValue(0,"odd")||this.scanner.lookupValue(0,"even")?this.Identifier():this.AnPlusB(),this.scanner.skipSC(),e&&this.scanner.lookupValue(0,"of")?(this.scanner.next(),i=this.SelectorList(),this.needPositions&&(r=this.getLastListNode(i.children).loc.end.offset)):this.needPositions&&(r=t.loc.end.offset),{type:"Nth",loc:this.getLocation(n,r),nth:t,selector:i}},generate:function(e){this.node(e.nth),null!==e.selector&&(this.chunk(" of "),this.node(e.selector));}},Number:Qa,Operator:Xa,Parentheses:eo,Percentage:ro,PseudoClassSelector:co,PseudoElementSelector:fo,Ratio:wo,Raw:ni,Rule:To,Selector:{name:"Selector",structure:{children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator","WhiteSpace"]]},parse:function(){var e=this.readSequence(this.scope.Selector);return null===this.getFirstListNode(e)&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}},generate:function(e){this.children(e);}},SelectorList:Eo,String:Oo,StyleSheet:Fo,TypeSelector:Yo,UnicodeRange:ts,Url:ls,Value:{name:"Value",structure:{children:[[]]},parse:function(){var e=this.scanner.tokenStart,t=this.readSequence(this.scope.Value);return {type:"Value",loc:this.getLocation(e,this.scanner.tokenStart),children:t}},generate:function(e){this.children(e);}},WhiteSpace:{name:"WhiteSpace",structure:{value:String},parse:function(){return this.eat(cs),us},generate:function(e){this.chunk(e.value);}}},ps={generic:!0,types:Nr.types,atrules:Nr.atrules,properties:Nr.properties,node:hs},ds=Ce.cmpChar,ms=Ce.cmpStr,gs=Ce.TYPE,fs=gs.Ident,bs=gs.String,ys=gs.Number,ks=gs.Function,vs=gs.Url,xs=gs.Hash,ws=gs.Dimension,Ss=gs.Percentage,Cs=gs.LeftParenthesis,zs=gs.LeftSquareBracket,As=gs.Comma,Ps=gs.Delim,Ts=function(e){switch(this.scanner.tokenType){case xs:return this.Hash();case As:return e.space=null,e.ignoreWSAfter=!0,this.Operator();case Cs:return this.Parentheses(this.readSequence,e.recognizer);case zs:return this.Brackets(this.readSequence,e.recognizer);case bs:return this.String();case ws:return this.Dimension();case Ss:return this.Percentage();case ys:return this.Number();case ks:return ms(this.scanner.source,this.scanner.tokenStart,this.scanner.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case vs:return this.Url();case fs:return ds(this.scanner.source,this.scanner.tokenStart,117)&&ds(this.scanner.source,this.scanner.tokenStart+1,43)?this.UnicodeRange():this.Identifier();case Ps:var t=this.scanner.source.charCodeAt(this.scanner.tokenStart);if(47===t||42===t||43===t||45===t)return this.Operator();35===t&&this.error("Hex or identifier is expected",this.scanner.tokenStart+1);}},Ls={getNode:Ts},Es=Ce.TYPE,Ds=Es.Delim,Os=Es.Ident,Bs=Es.Dimension,Is=Es.Percentage,Ns=Es.Number,Rs=Es.Hash,Ms=Es.Colon,js=Es.LeftSquareBracket;var _s={getNode:function(e){switch(this.scanner.tokenType){case js:return this.AttributeSelector();case Rs:return this.IdSelector();case Ms:return this.scanner.lookupType(1)===Ms?this.PseudoElementSelector():this.PseudoClassSelector();case Os:return this.TypeSelector();case Ns:case Is:return this.Percentage();case Bs:46===this.scanner.source.charCodeAt(this.scanner.tokenStart)&&this.error("Identifier is expected",this.scanner.tokenStart+1);break;case Ds:switch(this.scanner.source.charCodeAt(this.scanner.tokenStart)){case 43:case 62:case 126:return e.space=null,e.ignoreWSAfter=!0,this.Combinator();case 47:return this.Combinator();case 46:return this.ClassSelector();case 42:case 124:return this.TypeSelector();case 35:return this.IdSelector()}}}},Fs=Ce.TYPE,Ws=ni.mode,qs=Fs.Comma,Ys=Fs.WhiteSpace,Us={AtrulePrelude:Ls,Selector:_s,Value:{getNode:Ts,expression:function(){return this.createSingleNodeList(this.Raw(this.scanner.tokenIndex,null,!1))},var:function(){var e=this.createList();if(this.scanner.skipSC(),e.push(this.Identifier()),this.scanner.skipSC(),this.scanner.tokenType===qs){e.push(this.Operator());const t=this.scanner.tokenIndex,n=this.parseCustomProperty?this.Value(null):this.Raw(this.scanner.tokenIndex,Ws.exclamationMarkOrSemicolon,!1);if("Value"===n.type&&n.children.isEmpty())for(let e=t-this.scanner.tokenIndex;e<=0;e++)if(this.scanner.lookupType(e)===Ys){n.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}e.push(n);}return e}}},Hs=Ce.TYPE,Vs=Hs.String,Ks=Hs.Ident,Gs=Hs.Url,Qs=Hs.Function,Xs=Hs.LeftParenthesis,Zs={parse:{prelude:function(){var e=this.createList();switch(this.scanner.skipSC(),this.scanner.tokenType){case Vs:e.push(this.String());break;case Gs:case Qs:e.push(this.Url());break;default:this.error("String or url() is expected");}return this.lookupNonWSType(0)!==Ks&&this.lookupNonWSType(0)!==Xs||(e.push(this.WhiteSpace()),e.push(this.MediaQueryList())),e},block:null}},$s=Ce.TYPE,Js=$s.WhiteSpace,el=$s.Comment,tl=$s.Ident,nl=$s.Function,rl=$s.Colon,il=$s.LeftParenthesis;function al(){return this.createSingleNodeList(this.Raw(this.scanner.tokenIndex,null,!1))}function ol(){return this.scanner.skipSC(),this.scanner.tokenType===tl&&this.lookupNonWSType(1)===rl?this.createSingleNodeList(this.Declaration()):sl.call(this)}function sl(){var e,t=this.createList(),n=null;this.scanner.skipSC();e:for(;!this.scanner.eof;){switch(this.scanner.tokenType){case Js:n=this.WhiteSpace();continue;case el:this.scanner.next();continue;case nl:e=this.Function(al,this.scope.AtrulePrelude);break;case tl:e=this.Identifier();break;case il:e=this.Parentheses(ol,this.scope.AtrulePrelude);break;default:break e}null!==n&&(t.push(n),n=null),t.push(e);}return t}var ll,cl={parse:function(){return this.createSingleNodeList(this.SelectorList())}},ul={parse:function(){return this.createSingleNodeList(this.Nth(!0))}},hl={parse:function(){return this.createSingleNodeList(this.Nth(!1))}},pl={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude:function(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",rule:"Rule",selectorList:"SelectorList",selector:"Selector",block:function(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},scope:Us,atrule:{"font-face":{parse:{prelude:null,block:function(){return this.Block(!0)}}},import:Zs,media:{parse:{prelude:function(){return this.createSingleNodeList(this.MediaQueryList())},block:function(){return this.Block(!1)}}},page:{parse:{prelude:function(){return this.createSingleNodeList(this.SelectorList())},block:function(){return this.Block(!0)}}},supports:{parse:{prelude:function(){var e=sl.call(this);return null===this.getFirstListNode(e)&&this.error("Condition is expected"),e},block:function(){return this.Block(!1)}}}},pseudo:{dir:{parse:function(){return this.createSingleNodeList(this.Identifier())}},has:{parse:function(){return this.createSingleNodeList(this.SelectorList())}},lang:{parse:function(){return this.createSingleNodeList(this.Identifier())}},matches:cl,not:cl,"nth-child":ul,"nth-last-child":ul,"nth-last-of-type":hl,"nth-of-type":hl,slotted:{parse:function(){return this.createSingleNodeList(this.Selector())}}},node:hs},dl={node:hs},ml={version:"1.1.2"},gl=(ll=Object.freeze({__proto__:null,version:"1.1.2",default:ml}))&&ll.default||ll;var fl=Ir(function(){for(var e={},t=0;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r];}return e}(ps,pl,dl)),bl=gl.version;return fl.version=bl,fl}));
19 });
20
21 var hasOwnProperty = Object.prototype.hasOwnProperty;
22
23 function buildMap(list, caseInsensitive) {
24 var map = Object.create(null);
25
26 if (!Array.isArray(list)) {
27 return null;
28 }
29
30 for (var i = 0; i < list.length; i++) {
31 var name = list[i];
32
33 if (caseInsensitive) {
34 name = name.toLowerCase();
35 }
36
37 map[name] = true;
38 }
39
40 return map;
41 }
42
43 function buildList(data) {
44 if (!data) {
45 return null;
46 }
47
48 var tags = buildMap(data.tags, true);
49 var ids = buildMap(data.ids);
50 var classes = buildMap(data.classes);
51
52 if (tags === null &&
53 ids === null &&
54 classes === null) {
55 return null;
56 }
57
58 return {
59 tags: tags,
60 ids: ids,
61 classes: classes
62 };
63 }
64
65 function buildIndex(data) {
66 var scopes = false;
67
68 if (data.scopes && Array.isArray(data.scopes)) {
69 scopes = Object.create(null);
70
71 for (var i = 0; i < data.scopes.length; i++) {
72 var list = data.scopes[i];
73
74 if (!list || !Array.isArray(list)) {
75 throw new Error('Wrong usage format');
76 }
77
78 for (var j = 0; j < list.length; j++) {
79 var name = list[j];
80
81 if (hasOwnProperty.call(scopes, name)) {
82 throw new Error('Class can\'t be used for several scopes: ' + name);
83 }
84
85 scopes[name] = i + 1;
86 }
87 }
88 }
89
90 return {
91 whitelist: buildList(data),
92 blacklist: buildList(data.blacklist),
93 scopes: scopes
94 };
95 }
96
97 var usage = {
98 buildIndex: buildIndex
99 };
100
101 var utils = {
102 hasNoChildren: function(node) {
103 return !node || !node.children || node.children.isEmpty();
104 },
105 isNodeChildrenList: function(node, list) {
106 return node !== null && node.children === list;
107 }
108 };
109
110 var resolveKeyword = csstree_min.keyword;
111 var { hasNoChildren } = utils;
112
113 var Atrule = function cleanAtrule(node, item, list) {
114 if (node.block) {
115 // otherwise removed at-rule don't prevent @import for removal
116 if (this.stylesheet !== null) {
117 this.stylesheet.firstAtrulesAllowed = false;
118 }
119
120 if (hasNoChildren(node.block)) {
121 list.remove(item);
122 return;
123 }
124 }
125
126 switch (node.name) {
127 case 'charset':
128 if (hasNoChildren(node.prelude)) {
129 list.remove(item);
130 return;
131 }
132
133 // if there is any rule before @charset -> remove it
134 if (item.prev) {
135 list.remove(item);
136 return;
137 }
138
139 break;
140
141 case 'import':
142 if (this.stylesheet === null || !this.stylesheet.firstAtrulesAllowed) {
143 list.remove(item);
144 return;
145 }
146
147 // if there are some rules that not an @import or @charset before @import
148 // remove it
149 list.prevUntil(item.prev, function(rule) {
150 if (rule.type === 'Atrule') {
151 if (rule.name === 'import' || rule.name === 'charset') {
152 return;
153 }
154 }
155
156 this.root.firstAtrulesAllowed = false;
157 list.remove(item);
158 return true;
159 }, this);
160
161 break;
162
163 default:
164 var name = resolveKeyword(node.name).basename;
165 if (name === 'keyframes' ||
166 name === 'media' ||
167 name === 'supports') {
168
169 // drop at-rule with no prelude
170 if (hasNoChildren(node.prelude) || hasNoChildren(node.block)) {
171 list.remove(item);
172 }
173 }
174 }
175 };
176
177 var Comment = function cleanComment(data, item, list) {
178 list.remove(item);
179 };
180
181 var property = csstree_min.property;
182
183 var Declaration = function cleanDeclartion(node, item, list) {
184 if (node.value.children && node.value.children.isEmpty()) {
185 list.remove(item);
186 return;
187 }
188
189 if (property(node.property).custom) {
190 if (/\S/.test(node.value.value)) {
191 node.value.value = node.value.value.trim();
192 }
193 }
194 };
195
196 var { isNodeChildrenList } = utils;
197
198 var Raw = function cleanRaw(node, item, list) {
199 // raw in stylesheet or block children
200 if (isNodeChildrenList(this.stylesheet, list) ||
201 isNodeChildrenList(this.block, list)) {
202 list.remove(item);
203 }
204 };
205
206 var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
207 var walk = csstree_min.walk;
208 var { hasNoChildren: hasNoChildren$1 } = utils;
209
210 function cleanUnused(selectorList, usageData) {
211 selectorList.children.each(function(selector, item, list) {
212 var shouldRemove = false;
213
214 walk(selector, function(node) {
215 // ignore nodes in nested selectors
216 if (this.selector === null || this.selector === selectorList) {
217 switch (node.type) {
218 case 'SelectorList':
219 // TODO: remove toLowerCase when pseudo selectors will be normalized
220 // ignore selectors inside :not()
221 if (this.function === null || this.function.name.toLowerCase() !== 'not') {
222 if (cleanUnused(node, usageData)) {
223 shouldRemove = true;
224 }
225 }
226 break;
227
228 case 'ClassSelector':
229 if (usageData.whitelist !== null &&
230 usageData.whitelist.classes !== null &&
231 !hasOwnProperty$1.call(usageData.whitelist.classes, node.name)) {
232 shouldRemove = true;
233 }
234 if (usageData.blacklist !== null &&
235 usageData.blacklist.classes !== null &&
236 hasOwnProperty$1.call(usageData.blacklist.classes, node.name)) {
237 shouldRemove = true;
238 }
239 break;
240
241 case 'IdSelector':
242 if (usageData.whitelist !== null &&
243 usageData.whitelist.ids !== null &&
244 !hasOwnProperty$1.call(usageData.whitelist.ids, node.name)) {
245 shouldRemove = true;
246 }
247 if (usageData.blacklist !== null &&
248 usageData.blacklist.ids !== null &&
249 hasOwnProperty$1.call(usageData.blacklist.ids, node.name)) {
250 shouldRemove = true;
251 }
252 break;
253
254 case 'TypeSelector':
255 // TODO: remove toLowerCase when type selectors will be normalized
256 // ignore universal selectors
257 if (node.name.charAt(node.name.length - 1) !== '*') {
258 if (usageData.whitelist !== null &&
259 usageData.whitelist.tags !== null &&
260 !hasOwnProperty$1.call(usageData.whitelist.tags, node.name.toLowerCase())) {
261 shouldRemove = true;
262 }
263 if (usageData.blacklist !== null &&
264 usageData.blacklist.tags !== null &&
265 hasOwnProperty$1.call(usageData.blacklist.tags, node.name.toLowerCase())) {
266 shouldRemove = true;
267 }
268 }
269 break;
270 }
271 }
272 });
273
274 if (shouldRemove) {
275 list.remove(item);
276 }
277 });
278
279 return selectorList.children.isEmpty();
280 }
281
282 var Rule = function cleanRule(node, item, list, options) {
283 if (hasNoChildren$1(node.prelude) || hasNoChildren$1(node.block)) {
284 list.remove(item);
285 return;
286 }
287
288 var usageData = options.usage;
289
290 if (usageData && (usageData.whitelist !== null || usageData.blacklist !== null)) {
291 cleanUnused(node.prelude, usageData);
292
293 if (hasNoChildren$1(node.prelude)) {
294 list.remove(item);
295 return;
296 }
297 }
298 };
299
300 // remove useless universal selector
301 var TypeSelector = function cleanTypeSelector(node, item, list) {
302 var name = item.data.name;
303
304 // check it's a non-namespaced universal selector
305 if (name !== '*') {
306 return;
307 }
308
309 // remove when universal selector before other selectors
310 var nextType = item.next && item.next.data.type;
311 if (nextType === 'IdSelector' ||
312 nextType === 'ClassSelector' ||
313 nextType === 'AttributeSelector' ||
314 nextType === 'PseudoClassSelector' ||
315 nextType === 'PseudoElementSelector') {
316 list.remove(item);
317 }
318 };
319
320 var { isNodeChildrenList: isNodeChildrenList$1 } = utils;
321
322 function isSafeOperator(node) {
323 return node.type === 'Operator' && node.value !== '+' && node.value !== '-';
324 }
325
326 var WhiteSpace = function cleanWhitespace(node, item, list) {
327 // remove when first or last item in sequence
328 if (item.next === null || item.prev === null) {
329 list.remove(item);
330 return;
331 }
332
333 // white space in stylesheet or block children
334 if (isNodeChildrenList$1(this.stylesheet, list) ||
335 isNodeChildrenList$1(this.block, list)) {
336 list.remove(item);
337 return;
338 }
339
340 if (item.next.data.type === 'WhiteSpace') {
341 list.remove(item);
342 return;
343 }
344
345 if (isSafeOperator(item.prev.data) || isSafeOperator(item.next.data)) {
346 list.remove(item);
347 return;
348 }
349 };
350
351 var walk$1 = csstree_min.walk;
352 var handlers = {
353 Atrule: Atrule,
354 Comment: Comment,
355 Declaration: Declaration,
356 Raw: Raw,
357 Rule: Rule,
358 TypeSelector: TypeSelector,
359 WhiteSpace: WhiteSpace
360 };
361
362 var clean = function(ast, options) {
363 walk$1(ast, {
364 leave: function(node, item, list) {
365 if (handlers.hasOwnProperty(node.type)) {
366 handlers[node.type].call(this, node, item, list, options);
367 }
368 }
369 });
370 };
371
372 var keyframes = function(node) {
373 node.block.children.each(function(rule) {
374 rule.prelude.children.each(function(simpleselector) {
375 simpleselector.children.each(function(data, item) {
376 if (data.type === 'Percentage' && data.value === '100') {
377 item.data = {
378 type: 'TypeSelector',
379 loc: data.loc,
380 name: 'to'
381 };
382 } else if (data.type === 'TypeSelector' && data.name === 'from') {
383 item.data = {
384 type: 'Percentage',
385 loc: data.loc,
386 value: '0'
387 };
388 }
389 });
390 });
391 });
392 };
393
394 var resolveKeyword$1 = csstree_min.keyword;
395
396
397 var Atrule$1 = function(node) {
398 // compress @keyframe selectors
399 if (resolveKeyword$1(node.name).basename === 'keyframes') {
400 keyframes(node);
401 }
402 };
403
404 // Can unquote attribute detection
405 // Adopted implementation of Mathias Bynens
406 // https://github.com/mathiasbynens/mothereff.in/blob/master/unquoted-attributes/eff.js
407 var escapesRx = /\\([0-9A-Fa-f]{1,6})(\r\n|[ \t\n\f\r])?|\\./g;
408 var blockUnquoteRx = /^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/;
409
410 function canUnquote(value) {
411 if (value === '' || value === '-') {
412 return;
413 }
414
415 // Escapes are valid, so replace them with a valid non-empty string
416 value = value.replace(escapesRx, 'a');
417
418 return !blockUnquoteRx.test(value);
419 }
420
421 var AttributeSelector = function(node) {
422 var attrValue = node.value;
423
424 if (!attrValue || attrValue.type !== 'String') {
425 return;
426 }
427
428 var unquotedValue = attrValue.value.replace(/^(.)(.*)\1$/, '$2');
429 if (canUnquote(unquotedValue)) {
430 node.value = {
431 type: 'Identifier',
432 loc: attrValue.loc,
433 name: unquotedValue
434 };
435 }
436 };
437
438 var font = function compressFont(node) {
439 var list = node.children;
440
441 list.eachRight(function(node, item) {
442 if (node.type === 'Identifier') {
443 if (node.name === 'bold') {
444 item.data = {
445 type: 'Number',
446 loc: node.loc,
447 value: '700'
448 };
449 } else if (node.name === 'normal') {
450 var prev = item.prev;
451
452 if (prev && prev.data.type === 'Operator' && prev.data.value === '/') {
453 this.remove(prev);
454 }
455
456 this.remove(item);
457 } else if (node.name === 'medium') {
458 var next = item.next;
459
460 if (!next || next.data.type !== 'Operator') {
461 this.remove(item);
462 }
463 }
464 }
465 });
466
467 // remove redundant spaces
468 list.each(function(node, item) {
469 if (node.type === 'WhiteSpace') {
470 if (!item.prev || !item.next || item.next.data.type === 'WhiteSpace') {
471 this.remove(item);
472 }
473 }
474 });
475
476 if (list.isEmpty()) {
477 list.insert(list.createItem({
478 type: 'Identifier',
479 name: 'normal'
480 }));
481 }
482 };
483
484 var fontWeight = function compressFontWeight(node) {
485 var value = node.children.head.data;
486
487 if (value.type === 'Identifier') {
488 switch (value.name) {
489 case 'normal':
490 node.children.head.data = {
491 type: 'Number',
492 loc: value.loc,
493 value: '400'
494 };
495 break;
496 case 'bold':
497 node.children.head.data = {
498 type: 'Number',
499 loc: value.loc,
500 value: '700'
501 };
502 break;
503 }
504 }
505 };
506
507 var List = csstree_min.List;
508
509 var background = function compressBackground(node) {
510 function lastType() {
511 if (buffer.length) {
512 return buffer[buffer.length - 1].type;
513 }
514 }
515
516 function flush() {
517 if (lastType() === 'WhiteSpace') {
518 buffer.pop();
519 }
520
521 if (!buffer.length) {
522 buffer.unshift(
523 {
524 type: 'Number',
525 loc: null,
526 value: '0'
527 },
528 {
529 type: 'WhiteSpace',
530 value: ' '
531 },
532 {
533 type: 'Number',
534 loc: null,
535 value: '0'
536 }
537 );
538 }
539
540 newValue.push.apply(newValue, buffer);
541
542 buffer = [];
543 }
544
545 var newValue = [];
546 var buffer = [];
547
548 node.children.each(function(node) {
549 if (node.type === 'Operator' && node.value === ',') {
550 flush();
551 newValue.push(node);
552 return;
553 }
554
555 // remove defaults
556 if (node.type === 'Identifier') {
557 if (node.name === 'transparent' ||
558 node.name === 'none' ||
559 node.name === 'repeat' ||
560 node.name === 'scroll') {
561 return;
562 }
563 }
564
565 // don't add redundant spaces
566 if (node.type === 'WhiteSpace' && (!buffer.length || lastType() === 'WhiteSpace')) {
567 return;
568 }
569
570 buffer.push(node);
571 });
572
573 flush();
574 node.children = new List().fromArray(newValue);
575 };
576
577 function removeItemAndRedundantWhiteSpace(list, item) {
578 var prev = item.prev;
579 var next = item.next;
580
581 if (next !== null) {
582 if (next.data.type === 'WhiteSpace' && (prev === null || prev.data.type === 'WhiteSpace')) {
583 list.remove(next);
584 }
585 } else if (prev !== null && prev.data.type === 'WhiteSpace') {
586 list.remove(prev);
587 }
588
589 list.remove(item);
590 }
591
592 var border = function compressBorder(node) {
593 node.children.each(function(node, item, list) {
594 if (node.type === 'Identifier' && node.name.toLowerCase() === 'none') {
595 if (list.head === list.tail) {
596 // replace `none` for zero when `none` is a single term
597 item.data = {
598 type: 'Number',
599 loc: node.loc,
600 value: '0'
601 };
602 } else {
603 removeItemAndRedundantWhiteSpace(list, item);
604 }
605 }
606 });
607 };
608
609 var resolveName = csstree_min.property;
610 var handlers$1 = {
611 'font': font,
612 'font-weight': fontWeight,
613 'background': background,
614 'border': border,
615 'outline': border
616 };
617
618 var Value = function compressValue(node) {
619 if (!this.declaration) {
620 return;
621 }
622
623 var property = resolveName(this.declaration.property);
624
625 if (handlers$1.hasOwnProperty(property.basename)) {
626 handlers$1[property.basename](node);
627 }
628 };
629
630 var OMIT_PLUSSIGN = /^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/;
631 var KEEP_PLUSSIGN = /^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/;
632 var unsafeToRemovePlusSignAfter = {
633 Dimension: true,
634 Hash: true,
635 Identifier: true,
636 Number: true,
637 Raw: true,
638 UnicodeRange: true
639 };
640
641 function packNumber(value, item) {
642 // omit plus sign only if no prev or prev is safe type
643 var regexp = item && item.prev !== null && unsafeToRemovePlusSignAfter.hasOwnProperty(item.prev.data.type)
644 ? KEEP_PLUSSIGN
645 : OMIT_PLUSSIGN;
646
647 // 100 -> '100'
648 // 00100 -> '100'
649 // +100 -> '100' (only when safe, e.g. omitting plus sign for 1px+1px leads to single dimension instead of two)
650 // -100 -> '-100'
651 // 0.123 -> '.123'
652 // 0.12300 -> '.123'
653 // 0.0 -> ''
654 // 0 -> ''
655 // -0 -> '-'
656 value = String(value).replace(regexp, '$1$2$3');
657
658 if (value === '' || value === '-') {
659 value = '0';
660 }
661
662 return value;
663 }
664
665 var _Number = function(node, item) {
666 node.value = packNumber(node.value, item);
667 };
668 var pack = packNumber;
669 _Number.pack = pack;
670
671 var packNumber$1 = _Number.pack;
672 var MATH_FUNCTIONS = {
673 'calc': true,
674 'min': true,
675 'max': true,
676 'clamp': true
677 };
678 var LENGTH_UNIT = {
679 // absolute length units
680 'px': true,
681 'mm': true,
682 'cm': true,
683 'in': true,
684 'pt': true,
685 'pc': true,
686
687 // relative length units
688 'em': true,
689 'ex': true,
690 'ch': true,
691 'rem': true,
692
693 // viewport-percentage lengths
694 'vh': true,
695 'vw': true,
696 'vmin': true,
697 'vmax': true,
698 'vm': true
699 };
700
701 var Dimension = function compressDimension(node, item) {
702 var value = packNumber$1(node.value, item);
703
704 node.value = value;
705
706 if (value === '0' && this.declaration !== null && this.atrulePrelude === null) {
707 var unit = node.unit.toLowerCase();
708
709 // only length values can be compressed
710 if (!LENGTH_UNIT.hasOwnProperty(unit)) {
711 return;
712 }
713
714 // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11
715 // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11
716 if (this.declaration.property === '-ms-flex' ||
717 this.declaration.property === 'flex') {
718 return;
719 }
720
721 // issue #222: don't remove units inside calc
722 if (this.function && MATH_FUNCTIONS.hasOwnProperty(this.function.name)) {
723 return;
724 }
725
726 item.data = {
727 type: 'Number',
728 loc: node.loc,
729 value: value
730 };
731 }
732 };
733
734 var lexer = csstree_min.lexer;
735 var packNumber$2 = _Number.pack;
736 var blacklist = new Set([
737 // see https://github.com/jakubpawlowicz/clean-css/issues/957
738 'width',
739 'min-width',
740 'max-width',
741 'height',
742 'min-height',
743 'max-height',
744
745 // issue #410: Don’t remove units in flex-basis value for (-ms-)flex shorthand
746 // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11
747 // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11
748 'flex',
749 '-ms-flex'
750 ]);
751
752 var Percentage = function compressPercentage(node, item) {
753 node.value = packNumber$2(node.value, item);
754
755 if (node.value === '0' && this.declaration && !blacklist.has(this.declaration.property)) {
756 // try to convert a number
757 item.data = {
758 type: 'Number',
759 loc: node.loc,
760 value: node.value
761 };
762
763 // that's ok only when new value matches on length
764 if (!lexer.matchDeclaration(this.declaration).isType(item.data, 'length')) {
765 // otherwise rollback changes
766 item.data = node;
767 }
768 }
769 };
770
771 var _String = function(node) {
772 var value = node.value;
773
774 // remove escaped newlines, i.e.
775 // .a { content: "foo\
776 // bar"}
777 // ->
778 // .a { content: "foobar" }
779 value = value.replace(/\\(\r\n|\r|\n|\f)/g, '');
780
781 node.value = value;
782 };
783
784 var UNICODE = '\\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?';
785 var ESCAPE = '(' + UNICODE + '|\\\\[^\\n\\r\\f0-9a-fA-F])';
786 var NONPRINTABLE = '\u0000\u0008\u000b\u000e-\u001f\u007f';
787 var SAFE_URL = new RegExp('^(' + ESCAPE + '|[^\"\'\\(\\)\\\\\\s' + NONPRINTABLE + '])*$', 'i');
788
789 var Url = function(node) {
790 var value = node.value;
791
792 if (value.type !== 'String') {
793 return;
794 }
795
796 var quote = value.value[0];
797 var url = value.value.substr(1, value.value.length - 2);
798
799 // convert `\\` to `/`
800 url = url.replace(/\\\\/g, '/');
801
802 // remove quotes when safe
803 // https://www.w3.org/TR/css-syntax-3/#url-unquoted-diagram
804 if (SAFE_URL.test(url)) {
805 node.value = {
806 type: 'Raw',
807 loc: node.value.loc,
808 value: url
809 };
810 } else {
811 // use double quotes if string has no double quotes
812 // otherwise use original quotes
813 // TODO: make better quote type selection
814 node.value.value = url.indexOf('"') === -1 ? '"' + url + '"' : quote + url + quote;
815 }
816 };
817
818 var lexer$1 = csstree_min.lexer;
819 var packNumber$3 = _Number.pack;
820
821 // http://www.w3.org/TR/css3-color/#svg-color
822 var NAME_TO_HEX = {
823 'aliceblue': 'f0f8ff',
824 'antiquewhite': 'faebd7',
825 'aqua': '0ff',
826 'aquamarine': '7fffd4',
827 'azure': 'f0ffff',
828 'beige': 'f5f5dc',
829 'bisque': 'ffe4c4',
830 'black': '000',
831 'blanchedalmond': 'ffebcd',
832 'blue': '00f',
833 'blueviolet': '8a2be2',
834 'brown': 'a52a2a',
835 'burlywood': 'deb887',
836 'cadetblue': '5f9ea0',
837 'chartreuse': '7fff00',
838 'chocolate': 'd2691e',
839 'coral': 'ff7f50',
840 'cornflowerblue': '6495ed',
841 'cornsilk': 'fff8dc',
842 'crimson': 'dc143c',
843 'cyan': '0ff',
844 'darkblue': '00008b',
845 'darkcyan': '008b8b',
846 'darkgoldenrod': 'b8860b',
847 'darkgray': 'a9a9a9',
848 'darkgrey': 'a9a9a9',
849 'darkgreen': '006400',
850 'darkkhaki': 'bdb76b',
851 'darkmagenta': '8b008b',
852 'darkolivegreen': '556b2f',
853 'darkorange': 'ff8c00',
854 'darkorchid': '9932cc',
855 'darkred': '8b0000',
856 'darksalmon': 'e9967a',
857 'darkseagreen': '8fbc8f',
858 'darkslateblue': '483d8b',
859 'darkslategray': '2f4f4f',
860 'darkslategrey': '2f4f4f',
861 'darkturquoise': '00ced1',
862 'darkviolet': '9400d3',
863 'deeppink': 'ff1493',
864 'deepskyblue': '00bfff',
865 'dimgray': '696969',
866 'dimgrey': '696969',
867 'dodgerblue': '1e90ff',
868 'firebrick': 'b22222',
869 'floralwhite': 'fffaf0',
870 'forestgreen': '228b22',
871 'fuchsia': 'f0f',
872 'gainsboro': 'dcdcdc',
873 'ghostwhite': 'f8f8ff',
874 'gold': 'ffd700',
875 'goldenrod': 'daa520',
876 'gray': '808080',
877 'grey': '808080',
878 'green': '008000',
879 'greenyellow': 'adff2f',
880 'honeydew': 'f0fff0',
881 'hotpink': 'ff69b4',
882 'indianred': 'cd5c5c',
883 'indigo': '4b0082',
884 'ivory': 'fffff0',
885 'khaki': 'f0e68c',
886 'lavender': 'e6e6fa',
887 'lavenderblush': 'fff0f5',
888 'lawngreen': '7cfc00',
889 'lemonchiffon': 'fffacd',
890 'lightblue': 'add8e6',
891 'lightcoral': 'f08080',
892 'lightcyan': 'e0ffff',
893 'lightgoldenrodyellow': 'fafad2',
894 'lightgray': 'd3d3d3',
895 'lightgrey': 'd3d3d3',
896 'lightgreen': '90ee90',
897 'lightpink': 'ffb6c1',
898 'lightsalmon': 'ffa07a',
899 'lightseagreen': '20b2aa',
900 'lightskyblue': '87cefa',
901 'lightslategray': '789',
902 'lightslategrey': '789',
903 'lightsteelblue': 'b0c4de',
904 'lightyellow': 'ffffe0',
905 'lime': '0f0',
906 'limegreen': '32cd32',
907 'linen': 'faf0e6',
908 'magenta': 'f0f',
909 'maroon': '800000',
910 'mediumaquamarine': '66cdaa',
911 'mediumblue': '0000cd',
912 'mediumorchid': 'ba55d3',
913 'mediumpurple': '9370db',
914 'mediumseagreen': '3cb371',
915 'mediumslateblue': '7b68ee',
916 'mediumspringgreen': '00fa9a',
917 'mediumturquoise': '48d1cc',
918 'mediumvioletred': 'c71585',
919 'midnightblue': '191970',
920 'mintcream': 'f5fffa',
921 'mistyrose': 'ffe4e1',
922 'moccasin': 'ffe4b5',
923 'navajowhite': 'ffdead',
924 'navy': '000080',
925 'oldlace': 'fdf5e6',
926 'olive': '808000',
927 'olivedrab': '6b8e23',
928 'orange': 'ffa500',
929 'orangered': 'ff4500',
930 'orchid': 'da70d6',
931 'palegoldenrod': 'eee8aa',
932 'palegreen': '98fb98',
933 'paleturquoise': 'afeeee',
934 'palevioletred': 'db7093',
935 'papayawhip': 'ffefd5',
936 'peachpuff': 'ffdab9',
937 'peru': 'cd853f',
938 'pink': 'ffc0cb',
939 'plum': 'dda0dd',
940 'powderblue': 'b0e0e6',
941 'purple': '800080',
942 'rebeccapurple': '639',
943 'red': 'f00',
944 'rosybrown': 'bc8f8f',
945 'royalblue': '4169e1',
946 'saddlebrown': '8b4513',
947 'salmon': 'fa8072',
948 'sandybrown': 'f4a460',
949 'seagreen': '2e8b57',
950 'seashell': 'fff5ee',
951 'sienna': 'a0522d',
952 'silver': 'c0c0c0',
953 'skyblue': '87ceeb',
954 'slateblue': '6a5acd',
955 'slategray': '708090',
956 'slategrey': '708090',
957 'snow': 'fffafa',
958 'springgreen': '00ff7f',
959 'steelblue': '4682b4',
960 'tan': 'd2b48c',
961 'teal': '008080',
962 'thistle': 'd8bfd8',
963 'tomato': 'ff6347',
964 'turquoise': '40e0d0',
965 'violet': 'ee82ee',
966 'wheat': 'f5deb3',
967 'white': 'fff',
968 'whitesmoke': 'f5f5f5',
969 'yellow': 'ff0',
970 'yellowgreen': '9acd32'
971 };
972
973 var HEX_TO_NAME = {
974 '800000': 'maroon',
975 '800080': 'purple',
976 '808000': 'olive',
977 '808080': 'gray',
978 '00ffff': 'cyan',
979 'f0ffff': 'azure',
980 'f5f5dc': 'beige',
981 'ffe4c4': 'bisque',
982 '000000': 'black',
983 '0000ff': 'blue',
984 'a52a2a': 'brown',
985 'ff7f50': 'coral',
986 'ffd700': 'gold',
987 '008000': 'green',
988 '4b0082': 'indigo',
989 'fffff0': 'ivory',
990 'f0e68c': 'khaki',
991 '00ff00': 'lime',
992 'faf0e6': 'linen',
993 '000080': 'navy',
994 'ffa500': 'orange',
995 'da70d6': 'orchid',
996 'cd853f': 'peru',
997 'ffc0cb': 'pink',
998 'dda0dd': 'plum',
999 'f00': 'red',
1000 'ff0000': 'red',
1001 'fa8072': 'salmon',
1002 'a0522d': 'sienna',
1003 'c0c0c0': 'silver',
1004 'fffafa': 'snow',
1005 'd2b48c': 'tan',
1006 '008080': 'teal',
1007 'ff6347': 'tomato',
1008 'ee82ee': 'violet',
1009 'f5deb3': 'wheat',
1010 'ffffff': 'white',
1011 'ffff00': 'yellow'
1012 };
1013
1014 function hueToRgb(p, q, t) {
1015 if (t < 0) {
1016 t += 1;
1017 }
1018 if (t > 1) {
1019 t -= 1;
1020 }
1021 if (t < 1 / 6) {
1022 return p + (q - p) * 6 * t;
1023 }
1024 if (t < 1 / 2) {
1025 return q;
1026 }
1027 if (t < 2 / 3) {
1028 return p + (q - p) * (2 / 3 - t) * 6;
1029 }
1030 return p;
1031 }
1032
1033 function hslToRgb(h, s, l, a) {
1034 var r;
1035 var g;
1036 var b;
1037
1038 if (s === 0) {
1039 r = g = b = l; // achromatic
1040 } else {
1041 var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
1042 var p = 2 * l - q;
1043
1044 r = hueToRgb(p, q, h + 1 / 3);
1045 g = hueToRgb(p, q, h);
1046 b = hueToRgb(p, q, h - 1 / 3);
1047 }
1048
1049 return [
1050 Math.round(r * 255),
1051 Math.round(g * 255),
1052 Math.round(b * 255),
1053 a
1054 ];
1055 }
1056
1057 function toHex(value) {
1058 value = value.toString(16);
1059 return value.length === 1 ? '0' + value : value;
1060 }
1061
1062 function parseFunctionArgs(functionArgs, count, rgb) {
1063 var cursor = functionArgs.head;
1064 var args = [];
1065 var wasValue = false;
1066
1067 while (cursor !== null) {
1068 var node = cursor.data;
1069 var type = node.type;
1070
1071 switch (type) {
1072 case 'Number':
1073 case 'Percentage':
1074 if (wasValue) {
1075 return;
1076 }
1077
1078 wasValue = true;
1079 args.push({
1080 type: type,
1081 value: Number(node.value)
1082 });
1083 break;
1084
1085 case 'Operator':
1086 if (node.value === ',') {
1087 if (!wasValue) {
1088 return;
1089 }
1090 wasValue = false;
1091 } else if (wasValue || node.value !== '+') {
1092 return;
1093 }
1094 break;
1095
1096 default:
1097 // something we couldn't understand
1098 return;
1099 }
1100
1101 cursor = cursor.next;
1102 }
1103
1104 if (args.length !== count) {
1105 // invalid arguments count
1106 // TODO: remove those tokens
1107 return;
1108 }
1109
1110 if (args.length === 4) {
1111 if (args[3].type !== 'Number') {
1112 // 4th argument should be a number
1113 // TODO: remove those tokens
1114 return;
1115 }
1116
1117 args[3].type = 'Alpha';
1118 }
1119
1120 if (rgb) {
1121 if (args[0].type !== args[1].type || args[0].type !== args[2].type) {
1122 // invalid color, numbers and percentage shouldn't be mixed
1123 // TODO: remove those tokens
1124 return;
1125 }
1126 } else {
1127 if (args[0].type !== 'Number' ||
1128 args[1].type !== 'Percentage' ||
1129 args[2].type !== 'Percentage') {
1130 // invalid color, for hsl values should be: number, percentage, percentage
1131 // TODO: remove those tokens
1132 return;
1133 }
1134
1135 args[0].type = 'Angle';
1136 }
1137
1138 return args.map(function(arg) {
1139 var value = Math.max(0, arg.value);
1140
1141 switch (arg.type) {
1142 case 'Number':
1143 // fit value to [0..255] range
1144 value = Math.min(value, 255);
1145 break;
1146
1147 case 'Percentage':
1148 // convert 0..100% to value in [0..255] range
1149 value = Math.min(value, 100) / 100;
1150
1151 if (!rgb) {
1152 return value;
1153 }
1154
1155 value = 255 * value;
1156 break;
1157
1158 case 'Angle':
1159 // fit value to (-360..360) range
1160 return (((value % 360) + 360) % 360) / 360;
1161
1162 case 'Alpha':
1163 // fit value to [0..1] range
1164 return Math.min(value, 1);
1165 }
1166
1167 return Math.round(value);
1168 });
1169 }
1170
1171 function compressFunction(node, item, list) {
1172 var functionName = node.name;
1173 var args;
1174
1175 if (functionName === 'rgba' || functionName === 'hsla') {
1176 args = parseFunctionArgs(node.children, 4, functionName === 'rgba');
1177
1178 if (!args) {
1179 // something went wrong
1180 return;
1181 }
1182
1183 if (functionName === 'hsla') {
1184 args = hslToRgb.apply(null, args);
1185 node.name = 'rgba';
1186 }
1187
1188 if (args[3] === 0) {
1189 // try to replace `rgba(x, x, x, 0)` to `transparent`
1190 // always replace `rgba(0, 0, 0, 0)` to `transparent`
1191 // otherwise avoid replacement in gradients since it may break color transition
1192 // http://stackoverflow.com/questions/11829410/css3-gradient-rendering-issues-from-transparent-to-white
1193 var scopeFunctionName = this.function && this.function.name;
1194 if ((args[0] === 0 && args[1] === 0 && args[2] === 0) ||
1195 !/^(?:to|from|color-stop)$|gradient$/i.test(scopeFunctionName)) {
1196
1197 item.data = {
1198 type: 'Identifier',
1199 loc: node.loc,
1200 name: 'transparent'
1201 };
1202
1203 return;
1204 }
1205 }
1206
1207 if (args[3] !== 1) {
1208 // replace argument values for normalized/interpolated
1209 node.children.each(function(node, item, list) {
1210 if (node.type === 'Operator') {
1211 if (node.value !== ',') {
1212 list.remove(item);
1213 }
1214 return;
1215 }
1216
1217 item.data = {
1218 type: 'Number',
1219 loc: node.loc,
1220 value: packNumber$3(args.shift(), null)
1221 };
1222 });
1223
1224 return;
1225 }
1226
1227 // otherwise convert to rgb, i.e. rgba(255, 0, 0, 1) -> rgb(255, 0, 0)
1228 functionName = 'rgb';
1229 }
1230
1231 if (functionName === 'hsl') {
1232 args = args || parseFunctionArgs(node.children, 3, false);
1233
1234 if (!args) {
1235 // something went wrong
1236 return;
1237 }
1238
1239 // convert to rgb
1240 args = hslToRgb.apply(null, args);
1241 functionName = 'rgb';
1242 }
1243
1244 if (functionName === 'rgb') {
1245 args = args || parseFunctionArgs(node.children, 3, true);
1246
1247 if (!args) {
1248 // something went wrong
1249 return;
1250 }
1251
1252 // check if color is not at the end and not followed by space
1253 var next = item.next;
1254 if (next && next.data.type !== 'WhiteSpace') {
1255 list.insert(list.createItem({
1256 type: 'WhiteSpace',
1257 value: ' '
1258 }), next);
1259 }
1260
1261 item.data = {
1262 type: 'Hash',
1263 loc: node.loc,
1264 value: toHex(args[0]) + toHex(args[1]) + toHex(args[2])
1265 };
1266
1267 compressHex(item.data, item);
1268 }
1269 }
1270
1271 function compressIdent(node, item) {
1272 if (this.declaration === null) {
1273 return;
1274 }
1275
1276 var color = node.name.toLowerCase();
1277
1278 if (NAME_TO_HEX.hasOwnProperty(color) &&
1279 lexer$1.matchDeclaration(this.declaration).isType(node, 'color')) {
1280 var hex = NAME_TO_HEX[color];
1281
1282 if (hex.length + 1 <= color.length) {
1283 // replace for shorter hex value
1284 item.data = {
1285 type: 'Hash',
1286 loc: node.loc,
1287 value: hex
1288 };
1289 } else {
1290 // special case for consistent colors
1291 if (color === 'grey') {
1292 color = 'gray';
1293 }
1294
1295 // just replace value for lower cased name
1296 node.name = color;
1297 }
1298 }
1299 }
1300
1301 function compressHex(node, item) {
1302 var color = node.value.toLowerCase();
1303
1304 // #112233 -> #123
1305 if (color.length === 6 &&
1306 color[0] === color[1] &&
1307 color[2] === color[3] &&
1308 color[4] === color[5]) {
1309 color = color[0] + color[2] + color[4];
1310 }
1311
1312 if (HEX_TO_NAME[color]) {
1313 item.data = {
1314 type: 'Identifier',
1315 loc: node.loc,
1316 name: HEX_TO_NAME[color]
1317 };
1318 } else {
1319 node.value = color;
1320 }
1321 }
1322
1323 var color = {
1324 compressFunction: compressFunction,
1325 compressIdent: compressIdent,
1326 compressHex: compressHex
1327 };
1328
1329 var walk$2 = csstree_min.walk;
1330 var handlers$2 = {
1331 Atrule: Atrule$1,
1332 AttributeSelector: AttributeSelector,
1333 Value: Value,
1334 Dimension: Dimension,
1335 Percentage: Percentage,
1336 Number: _Number,
1337 String: _String,
1338 Url: Url,
1339 Hash: color.compressHex,
1340 Identifier: color.compressIdent,
1341 Function: color.compressFunction
1342 };
1343
1344 var replace = function(ast) {
1345 walk$2(ast, {
1346 leave: function(node, item, list) {
1347 if (handlers$2.hasOwnProperty(node.type)) {
1348 handlers$2[node.type].call(this, node, item, list);
1349 }
1350 }
1351 });
1352 };
1353
1354 var generate = csstree_min.generate;
1355
1356 function Index() {
1357 this.seed = 0;
1358 this.map = Object.create(null);
1359 }
1360
1361 Index.prototype.resolve = function(str) {
1362 var index = this.map[str];
1363
1364 if (!index) {
1365 index = ++this.seed;
1366 this.map[str] = index;
1367 }
1368
1369 return index;
1370 };
1371
1372 var createDeclarationIndexer = function createDeclarationIndexer() {
1373 var ids = new Index();
1374
1375 return function markDeclaration(node) {
1376 var id = generate(node);
1377
1378 node.id = ids.resolve(id);
1379 node.length = id.length;
1380 node.fingerprint = null;
1381
1382 return node;
1383 };
1384 };
1385
1386 var specificity = function specificity(simpleSelector) {
1387 var A = 0;
1388 var B = 0;
1389 var C = 0;
1390
1391 simpleSelector.children.each(function walk(node) {
1392 switch (node.type) {
1393 case 'SelectorList':
1394 case 'Selector':
1395 node.children.each(walk);
1396 break;
1397
1398 case 'IdSelector':
1399 A++;
1400 break;
1401
1402 case 'ClassSelector':
1403 case 'AttributeSelector':
1404 B++;
1405 break;
1406
1407 case 'PseudoClassSelector':
1408 switch (node.name.toLowerCase()) {
1409 case 'not':
1410 node.children.each(walk);
1411 break;
1412
1413 case 'before':
1414 case 'after':
1415 case 'first-line':
1416 case 'first-letter':
1417 C++;
1418 break;
1419
1420 // TODO: support for :nth-*(.. of <SelectorList>), :matches(), :has()
1421 default:
1422 B++;
1423 }
1424 break;
1425
1426 case 'PseudoElementSelector':
1427 C++;
1428 break;
1429
1430 case 'TypeSelector':
1431 // ignore universal selector
1432 if (node.name.charAt(node.name.length - 1) !== '*') {
1433 C++;
1434 }
1435 break;
1436
1437 }
1438 });
1439
1440 return [A, B, C];
1441 };
1442
1443 var generate$1 = csstree_min.generate;
1444
1445
1446 var nonFreezePseudoElements = {
1447 'first-letter': true,
1448 'first-line': true,
1449 'after': true,
1450 'before': true
1451 };
1452 var nonFreezePseudoClasses = {
1453 'link': true,
1454 'visited': true,
1455 'hover': true,
1456 'active': true,
1457 'first-letter': true,
1458 'first-line': true,
1459 'after': true,
1460 'before': true
1461 };
1462
1463 var processSelector = function freeze(node, usageData) {
1464 var pseudos = Object.create(null);
1465 var hasPseudo = false;
1466
1467 node.prelude.children.each(function(simpleSelector) {
1468 var tagName = '*';
1469 var scope = 0;
1470
1471 simpleSelector.children.each(function(node) {
1472 switch (node.type) {
1473 case 'ClassSelector':
1474 if (usageData && usageData.scopes) {
1475 var classScope = usageData.scopes[node.name] || 0;
1476
1477 if (scope !== 0 && classScope !== scope) {
1478 throw new Error('Selector can\'t has classes from different scopes: ' + generate$1(simpleSelector));
1479 }
1480
1481 scope = classScope;
1482 }
1483 break;
1484
1485 case 'PseudoClassSelector':
1486 var name = node.name.toLowerCase();
1487
1488 if (!nonFreezePseudoClasses.hasOwnProperty(name)) {
1489 pseudos[':' + name] = true;
1490 hasPseudo = true;
1491 }
1492 break;
1493
1494 case 'PseudoElementSelector':
1495 var name = node.name.toLowerCase();
1496
1497 if (!nonFreezePseudoElements.hasOwnProperty(name)) {
1498 pseudos['::' + name] = true;
1499 hasPseudo = true;
1500 }
1501 break;
1502
1503 case 'TypeSelector':
1504 tagName = node.name.toLowerCase();
1505 break;
1506
1507 case 'AttributeSelector':
1508 if (node.flags) {
1509 pseudos['[' + node.flags.toLowerCase() + ']'] = true;
1510 hasPseudo = true;
1511 }
1512 break;
1513
1514 case 'WhiteSpace':
1515 case 'Combinator':
1516 tagName = '*';
1517 break;
1518 }
1519 });
1520
1521 simpleSelector.compareMarker = specificity(simpleSelector).toString();
1522 simpleSelector.id = null; // pre-init property to avoid multiple hidden class
1523 simpleSelector.id = generate$1(simpleSelector);
1524
1525 if (scope) {
1526 simpleSelector.compareMarker += ':' + scope;
1527 }
1528
1529 if (tagName !== '*') {
1530 simpleSelector.compareMarker += ',' + tagName;
1531 }
1532 });
1533
1534 // add property to all rule nodes to avoid multiple hidden class
1535 node.pseudoSignature = hasPseudo && Object.keys(pseudos).sort().join(',');
1536 };
1537
1538 var resolveKeyword$2 = csstree_min.keyword;
1539 var walk$3 = csstree_min.walk;
1540 var generate$2 = csstree_min.generate;
1541
1542
1543
1544 var prepare = function prepare(ast, options) {
1545 var markDeclaration = createDeclarationIndexer();
1546
1547 walk$3(ast, {
1548 visit: 'Rule',
1549 enter: function processRule(node) {
1550 node.block.children.each(markDeclaration);
1551 processSelector(node, options.usage);
1552 }
1553 });
1554
1555 walk$3(ast, {
1556 visit: 'Atrule',
1557 enter: function(node) {
1558 if (node.prelude) {
1559 node.prelude.id = null; // pre-init property to avoid multiple hidden class for generate
1560 node.prelude.id = generate$2(node.prelude);
1561 }
1562
1563 // compare keyframe selectors by its values
1564 // NOTE: still no clarification about problems with keyframes selector grouping (issue #197)
1565 if (resolveKeyword$2(node.name).basename === 'keyframes') {
1566 node.block.avoidRulesMerge = true; /* probably we don't need to prevent those merges for @keyframes
1567 TODO: need to be checked */
1568 node.block.children.each(function(rule) {
1569 rule.prelude.children.each(function(simpleselector) {
1570 simpleselector.compareMarker = simpleselector.id;
1571 });
1572 });
1573 }
1574 }
1575 });
1576
1577 return {
1578 declaration: markDeclaration
1579 };
1580 };
1581
1582 var List$1 = csstree_min.List;
1583 var resolveKeyword$3 = csstree_min.keyword;
1584 var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
1585 var walk$4 = csstree_min.walk;
1586
1587 function addRuleToMap(map, item, list, single) {
1588 var node = item.data;
1589 var name = resolveKeyword$3(node.name).basename;
1590 var id = node.name.toLowerCase() + '/' + (node.prelude ? node.prelude.id : null);
1591
1592 if (!hasOwnProperty$2.call(map, name)) {
1593 map[name] = Object.create(null);
1594 }
1595
1596 if (single) {
1597 delete map[name][id];
1598 }
1599
1600 if (!hasOwnProperty$2.call(map[name], id)) {
1601 map[name][id] = new List$1();
1602 }
1603
1604 map[name][id].append(list.remove(item));
1605 }
1606
1607 function relocateAtrules(ast, options) {
1608 var collected = Object.create(null);
1609 var topInjectPoint = null;
1610
1611 ast.children.each(function(node, item, list) {
1612 if (node.type === 'Atrule') {
1613 var name = resolveKeyword$3(node.name).basename;
1614
1615 switch (name) {
1616 case 'keyframes':
1617 addRuleToMap(collected, item, list, true);
1618 return;
1619
1620 case 'media':
1621 if (options.forceMediaMerge) {
1622 addRuleToMap(collected, item, list, false);
1623 return;
1624 }
1625 break;
1626 }
1627
1628 if (topInjectPoint === null &&
1629 name !== 'charset' &&
1630 name !== 'import') {
1631 topInjectPoint = item;
1632 }
1633 } else {
1634 if (topInjectPoint === null) {
1635 topInjectPoint = item;
1636 }
1637 }
1638 });
1639
1640 for (var atrule in collected) {
1641 for (var id in collected[atrule]) {
1642 ast.children.insertList(
1643 collected[atrule][id],
1644 atrule === 'media' ? null : topInjectPoint
1645 );
1646 }
1647 }
1648 }
1649 function isMediaRule(node) {
1650 return node.type === 'Atrule' && node.name === 'media';
1651 }
1652
1653 function processAtrule(node, item, list) {
1654 if (!isMediaRule(node)) {
1655 return;
1656 }
1657
1658 var prev = item.prev && item.prev.data;
1659
1660 if (!prev || !isMediaRule(prev)) {
1661 return;
1662 }
1663
1664 // merge @media with same query
1665 if (node.prelude &&
1666 prev.prelude &&
1667 node.prelude.id === prev.prelude.id) {
1668 prev.block.children.appendList(node.block.children);
1669 list.remove(item);
1670
1671 // TODO: use it when we can refer to several points in source
1672 // prev.loc = {
1673 // primary: prev.loc,
1674 // merged: node.loc
1675 // };
1676 }
1677 }
1678
1679 var _1MergeAtrule = function rejoinAtrule(ast, options) {
1680 relocateAtrules(ast, options);
1681
1682 walk$4(ast, {
1683 visit: 'Atrule',
1684 reverse: true,
1685 enter: processAtrule
1686 });
1687 };
1688
1689 var hasOwnProperty$3 = Object.prototype.hasOwnProperty;
1690
1691 function isEqualSelectors(a, b) {
1692 var cursor1 = a.head;
1693 var cursor2 = b.head;
1694
1695 while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) {
1696 cursor1 = cursor1.next;
1697 cursor2 = cursor2.next;
1698 }
1699
1700 return cursor1 === null && cursor2 === null;
1701 }
1702
1703 function isEqualDeclarations(a, b) {
1704 var cursor1 = a.head;
1705 var cursor2 = b.head;
1706
1707 while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) {
1708 cursor1 = cursor1.next;
1709 cursor2 = cursor2.next;
1710 }
1711
1712 return cursor1 === null && cursor2 === null;
1713 }
1714
1715 function compareDeclarations(declarations1, declarations2) {
1716 var result = {
1717 eq: [],
1718 ne1: [],
1719 ne2: [],
1720 ne2overrided: []
1721 };
1722
1723 var fingerprints = Object.create(null);
1724 var declarations2hash = Object.create(null);
1725
1726 for (var cursor = declarations2.head; cursor; cursor = cursor.next) {
1727 declarations2hash[cursor.data.id] = true;
1728 }
1729
1730 for (var cursor = declarations1.head; cursor; cursor = cursor.next) {
1731 var data = cursor.data;
1732
1733 if (data.fingerprint) {
1734 fingerprints[data.fingerprint] = data.important;
1735 }
1736
1737 if (declarations2hash[data.id]) {
1738 declarations2hash[data.id] = false;
1739 result.eq.push(data);
1740 } else {
1741 result.ne1.push(data);
1742 }
1743 }
1744
1745 for (var cursor = declarations2.head; cursor; cursor = cursor.next) {
1746 var data = cursor.data;
1747
1748 if (declarations2hash[data.id]) {
1749 // when declarations1 has an overriding declaration, this is not a difference
1750 // unless no !important is used on prev and !important is used on the following
1751 if (!hasOwnProperty$3.call(fingerprints, data.fingerprint) ||
1752 (!fingerprints[data.fingerprint] && data.important)) {
1753 result.ne2.push(data);
1754 }
1755
1756 result.ne2overrided.push(data);
1757 }
1758 }
1759
1760 return result;
1761 }
1762
1763 function addSelectors(dest, source) {
1764 source.each(function(sourceData) {
1765 var newStr = sourceData.id;
1766 var cursor = dest.head;
1767
1768 while (cursor) {
1769 var nextStr = cursor.data.id;
1770
1771 if (nextStr === newStr) {
1772 return;
1773 }
1774
1775 if (nextStr > newStr) {
1776 break;
1777 }
1778
1779 cursor = cursor.next;
1780 }
1781
1782 dest.insert(dest.createItem(sourceData), cursor);
1783 });
1784
1785 return dest;
1786 }
1787
1788 // check if simpleselectors has no equal specificity and element selector
1789 function hasSimilarSelectors(selectors1, selectors2) {
1790 var cursor1 = selectors1.head;
1791
1792 while (cursor1 !== null) {
1793 var cursor2 = selectors2.head;
1794
1795 while (cursor2 !== null) {
1796 if (cursor1.data.compareMarker === cursor2.data.compareMarker) {
1797 return true;
1798 }
1799
1800 cursor2 = cursor2.next;
1801 }
1802
1803 cursor1 = cursor1.next;
1804 }
1805
1806 return false;
1807 }
1808
1809 // test node can't to be skipped
1810 function unsafeToSkipNode(node) {
1811 switch (node.type) {
1812 case 'Rule':
1813 // unsafe skip ruleset with selector similarities
1814 return hasSimilarSelectors(node.prelude.children, this);
1815
1816 case 'Atrule':
1817 // can skip at-rules with blocks
1818 if (node.block) {
1819 // unsafe skip at-rule if block contains something unsafe to skip
1820 return node.block.children.some(unsafeToSkipNode, this);
1821 }
1822 break;
1823
1824 case 'Declaration':
1825 return false;
1826 }
1827
1828 // unsafe by default
1829 return true;
1830 }
1831
1832 var utils$1 = {
1833 isEqualSelectors: isEqualSelectors,
1834 isEqualDeclarations: isEqualDeclarations,
1835 compareDeclarations: compareDeclarations,
1836 addSelectors: addSelectors,
1837 hasSimilarSelectors: hasSimilarSelectors,
1838 unsafeToSkipNode: unsafeToSkipNode
1839 };
1840
1841 var walk$5 = csstree_min.walk;
1842
1843
1844 function processRule(node, item, list) {
1845 var selectors = node.prelude.children;
1846 var declarations = node.block.children;
1847
1848 list.prevUntil(item.prev, function(prev) {
1849 // skip non-ruleset node if safe
1850 if (prev.type !== 'Rule') {
1851 return utils$1.unsafeToSkipNode.call(selectors, prev);
1852 }
1853
1854 var prevSelectors = prev.prelude.children;
1855 var prevDeclarations = prev.block.children;
1856
1857 // try to join rulesets with equal pseudo signature
1858 if (node.pseudoSignature === prev.pseudoSignature) {
1859 // try to join by selectors
1860 if (utils$1.isEqualSelectors(prevSelectors, selectors)) {
1861 prevDeclarations.appendList(declarations);
1862 list.remove(item);
1863 return true;
1864 }
1865
1866 // try to join by declarations
1867 if (utils$1.isEqualDeclarations(declarations, prevDeclarations)) {
1868 utils$1.addSelectors(prevSelectors, selectors);
1869 list.remove(item);
1870 return true;
1871 }
1872 }
1873
1874 // go to prev ruleset if has no selector similarities
1875 return utils$1.hasSimilarSelectors(selectors, prevSelectors);
1876 });
1877 }
1878
1879 // NOTE: direction should be left to right, since rulesets merge to left
1880 // ruleset. When direction right to left unmerged rulesets may prevent lookup
1881 // TODO: remove initial merge
1882 var _2InitialMergeRuleset = function initialMergeRule(ast) {
1883 walk$5(ast, {
1884 visit: 'Rule',
1885 enter: processRule
1886 });
1887 };
1888
1889 var List$2 = csstree_min.List;
1890 var walk$6 = csstree_min.walk;
1891
1892 function processRule$1(node, item, list) {
1893 var selectors = node.prelude.children;
1894
1895 // generate new rule sets:
1896 // .a, .b { color: red; }
1897 // ->
1898 // .a { color: red; }
1899 // .b { color: red; }
1900
1901 // while there are more than 1 simple selector split for rulesets
1902 while (selectors.head !== selectors.tail) {
1903 var newSelectors = new List$2();
1904 newSelectors.insert(selectors.remove(selectors.head));
1905
1906 list.insert(list.createItem({
1907 type: 'Rule',
1908 loc: node.loc,
1909 prelude: {
1910 type: 'SelectorList',
1911 loc: node.prelude.loc,
1912 children: newSelectors
1913 },
1914 block: {
1915 type: 'Block',
1916 loc: node.block.loc,
1917 children: node.block.children.copy()
1918 },
1919 pseudoSignature: node.pseudoSignature
1920 }), item);
1921 }
1922 }
1923
1924 var _3DisjoinRuleset = function disjoinRule(ast) {
1925 walk$6(ast, {
1926 visit: 'Rule',
1927 reverse: true,
1928 enter: processRule$1
1929 });
1930 };
1931
1932 var List$3 = csstree_min.List;
1933 var generate$3 = csstree_min.generate;
1934 var walk$7 = csstree_min.walk;
1935
1936 var REPLACE = 1;
1937 var REMOVE = 2;
1938 var TOP = 0;
1939 var RIGHT = 1;
1940 var BOTTOM = 2;
1941 var LEFT = 3;
1942 var SIDES = ['top', 'right', 'bottom', 'left'];
1943 var SIDE = {
1944 'margin-top': 'top',
1945 'margin-right': 'right',
1946 'margin-bottom': 'bottom',
1947 'margin-left': 'left',
1948
1949 'padding-top': 'top',
1950 'padding-right': 'right',
1951 'padding-bottom': 'bottom',
1952 'padding-left': 'left',
1953
1954 'border-top-color': 'top',
1955 'border-right-color': 'right',
1956 'border-bottom-color': 'bottom',
1957 'border-left-color': 'left',
1958 'border-top-width': 'top',
1959 'border-right-width': 'right',
1960 'border-bottom-width': 'bottom',
1961 'border-left-width': 'left',
1962 'border-top-style': 'top',
1963 'border-right-style': 'right',
1964 'border-bottom-style': 'bottom',
1965 'border-left-style': 'left'
1966 };
1967 var MAIN_PROPERTY = {
1968 'margin': 'margin',
1969 'margin-top': 'margin',
1970 'margin-right': 'margin',
1971 'margin-bottom': 'margin',
1972 'margin-left': 'margin',
1973
1974 'padding': 'padding',
1975 'padding-top': 'padding',
1976 'padding-right': 'padding',
1977 'padding-bottom': 'padding',
1978 'padding-left': 'padding',
1979
1980 'border-color': 'border-color',
1981 'border-top-color': 'border-color',
1982 'border-right-color': 'border-color',
1983 'border-bottom-color': 'border-color',
1984 'border-left-color': 'border-color',
1985 'border-width': 'border-width',
1986 'border-top-width': 'border-width',
1987 'border-right-width': 'border-width',
1988 'border-bottom-width': 'border-width',
1989 'border-left-width': 'border-width',
1990 'border-style': 'border-style',
1991 'border-top-style': 'border-style',
1992 'border-right-style': 'border-style',
1993 'border-bottom-style': 'border-style',
1994 'border-left-style': 'border-style'
1995 };
1996
1997 function TRBL(name) {
1998 this.name = name;
1999 this.loc = null;
2000 this.iehack = undefined;
2001 this.sides = {
2002 'top': null,
2003 'right': null,
2004 'bottom': null,
2005 'left': null
2006 };
2007 }
2008
2009 TRBL.prototype.getValueSequence = function(declaration, count) {
2010 var values = [];
2011 var iehack = '';
2012 var hasBadValues = declaration.value.type !== 'Value' || declaration.value.children.some(function(child) {
2013 var special = false;
2014
2015 switch (child.type) {
2016 case 'Identifier':
2017 switch (child.name) {
2018 case '\\0':
2019 case '\\9':
2020 iehack = child.name;
2021 return;
2022
2023 case 'inherit':
2024 case 'initial':
2025 case 'unset':
2026 case 'revert':
2027 special = child.name;
2028 break;
2029 }
2030 break;
2031
2032 case 'Dimension':
2033 switch (child.unit) {
2034 // is not supported until IE11
2035 case 'rem':
2036
2037 // v* units is too buggy across browsers and better
2038 // don't merge values with those units
2039 case 'vw':
2040 case 'vh':
2041 case 'vmin':
2042 case 'vmax':
2043 case 'vm': // IE9 supporting "vm" instead of "vmin".
2044 special = child.unit;
2045 break;
2046 }
2047 break;
2048
2049 case 'Hash': // color
2050 case 'Number':
2051 case 'Percentage':
2052 break;
2053
2054 case 'Function':
2055 if (child.name === 'var') {
2056 return true;
2057 }
2058
2059 special = child.name;
2060 break;
2061
2062 case 'WhiteSpace':
2063 return false; // ignore space
2064
2065 default:
2066 return true; // bad value
2067 }
2068
2069 values.push({
2070 node: child,
2071 special: special,
2072 important: declaration.important
2073 });
2074 });
2075
2076 if (hasBadValues || values.length > count) {
2077 return false;
2078 }
2079
2080 if (typeof this.iehack === 'string' && this.iehack !== iehack) {
2081 return false;
2082 }
2083
2084 this.iehack = iehack; // move outside
2085
2086 return values;
2087 };
2088
2089 TRBL.prototype.canOverride = function(side, value) {
2090 var currentValue = this.sides[side];
2091
2092 return !currentValue || (value.important && !currentValue.important);
2093 };
2094
2095 TRBL.prototype.add = function(name, declaration) {
2096 function attemptToAdd() {
2097 var sides = this.sides;
2098 var side = SIDE[name];
2099
2100 if (side) {
2101 if (side in sides === false) {
2102 return false;
2103 }
2104
2105 var values = this.getValueSequence(declaration, 1);
2106
2107 if (!values || !values.length) {
2108 return false;
2109 }
2110
2111 // can mix only if specials are equal
2112 for (var key in sides) {
2113 if (sides[key] !== null && sides[key].special !== values[0].special) {
2114 return false;
2115 }
2116 }
2117
2118 if (!this.canOverride(side, values[0])) {
2119 return true;
2120 }
2121
2122 sides[side] = values[0];
2123 return true;
2124 } else if (name === this.name) {
2125 var values = this.getValueSequence(declaration, 4);
2126
2127 if (!values || !values.length) {
2128 return false;
2129 }
2130
2131 switch (values.length) {
2132 case 1:
2133 values[RIGHT] = values[TOP];
2134 values[BOTTOM] = values[TOP];
2135 values[LEFT] = values[TOP];
2136 break;
2137
2138 case 2:
2139 values[BOTTOM] = values[TOP];
2140 values[LEFT] = values[RIGHT];
2141 break;
2142
2143 case 3:
2144 values[LEFT] = values[RIGHT];
2145 break;
2146 }
2147
2148 // can mix only if specials are equal
2149 for (var i = 0; i < 4; i++) {
2150 for (var key in sides) {
2151 if (sides[key] !== null && sides[key].special !== values[i].special) {
2152 return false;
2153 }
2154 }
2155 }
2156
2157 for (var i = 0; i < 4; i++) {
2158 if (this.canOverride(SIDES[i], values[i])) {
2159 sides[SIDES[i]] = values[i];
2160 }
2161 }
2162
2163 return true;
2164 }
2165 }
2166
2167 if (!attemptToAdd.call(this)) {
2168 return false;
2169 }
2170
2171 // TODO: use it when we can refer to several points in source
2172 // if (this.loc) {
2173 // this.loc = {
2174 // primary: this.loc,
2175 // merged: declaration.loc
2176 // };
2177 // } else {
2178 // this.loc = declaration.loc;
2179 // }
2180 if (!this.loc) {
2181 this.loc = declaration.loc;
2182 }
2183
2184 return true;
2185 };
2186
2187 TRBL.prototype.isOkToMinimize = function() {
2188 var top = this.sides.top;
2189 var right = this.sides.right;
2190 var bottom = this.sides.bottom;
2191 var left = this.sides.left;
2192
2193 if (top && right && bottom && left) {
2194 var important =
2195 top.important +
2196 right.important +
2197 bottom.important +
2198 left.important;
2199
2200 return important === 0 || important === 4;
2201 }
2202
2203 return false;
2204 };
2205
2206 TRBL.prototype.getValue = function() {
2207 var result = new List$3();
2208 var sides = this.sides;
2209 var values = [
2210 sides.top,
2211 sides.right,
2212 sides.bottom,
2213 sides.left
2214 ];
2215 var stringValues = [
2216 generate$3(sides.top.node),
2217 generate$3(sides.right.node),
2218 generate$3(sides.bottom.node),
2219 generate$3(sides.left.node)
2220 ];
2221
2222 if (stringValues[LEFT] === stringValues[RIGHT]) {
2223 values.pop();
2224 if (stringValues[BOTTOM] === stringValues[TOP]) {
2225 values.pop();
2226 if (stringValues[RIGHT] === stringValues[TOP]) {
2227 values.pop();
2228 }
2229 }
2230 }
2231
2232 for (var i = 0; i < values.length; i++) {
2233 if (i) {
2234 result.appendData({ type: 'WhiteSpace', value: ' ' });
2235 }
2236
2237 result.appendData(values[i].node);
2238 }
2239
2240 if (this.iehack) {
2241 result.appendData({ type: 'WhiteSpace', value: ' ' });
2242 result.appendData({
2243 type: 'Identifier',
2244 loc: null,
2245 name: this.iehack
2246 });
2247 }
2248
2249 return {
2250 type: 'Value',
2251 loc: null,
2252 children: result
2253 };
2254 };
2255
2256 TRBL.prototype.getDeclaration = function() {
2257 return {
2258 type: 'Declaration',
2259 loc: this.loc,
2260 important: this.sides.top.important,
2261 property: this.name,
2262 value: this.getValue()
2263 };
2264 };
2265
2266 function processRule$2(rule, shorts, shortDeclarations, lastShortSelector) {
2267 var declarations = rule.block.children;
2268 var selector = rule.prelude.children.first().id;
2269
2270 rule.block.children.eachRight(function(declaration, item) {
2271 var property = declaration.property;
2272
2273 if (!MAIN_PROPERTY.hasOwnProperty(property)) {
2274 return;
2275 }
2276
2277 var key = MAIN_PROPERTY[property];
2278 var shorthand;
2279 var operation;
2280
2281 if (!lastShortSelector || selector === lastShortSelector) {
2282 if (key in shorts) {
2283 operation = REMOVE;
2284 shorthand = shorts[key];
2285 }
2286 }
2287
2288 if (!shorthand || !shorthand.add(property, declaration)) {
2289 operation = REPLACE;
2290 shorthand = new TRBL(key);
2291
2292 // if can't parse value ignore it and break shorthand children
2293 if (!shorthand.add(property, declaration)) {
2294 lastShortSelector = null;
2295 return;
2296 }
2297 }
2298
2299 shorts[key] = shorthand;
2300 shortDeclarations.push({
2301 operation: operation,
2302 block: declarations,
2303 item: item,
2304 shorthand: shorthand
2305 });
2306
2307 lastShortSelector = selector;
2308 });
2309
2310 return lastShortSelector;
2311 }
2312
2313 function processShorthands(shortDeclarations, markDeclaration) {
2314 shortDeclarations.forEach(function(item) {
2315 var shorthand = item.shorthand;
2316
2317 if (!shorthand.isOkToMinimize()) {
2318 return;
2319 }
2320
2321 if (item.operation === REPLACE) {
2322 item.item.data = markDeclaration(shorthand.getDeclaration());
2323 } else {
2324 item.block.remove(item.item);
2325 }
2326 });
2327 }
2328
2329 var _4RestructShorthand = function restructBlock(ast, indexer) {
2330 var stylesheetMap = {};
2331 var shortDeclarations = [];
2332
2333 walk$7(ast, {
2334 visit: 'Rule',
2335 reverse: true,
2336 enter: function(node) {
2337 var stylesheet = this.block || this.stylesheet;
2338 var ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first().id;
2339 var ruleMap;
2340 var shorts;
2341
2342 if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
2343 ruleMap = {
2344 lastShortSelector: null
2345 };
2346 stylesheetMap[stylesheet.id] = ruleMap;
2347 } else {
2348 ruleMap = stylesheetMap[stylesheet.id];
2349 }
2350
2351 if (ruleMap.hasOwnProperty(ruleId)) {
2352 shorts = ruleMap[ruleId];
2353 } else {
2354 shorts = {};
2355 ruleMap[ruleId] = shorts;
2356 }
2357
2358 ruleMap.lastShortSelector = processRule$2.call(this, node, shorts, shortDeclarations, ruleMap.lastShortSelector);
2359 }
2360 });
2361
2362 processShorthands(shortDeclarations, indexer.declaration);
2363 };
2364
2365 var resolveProperty = csstree_min.property;
2366 var resolveKeyword$4 = csstree_min.keyword;
2367 var walk$8 = csstree_min.walk;
2368 var generate$4 = csstree_min.generate;
2369 var fingerprintId = 1;
2370 var dontRestructure = {
2371 'src': 1 // https://github.com/afelix/csso/issues/50
2372 };
2373
2374 var DONT_MIX_VALUE = {
2375 // https://developer.mozilla.org/en-US/docs/Web/CSS/display#Browser_compatibility
2376 'display': /table|ruby|flex|-(flex)?box$|grid|contents|run-in/i,
2377 // https://developer.mozilla.org/en/docs/Web/CSS/text-align
2378 'text-align': /^(start|end|match-parent|justify-all)$/i
2379 };
2380
2381 var SAFE_VALUES = {
2382 cursor: [
2383 'auto', 'crosshair', 'default', 'move', 'text', 'wait', 'help',
2384 'n-resize', 'e-resize', 's-resize', 'w-resize',
2385 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize',
2386 'pointer', 'progress', 'not-allowed', 'no-drop', 'vertical-text', 'all-scroll',
2387 'col-resize', 'row-resize'
2388 ],
2389 overflow: [
2390 'hidden', 'visible', 'scroll', 'auto'
2391 ],
2392 position: [
2393 'static', 'relative', 'absolute', 'fixed'
2394 ]
2395 };
2396
2397 var NEEDLESS_TABLE = {
2398 'border-width': ['border'],
2399 'border-style': ['border'],
2400 'border-color': ['border'],
2401 'border-top': ['border'],
2402 'border-right': ['border'],
2403 'border-bottom': ['border'],
2404 'border-left': ['border'],
2405 'border-top-width': ['border-top', 'border-width', 'border'],
2406 'border-right-width': ['border-right', 'border-width', 'border'],
2407 'border-bottom-width': ['border-bottom', 'border-width', 'border'],
2408 'border-left-width': ['border-left', 'border-width', 'border'],
2409 'border-top-style': ['border-top', 'border-style', 'border'],
2410 'border-right-style': ['border-right', 'border-style', 'border'],
2411 'border-bottom-style': ['border-bottom', 'border-style', 'border'],
2412 'border-left-style': ['border-left', 'border-style', 'border'],
2413 'border-top-color': ['border-top', 'border-color', 'border'],
2414 'border-right-color': ['border-right', 'border-color', 'border'],
2415 'border-bottom-color': ['border-bottom', 'border-color', 'border'],
2416 'border-left-color': ['border-left', 'border-color', 'border'],
2417 'margin-top': ['margin'],
2418 'margin-right': ['margin'],
2419 'margin-bottom': ['margin'],
2420 'margin-left': ['margin'],
2421 'padding-top': ['padding'],
2422 'padding-right': ['padding'],
2423 'padding-bottom': ['padding'],
2424 'padding-left': ['padding'],
2425 'font-style': ['font'],
2426 'font-variant': ['font'],
2427 'font-weight': ['font'],
2428 'font-size': ['font'],
2429 'font-family': ['font'],
2430 'list-style-type': ['list-style'],
2431 'list-style-position': ['list-style'],
2432 'list-style-image': ['list-style']
2433 };
2434
2435 function getPropertyFingerprint(propertyName, declaration, fingerprints) {
2436 var realName = resolveProperty(propertyName).basename;
2437
2438 if (realName === 'background') {
2439 return propertyName + ':' + generate$4(declaration.value);
2440 }
2441
2442 var declarationId = declaration.id;
2443 var fingerprint = fingerprints[declarationId];
2444
2445 if (!fingerprint) {
2446 switch (declaration.value.type) {
2447 case 'Value':
2448 var vendorId = '';
2449 var iehack = '';
2450 var special = {};
2451 var raw = false;
2452
2453 declaration.value.children.each(function walk(node) {
2454 switch (node.type) {
2455 case 'Value':
2456 case 'Brackets':
2457 case 'Parentheses':
2458 node.children.each(walk);
2459 break;
2460
2461 case 'Raw':
2462 raw = true;
2463 break;
2464
2465 case 'Identifier':
2466 var name = node.name;
2467
2468 if (!vendorId) {
2469 vendorId = resolveKeyword$4(name).vendor;
2470 }
2471
2472 if (/\\[09]/.test(name)) {
2473 iehack = RegExp.lastMatch;
2474 }
2475
2476 if (SAFE_VALUES.hasOwnProperty(realName)) {
2477 if (SAFE_VALUES[realName].indexOf(name) === -1) {
2478 special[name] = true;
2479 }
2480 } else if (DONT_MIX_VALUE.hasOwnProperty(realName)) {
2481 if (DONT_MIX_VALUE[realName].test(name)) {
2482 special[name] = true;
2483 }
2484 }
2485
2486 break;
2487
2488 case 'Function':
2489 var name = node.name;
2490
2491 if (!vendorId) {
2492 vendorId = resolveKeyword$4(name).vendor;
2493 }
2494
2495 if (name === 'rect') {
2496 // there are 2 forms of rect:
2497 // rect(<top>, <right>, <bottom>, <left>) - standart
2498 // rect(<top> <right> <bottom> <left>) – backwards compatible syntax
2499 // only the same form values can be merged
2500 var hasComma = node.children.some(function(node) {
2501 return node.type === 'Operator' && node.value === ',';
2502 });
2503 if (!hasComma) {
2504 name = 'rect-backward';
2505 }
2506 }
2507
2508 special[name + '()'] = true;
2509
2510 // check nested tokens too
2511 node.children.each(walk);
2512
2513 break;
2514
2515 case 'Dimension':
2516 var unit = node.unit;
2517
2518 if (/\\[09]/.test(unit)) {
2519 iehack = RegExp.lastMatch;
2520 }
2521
2522 switch (unit) {
2523 // is not supported until IE11
2524 case 'rem':
2525
2526 // v* units is too buggy across browsers and better
2527 // don't merge values with those units
2528 case 'vw':
2529 case 'vh':
2530 case 'vmin':
2531 case 'vmax':
2532 case 'vm': // IE9 supporting "vm" instead of "vmin".
2533 special[unit] = true;
2534 break;
2535 }
2536 break;
2537 }
2538 });
2539
2540 fingerprint = raw
2541 ? '!' + fingerprintId++
2542 : '!' + Object.keys(special).sort() + '|' + iehack + vendorId;
2543 break;
2544
2545 case 'Raw':
2546 fingerprint = '!' + declaration.value.value;
2547 break;
2548
2549 default:
2550 fingerprint = generate$4(declaration.value);
2551 }
2552
2553 fingerprints[declarationId] = fingerprint;
2554 }
2555
2556 return propertyName + fingerprint;
2557 }
2558
2559 function needless(props, declaration, fingerprints) {
2560 var property = resolveProperty(declaration.property);
2561
2562 if (NEEDLESS_TABLE.hasOwnProperty(property.basename)) {
2563 var table = NEEDLESS_TABLE[property.basename];
2564
2565 for (var i = 0; i < table.length; i++) {
2566 var ppre = getPropertyFingerprint(property.prefix + table[i], declaration, fingerprints);
2567 var prev = props.hasOwnProperty(ppre) ? props[ppre] : null;
2568
2569 if (prev && (!declaration.important || prev.item.data.important)) {
2570 return prev;
2571 }
2572 }
2573 }
2574 }
2575
2576 function processRule$3(rule, item, list, props, fingerprints) {
2577 var declarations = rule.block.children;
2578
2579 declarations.eachRight(function(declaration, declarationItem) {
2580 var property = declaration.property;
2581 var fingerprint = getPropertyFingerprint(property, declaration, fingerprints);
2582 var prev = props[fingerprint];
2583
2584 if (prev && !dontRestructure.hasOwnProperty(property)) {
2585 if (declaration.important && !prev.item.data.important) {
2586 props[fingerprint] = {
2587 block: declarations,
2588 item: declarationItem
2589 };
2590
2591 prev.block.remove(prev.item);
2592
2593 // TODO: use it when we can refer to several points in source
2594 // declaration.loc = {
2595 // primary: declaration.loc,
2596 // merged: prev.item.data.loc
2597 // };
2598 } else {
2599 declarations.remove(declarationItem);
2600
2601 // TODO: use it when we can refer to several points in source
2602 // prev.item.data.loc = {
2603 // primary: prev.item.data.loc,
2604 // merged: declaration.loc
2605 // };
2606 }
2607 } else {
2608 var prev = needless(props, declaration, fingerprints);
2609
2610 if (prev) {
2611 declarations.remove(declarationItem);
2612
2613 // TODO: use it when we can refer to several points in source
2614 // prev.item.data.loc = {
2615 // primary: prev.item.data.loc,
2616 // merged: declaration.loc
2617 // };
2618 } else {
2619 declaration.fingerprint = fingerprint;
2620
2621 props[fingerprint] = {
2622 block: declarations,
2623 item: declarationItem
2624 };
2625 }
2626 }
2627 });
2628
2629 if (declarations.isEmpty()) {
2630 list.remove(item);
2631 }
2632 }
2633
2634 var _6RestructBlock = function restructBlock(ast) {
2635 var stylesheetMap = {};
2636 var fingerprints = Object.create(null);
2637
2638 walk$8(ast, {
2639 visit: 'Rule',
2640 reverse: true,
2641 enter: function(node, item, list) {
2642 var stylesheet = this.block || this.stylesheet;
2643 var ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first().id;
2644 var ruleMap;
2645 var props;
2646
2647 if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
2648 ruleMap = {};
2649 stylesheetMap[stylesheet.id] = ruleMap;
2650 } else {
2651 ruleMap = stylesheetMap[stylesheet.id];
2652 }
2653
2654 if (ruleMap.hasOwnProperty(ruleId)) {
2655 props = ruleMap[ruleId];
2656 } else {
2657 props = {};
2658 ruleMap[ruleId] = props;
2659 }
2660
2661 processRule$3.call(this, node, item, list, props, fingerprints);
2662 }
2663 });
2664 };
2665
2666 var walk$9 = csstree_min.walk;
2667
2668
2669 /*
2670 At this step all rules has single simple selector. We try to join by equal
2671 declaration blocks to first rule, e.g.
2672
2673 .a { color: red }
2674 b { ... }
2675 .b { color: red }
2676 ->
2677 .a, .b { color: red }
2678 b { ... }
2679 */
2680
2681 function processRule$4(node, item, list) {
2682 var selectors = node.prelude.children;
2683 var declarations = node.block.children;
2684 var nodeCompareMarker = selectors.first().compareMarker;
2685 var skippedCompareMarkers = {};
2686
2687 list.nextUntil(item.next, function(next, nextItem) {
2688 // skip non-ruleset node if safe
2689 if (next.type !== 'Rule') {
2690 return utils$1.unsafeToSkipNode.call(selectors, next);
2691 }
2692
2693 if (node.pseudoSignature !== next.pseudoSignature) {
2694 return true;
2695 }
2696
2697 var nextFirstSelector = next.prelude.children.head;
2698 var nextDeclarations = next.block.children;
2699 var nextCompareMarker = nextFirstSelector.data.compareMarker;
2700
2701 // if next ruleset has same marked as one of skipped then stop joining
2702 if (nextCompareMarker in skippedCompareMarkers) {
2703 return true;
2704 }
2705
2706 // try to join by selectors
2707 if (selectors.head === selectors.tail) {
2708 if (selectors.first().id === nextFirstSelector.data.id) {
2709 declarations.appendList(nextDeclarations);
2710 list.remove(nextItem);
2711 return;
2712 }
2713 }
2714
2715 // try to join by properties
2716 if (utils$1.isEqualDeclarations(declarations, nextDeclarations)) {
2717 var nextStr = nextFirstSelector.data.id;
2718
2719 selectors.some(function(data, item) {
2720 var curStr = data.id;
2721
2722 if (nextStr < curStr) {
2723 selectors.insert(nextFirstSelector, item);
2724 return true;
2725 }
2726
2727 if (!item.next) {
2728 selectors.insert(nextFirstSelector);
2729 return true;
2730 }
2731 });
2732
2733 list.remove(nextItem);
2734 return;
2735 }
2736
2737 // go to next ruleset if current one can be skipped (has no equal specificity nor element selector)
2738 if (nextCompareMarker === nodeCompareMarker) {
2739 return true;
2740 }
2741
2742 skippedCompareMarkers[nextCompareMarker] = true;
2743 });
2744 }
2745
2746 var _7MergeRuleset = function mergeRule(ast) {
2747 walk$9(ast, {
2748 visit: 'Rule',
2749 enter: processRule$4
2750 });
2751 };
2752
2753 var List$4 = csstree_min.List;
2754 var walk$a = csstree_min.walk;
2755
2756
2757 function calcSelectorLength(list) {
2758 var length = 0;
2759
2760 list.each(function(data) {
2761 length += data.id.length + 1;
2762 });
2763
2764 return length - 1;
2765 }
2766
2767 function calcDeclarationsLength(tokens) {
2768 var length = 0;
2769
2770 for (var i = 0; i < tokens.length; i++) {
2771 length += tokens[i].length;
2772 }
2773
2774 return (
2775 length + // declarations
2776 tokens.length - 1 // delimeters
2777 );
2778 }
2779
2780 function processRule$5(node, item, list) {
2781 var avoidRulesMerge = this.block !== null ? this.block.avoidRulesMerge : false;
2782 var selectors = node.prelude.children;
2783 var block = node.block;
2784 var disallowDownMarkers = Object.create(null);
2785 var allowMergeUp = true;
2786 var allowMergeDown = true;
2787
2788 list.prevUntil(item.prev, function(prev, prevItem) {
2789 var prevBlock = prev.block;
2790 var prevType = prev.type;
2791
2792 if (prevType !== 'Rule') {
2793 var unsafe = utils$1.unsafeToSkipNode.call(selectors, prev);
2794
2795 if (!unsafe && prevType === 'Atrule' && prevBlock) {
2796 walk$a(prevBlock, {
2797 visit: 'Rule',
2798 enter: function(node) {
2799 node.prelude.children.each(function(data) {
2800 disallowDownMarkers[data.compareMarker] = true;
2801 });
2802 }
2803 });
2804 }
2805
2806 return unsafe;
2807 }
2808
2809 var prevSelectors = prev.prelude.children;
2810
2811 if (node.pseudoSignature !== prev.pseudoSignature) {
2812 return true;
2813 }
2814
2815 allowMergeDown = !prevSelectors.some(function(selector) {
2816 return selector.compareMarker in disallowDownMarkers;
2817 });
2818
2819 // try prev ruleset if simpleselectors has no equal specifity and element selector
2820 if (!allowMergeDown && !allowMergeUp) {
2821 return true;
2822 }
2823
2824 // try to join by selectors
2825 if (allowMergeUp && utils$1.isEqualSelectors(prevSelectors, selectors)) {
2826 prevBlock.children.appendList(block.children);
2827 list.remove(item);
2828 return true;
2829 }
2830
2831 // try to join by properties
2832 var diff = utils$1.compareDeclarations(block.children, prevBlock.children);
2833
2834 // console.log(diff.eq, diff.ne1, diff.ne2);
2835
2836 if (diff.eq.length) {
2837 if (!diff.ne1.length && !diff.ne2.length) {
2838 // equal blocks
2839 if (allowMergeDown) {
2840 utils$1.addSelectors(selectors, prevSelectors);
2841 list.remove(prevItem);
2842 }
2843
2844 return true;
2845 } else if (!avoidRulesMerge) { /* probably we don't need to prevent those merges for @keyframes
2846 TODO: need to be checked */
2847
2848 if (diff.ne1.length && !diff.ne2.length) {
2849 // prevBlock is subset block
2850 var selectorLength = calcSelectorLength(selectors);
2851 var blockLength = calcDeclarationsLength(diff.eq); // declarations length
2852
2853 if (allowMergeUp && selectorLength < blockLength) {
2854 utils$1.addSelectors(prevSelectors, selectors);
2855 block.children = new List$4().fromArray(diff.ne1);
2856 }
2857 } else if (!diff.ne1.length && diff.ne2.length) {
2858 // node is subset of prevBlock
2859 var selectorLength = calcSelectorLength(prevSelectors);
2860 var blockLength = calcDeclarationsLength(diff.eq); // declarations length
2861
2862 if (allowMergeDown && selectorLength < blockLength) {
2863 utils$1.addSelectors(selectors, prevSelectors);
2864 prevBlock.children = new List$4().fromArray(diff.ne2);
2865 }
2866 } else {
2867 // diff.ne1.length && diff.ne2.length
2868 // extract equal block
2869 var newSelector = {
2870 type: 'SelectorList',
2871 loc: null,
2872 children: utils$1.addSelectors(prevSelectors.copy(), selectors)
2873 };
2874 var newBlockLength = calcSelectorLength(newSelector.children) + 2; // selectors length + curly braces length
2875 var blockLength = calcDeclarationsLength(diff.eq); // declarations length
2876
2877 // create new ruleset if declarations length greater than
2878 // ruleset description overhead
2879 if (blockLength >= newBlockLength) {
2880 var newItem = list.createItem({
2881 type: 'Rule',
2882 loc: null,
2883 prelude: newSelector,
2884 block: {
2885 type: 'Block',
2886 loc: null,
2887 children: new List$4().fromArray(diff.eq)
2888 },
2889 pseudoSignature: node.pseudoSignature
2890 });
2891
2892 block.children = new List$4().fromArray(diff.ne1);
2893 prevBlock.children = new List$4().fromArray(diff.ne2overrided);
2894
2895 if (allowMergeUp) {
2896 list.insert(newItem, prevItem);
2897 } else {
2898 list.insert(newItem, item);
2899 }
2900
2901 return true;
2902 }
2903 }
2904 }
2905 }
2906
2907 if (allowMergeUp) {
2908 // TODO: disallow up merge only if any property interception only (i.e. diff.ne2overrided.length > 0);
2909 // await property families to find property interception correctly
2910 allowMergeUp = !prevSelectors.some(function(prevSelector) {
2911 return selectors.some(function(selector) {
2912 return selector.compareMarker === prevSelector.compareMarker;
2913 });
2914 });
2915 }
2916
2917 prevSelectors.each(function(data) {
2918 disallowDownMarkers[data.compareMarker] = true;
2919 });
2920 });
2921 }
2922
2923 var _8RestructRuleset = function restructRule(ast) {
2924 walk$a(ast, {
2925 visit: 'Rule',
2926 reverse: true,
2927 enter: processRule$5
2928 });
2929 };
2930
2931 var restructure = function(ast, options) {
2932 // prepare ast for restructing
2933 var indexer = prepare(ast, options);
2934 options.logger('prepare', ast);
2935
2936 _1MergeAtrule(ast, options);
2937 options.logger('mergeAtrule', ast);
2938
2939 _2InitialMergeRuleset(ast);
2940 options.logger('initialMergeRuleset', ast);
2941
2942 _3DisjoinRuleset(ast);
2943 options.logger('disjoinRuleset', ast);
2944
2945 _4RestructShorthand(ast, indexer);
2946 options.logger('restructShorthand', ast);
2947
2948 _6RestructBlock(ast);
2949 options.logger('restructBlock', ast);
2950
2951 _7MergeRuleset(ast);
2952 options.logger('mergeRuleset', ast);
2953
2954 _8RestructRuleset(ast);
2955 options.logger('restructRuleset', ast);
2956 };
2957
2958 var List$5 = csstree_min.List;
2959 var clone = csstree_min.clone;
2960
2961
2962
2963
2964 var walk$b = csstree_min.walk;
2965
2966 function readChunk(children, specialComments) {
2967 var buffer = new List$5();
2968 var nonSpaceTokenInBuffer = false;
2969 var protectedComment;
2970
2971 children.nextUntil(children.head, function(node, item, list) {
2972 if (node.type === 'Comment') {
2973 if (!specialComments || node.value.charAt(0) !== '!') {
2974 list.remove(item);
2975 return;
2976 }
2977
2978 if (nonSpaceTokenInBuffer || protectedComment) {
2979 return true;
2980 }
2981
2982 list.remove(item);
2983 protectedComment = node;
2984 return;
2985 }
2986
2987 if (node.type !== 'WhiteSpace') {
2988 nonSpaceTokenInBuffer = true;
2989 }
2990
2991 buffer.insert(list.remove(item));
2992 });
2993
2994 return {
2995 comment: protectedComment,
2996 stylesheet: {
2997 type: 'StyleSheet',
2998 loc: null,
2999 children: buffer
3000 }
3001 };
3002 }
3003
3004 function compressChunk(ast, firstAtrulesAllowed, num, options) {
3005 options.logger('Compress block #' + num, null, true);
3006
3007 var seed = 1;
3008
3009 if (ast.type === 'StyleSheet') {
3010 ast.firstAtrulesAllowed = firstAtrulesAllowed;
3011 ast.id = seed++;
3012 }
3013
3014 walk$b(ast, {
3015 visit: 'Atrule',
3016 enter: function markScopes(node) {
3017 if (node.block !== null) {
3018 node.block.id = seed++;
3019 }
3020 }
3021 });
3022 options.logger('init', ast);
3023
3024 // remove redundant
3025 clean(ast, options);
3026 options.logger('clean', ast);
3027
3028 // replace nodes for shortened forms
3029 replace(ast);
3030 options.logger('replace', ast);
3031
3032 // structure optimisations
3033 if (options.restructuring) {
3034 restructure(ast, options);
3035 }
3036
3037 return ast;
3038 }
3039
3040 function getCommentsOption(options) {
3041 var comments = 'comments' in options ? options.comments : 'exclamation';
3042
3043 if (typeof comments === 'boolean') {
3044 comments = comments ? 'exclamation' : false;
3045 } else if (comments !== 'exclamation' && comments !== 'first-exclamation') {
3046 comments = false;
3047 }
3048
3049 return comments;
3050 }
3051
3052 function getRestructureOption(options) {
3053 if ('restructure' in options) {
3054 return options.restructure;
3055 }
3056
3057 return 'restructuring' in options ? options.restructuring : true;
3058 }
3059
3060 function wrapBlock(block) {
3061 return new List$5().appendData({
3062 type: 'Rule',
3063 loc: null,
3064 prelude: {
3065 type: 'SelectorList',
3066 loc: null,
3067 children: new List$5().appendData({
3068 type: 'Selector',
3069 loc: null,
3070 children: new List$5().appendData({
3071 type: 'TypeSelector',
3072 loc: null,
3073 name: 'x'
3074 })
3075 })
3076 },
3077 block: block
3078 });
3079 }
3080
3081 var compress = function compress(ast, options) {
3082 ast = ast || { type: 'StyleSheet', loc: null, children: new List$5() };
3083 options = options || {};
3084
3085 var compressOptions = {
3086 logger: typeof options.logger === 'function' ? options.logger : function() {},
3087 restructuring: getRestructureOption(options),
3088 forceMediaMerge: Boolean(options.forceMediaMerge),
3089 usage: options.usage ? usage.buildIndex(options.usage) : false
3090 };
3091 var specialComments = getCommentsOption(options);
3092 var firstAtrulesAllowed = true;
3093 var input;
3094 var output = new List$5();
3095 var chunk;
3096 var chunkNum = 1;
3097 var chunkChildren;
3098
3099 if (options.clone) {
3100 ast = clone(ast);
3101 }
3102
3103 if (ast.type === 'StyleSheet') {
3104 input = ast.children;
3105 ast.children = output;
3106 } else {
3107 input = wrapBlock(ast);
3108 }
3109
3110 do {
3111 chunk = readChunk(input, Boolean(specialComments));
3112 compressChunk(chunk.stylesheet, firstAtrulesAllowed, chunkNum++, compressOptions);
3113 chunkChildren = chunk.stylesheet.children;
3114
3115 if (chunk.comment) {
3116 // add \n before comment if there is another content in output
3117 if (!output.isEmpty()) {
3118 output.insert(List$5.createItem({
3119 type: 'Raw',
3120 value: '\n'
3121 }));
3122 }
3123
3124 output.insert(List$5.createItem(chunk.comment));
3125
3126 // add \n after comment if chunk is not empty
3127 if (!chunkChildren.isEmpty()) {
3128 output.insert(List$5.createItem({
3129 type: 'Raw',
3130 value: '\n'
3131 }));
3132 }
3133 }
3134
3135 if (firstAtrulesAllowed && !chunkChildren.isEmpty()) {
3136 var lastRule = chunkChildren.last();
3137
3138 if (lastRule.type !== 'Atrule' ||
3139 (lastRule.name !== 'import' && lastRule.name !== 'charset')) {
3140 firstAtrulesAllowed = false;
3141 }
3142 }
3143
3144 if (specialComments !== 'exclamation') {
3145 specialComments = false;
3146 }
3147
3148 output.appendList(chunkChildren);
3149 } while (!input.isEmpty());
3150
3151 return {
3152 ast: ast
3153 };
3154 };
3155
3156 var version = "4.2.0";
3157 var _package = {
3158 version: version
3159 };
3160
3161 var _package$1 = /*#__PURE__*/Object.freeze({
3162 __proto__: null,
3163 version: version,
3164 'default': _package
3165 });
3166
3167 var require$$0 = getCjsExportFromNamespace(_package$1);
3168
3169 var parse = csstree_min.parse;
3170
3171 var generate$5 = csstree_min.generate;
3172
3173 function debugOutput(name, options, startTime, data) {
3174 if (options.debug) {
3175 console.error('## ' + name + ' done in %d ms\n', Date.now() - startTime);
3176 }
3177
3178 return data;
3179 }
3180
3181 function createDefaultLogger(level) {
3182 var lastDebug;
3183
3184 return function logger(title, ast) {
3185 var line = title;
3186
3187 if (ast) {
3188 line = '[' + ((Date.now() - lastDebug) / 1000).toFixed(3) + 's] ' + line;
3189 }
3190
3191 if (level > 1 && ast) {
3192 var css = generate$5(ast);
3193
3194 // when level 2, limit css to 256 symbols
3195 if (level === 2 && css.length > 256) {
3196 css = css.substr(0, 256) + '...';
3197 }
3198
3199 line += '\n ' + css + '\n';
3200 }
3201
3202 console.error(line);
3203 lastDebug = Date.now();
3204 };
3205 }
3206
3207 function copy(obj) {
3208 var result = {};
3209
3210 for (var key in obj) {
3211 result[key] = obj[key];
3212 }
3213
3214 return result;
3215 }
3216
3217 function buildCompressOptions(options) {
3218 options = copy(options);
3219
3220 if (typeof options.logger !== 'function' && options.debug) {
3221 options.logger = createDefaultLogger(options.debug);
3222 }
3223
3224 return options;
3225 }
3226
3227 function runHandler(ast, options, handlers) {
3228 if (!Array.isArray(handlers)) {
3229 handlers = [handlers];
3230 }
3231
3232 handlers.forEach(function(fn) {
3233 fn(ast, options);
3234 });
3235 }
3236
3237 function minify(context, source, options) {
3238 options = options || {};
3239
3240 var filename = options.filename || '<unknown>';
3241 var result;
3242
3243 // parse
3244 var ast = debugOutput('parsing', options, Date.now(),
3245 parse(source, {
3246 context: context,
3247 filename: filename,
3248 positions: Boolean(options.sourceMap)
3249 })
3250 );
3251
3252 // before compress handlers
3253 if (options.beforeCompress) {
3254 debugOutput('beforeCompress', options, Date.now(),
3255 runHandler(ast, options, options.beforeCompress)
3256 );
3257 }
3258
3259 // compress
3260 var compressResult = debugOutput('compress', options, Date.now(),
3261 compress(ast, buildCompressOptions(options))
3262 );
3263
3264 // after compress handlers
3265 if (options.afterCompress) {
3266 debugOutput('afterCompress', options, Date.now(),
3267 runHandler(compressResult, options, options.afterCompress)
3268 );
3269 }
3270
3271 // generate
3272 if (options.sourceMap) {
3273 result = debugOutput('generate(sourceMap: true)', options, Date.now(), (function() {
3274 var tmp = generate$5(compressResult.ast, { sourceMap: true });
3275 tmp.map._file = filename; // since other tools can relay on file in source map transform chain
3276 tmp.map.setSourceContent(filename, source);
3277 return tmp;
3278 }()));
3279 } else {
3280 result = debugOutput('generate', options, Date.now(), {
3281 css: generate$5(compressResult.ast),
3282 map: null
3283 });
3284 }
3285
3286 return result;
3287 }
3288
3289 function minifyStylesheet(source, options) {
3290 return minify('stylesheet', source, options);
3291 }
3292
3293 function minifyBlock(source, options) {
3294 return minify('declarationList', source, options);
3295 }
3296
3297 var lib = {
3298 version: require$$0.version,
3299
3300 // main methods
3301 minify: minifyStylesheet,
3302 minifyBlock: minifyBlock,
3303
3304 // css syntax parser/walkers/generator/etc
3305 syntax: Object.assign({
3306 compress: compress
3307 }, csstree_min)
3308 };
3309 var lib_1 = lib.version;
3310 var lib_2 = lib.minify;
3311 var lib_3 = lib.minifyBlock;
3312 var lib_4 = lib.syntax;
3313
3314 exports.default = lib;
3315 exports.minify = lib_2;
3316 exports.minifyBlock = lib_3;
3317 exports.syntax = lib_4;
3318 exports.version = lib_1;
3319
3320 Object.defineProperty(exports, '__esModule', { value: true });
3321
3322})));