{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../node_modules/src/Util.ts","../../../src/css/layout/bounds.ts","../../node_modules/css-line-break/node_modules/src/Util.ts","../../node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../../node_modules/css-line-break/node_modules/src/Trie.ts","../../node_modules/src/linebreak-trie.ts","../../node_modules/src/LineBreak.ts","../../../src/css/syntax/tokenizer.ts","../../../src/css/syntax/parser.ts","../../../src/css/types/length.ts","../../../src/css/types/length-percentage.ts","../../../src/css/types/angle.ts","../../../src/css/types/color.ts","../../../src/css/property-descriptors/background-clip.ts","../../../src/css/property-descriptors/background-color.ts","../../../src/css/types/functions/gradient.ts","../../../src/css/types/functions/linear-gradient.ts","../../../src/css/types/functions/-prefix-linear-gradient.ts","../../../src/css/types/functions/-webkit-gradient.ts","../../../src/css/types/functions/radial-gradient.ts","../../../src/css/types/functions/-prefix-radial-gradient.ts","../../../src/css/types/image.ts","../../../src/css/property-descriptors/background-size.ts","../../../src/css/property-descriptors/background-image.ts","../../../src/css/property-descriptors/background-origin.ts","../../../src/css/property-descriptors/background-position.ts","../../../src/css/property-descriptors/background-repeat.ts","../../../src/css/property-descriptors/line-break.ts","../../../src/css/property-descriptors/border-color.ts","../../../src/css/property-descriptors/border-radius.ts","../../../src/css/property-descriptors/border-style.ts","../../../src/css/property-descriptors/border-width.ts","../../../src/css/property-descriptors/color.ts","../../../src/css/property-descriptors/direction.ts","../../../src/css/property-descriptors/display.ts","../../../src/css/property-descriptors/float.ts","../../../src/css/property-descriptors/letter-spacing.ts","../../../src/css/property-descriptors/word-break.ts","../../../src/css/property-descriptors/line-height.ts","../../../src/css/property-descriptors/list-style-image.ts","../../../src/css/property-descriptors/list-style-position.ts","../../../src/css/property-descriptors/list-style-type.ts","../../../src/css/property-descriptors/margin.ts","../../../src/css/property-descriptors/overflow.ts","../../../src/css/property-descriptors/overflow-wrap.ts","../../../src/css/property-descriptors/padding.ts","../../../src/css/property-descriptors/text-align.ts","../../../src/css/property-descriptors/position.ts","../../../src/css/property-descriptors/text-shadow.ts","../../../src/css/property-descriptors/text-transform.ts","../../../src/css/property-descriptors/transform.ts","../../../src/css/property-descriptors/transform-origin.ts","../../../src/css/property-descriptors/visibility.ts","../../node_modules/text-segmentation/node_modules/src/Util.ts","../../../src/css/property-descriptors/z-index.ts","../../../src/css/types/time.ts","../../../src/css/property-descriptors/opacity.ts","../../../src/css/property-descriptors/text-decoration-color.ts","../../../src/css/property-descriptors/text-decoration-line.ts","../../../src/css/property-descriptors/font-family.ts","../../../src/css/property-descriptors/font-size.ts","../../../src/css/property-descriptors/font-weight.ts","../../../src/css/property-descriptors/font-variant.ts","../../../src/css/property-descriptors/font-style.ts","../../../src/core/bitwise.ts","../../../src/css/property-descriptors/content.ts","../../../src/css/property-descriptors/counter-increment.ts","../../../src/css/property-descriptors/counter-reset.ts","../../../src/css/property-descriptors/duration.ts","../../../src/css/property-descriptors/quotes.ts","../../../src/css/property-descriptors/box-shadow.ts","../../../src/css/property-descriptors/paint-order.ts","../../../src/css/property-descriptors/webkit-text-stroke-color.ts","../../../src/css/property-descriptors/webkit-text-stroke-width.ts","../../../src/css/index.ts","../../../src/core/debugger.ts","../../../src/dom/element-container.ts","../../node_modules/src/grapheme-break-trie.ts","../../node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../../node_modules/text-segmentation/node_modules/src/Trie.ts","../../node_modules/src/GraphemeBreak.ts","../../../src/dom/document-cloner.ts","../../../src/core/features.ts","../../../src/css/layout/text.ts","../../../src/dom/text-container.ts","../../../src/dom/replaced-elements/image-element-container.ts","../../../src/dom/replaced-elements/canvas-element-container.ts","../../../src/dom/replaced-elements/svg-element-container.ts","../../../src/dom/elements/li-element-container.ts","../../../src/dom/elements/ol-element-container.ts","../../../src/dom/replaced-elements/input-element-container.ts","../../../src/dom/elements/select-element-container.ts","../../../src/dom/elements/textarea-element-container.ts","../../../src/dom/replaced-elements/iframe-element-container.ts","../../../src/dom/node-parser.ts","../../../src/css/types/functions/counter.ts","../../../src/render/bound-curves.ts","../../../src/core/cache-storage.ts","../../../src/render/vector.ts","../../../src/render/bezier-curve.ts","../../../src/render/effects.ts","../../../src/render/path.ts","../../../src/render/stacking-context.ts","../../../src/render/border.ts","../../../src/render/box-sizing.ts","../../../src/render/background.ts","../../../src/core/util.ts","../../../src/render/font-metrics.ts","../../../src/render/renderer.ts","../../../src/render/canvas/canvas-renderer.ts","../../../src/render/canvas/foreignobject-renderer.ts","../../../src/core/logger.ts","../../../src/core/context.ts","../../../src/index.ts"],"names":["d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","pop","push","__spreadArray","to","from","pack","ar","l","slice","concat","left","top","width","height","add","x","w","h","Bounds","fromClientRect","context","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","find","rect","EMPTY","parseBounds","node","getBoundingClientRect","parseDocumentSize","document","documentElement","Error","Math","max","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","toCodePoints","str","codePoints","charCodeAt","extra","fromCodePoint","codeUnits","index","codePoint","fromCharCode","chars","lookup","Uint8Array","decode","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","buffer","ArrayBuffer","bytes","isArray","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_MASK","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_MASK","slice16","view","start","end","Uint16Array","slice32","Uint32Array","createTrieFromBase64","_byteLength","view32","view16","headerLength","data","ceil","Trie","initialValue","errorValue","highStart","highValueIndex","get","ix","LETTER_NUMBER_MODIFIER","BK","CR","LF","CM","NL","WJ","ZW","GL","SP","ZWJ","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","types","indices","categories","forEach","classType","indexOf","prev","isAdjacentWithSpaceIgnored","a","currentIndex","classTypes","current","previousNonSpaceClassType","type","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","options","wordBreak","isLetterNumber","map","forbiddenBreakpoints","letterNumber","undefined","required","LineBreaker","lastEnd","nextIndex","Break","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","EOF","ZERO","u","z","A","E","F","U","Z","isDigit","isSurrogateCodePoint","isHex","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","c","sign","integers","int","parseInt","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","shift","unshift","delta","digits","questionMarks","digit","endDigits","toLowerCase","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","amount","min","splice","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","_tokens","tokenizer","Tokenizer","Parser","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","name","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","DEG","GRAD","RAD","TURN","angle","parse","_context","PI","isAngle","parseNamedSide","filter","ident","join","deg","color","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","substring","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","round","getTokenColorValue","rgb","hue2rgb","t1","t2","hue","hsl","saturation","lightness","hsla","rgba","parseColor","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","backgroundClip","prefix","backgroundColor","format","parseColorStop","colorType","stop","processColorStops","stops","lineLength","first","last","processStops","previous","absoluteValue","gapBegin","gapLength","gapValue","getAngleFromCorner","corner","centerX","centerY","atan2","calculateGradientDirection","radian","abs","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","reduce","stat","cx","cy","optimumDistance","optimumCorner","Infinity","calculateRadius","gradient","rx","ry","size","shape","linearGradient","firstToken","angleType","colorStop","prefixLinearGradient","webkitGradient","position","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","acc","prefixRadialGradient","isLinearGradient","background","isRadialGradient","image","url","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","BACKGROUND_SIZE","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","style","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","direction","display","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","BREAK_ALL","KEEP_ALL","zIndex","auto","order","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","toString","fontWeight","fontVariant","fontStyle","contains","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","duration","quotes","open","close","getQuote","depth","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","descriptor","parser","elementDebuggerAttribute","getElementDebugType","element","getAttribute","isDebugging","elementType","textNodes","elements","styles","CSSParsedDeclaration","window","getComputedStyle","isHTMLElementNode","some","bounds","PseudoElementType","Prepend","Control","Extend","SpacingMark","L","V","T","LV","LVT","Extended_Pictographic","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","bk","breaker","graphemes","testRangeBounds","TEST_HEIGHT","createRange","range","testElement","createElement","appendChild","selectNode","rangeBounds","rangeHeight","removeChild","testIOSLineBreak","wordSpacing","innerHTML","repeat","firstChild","textList","offset","supports","every","text","setStart","setEnd","boundAhead","testCORS","Image","crossOrigin","testResponseType","XMLHttpRequest","responseType","testSVG","img","canvas","ctx","getContext","src","drawImage","toDataURL","isGreenPixel","testForeignObject","fillStyle","fillRect","greenImageSrc","svg","createForeignObjectSVG","loadSerializedSVG","getImageData","catch","xmlns","createElementNS","foreignObject","setAttributeNS","onload","onerror","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","defineProperty","SUPPORT_WORD_BREAKING","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","fetch","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","parseTextBounds","breakText","textBounds","trim","clientRects","getClientRects","subSegments","segmentGraphemes","subSegment","TextBounds","replacementNode","splitText","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","segmenter","granularity","segment","segmentWords","breakWords","wordSeparators","words","replace","CAPITALIZE","capitalize","m","p1","p2","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","ElementContainer","setAttribute","baseVal","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","placeholder","CHECKBOX","RADIO","INPUT_COLOR","input","checked","option","selectedIndex","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","TextContainer","isElementNode","isSlotElement","assignedNodes","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","ImageElementContainer","isCanvasElement","CanvasElementContainer","SVGElementContainer","isLIElement","LIElementContainer","isOLElement","OLElementContainer","isInputElement","InputElementContainer","SelectElementContainer","TextareaElementContainer","isIFrameElement","IFrameElementContainer","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","floor","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","scrolledElements","referenceElement","CounterState","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","restoreNodeScroll","scrollTo","test","navigator","userAgent","logger","warn","onclone","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","css","rule","cssText","textContent","error","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","CSSParsedCounterDeclaration","resolvePseudoContent","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","CSSParsedPseudoDeclaration","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","CORNER","cloneIframeContainer","border","scrolling","imageReady","complete","all","images","interval","setInterval","childNodes","readyState","clearInterval","ignoredStyleProperties","target","property","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","getOrigin","link","CacheStorage","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","_options","_cache","has","isBlobImage","isRenderable","loadImage","match","key","useCORS","isInlineImage","useProxy","proxy","debug","isInlineBase64Image","setTimeout","imageTimeout","keys","xhr","status","response","FileReader","addEventListener","readAsDataURL","queryString","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","substr","deltaX","deltaY","Vector","lerp","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","BezierCurve","reverse","isBezierCurve","path","tlh","tlv","trh","trv","brh","brv","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","isTransformEffect","effect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","point","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","effects","BoundCurves","OpacityEffect","TransformEffect","borderBox","paddingBox","ClipEffect","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","ElementPaint","listOwnerItems","parentStack","stack","StackingContext","processListItems","owner","numbering","listValue","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","SMALL_IMAGE","SAMPLE_TEXT","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","MASK_OFFSET","_activeEffects","scale","fontMetrics","FontMetrics","translate","textBaseline","applyEffects","popEffect","applyEffect","save","globalAlpha","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","CanvasRenderer","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","mask","paths","moveTo","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","createPattern","x0","x1","y0","y1","createLinearGradient","addColorStop","createRadialGradient","midX","midY","invF","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","hasBackground","borders","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","setLineDash","lineCap","stroke","path1","path2","Renderer","iOSBrokenFonts","fontFamilies","id","enabled","Date","now","console","getTime","instances","instanceName","Context","instanceCount","Logger","logging","Cache","html2canvas","renderElement","opts","resourceOptions","contextOptions","windowOptions","windowWidth","innerWidth","windowHeight","innerHeight","foreignObjectRendering","cloneOptions","documentCloner","DocumentCloner","clonedElement","parseBackgroundColor","renderOptions","devicePixelRatio","ForeignObjectRenderer","removeContainer","backgroundColorOverride","defaultBackgroundColor"],"mappings":"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","file":"static/js/318.7ff92664.chunk.js","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline