{"version":3,"sources":["pdfmake.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","global","this","Buffer","Document","docDefinition","fonts","vfs","defaultClientFonts","PdfPrinter","saveAs","Roboto","normal","bold","italics","bolditalics","prototype","_createDoc","options","callback","printer","fs","bindFS","result","doc","createPdfKitDocument","chunks","on","chunk","push","concat","_pdfMakePages","end","_getPages","cb","ignoreBuffer","pages","open","message","win","window","getDataUrl","location","href","e","close","print","dataUrl","iFrame","document","createElement","style","position","left","src","onload","removeIFrame","body","removeChild","removeEventListener","addEventListener","appendChild","autoPrint","download","defaultFileName","getBuffer","Blob","type","getBase64","buffer","toString","createPdf","pdfMake","fontDescriptors","fixPageMargins","margin","Number","right","top","bottom","Array","length","registerDefaultTableLayouts","layoutBuilder","registerTableLayouts","noBorders","hLineWidth","i","vLineWidth","paddingLeft","paddingRight","node","table","widths","headerLineOnly","headerRows","lightHorizontalLines","hLineColor","pageSize2widthAndHeight","pageSize","String","size","sizes","toUpperCase","width","height","StringObject","str","isString","updatePageOrientationInOptions","currentPage","pdfKitDoc","previousPageOrientation","orientation","renderPages","fontProvider","addPage","page","ii","il","items","item","renderVector","renderLine","x","y","renderImage","watermark","renderWatermark","setFontRefsToPdfDoc","line","ascenderHeight","getAscenderHeight","textDecorator","drawBackground","l","inlines","inline","fill","color","save","transform","encoded","font","encode","text","addContent","fontId","fontSize","encodedText","restore","drawDecorations","opacity","angle","Math","atan2","PI","rotate","origin","vector","pdfDoc","lineWidth","dash","space","undash","fillOpacity","strokeOpacity","lineJoin","ellipse","r1","r2","r","roundedRect","w","h","rect","moveTo","x1","y1","lineTo","x2","y2","points","p1","pn","closePath","lineColor","fillAndStroke","stroke","image","_width","_height","FontProvider","LayoutBuilder","PdfKit","PDFReference","ImageMeasure","pageOrientation","compress","info","Producer","Creator","images","builder","pageMargins","tableLayouts","layoutDocument","content","styles","defaultStyle","background","header","footer","pageBreakBefore","jsRef","ref","S","JS","namesRef","Names","_root","data","JavaScript","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","navigator","msSaveOrOpenBlob","bind","view","test","userAgent","get_URL","URL","webkitURL","save_link","createElementNS","can_use_save_link","click","event","createEvent","initMouseEvent","dispatchEvent","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","setImmediate","setTimeout","force_saveable_type","fs_min_size","arbitrary_revoke_timeout","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","listener","FileSaver","blob","name","object_url","target_view","slice","blob_changed","dispatch_all","split","fs_error","createObjectURL","new_tab","undefined","safari","readyState","DONE","abortable","func","apply","arguments","create_if_not_found","create","exclusive","INIT","webkitSlice","TEMPORARY","root","getDirectory","dir","getFile","createWriter","writer","onwriteend","toURL","onerror","error","code","ABORT_ERR","forEach","write","abort","WRITING","NOT_FOUND_ERR","FS_proto","onwritestart","onprogress","onwrite","onabort","self","arg","parent","fromNumber","fromString","fromObject","that","allocate","checked","TYPED_ARRAY_SUPPORT","string","encoding","byteLength","object","isBuffer","fromBuffer","isArray","fromArray","TypeError","ArrayBuffer","fromTypedArray","fromArrayLike","fromJsonObject","copy","array","_augment","Uint8Array","_isBuffer","fromPool","poolSize","rootParent","kMaxLength","RangeError","SlowBuffer","subject","buf","utf8ToBytes","base64ToBytes","hexWrite","offset","remaining","strLen","Error","parsed","parseInt","substr","isNaN","utf8Write","blitBuffer","asciiWrite","asciiToBytes","binaryWrite","base64Write","ucs2Write","utf16leToBytes","base64Slice","start","base64","fromByteArray","utf8Slice","res","tmp","min","decodeUtf8Char","fromCharCode","asciiSlice","ret","binarySlice","hexSlice","len","out","toHex","utf16leSlice","bytes","checkOffset","ext","checkInt","value","max","objectWriteUInt16","littleEndian","j","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","stringtrim","replace","INVALID_BASE64_RE","trim","n","units","Infinity","codePoint","leadSurrogate","charCodeAt","byteArray","hi","lo","toByteArray","dst","decodeURIComponent","err","INSPECT_MAX_BYTES","arr","foo","subarray","b","compare","a","isEncoding","toLowerCase","list","pos","loweredCase","equals","inspect","match","join","indexOf","val","byteOffset","arrayIndexOf","foundIndex","get","readUInt8","set","v","writeUInt8","isFinite","swap","toJSON","_arr","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","target","targetStart","_set","toArrayBuffer","BP","constructor","toLocaleString","typeName","fontWrappers","hasOwnProperty","fontDef","_","FontWrapper","provideFont","familyName","_font","each","fontFamily","fontWrapper","pdfFonts","addAll","otherArray","imageMeasure","tracker","TraversalTracker","decorateNode","positions","canvas","resetXY","DocMeasure","DocumentContext","PageElementWriter","ColumnCalculator","TableProcessor","Line","pack","offsetVector","fontStringify","isFunction","TextTools","StyleContextStack","docStructure","styleDictionary","pageBreakBeforeFct","addPageBreaksIfNecessary","linearNodeList","reject","isEmpty","nodeInfo","pick","startPosition","first","pageNumbers","chain","map","uniq","stack","any","index","followingNodeList","pageBreak","pageBreakCalculated","pageNumber","followingNodesOnPage","drop","filter","node0","contains","nodesOnNextPage","previousNodesOnPage","take","resetXYs","docMeasure","tryLayoutDocument","measureDocument","_this","context","startTracking","addBackground","processNode","addHeadersAndFooters","addWatermark","backgroundGetter","pageBackground","getCurrentPage","beginUnbreakableBlock","commitUnbreakableBlock","addStaticRepeatable","headerOrFooter","sizeFunction","addDynamicRepeatable","nodeGetter","pageIndex","headerSizeFct","footerSizeFct","getSize","targetWidth","sqrt","textTools","styleContextStack","abs","sizeOfString","pop","defaultFont","Object","getOwnPropertyNames","watermarkObject","applyMargins","_margin","moveToNextPage","moveDown","addMargin","absPosition","absolutePosition","beginDetachedBlock","processVerticalContainer","columns","processColumns","ul","processList","ol","processTable","processLeaf","processImage","processCanvas","qr","processQr","_span","JSON","stringify","endDetachedBlock","columnNode","gapArray","gap","gaps","availableWidth","_gap","buildColumnWidths","processRow","tableBody","tableRow","storePageBreakData","pageDesc","pageBreaks","desc","prevPage","prevY","colLeftOffset","getEndingCell","column","columnIndex","rowSpan","endingRow","auto","beginColumnGroup","_calcWidth","leftOffset","colSpan","beginColumn","_columnEndingContext","markEnding","completeColumnGroup","orderedList","addMarkerToFirstLeaf","nextMarker","marker","_minWidth","addVector","markerLine","addInline","_inlines","addLine","gapSize","_gapSize","listMarker","tableNode","processor","beginTable","beginRow","_offsets","offsets","endRow","endTable","buildNextLine","textNode","hasEnoughSpaceForInline","shift","lastLineInParagraph","addImage","_minHeight","availableHeight","addQr","4A0","2A0","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","imageDictionary","PDFImage","measureImage","realImageSrc","img","substring","label","_imageRegistry","_imageCount","embed","groupDecorations","groups","curGroup","decoration","decorationColor","decorationStyle","ll","deco","drawDecoration","group","maxInline","inl","sum","firstInline","biggerInline","totalWidth","lineAscent","ascent","ascender","descent","lw","fillColor","nbDashes","ceil","rdx","clip","nbDots","rx","sh","sv","nbWaves","rwx","iii","bezierCurveTo","getHeight","__dirname","VirtualFileSystem","fileSystem","baseSystem","fixFilename","filename","readFileSync","base64content","writeFileSync","baseCompareAscending","other","valIsReflexive","othIsReflexive","baseIndexOf","fromIndex","indexOfNaN","baseSortBy","comparer","sort","baseToString","charAtCallback","charsLeftIndex","chars","charAt","charsRightIndex","compareAscending","criteria","compareMultipleAscending","objCriteria","othCriteria","deburrLetter","letter","deburredLetters","escapeHtmlChar","chr","htmlEscapes","escapeStringChar","stringEscapes","fromRight","isObjectLike","isSpace","charCode","replaceHolders","placeholder","resIndex","PLACEHOLDER","sortedUniq","iteratee","seen","computed","trimmedLeftIndex","trimmedRightIndex","unescapeHtmlChar","htmlUnescapes","runInContext","lodash","LodashWrapper","__wrapped__","__chain__","arrayCopy","__actions__","chainAll","actions","LazyWrapper","dropCount","filtered","iteratees","takeCount","POSITIVE_INFINITY","views","wrapped","lazyClone","lazyReverse","clone","lazyValue","baseWrapperValue","isRight","getView","nativeMin","iterLength","outer","iterIndex","LAZY_MAP_FLAG","LAZY_FILTER_FLAG","MapCache","__data__","mapDelete","key","has","mapGet","mapHas","mapSet","SetCache","values","hash","nativeCreate","Set","cacheIndexOf","cache","isObject","cachePush","add","source","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","arrayMap","arrayMax","NEGATIVE_INFINITY","arrayMin","arrayReduce","accumulator","initFromArray","arrayReduceRight","arraySome","assignDefaults","objectValue","sourceValue","assignOwnDefaults","baseAssign","customizer","props","keys","baseCopy","baseAt","collection","isArr","isLength","propsLength","parseFloat","isIndex","baseBindAll","methodNames","createWrapper","BIND_FLAG","baseCallback","thisArg","argCount","isBindable","bindCallback","identity","baseMatches","baseProperty","baseClone","isDeep","stackA","stackB","initCloneArray","tag","objToString","isFunc","funcTag","objectTag","argsTag","cloneableTags","initCloneByTag","initCloneObject","baseForOwn","subValue","baseDelay","wait","args","FUNC_ERROR_TEXT","baseSlice","baseDifference","getIndexOf","isCommon","createCache","valuesLength","valuesIndex","baseEach","iterable","toObject","baseEachRight","baseForOwnRight","baseEvery","baseFilter","baseFind","eachFunc","retKey","baseFlatten","isStrict","isArguments","valIndex","valLength","baseFor","keysFunc","baseForRight","baseForIn","keysIn","baseFunctions","baseInvoke","methodName","baseIsEqual","isWhere","valType","othType","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","valWrapped","othWrapped","equalArrays","equalObjects","baseIsMatch","strictCompareFlags","noCustomizer","objValue","srcValue","baseMap","isStrictComparable","baseMerge","isSrcArr","baseMergeDeep","mergeFunc","isPlainObject","toPlainObject","basePullAt","indexes","previous","splice","baseRandom","nativeRandom","baseReduce","initFromCollection","baseSome","baseUniq","isLarge","seenIndex","baseValues","action","binaryIndex","retHighest","low","high","HALF_MAX_ARRAY_LENGTH","mid","binaryIndexBy","valIsNaN","valIsUndef","isReflexive","setLow","MAX_ARRAY_INDEX","bufferClone","bufferSlice","composeArgs","partials","holders","holdersLength","argsIndex","argsLength","nativeMax","leftIndex","leftLength","composeArgsRight","holdersIndex","rightIndex","rightLength","pad","createAggregator","setter","initializer","getCallback","createAssigner","assigner","isIterateeCall","createBindWrapper","wrapper","Ctor","createCtorWrapper","createCompounder","words","deburr","thisBinding","baseCreate","createExtremum","arrayFunc","isMin","noIteratee","toIterable","extremumBy","createHybridWrapper","bitmask","partialsRight","holdersRight","argPos","ary","arity","isCurry","isCurryRight","argsHolders","newArgPos","newArity","newsHolders","newHoldersRight","newPartials","newPartialsRight","PARTIAL_FLAG","PARTIAL_RIGHT_FLAG","isCurryBound","BIND_KEY_FLAG","isBind","isBindKey","reorder","isAry","ARY_FLAG","CURRY_FLAG","CURRY_BOUND_FLAG","CURRY_RIGHT_FLAG","createPad","strLength","nativeIsFinite","padLength","repeat","createPartialWrapper","getData","newData","mergeData","baseSetData","setData","arrLength","othLength","arrValue","othValue","othIndex","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","objProps","objLength","othProps","hasCtor","objCtor","othCtor","exValue","current","transforms","input","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","exec","lastIndex","support","funcNames","funcDecomp","fnToString","reFuncName","reThis","isNative","MAX_SAFE_INTEGER","prereq","srcBitmask","newBitmask","arityFlags","REARG_FLAG","bindFlags","comboFlags","isRearg","isCombo","pickByArray","pickByCallback","oldArray","shimIsPlainObject","shimKeys","allowIndexes","nonEnumArgs","guard","compact","difference","dropRight","dropRightWhile","dropWhile","findIndex","findLastIndex","flatten","flattenDeep","initial","intersection","caches","last","lastIndexOf","pull","pullAt","rest","sortedIndex","sortedLastIndex","takeRight","takeRightWhile","takeWhile","union","isSorted","unzip","getLength","without","xor","zip","zipObject","tap","interceptor","thru","wrapperChain","wrapperReverse","reverse","wrapperToString","wrapperValue","at","includes","every","find","findLast","findWhere","forEachRight","invoke","pluck","reduce","reduceRight","sample","shuffle","rand","some","sortBy","sortByAll","where","after","temp","before","bindAll","functions","bindKey","curry","curryRight","debounce","cancel","timeoutId","clearTimeout","maxTimeoutId","trailingCall","delayed","now","stamp","isCalled","lastCalled","maxDelayed","trailing","maxWait","debounced","leading","leadingCall","defer","delay","flow","funcs","flowRight","memoize","resolver","memoized","Cache","negate","once","partial","partialRight","rearg","throttle","debounceOptions","wrap","cloneDeep","isBoolean","isDate","isElement","nodeType","isEqual","isError","isMatch","isNumber","reNative","reHostCtor","isNull","isRegExp","typedArrayTags","isUndefined","toArray","properties","defaults","assign","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","invert","multiValue","isProto","skipIndexes","mapValues","omit","pairs","defaultValue","valuesIn","random","floating","noMin","noMax","capitalize","reLatin1","endsWith","escape","reHasUnescapedHtml","reUnescapedHtml","escapeRegExp","reHasRegExpChars","reRegExpChars","padLeft","padRight","radix","nativeParseInt","startsWith","template","otherOptions","settings","templateSettings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reNoMatch","reDelimiters","RegExp","reInterpolate","reEsTemplate","evaluate","sourceURL","templateCounter","escapeValue","interpolateValue","esTemplateValue","evaluateValue","reUnescapedString","variable","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","attempt","Function","trimLeft","trimRight","trunc","DEFAULT_TRUNC_LENGTH","omission","DEFAULT_TRUNC_OMISSION","separator","search","newEnd","unescape","reHasEscapedHtml","reEscapedHtml","pattern","reWords","matches","constant","mixin","isObj","noConflict","oldDash","noop","property","propertyOf","range","step","times","MAX_ARRAY_LENGTH","uniqueId","prefix","idCounter","contextProps","Date","arrayProto","objectProto","getPrototypeOf","propertyIsEnumerable","WeakMap","unshift","Float64Array","nativeIsArray","nativeKeys","nativeNow","nativeNumIsFinite","FLOAT64_BYTES_PER_ELEMENT","BYTES_PER_ELEMENT","metaMap","WinRTError","dom","createDocumentFragment","reEscape","reEvaluate","floatLength","count","HOT_SPAN","HOT_COUNT","countBy","groupBy","indexBy","partition","getTime","valueOf","objProto","merge","camelCase","word","kebabCase","whitespace","reHexPrefix","snakeCase","startCase","backflow","collect","compose","eachRight","extend","methods","select","tail","unique","all","detect","foldl","foldr","head","include","inject","VERSION","isFilter","LAZY_WHILE_FLAG","countName","whileName","takeName","dropName","operationName","createCallback","done","lodashFunc","retUnwrapped","isHybrid","isLazy","onlyLazy","otherArgs","chainName","mapTag","setTag","weakMapTag","upper","lower","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","&","<",">","\"","'","`","&","<",">",""","'","`","objectTypes","function","\\","\n","\r","
","
","freeExports","freeModule","freeGlobal","PDFObject","zlib","__bind","fn","me","finalize","gen","deflate","Filter","uncompressedLength","initDeflate","createDeflate","Length","_base","_i","_len","_ref","_offset","_write","convert","_refEnd","__webpack_amd_options__","webpackPolyfill","deprecate","paths","children","pdfkitDoc","path","fontName","MAX_CHAR_TYPES","charCatalogue","__defineGetter__","getFont","decender","pseudoName","postscriptName","_fontFamilies","widthOfString","lineHeight","toCharCode","char","charTypesInInline","characterFitInFontWithIndex","use","Data","JPEG","PNG","events","callbacks","stopTracking","emit","innerBlock","styleStack","autoImageIndex","qrEncoder","measureNode","extendMargins","_maxWidth","getNodeMargin","processSingleMargins","currentMargin","marginLeft","marginTop","marginRight","marginBottom","flattenStyleArray","styleArray","flattenedStyles","styleName","convertMargin","flattenedStyleArray","measureColumns","measureVerticalContainer","measureList","measureTable","measureLeaf","measureCanvas","measureQr","convertIfBase64Image","imageSize","fit","factor","_alignment","getProperty","buildInlines","minWidth","maxWidth","gapSizeForList","isOrderedList","listItems","longestNo","buildMarker","counter","radius","_maxHeight","isOrdered","nextItem","measures","measureMinMax","measureCb","getLayout","layout","defaultLayout","vLineColor","paddingTop","paddingBottom","getOffsets","totalOffset","prevRightPadding","lOffset","total","extendWidthsForColSpans","q","colSpans","span","currentMinMax","getMinMax","col","minDifference","maxDifference","markSpans","rowData","markVSpans","row","extendTableWidths","_layout","cols","rows","i2","l2","measure","snapshots","endingCell","pageOrientationString","currentPageOrientation","bottomMostContext","c1","c2","bottomMost","lastColumnWidth","saved","calculateBottomMost","destContext","saveContextInEndingCell","initializePage","pageSnapshot","getPageSize","newPageOrientation","nextPageIndex","createNewPage","newPageCreated","getCurrentPosition","innerHeight","innerWidth","pageInnerHeight","pageInnerWidth","verticalRatio","horizontalRatio","transactionLevel","repeatables","ElementWriter","fitOnPage","addFct","dontUpdateContextPosition","ignoreContextX","ignoreContextY","addFragment","fragment","useBlockXOffset","useBlockYOffset","nextPage","rep","originalX","pushContext","forcedX","forcedY","unbreakableContext","popContext","nbPages","xOffset","yOffset","currentBlockToRepeatable","pushToRepeatables","popFromRepeatables","autoColumns","autoMin","autoMax","starColumns","starMaxMin","starMaxMax","fixedColumns","initial_availableWidth","isAutoColumn","isStarColumn","elasticWidth","minW","maxW","W","D","d","starSize","maxStar","starCount","getTableInnerContentWidth","prepareRowSpanData","rsd","lastWidth","paddings","lBorder","tableWidth","rowSpanData","cleanUpRepeatables","rowsWithoutPageBreak","keepWithHeaderRows","dontBreakRows","drawHorizontalLine","onRowBreak","rowIndex","rowPaddingTop","topLineWidth","bottomLineWidth","rowPaddingBottom","rowCallback","rowTopY","reservedAtBottom","lineIndex","overrideY","currentLine","shouldDrawLine","drawVerticalLine","y0","vLineIndex","getLineXs","_colSpan","endingPage","endingY","xs","ys","hasBreaks","skipOrphanePadding","yi","yl","willBreak","rowBreakWithoutHeader","hzLineOffset","colIndex","wBorder","xf","yf","hLineWhenBroken","headerRepeatable","leadingCut","trailingCut","inlineWidths","newLineForced","lineEnd","getWidth","obj","functionToCheck","getType","splitWords","results","WORD_RE","isNewLine","shouldAddLine","copyStyle","destination","normalizeTextArray","removeDiacritics","diacriticsMap","getStyleProperty","textArray","normalized","leadingSpaces","LEADING","trailingSpaces","TRAILING","alignment","getTrimmedWidth","currentLineWidth","measured","Ą","Ć","Ę","Ł","Ń","Ś","Ź","Ż","ą","ć","ę","ł","ń","ś","ź","ż","styleOverrides","styleNameOrOverride","howMany","autopush","styleNames","styleOverrideObject","pushSOO","pushedItems","PDFDocument","PDFPage","stream","__hasProp","__extends","child","ctor","__super__","_super","_ref1","version","_pageBuffer","_pageBufferStart","_waiting","_ended","Type","Pages","Count","Kids","initColor","initVector","initFonts","initText","initImages","CreationDate","method","_results","bufferPages","flushPages","dictionary","margins","_ctm","bufferedPageRange","switchToPage","_read","_finalize","pipe","createWriteStream","output","_info","xRefOffset","Size","Root","Info","Readable","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","s","NaN","rt","log","LN2","lookup","decode","elt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","L","placeHolders","Arr","uint8ToBase64","uint8","num","tripletToBase64","extraBytes","escapable","escapableRe","swapBytes","\t","\b","\f","(",")","buff","isUnicode","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_j","generateFrame","MODES","numeric","MODE_NUMERIC","alphanumeric","MODE_ALPHANUMERIC","octet","MODE_OCTET","ECCLEVELS","ECCLEVEL_L","M","ECCLEVEL_M","Q","ECCLEVEL_Q","H","ECCLEVEL_H","ver","ecclevel","eccLevel","mode","mask","NUMERIC_REGEXP","ALPHANUMERIC_OUT_REGEXP","validatedata","getmaxdatalen","generate","buildCanvas","foreground","matrix","modSize","cd","_canvas","VERSIONS","MODE_TERMINATOR","MODE_KANJI","ALPHANUMERIC_REGEXP","GF256_MAP","GF256_INVMAP","GF256_GENPOLY","prevpoly","poly","ALPHANUMERIC_MAP","MASKFUNCS","needsverinfo","getsizebyver","nfullbits","nbits","ndatabits","ndatalenbits","newdata","ch","maxbuflen","bits","datalen","nlenbits","calculateecc","genpoly","modulus","polylen","genpolylen","quotient","augumenteccs","nblocks","subsizes","subsize","subsize0","pivot","eccs","nitemsperblock","augumentbch","makebasematrix","reserved","blit","aligns","minj","maxj","k","putdata","jj","maskdata","maskf","putformatinfo","evaluatematrix","PENALTY_CONSECUTIVE","PENALTY_TWOBYTWO","PENALTY_FINDERLIKE","PENALTY_DENSITY","evaluategroup","score","nblacks","nextrow","bestmask","bestscore","readByte","writeByte","byte","byteAt","readBool","writeBool","readUInt32","b1","b2","b3","b4","writeUInt32","readInt32","int","writeInt32","readUInt16","writeUInt16","readInt16","writeInt16","readString","writeString","stringAt","readShort","writeShort","readLongLong","b5","b6","b7","b8","writeLongLong","readInt","writeInt","__indexOf","channels","MARKERS","colorSpace","Subtype","BitsPerComponent","Width","Height","ColorSpace","PNGImage","imgData","palette","params","rgb","hasAlphaChannel","Predictor","Colors","colors","Columns","transparency","grayscale","greyscale","indexed","loadIndexedAlphaChannel","splitAlphaChannel","sMask","alphaChannel","Decode","decodePixels","pixels","colorByteSize","pixelCount","contextStack","addPageItem","cloneLine","getCurrentPositionOnPage","alignLine","additionalSpacing","alignImage","imageWidth","block","ctx","contextOrWidth","dimensions","DEFAULT_MARGINS","SIZES","resources","ProcSet","defineProperties","Font","xobjects","XObject","ext_gstates","ExtGState","patterns","Pattern","annotations","Annots","Parent","MediaBox","Contents","Resources","maxY","KAPPA","SVGPath","__slice","_ctmStack","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","miterLimit","phase","cp1x","cp1y","cp2x","cp2y","quadraticCurveTo","cpx","cpy","ox","oy","xe","xm","ye","ym","circle","polygon","point","_windingRule","rule","strokeColor","isFillRule","m11","m12","m21","m22","dx","dy","m0","m1","m2","m3","m4","m5","toFixed","translate","cos","rad","sin","scale","xFactor","yFactor","LineWrapper","_lineGap","lineGap","lines","currentLineHeight","moveUp","_text","lineCallback","_initOptions","wordSpacing","_wrapper","continued","_textOptions","_line","_fontSize","characterSpacing","heightOfString","indent","itemIndent","level","levels","round","textIndent","bulletIndent","diff","opts","lineBreak","columnGap","_fragment","align","commands","lineY","renderedWidth","spaceWidth","textWidth","_name","wordCount","link","underline","strike","_fillColor","PDFGradient","PDFLinearGradient","PDFRadialGradient","namedColors","_opacityRegistry","_opacityCount","_gradCount","_normalizeColor","hex","part","_setColor","gstate","op","_sMasked","SMask","_setColorSpace","_doOpacity","ca","CA","linearGradient","radialGradient","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","grey","green","greenyellow","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","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","bh","bp","bw","hp","ip","wp","_ref2","valign","annotate","Rect","_convertRect","Border","C","Dest","note","contents","Name","url","A","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","PDFFont","_fontCount","_registeredFonts","family","cacheKey","includeGap","registerFont","process","zlibBuffer","engine","buffers","nread","onError","removeListener","onEnd","zlibBufferSync","flushFlag","binding","Z_FINISH","_processChunk","Deflate","Zlib","DEFLATE","Inflate","INFLATE","Gzip","GZIP","Gunzip","GUNZIP","DeflateRaw","DEFLATERAW","InflateRaw","INFLATERAW","Unzip","UNZIP","_opts","_chunkSize","chunkSize","Z_DEFAULT_CHUNK","Transform","flush","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_BLOCK","_flushFlag","Z_MIN_CHUNK","Z_MAX_CHUNK","windowBits","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","Z_MIN_LEVEL","Z_MAX_LEVEL","memLevel","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","strategy","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","_binding","_hadError","errno","codes","Z_DEFAULT_COMPRESSION","init","Z_DEFAULT_WINDOWBITS","Z_DEFAULT_MEMLEVEL","_buffer","_closed","_level","_strategy","util","assert","ok","Z_DEFAULT_LEVEL","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_VERSION_ERROR","o","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","deflateSync","gzip","gzipSync","deflateRaw","deflateRawSync","unzipSync","inflate","inflateSync","gunzip","gunzipSync","inflateRaw","inflateRawSync","inherits","nextTick","reset","_flush","_transform","kind","ws","_writableState","ended","ending","needDrain","availInAfter","availOutAfter","have","availOutBefore","async","inOff","availInBefore","newReq","er","writeSync","req","Stream","EE","EventEmitter","Writable","Duplex","PassThrough","dest","ondata","writable","pause","ondrain","readable","resume","onend","didOnEnd","onclose","destroy","cleanup","listenerCount","_isStdio","arcToSegments","cx","cy","parameters","parse","px","py","runners","segmentToBezier","solveArc","sx","sy","T","t","V","Z","z","cmd","curArg","foundDecimal","coords","bez","ey","large","rot","ry","seg","segs","sweep","rotateX","a00","a01","a10","a11","cos_th","pl","segments","sfactor","sfactor_sq","sin_th","th","th0","th1","th2","th3","th_arc","x0","xc","yc","th_half","x3","y3","LineBreaker","spaceLeft","startX","startY","ellipsis","continuedX","lastLine","paragraphGap","wordWidth","eachWord","bk","breaker","fbk","lbk","shouldContinue","wordWidths","nextBreak","required","emitLine","lc","nextY","wc","nextSection","lh","stops","embedded","_colorSpace","stop","bounds","form","grad","shader","FunctionType","Domain","N","Functions","Bounds","Encode","PatternType","Shading","Matrix","opacityGradient","CS","Sh1","FormType","BBox","Group","G","opacity_id","ShadingType","Coords","Extend","init_done","write_in_progress","pending_close","bufferSet","msg","zstream","zlib_deflate","zlib_inflate","constants","NONE","strm","status","deflateInit2","Z_DEFLATED","inflateInit2","_error","_writeCheck","in_off","in_len","out_off","out_len","avail_in","next_in","avail_out","next_out","deflateEnd","inflateEnd","deflateReset","inflateReset","section","short","colorType","compressionMethod","filterMethod","interlaceMethod","pixelBitlength","readFile","png","load","pa","paeth","pb","pc","pixelBytes","scanlineLength","upperLeft","_k","_l","_m","decodePalette","copyToImageData","imageData","alpha","_decodedPalette","AFMFont","Subset","TTFFont","STANDARD_FONTS","isAFM","registerAFM","fromDFont","subset","registerTTF","toUnicodeCmap","Courier","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Symbol","ZapfDingbats","characters","embedAFM","embedTTF","encodeText","raw","scaleFactor","unitsPerEm","bbox","stemV","post","exists","italic_angle","italicAngle","capHeight","os2","xHeight","familyClass","isSerif","isScript","flags","isFixedPitch","cmap","unicode","charWidths","descriptor","firstChar","fontfile","glyph","Length1","FontName","FontFile2","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","widthOfGlyph","BaseFont","FontDescriptor","FirstChar","LastChar","Widths","Encoding","ToUnicode","unicodeMap","characterToGlyph","replacer","truncate","getMessage","actual","operator","expected","fail","stackStartFunction","AssertionError","_deepEqual","multiline","ignoreCase","objEquiv","isNullOrUndefined","isPrimitive","aIsArgs","bIsArgs","pSlice","ka","objectKeys","kb","expectedException","_throws","shouldThrow","hasOwn","generatedMessage","captureStackTrace","fn_name","idx","next_line","equal","notEqual","deepEqual","notDeepEqual","strictEqual","notStrictEqual","doesNotThrow","ifError","_events","_maxListeners","defaultMaxListeners","setMaxListeners","handler","listeners","addListener","newListener","warned","console","trace","g","fired","removeAllListeners","emitter","stylize","stylizeNoColor","depth","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","formatError","base","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","getOwnPropertyDescriptor","numLinesEst","prev","cur","ar","isSymbol","re","objectToString","prop","formatRegExp","format","f","objects","deprecated","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","debuglog","env","NODE_DEBUG","pid","italic","inverse","special","number","boolean","null","date","regexp","drainQueue","draining","currentQueue","queue","fun","title","browser","argv","versions","off","cwd","chdir","umask","superCtor","super_","enumerable","configurable","TempCtor","attributes","glyphWidths","boundingBoxes","WIN_ANSI_MAP",402,8211,8212,8216,8217,8218,8220,8221,8222,8224,8225,8226,8230,8364,8240,8249,8250,710,8482,338,339,732,352,353,376,381,382,"character","CmapTable","DFont","Directory","GlyfTable","HeadTable","HheaTable","HmtxTable","LocaTable","MaxpTable","NameTable","OS2Table","PostTable","rawData","numFonts","dfont","getNamedFont","ttf","directory","hhea","maxp","hmtx","loca","glyf","xMin","yMin","xMax","yMax","codeMap","forGlyph","advance","utils","unicodes","next","generateCmap","mapping","roman","unicodeCmap","tables","glyphIDs","glyphsFor","additionalIDs","glyphs","glyphFor","compound","ids","new2old","newIDs","nextGlyphID","old2new","oldID","oldIDs","charMap","old","maxGlyphID","AI","AL","BA","BK","CB","CI_BRK","CJ","CP_BRK","CR","DI_BRK","ID","IN_BRK","LF","NL","NS","PR_BRK","SA","SG","SP","UnicodeTrie","WJ","XX","characterClasses","classTrie","pairTable","lastPos","curClass","nextClass","Break","mapClass","mapFirst","nextCodePoint","nextCharClass","lastClass","shouldBreak","WriteReq","WritableState","hwm","highWaterMark","defaultHwm","objectMode","writableObjectMode","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","writecb","writelen","pendingcb","prefinished","errorEmitted","writeAfterEnd","state","validChunk","valid","decodeChunk","writeOrBuffer","doWrite","writev","_writev","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","finishMaybe","cbs","entry","prefinish","need","endWritable","cork","uncork","allowHalfOpen","TransformState","afterTransform","needTransform","transforming","writechunk","ts","_transformState","rs","_readableState","reading","needReadable","writeencoding","ReadableState","pipes","pipesCount","flowing","endEmitted","emittedReadable","readableListening","readableObjectMode","ranOut","awaitDrain","readingMore","decoder","StringDecoder","readableAddChunk","addToFront","chunkInvalid","onEofChunk","emitReadable","maybeReadMore","needMoreData","roundUpToNextPowerOf2","MAX_HWM","howMuchToRead","debug","emitReadable_","maybeReadMore_","pipeOnDrain","resumeScheduled","resume_","fromList","stringMode","endReadable","setEncoding","enc","nOrig","doRead","pipeOpts","onunpipe","onfinish","unpipe","doEnd","stdout","stderr","endFn","dests","ev","paused","_fromList","2","1","0","-1","-2","-3","-4","-5","-6","errorCode","rank","zero","flush_pending","pending","arraySet","pending_buf","pending_out","total_out","flush_block_only","trees","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","adler","adler32","crc32","total_in","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","MIN_LOOKAHEAD","_win","wmask","w_mask","strend","MAX_MATCH","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","insert","MIN_MATCH","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","BS_NEED_MORE","max_start","BS_FINISH_STARTED","BS_FINISH_DONE","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","BS_BLOCK_DONE","deflate_slow","max_insert","prev_match","match_available","deflate_rle","deflate_huff","lm_init","configuration_table","max_lazy","good_length","nice_length","max_chain","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","Buf16","HEAP_SIZE","dyn_dtree","D_CODES","bl_tree","BL_CODES","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","L_CODES","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","Z_UNKNOWN","INIT_STATE","BUSY_STATE","_tr_init","deflateSetHeader","MAX_MEM_LEVEL","Buf8","deflateInit","MAX_WBITS","DEF_MEM_LEVEL","old_flush","beg","FINISH_STATE","hcrc","extra","comment","time","os","EXTRA_STATE","OS_CODE","level_flags","PRESET_DICT","NAME_STATE","COMMENT_STATE","HCRC_STATE","bstate","_tr_align","_tr_stored_block","LENGTH_CODES","LITERALS","Config","deflateInfo","ZSWAP32","InflateState","havedict","dmax","check","wbits","wsize","whave","wnext","hold","lencode","distcode","lenbits","distbits","ncode","nlen","ndist","lens","work","lendyn","distdyn","sane","back","was","inflateResetKeep","HEAD","Buf32","ENOUGH_LENS","ENOUGH_DISTS","inflateReset2","inflateInit","DEF_WBITS","fixedtables","virgin","sym","lenfix","distfix","inflate_table","LENS","DISTS","updatewindow","dist","put","_in","_out","from","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","here","hbuf","order","TYPE","TYPEDO","inf_leave","FLAGS","BAD","DICTID","TIME","OS","xflags","EXLEN","extra_len","EXTRA","NAME","COMMENT","HCRC","DICT","Z_TREES","CHECK","STORED","LEN_","TABLE","COPY_","COPY","LENLENS","CODES","CODELENS","LEN","inflate_fast","LIT","LENEXT","DIST","DISTEXT","MATCH","LENGTH","MEM","SYNC","inflateGetHeader","inflateInfo","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_BINARY","Z_TEXT","ZStream","attr","dataLength","dataOffset","dataOfs","handle","mapLength","mapOffset","maxIndex","maxTypeIndex","nameListOffset","nameOfs","refListOffset","typeListOffset","named","sfnt","scalarType","tableCount","searchRange","entrySelector","rangeShift","checksum","adjustment","directoryLength","headOffset","log2","tableData","NameEntry","Table","subsetTag","entries","stringOffset","strings","platformID","encodingID","languageID","nameID","copyright","fontSubfamily","uniqueSubfamily","trademark","manufacturer","designer","description","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","nameTable","strCount","strTable","successorOf","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","CmapEntry","charmap","subtable","endCode","glyphId","glyphIds","idDelta","idRangeOffset","saveOffset","segCount","segCountX2","startCode","language","delta","deltas","endCodes","nextID","rangeOffsets","startCodes","startGlyph","_len1","_len2","_len3","_len4","_len5","_len6","_len7","_n","_o","_p","_q","new","lsbCount","metrics","numberOfMetrics","lsb","numGlyphs","leftSideBearings","metric","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","POSTSCRIPT_GLYPHS","numberOfGlyphs","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","_results1","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","lengthOf","added","alphabet","carry","isUpperCase","CompoundGlyph","SimpleGlyph","numberOfContours","glyphOffsets","MORE_COMPONENTS","ARG_1_AND_2_ARE_WORDS","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_SCALE","WE_HAVE_INSTRUCTIONS","BB","CL","CM","CP","EX","GL","H2","H3","HL","HY","IN","IS","JL","JT","JV","NU","OP","PO","PR","QU","RI","SY","ZW","d_code","_dist_code","put_short","send_bits","Buf_size","send_code","tree","bi_reverse","bi_flush","gen_bitlen","xbits","dyn_tree","max_code","stree","stat_desc","static_tree","has_stree","extra_bits","extra_base","max_length","overflow","gen_codes","next_code","tr_static_init","base_length","extra_lbits","_length_code","base_dist","extra_dbits","static_ltree","static_dtree","static_l_desc","StaticTreeDesc","static_d_desc","static_bl_desc","extra_blbits","MAX_BL_BITS","init_block","END_BLOCK","bi_windup","copy_block","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lx","build_tree","elems","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","build_bl_tree","max_blindex","bl_order","send_all_trees","lcodes","dcodes","blcodes","detect_data_type","black_mask","static_init_done","TreeDesc","stored_len","STORED_BLOCK","STATIC_TREES","opt_lenb","static_lenb","DYN_TREES","DIST_CODE_LEN","s1","s2","makeTable","crc","crcTable","TYPED_OK","Uint16Array","Int32Array","sources","shrinkBuf","fnTyped","src_offs","dest_offs","flattenChunks","fnUntyped","setTyped","json","highStart","errorValue","DATA_BLOCK_LENGTH","DATA_GRANULARITY","DATA_MASK","INDEX_1_OFFSET","INDEX_2_BLOCK_LENGTH","INDEX_2_BMP_LENGTH","INDEX_2_MASK","INDEX_SHIFT","LSCP_INDEX_2_LENGTH","LSCP_INDEX_2_OFFSET","OMITTED_BMP_INDEX_1_LENGTH","SHIFT_1","SHIFT_1_2","SHIFT_2","UTF8_2B_INDEX_2_LENGTH","UTF8_2B_INDEX_2_OFFSET","assertEncoding","isBufferEncoding","passThroughWrite","utf16DetectIncompleteChar","charReceived","charLength","base64DetectIncompleteChar","surrogateSize","detectIncompleteChar","charBuffer","charStr","available","cr","lcode","dcode","lmask","dmask","dolen","dodist","MAXBITS","lbase","lext","dbase","dext","lens_index","table_index","incr","curr","used","huff","base_index","offs","extra_index"],"mappings":"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ACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA;AAED64G,UAAa,OACbC,WAAc,IAKV,SAASjnH,EAAQD,EAASH,GAE/BI,EAAOD,QAAUuF,MAAMwP,SAAW,SAAU2F,GAC1C,MAA8C,kBAAvC+K,OAAOlkB,UAAUsD,SAASzE,KAAKsa","file":"pdfmake.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = global[\"pdfMake\"] = __webpack_require__(1);\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/* jslint node: true */\n\t/* jslint browser: true */\n\t/* global BlobBuilder */\n\t'use strict';\n\n\tvar PdfPrinter = __webpack_require__(2);\n\tvar saveAs = __webpack_require__(3);\n\n\tvar defaultClientFonts = {\n\t\tRoboto: {\n\t\t\tnormal: 'Roboto-Regular.ttf',\n\t\t\tbold: 'Roboto-Medium.ttf',\n\t\t\titalics: 'Roboto-Italic.ttf',\n\t\t\tbolditalics: 'Roboto-Italic.ttf'\n\t\t}\n\t};\n\n\tfunction Document(docDefinition, fonts, vfs) {\n\t\tthis.docDefinition = docDefinition;\n\t\tthis.fonts = fonts || defaultClientFonts;\n\t\tthis.vfs = vfs;\n\t}\n\n\tDocument.prototype._createDoc = function(options, callback) {\n\t\tvar printer = new PdfPrinter(this.fonts);\n\t\tprinter.fs.bindFS(this.vfs);\n\n\t\tvar doc = printer.createPdfKitDocument(this.docDefinition, options);\n\t\tvar chunks = [];\n\t\tvar result;\n\n\t\tdoc.on('data', function(chunk) {\n\t\t\tchunks.push(chunk);\n\t\t});\n\t\tdoc.on('end', function() {\n\t\t\tresult = Buffer.concat(chunks);\n\t\t\tcallback(result, doc._pdfMakePages);\n\t\t});\n\t\tdoc.end();\n\t};\n\n\tDocument.prototype._getPages = function(options, cb){\n\t if (!cb) throw 'getBuffer is an async method and needs a callback argument';\n\t this._createDoc(options, function(ignoreBuffer, pages){\n\t cb(pages);\n\t });\n\t};\n\n\tDocument.prototype.open = function(message) {\n\t\t// we have to open the window immediately and store the reference\n\t\t// otherwise popup blockers will stop us\n\t\tvar win = window.open('', '_blank');\n\n\t\ttry {\n\t\t\tthis.getDataUrl(function(result) {\n\t\t\t\twin.location.href = result;\n\t\t\t});\n\t\t} catch(e) {\n\t\t\twin.close();\n\t\t\tthrow e;\n\t\t}\n\t};\n\n\n\tDocument.prototype.print = function() {\n\t this.getDataUrl(function(dataUrl) {\n\t var iFrame = document.createElement('iframe');\n\t iFrame.style.position = 'absolute';\n\t iFrame.style.left = '-99999px';\n\t iFrame.src = dataUrl;\n\t iFrame.onload = function() {\n\t function removeIFrame(){\n\t document.body.removeChild(iFrame);\n\t document.removeEventListener('click', removeIFrame);\n\t }\n\t document.addEventListener('click', removeIFrame, false);\n\t };\n\n\t document.body.appendChild(iFrame);\n\t }, { autoPrint: true });\n\t};\n\n\tDocument.prototype.download = function(defaultFileName, cb) {\n\t if(typeof defaultFileName === \"function\") {\n\t cb = defaultFileName;\n\t defaultFileName = null;\n\t }\n\n\t defaultFileName = defaultFileName || 'file.pdf';\n\t this.getBuffer(function(result) {\n\t saveAs(new Blob([result], {type: 'application/pdf'}), defaultFileName);\n\t if (typeof cb === \"function\") {\n\t cb();\n\t }\n\t });\n\t};\n\n\tDocument.prototype.getBase64 = function(cb, options) {\n\t\tif (!cb) throw 'getBase64 is an async method and needs a callback argument';\n\t\tthis._createDoc(options, function(buffer) {\n\t\t\tcb(buffer.toString('base64'));\n\t\t});\n\t};\n\n\tDocument.prototype.getDataUrl = function(cb, options) {\n\t\tif (!cb) throw 'getDataUrl is an async method and needs a callback argument';\n\t\tthis._createDoc(options, function(buffer) {\n\t\t\tcb('data:application/pdf;base64,' + buffer.toString('base64'));\n\t\t});\n\t};\n\n\tDocument.prototype.getBuffer = function(cb, options) {\n\t\tif (!cb) throw 'getBuffer is an async method and needs a callback argument';\n\t\tthis._createDoc(options, function(buffer){\n\t cb(buffer);\n\t });\n\t};\n\n\tmodule.exports = {\n\t\tcreatePdf: function(docDefinition) {\n\t\t\treturn new Document(docDefinition, window.pdfMake.fonts, window.pdfMake.vfs);\n\t\t}\n\t};\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* jslint node: true */\n\t/* global window */\n\t'use strict';\n\n\tvar _ = __webpack_require__(11);\n\tvar FontProvider = __webpack_require__(5);\n\tvar LayoutBuilder = __webpack_require__(6);\n\tvar PdfKit = __webpack_require__(28);\n\tvar PDFReference = __webpack_require__(12);\n\tvar sizes = __webpack_require__(7);\n\tvar ImageMeasure = __webpack_require__(8);\n\tvar textDecorator = __webpack_require__(9);\n\tvar FontProvider = __webpack_require__(5);\n\n\t////////////////////////////////////////\n\t// PdfPrinter\n\n\t/**\n\t * @class Creates an instance of a PdfPrinter which turns document definition into a pdf\n\t *\n\t * @param {Object} fontDescriptors font definition dictionary\n\t *\n\t * @example\n\t * var fontDescriptors = {\n\t *\tRoboto: {\n\t *\t\tnormal: 'fonts/Roboto-Regular.ttf',\n\t *\t\tbold: 'fonts/Roboto-Medium.ttf',\n\t *\t\titalics: 'fonts/Roboto-Italic.ttf',\n\t *\t\tbolditalics: 'fonts/Roboto-Italic.ttf'\n\t *\t}\n\t * };\n\t *\n\t * var printer = new PdfPrinter(fontDescriptors);\n\t */\n\tfunction PdfPrinter(fontDescriptors) {\n\t\tthis.fontDescriptors = fontDescriptors;\n\t}\n\n\t/**\n\t * Executes layout engine for the specified document and renders it into a pdfkit document\n\t * ready to be saved.\n\t *\n\t * @param {Object} docDefinition document definition\n\t * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)\n\t * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition\n\t * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document\n\t * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)\n\t * @param {Number} docDefinition.pageSize.width width\n\t * @param {Number} docDefinition.pageSize.height height\n\t * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)\n\t *\n\t * @example\n\t *\n\t * var docDefinition = {\n\t *\tcontent: [\n\t *\t\t'First paragraph',\n\t *\t\t'Second paragraph, this time a little bit longer',\n\t *\t\t{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },\n\t *\t\t{ text: 'Another paragraph using a named style', style: 'header' },\n\t *\t\t{ text: ['playing with ', 'inlines' ] },\n\t *\t\t{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },\n\t *\t],\n\t *\tstyles: {\n\t *\t\theader: { fontSize: 30, bold: true }\n\t *\t}\n\t * }\n\t *\n\t * var pdfDoc = printer.createPdfKitDocument(docDefinition);\n\t *\n\t * pdfDoc.pipe(fs.createWriteStream('sample.pdf'));\n\t * pdfDoc.end();\n\t *\n\t * @return {Object} a pdfKit document object which can be saved or encode to data-url\n\t */\n\tPdfPrinter.prototype.createPdfKitDocument = function(docDefinition, options) {\n\t\toptions = options || {};\n\n\t\tvar pageSize = pageSize2widthAndHeight(docDefinition.pageSize || 'a4');\n\n\t if(docDefinition.pageOrientation === 'landscape') {\n\t pageSize = { width: pageSize.height, height: pageSize.width};\n\t }\n\t\tpageSize.orientation = docDefinition.pageOrientation === 'landscape' ? docDefinition.pageOrientation : 'portrait';\n\n\t\tthis.pdfKitDoc = new PdfKit({ size: [ pageSize.width, pageSize.height ], compress: false});\n\t\tthis.pdfKitDoc.info.Producer = 'pdfmake';\n\t\tthis.pdfKitDoc.info.Creator = 'pdfmake';\n\t\tthis.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);\n\n\t docDefinition.images = docDefinition.images || {};\n\n\t\tvar builder = new LayoutBuilder(\n\t\t\tpageSize,\n\t\t\tfixPageMargins(docDefinition.pageMargins || 40),\n\t new ImageMeasure(this.pdfKitDoc, docDefinition.images));\n\n\t registerDefaultTableLayouts(builder);\n\t if (options.tableLayouts) {\n\t builder.registerTableLayouts(options.tableLayouts);\n\t }\n\n\t\tvar pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || { fontSize: 12, font: 'Roboto' }, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);\n\n\t\trenderPages(pages, this.fontProvider, this.pdfKitDoc);\n\n\t\tif(options.autoPrint){\n\t var jsRef = this.pdfKitDoc.ref({\n\t\t\t\tS: 'JavaScript',\n\t\t\t\tJS: new StringObject('this.print\\\\(true\\\\);')\n\t\t\t});\n\t\t\tvar namesRef = this.pdfKitDoc.ref({\n\t\t\t\tNames: [new StringObject('EmbeddedJS'), new PDFReference(this.pdfKitDoc, jsRef.id)],\n\t\t\t});\n\n\t\t\tjsRef.end();\n\t\t\tnamesRef.end();\n\n\t\t\tthis.pdfKitDoc._root.data.Names = {\n\t\t\t\tJavaScript: new PDFReference(this.pdfKitDoc, namesRef.id)\n\t\t\t};\n\t\t}\n\t\treturn this.pdfKitDoc;\n\t};\n\n\tfunction fixPageMargins(margin) {\n\t if (!margin) return null;\n\n\t if (typeof margin === 'number' || margin instanceof Number) {\n\t margin = { left: margin, right: margin, top: margin, bottom: margin };\n\t } else if (margin instanceof Array) {\n\t if (margin.length === 2) {\n\t margin = { left: margin[0], top: margin[1], right: margin[0], bottom: margin[1] };\n\t } else if (margin.length === 4) {\n\t margin = { left: margin[0], top: margin[1], right: margin[2], bottom: margin[3] };\n\t } else throw 'Invalid pageMargins definition';\n\t }\n\n\t return margin;\n\t}\n\n\tfunction registerDefaultTableLayouts(layoutBuilder) {\n\t layoutBuilder.registerTableLayouts({\n\t noBorders: {\n\t hLineWidth: function(i) { return 0; },\n\t vLineWidth: function(i) { return 0; },\n\t paddingLeft: function(i) { return i && 4 || 0; },\n\t paddingRight: function(i, node) { return (i < node.table.widths.length - 1) ? 4 : 0; },\n\t },\n\t headerLineOnly: {\n\t hLineWidth: function(i, node) {\n\t if (i === 0 || i === node.table.body.length) return 0;\n\t return (i === node.table.headerRows) ? 2 : 0;\n\t },\n\t vLineWidth: function(i) { return 0; },\n\t paddingLeft: function(i) {\n\t return i === 0 ? 0 : 8;\n\t },\n\t paddingRight: function(i, node) {\n\t return (i === node.table.widths.length - 1) ? 0 : 8;\n\t }\n\t },\n\t lightHorizontalLines: {\n\t hLineWidth: function(i, node) {\n\t if (i === 0 || i === node.table.body.length) return 0;\n\t return (i === node.table.headerRows) ? 2 : 1;\n\t },\n\t vLineWidth: function(i) { return 0; },\n\t hLineColor: function(i) { return i === 1 ? 'black' : '#aaa'; },\n\t paddingLeft: function(i) {\n\t return i === 0 ? 0 : 8;\n\t },\n\t paddingRight: function(i, node) {\n\t return (i === node.table.widths.length - 1) ? 0 : 8;\n\t }\n\t }\n\t });\n\t}\n\n\tvar defaultLayout = {\n\t hLineWidth: function(i, node) { return 1; }, //return node.table.headerRows && i === node.table.headerRows && 3 || 0; },\n\t vLineWidth: function(i, node) { return 1; },\n\t hLineColor: function(i, node) { return 'black'; },\n\t vLineColor: function(i, node) { return 'black'; },\n\t paddingLeft: function(i, node) { return 4; }, //i && 4 || 0; },\n\t paddingRight: function(i, node) { return 4; }, //(i < node.table.widths.length - 1) ? 4 : 0; },\n\t paddingTop: function(i, node) { return 2; },\n\t paddingBottom: function(i, node) { return 2; }\n\t};\n\n\tfunction pageSize2widthAndHeight(pageSize) {\n\t if (typeof pageSize == 'string' || pageSize instanceof String) {\n\t var size = sizes[pageSize.toUpperCase()];\n\t if (!size) throw ('Page size ' + pageSize + ' not recognized');\n\t return { width: size[0], height: size[1] };\n\t }\n\n\t return pageSize;\n\t}\n\n\tfunction StringObject(str){\n\t\tthis.isString = true;\n\t\tthis.toString = function(){\n\t\t\treturn str;\n\t\t};\n\t}\n\n\tfunction updatePageOrientationInOptions(currentPage, pdfKitDoc) {\n\t\tvar previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';\n\n\t\tif(currentPage.pageSize.orientation !== previousPageOrientation) {\n\t\t\tvar width = pdfKitDoc.options.size[0];\n\t\t\tvar height = pdfKitDoc.options.size[1];\n\t\t\tpdfKitDoc.options.size = [height, width];\n\t\t}\n\t}\n\n\tfunction renderPages(pages, fontProvider, pdfKitDoc) {\n\t pdfKitDoc._pdfMakePages = pages;\n\t\tfor (var i = 0; i < pages.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\tupdatePageOrientationInOptions(pages[i], pdfKitDoc);\n\t\t\t\tpdfKitDoc.addPage(pdfKitDoc.options);\n\t\t\t}\n\n\t\t\tvar page = pages[i];\n\t for(var ii = 0, il = page.items.length; ii < il; ii++) {\n\t var item = page.items[ii];\n\t switch(item.type) {\n\t case 'vector':\n\t renderVector(item.item, pdfKitDoc);\n\t break;\n\t case 'line':\n\t renderLine(item.item, item.item.x, item.item.y, pdfKitDoc);\n\t break;\n\t case 'image':\n\t renderImage(item.item, item.item.x, item.item.y, pdfKitDoc);\n\t break;\n\t\t\t\t\t}\n\t }\n\t if(page.watermark){\n\t renderWatermark(page, pdfKitDoc);\n\t\t}\n\n\t fontProvider.setFontRefsToPdfDoc();\n\t }\n\t}\n\n\tfunction renderLine(line, x, y, pdfKitDoc) {\n\t\tx = x || 0;\n\t\ty = y || 0;\n\n\t\tvar ascenderHeight = line.getAscenderHeight();\n\n\t\ttextDecorator.drawBackground(line, x, y, pdfKitDoc);\n\n\t\t//TODO: line.optimizeInlines();\n\t\tfor(var i = 0, l = line.inlines.length; i < l; i++) {\n\t\t\tvar inline = line.inlines[i];\n\n\t\t\tpdfKitDoc.fill(inline.color || 'black');\n\n\t\t\tpdfKitDoc.save();\n\t\t\tpdfKitDoc.transform(1, 0, 0, -1, 0, pdfKitDoc.page.height);\n\n\n\t var encoded = inline.font.encode(inline.text);\n\t\t\tpdfKitDoc.addContent('BT');\n\n\t\t\tpdfKitDoc.addContent('' + (x + inline.x) + ' ' + (pdfKitDoc.page.height - y - ascenderHeight) + ' Td');\n\t\t\tpdfKitDoc.addContent('/' + encoded.fontId + ' ' + inline.fontSize + ' Tf');\n\n\t pdfKitDoc.addContent('<' + encoded.encodedText + '> Tj');\n\n\t\t\tpdfKitDoc.addContent('ET');\n\t\t\tpdfKitDoc.restore();\n\t\t}\n\n\t\ttextDecorator.drawDecorations(line, x, y, pdfKitDoc);\n\n\t}\n\n\tfunction renderWatermark(page, pdfKitDoc){\n\t\tvar watermark = page.watermark;\n\n\t\tpdfKitDoc.fill('black');\n\t\tpdfKitDoc.opacity(0.6);\n\n\t\tpdfKitDoc.save();\n\t\tpdfKitDoc.transform(1, 0, 0, -1, 0, pdfKitDoc.page.height);\n\n\t\tvar angle = Math.atan2(pdfKitDoc.page.height, pdfKitDoc.page.width) * 180/Math.PI;\n\t\tpdfKitDoc.rotate(angle, {origin: [pdfKitDoc.page.width/2, pdfKitDoc.page.height/2]});\n\n\t var encoded = watermark.font.encode(watermark.text);\n\t\tpdfKitDoc.addContent('BT');\n\t\tpdfKitDoc.addContent('' + (pdfKitDoc.page.width/2 - watermark.size.size.width/2) + ' ' + (pdfKitDoc.page.height/2 - watermark.size.size.height/4) + ' Td');\n\t\tpdfKitDoc.addContent('/' + encoded.fontId + ' ' + watermark.size.fontSize + ' Tf');\n\t\tpdfKitDoc.addContent('<' + encoded.encodedText + '> Tj');\n\t\tpdfKitDoc.addContent('ET');\n\t\tpdfKitDoc.restore();\n\t}\n\n\tfunction renderVector(vector, pdfDoc) {\n\t\t//TODO: pdf optimization (there's no need to write all properties everytime)\n\t\tpdfDoc.lineWidth(vector.lineWidth || 1);\n\t\tif (vector.dash) {\n\t\t\tpdfDoc.dash(vector.dash.length, { space: vector.dash.space || vector.dash.length });\n\t\t} else {\n\t\t\tpdfDoc.undash();\n\t\t}\n\t\tpdfDoc.fillOpacity(vector.fillOpacity || 1);\n\t\tpdfDoc.strokeOpacity(vector.strokeOpacity || 1);\n\t\tpdfDoc.lineJoin(vector.lineJoin || 'miter');\n\n\t\t//TODO: clipping\n\n\t\tswitch(vector.type) {\n\t\t\tcase 'ellipse':\n\t\t\t\tpdfDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);\n\t\t\t\tbreak;\n\t\t\tcase 'rect':\n\t\t\t\tif (vector.r) {\n\t\t\t\t\tpdfDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);\n\t\t\t\t} else {\n\t\t\t\t\tpdfDoc.rect(vector.x, vector.y, vector.w, vector.h);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'line':\n\t\t\t\tpdfDoc.moveTo(vector.x1, vector.y1);\n\t\t\t\tpdfDoc.lineTo(vector.x2, vector.y2);\n\t\t\t\tbreak;\n\t\t\tcase 'polyline':\n\t\t\t\tif (vector.points.length === 0) break;\n\n\t\t\t\tpdfDoc.moveTo(vector.points[0].x, vector.points[0].y);\n\t\t\t\tfor(var i = 1, l = vector.points.length; i < l; i++) {\n\t\t\t\t\tpdfDoc.lineTo(vector.points[i].x, vector.points[i].y);\n\t\t\t\t}\n\n\t\t\t\tif (vector.points.length > 1) {\n\t\t\t\t\tvar p1 = vector.points[0];\n\t\t\t\t\tvar pn = vector.points[vector.points.length - 1];\n\n\t\t\t\t\tif (vector.closePath || p1.x === pn.x && p1.y === pn.y) {\n\t\t\t\t\t\tpdfDoc.closePath();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (vector.color && vector.lineColor) {\n\t\t\tpdfDoc.fillAndStroke(vector.color, vector.lineColor);\n\t\t} else if (vector.color) {\n\t\t\tpdfDoc.fill(vector.color);\n\t\t} else {\n\t\t\tpdfDoc.stroke(vector.lineColor || 'black');\n\t\t}\n\t}\n\n\tfunction renderImage(image, x, y, pdfKitDoc) {\n\t pdfKitDoc.image(image.image, image.x, image.y, { width: image._width, height: image._height });\n\t}\n\n\tmodule.exports = PdfPrinter;\n\n\n\t/* temporary browser extension */\n\tPdfPrinter.prototype.fs = __webpack_require__(10);\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module) {/* FileSaver.js\n\t * A saveAs() FileSaver implementation.\n\t * 2014-08-29\n\t *\n\t * By Eli Grey, http://eligrey.com\n\t * License: X11/MIT\n\t * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n\t */\n\n\t/*global self */\n\t/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n\t/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\n\tvar saveAs = saveAs\n\t // IE 10+ (native saveAs)\n\t || (typeof navigator !== \"undefined\" &&\n\t navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))\n\t // Everyone else\n\t || (function(view) {\n\t\t\"use strict\";\n\t\t// IE <10 is explicitly unsupported\n\t\tif (typeof navigator !== \"undefined\" &&\n\t\t /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\t\treturn;\n\t\t}\n\t\tvar\n\t\t\t doc = view.document\n\t\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t\t, get_URL = function() {\n\t\t\t\treturn view.URL || view.webkitURL || view;\n\t\t\t}\n\t\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t\t, can_use_save_link = \"download\" in save_link\n\t\t\t, click = function(node) {\n\t\t\t\tvar event = doc.createEvent(\"MouseEvents\");\n\t\t\t\tevent.initMouseEvent(\n\t\t\t\t\t\"click\", true, false, view, 0, 0, 0, 0, 0\n\t\t\t\t\t, false, false, false, false, 0, null\n\t\t\t\t);\n\t\t\t\tnode.dispatchEvent(event);\n\t\t\t}\n\t\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t\t, throw_outside = function(ex) {\n\t\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\t\tthrow ex;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t\t, fs_min_size = 0\n\t\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 for\n\t\t\t// the reasoning behind the timeout and revocation flow\n\t\t\t, arbitrary_revoke_timeout = 10\n\t\t\t, revoke = function(file) {\n\t\t\t\tvar revoker = function() {\n\t\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t\t} else { // file is a File\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (view.chrome) {\n\t\t\t\t\trevoker();\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t\t}\n\t\t\t}\n\t\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\t\tevent_types = [].concat(event_types);\n\t\t\t\tvar i = event_types.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t, FileSaver = function(blob, name) {\n\t\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\t\tvar\n\t\t\t\t\t filesaver = this\n\t\t\t\t\t, type = blob.type\n\t\t\t\t\t, blob_changed = false\n\t\t\t\t\t, object_url\n\t\t\t\t\t, target_view\n\t\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t\t}\n\t\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t\t, fs_error = function() {\n\t\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\trevoke(object_url);\n\t\t\t\t\t}\n\t\t\t\t\t, abortable = function(func) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t\t, slice\n\t\t\t\t;\n\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\tif (!name) {\n\t\t\t\t\tname = \"download\";\n\t\t\t\t}\n\t\t\t\tif (can_use_save_link) {\n\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\t\tblob_changed = true;\n\t\t\t\t}\n\t\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\t\tname += \".download\";\n\t\t\t\t}\n\t\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\t\ttarget_view = view;\n\t\t\t\t}\n\t\t\t\tif (!req_fs) {\n\t\t\t\t\tfs_error();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfs_min_size += blob.size;\n\t\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}));\n\t\t\t\t\t}), fs_error);\n\t\t\t\t}), fs_error);\n\t\t\t}\n\t\t\t, FS_proto = FileSaver.prototype\n\t\t\t, saveAs = function(blob, name) {\n\t\t\t\treturn new FileSaver(blob, name);\n\t\t\t}\n\t\t;\n\t\tFS_proto.abort = function() {\n\t\t\tvar filesaver = this;\n\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\tdispatch(filesaver, \"abort\");\n\t\t};\n\t\tFS_proto.readyState = FS_proto.INIT = 0;\n\t\tFS_proto.WRITING = 1;\n\t\tFS_proto.DONE = 2;\n\n\t\tFS_proto.error =\n\t\tFS_proto.onwritestart =\n\t\tFS_proto.onprogress =\n\t\tFS_proto.onwrite =\n\t\tFS_proto.onabort =\n\t\tFS_proto.onerror =\n\t\tFS_proto.onwriteend =\n\t\t\tnull;\n\n\t\treturn saveAs;\n\t}(\n\t\t typeof self !== \"undefined\" && self\n\t\t|| typeof window !== \"undefined\" && window\n\t\t|| this.content\n\t));\n\t// `self` is undefined in Firefox for Android content script context\n\t// while `this` is nsIContentFrameMessageManager\n\t// with an attribute `content` that corresponds to the window\n\n\tif (typeof module !== \"undefined\" && module !== null) {\n\t module.exports = saveAs;\n\t} else if ((\"function\" !== \"undefined\" && __webpack_require__(13) !== null) && (__webpack_require__(14) != null)) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t return saveAs;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15)(module)))\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/*!\n\t * The buffer module from node.js, for the browser.\n\t *\n\t * @author Feross Aboukhadijeh \n\t * @license MIT\n\t */\n\n\tvar base64 = __webpack_require__(31)\n\tvar ieee754 = __webpack_require__(29)\n\tvar isArray = __webpack_require__(30)\n\n\texports.Buffer = Buffer\n\texports.SlowBuffer = SlowBuffer\n\texports.INSPECT_MAX_BYTES = 50\n\tBuffer.poolSize = 8192 // not used by this implementation\n\n\tvar kMaxLength = 0x3fffffff\n\tvar rootParent = {}\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Use Object implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * Note:\n\t *\n\t * - Implementation must support adding new properties to `Uint8Array` instances.\n\t * Firefox 4-29 lacked support, fixed in Firefox 30+.\n\t * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n\t *\n\t * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n\t *\n\t * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n\t * incorrect length in some situations.\n\t *\n\t * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will\n\t * get the Object implementation, which is slower but will work correctly.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = (function () {\n\t try {\n\t var buf = new ArrayBuffer(0)\n\t var arr = new Uint8Array(buf)\n\t arr.foo = function () { return 42 }\n\t return arr.foo() === 42 && // typed array instances can be augmented\n\t typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n\t new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n\t } catch (e) {\n\t return false\n\t }\n\t})()\n\n\t/**\n\t * Class: Buffer\n\t * =============\n\t *\n\t * The Buffer constructor returns instances of `Uint8Array` that are augmented\n\t * with function properties for all the node `Buffer` API functions. We use\n\t * `Uint8Array` so that square bracket notation works as expected -- it returns\n\t * a single octet.\n\t *\n\t * By augmenting the instances, we can avoid modifying the `Uint8Array`\n\t * prototype.\n\t */\n\tfunction Buffer (arg) {\n\t if (!(this instanceof Buffer)) {\n\t // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n\t if (arguments.length > 1) return new Buffer(arg, arguments[1])\n\t return new Buffer(arg)\n\t }\n\n\t this.length = 0\n\t this.parent = undefined\n\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t return fromNumber(this, arg)\n\t }\n\n\t // Slightly less common case.\n\t if (typeof arg === 'string') {\n\t return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n\t }\n\n\t // Unusual.\n\t return fromObject(this, arg)\n\t}\n\n\tfunction fromNumber (that, length) {\n\t that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < length; i++) {\n\t that[i] = 0\n\t }\n\t }\n\t return that\n\t}\n\n\tfunction fromString (that, string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n\t // Assumption: byteLength() return value is always < kMaxLength.\n\t var length = byteLength(string, encoding) | 0\n\t that = allocate(that, length)\n\n\t that.write(string, encoding)\n\t return that\n\t}\n\n\tfunction fromObject (that, object) {\n\t if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n\t if (isArray(object)) return fromArray(that, object)\n\n\t if (object == null) {\n\t throw new TypeError('must start with number, buffer, array or string')\n\t }\n\n\t if (typeof ArrayBuffer !== 'undefined' && object.buffer instanceof ArrayBuffer) {\n\t return fromTypedArray(that, object)\n\t }\n\n\t if (object.length) return fromArrayLike(that, object)\n\n\t return fromJsonObject(that, object)\n\t}\n\n\tfunction fromBuffer (that, buffer) {\n\t var length = checked(buffer.length) | 0\n\t that = allocate(that, length)\n\t buffer.copy(that, 0, 0, length)\n\t return that\n\t}\n\n\tfunction fromArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\t// Duplicate of fromArray() to keep fromArray() monomorphic.\n\tfunction fromTypedArray (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t // Truncating the elements is probably not what people expect from typed\n\t // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n\t // of the old Buffer constructor.\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\tfunction fromArrayLike (that, array) {\n\t var length = checked(array.length) | 0\n\t that = allocate(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\t// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n\t// Returns a zero-length buffer for inputs that don't conform to the spec.\n\tfunction fromJsonObject (that, object) {\n\t var array\n\t var length = 0\n\n\t if (object.type === 'Buffer' && isArray(object.data)) {\n\t array = object.data\n\t length = checked(array.length) | 0\n\t }\n\t that = allocate(that, length)\n\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\n\tfunction allocate (that, length) {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t that = Buffer._augment(new Uint8Array(length))\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that.length = length\n\t that._isBuffer = true\n\t }\n\n\t var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n\t if (fromPool) that.parent = rootParent\n\n\t return that\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < kMaxLength` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= kMaxLength) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + kMaxLength.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (subject, encoding) {\n\t if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n\t var buf = new Buffer(subject, encoding)\n\t delete buf.parent\n\t return buf\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t}\n\n\tBuffer.compare = function compare (a, b) {\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError('Arguments must be Buffers')\n\t }\n\n\t if (a === b) return 0\n\n\t var x = a.length\n\t var y = b.length\n\n\t var i = 0\n\t var len = Math.min(x, y)\n\t while (i < len) {\n\t if (a[i] !== b[i]) break\n\n\t ++i\n\t }\n\n\t if (i !== len) {\n\t x = a[i]\n\t y = b[i]\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t}\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'binary':\n\t case 'base64':\n\t case 'raw':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t}\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n\t if (list.length === 0) {\n\t return new Buffer(0)\n\t } else if (list.length === 1) {\n\t return list[0]\n\t }\n\n\t var i\n\t if (length === undefined) {\n\t length = 0\n\t for (i = 0; i < list.length; i++) {\n\t length += list[i].length\n\t }\n\t }\n\n\t var buf = new Buffer(length)\n\t var pos = 0\n\t for (i = 0; i < list.length; i++) {\n\t var item = list[i]\n\t item.copy(buf, pos)\n\t pos += item.length\n\t }\n\t return buf\n\t}\n\n\tfunction byteLength (string, encoding) {\n\t if (typeof string !== 'string') string = String(string)\n\n\t if (string.length === 0) return 0\n\n\t switch (encoding || 'utf8') {\n\t case 'ascii':\n\t case 'binary':\n\t case 'raw':\n\t return string.length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return string.length * 2\n\t case 'hex':\n\t return string.length >>> 1\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t return string.length\n\t }\n\t}\n\tBuffer.byteLength = byteLength\n\n\t// pre-set for values that may exist in the future\n\tBuffer.prototype.length = undefined\n\tBuffer.prototype.parent = undefined\n\n\t// toString(encoding, start=0, end=buffer.length)\n\tBuffer.prototype.toString = function toString (encoding, start, end) {\n\t var loweredCase = false\n\n\t start = start | 0\n\t end = end === undefined || end === Infinity ? this.length : end | 0\n\n\t if (!encoding) encoding = 'utf8'\n\t if (start < 0) start = 0\n\t if (end > this.length) end = this.length\n\t if (end <= start) return ''\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'binary':\n\t return binarySlice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t}\n\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = ''\n\t var max = exports.INSPECT_MAX_BYTES\n\t if (this.length > 0) {\n\t str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n\t if (this.length > max) str += ' ... '\n\t }\n\t return ''\n\t}\n\n\tBuffer.prototype.compare = function compare (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return 0\n\t return Buffer.compare(this, b)\n\t}\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n\t if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n\t else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n\t byteOffset >>= 0\n\n\t if (this.length === 0) return -1\n\t if (byteOffset >= this.length) return -1\n\n\t // Negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n\t if (typeof val === 'string') {\n\t if (val.length === 0) return -1 // special case: looking for empty string always fails\n\t return String.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t if (Buffer.isBuffer(val)) {\n\t return arrayIndexOf(this, val, byteOffset)\n\t }\n\t if (typeof val === 'number') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n\t return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n\t }\n\t return arrayIndexOf(this, [ val ], byteOffset)\n\t }\n\n\t function arrayIndexOf (arr, val, byteOffset) {\n\t var foundIndex = -1\n\t for (var i = 0; byteOffset + i < arr.length; i++) {\n\t if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n\t if (foundIndex === -1) foundIndex = i\n\t if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n\t } else {\n\t foundIndex = -1\n\t }\n\t }\n\t return -1\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\t// `get` will be removed in Node 0.13+\n\tBuffer.prototype.get = function get (offset) {\n\t console.log('.get() is deprecated. Access using array indexes instead.')\n\t return this.readUInt8(offset)\n\t}\n\n\t// `set` will be removed in Node 0.13+\n\tBuffer.prototype.set = function set (v, offset) {\n\t console.log('.set() is deprecated. Access using array indexes instead.')\n\t return this.writeUInt8(v, offset)\n\t}\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0\n\t var remaining = buf.length - offset\n\t if (!length) {\n\t length = remaining\n\t } else {\n\t length = Number(length)\n\t if (length > remaining) {\n\t length = remaining\n\t }\n\t }\n\n\t // must be an even number of digits\n\t var strLen = string.length\n\t if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2\n\t }\n\t for (var i = 0; i < length; i++) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16)\n\t if (isNaN(parsed)) throw new Error('Invalid hex string')\n\t buf[offset + i] = parsed\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction binaryWrite (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8'\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0\n\t if (isFinite(length)) {\n\t length = length | 0\n\t if (encoding === undefined) encoding = 'utf8'\n\t } else {\n\t encoding = length\n\t length = undefined\n\t }\n\t // legacy write(string, encoding, offset, length) - remove in v0.13\n\t } else {\n\t var swap = encoding\n\t encoding = offset\n\t offset = length | 0\n\t length = swap\n\t }\n\n\t var remaining = this.length - offset\n\t if (length === undefined || length > remaining) length = remaining\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8'\n\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'binary':\n\t return binaryWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t}\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t var res = ''\n\t var tmp = ''\n\t end = Math.min(buf.length, end)\n\n\t for (var i = start; i < end; i++) {\n\t if (buf[i] <= 0x7F) {\n\t res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])\n\t tmp = ''\n\t } else {\n\t tmp += '%' + buf[i].toString(16)\n\t }\n\t }\n\n\t return res + decodeUtf8Char(tmp)\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i] & 0x7F)\n\t }\n\t return ret\n\t}\n\n\tfunction binarySlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\n\t for (var i = start; i < end; i++) {\n\t ret += String.fromCharCode(buf[i])\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length\n\n\t if (!start || start < 0) start = 0\n\t if (!end || end < 0 || end > len) end = len\n\n\t var out = ''\n\t for (var i = start; i < end; i++) {\n\t out += toHex(buf[i])\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end)\n\t var res = ''\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length\n\t start = ~~start\n\t end = end === undefined ? len : ~~end\n\n\t if (start < 0) {\n\t start += len\n\t if (start < 0) start = 0\n\t } else if (start > len) {\n\t start = len\n\t }\n\n\t if (end < 0) {\n\t end += len\n\t if (end < 0) end = 0\n\t } else if (end > len) {\n\t end = len\n\t }\n\n\t if (end < start) end = start\n\n\t var newBuf\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = Buffer._augment(this.subarray(start, end))\n\t } else {\n\t var sliceLen = end - start\n\t newBuf = new Buffer(sliceLen, undefined)\n\t for (var i = 0; i < sliceLen; i++) {\n\t newBuf[i] = this[i + start]\n\t }\n\t }\n\n\t if (newBuf.length) newBuf.parent = this.parent || this\n\n\t return newBuf\n\t}\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\n\t return val\n\t}\n\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length)\n\t }\n\n\t var val = this[offset + --byteLength]\n\t var mul = 1\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul\n\t }\n\n\t return val\n\t}\n\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t return this[offset]\n\t}\n\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return this[offset] | (this[offset + 1] << 8)\n\t}\n\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return (this[offset] << 8) | this[offset + 1]\n\t}\n\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t}\n\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t}\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t mul *= 0x80\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n\t return val\n\t}\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n\t var i = byteLength\n\t var mul = 1\n\t var val = this[offset + --i]\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul\n\t }\n\t mul *= 0x80\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n\t return val\n\t}\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t}\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset] | (this[offset + 1] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset + 1] | (this[offset] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t}\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t}\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, true, 23, 4)\n\t}\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, false, 23, 4)\n\t}\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, true, 52, 8)\n\t}\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, false, 52, 8)\n\t}\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t}\n\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n\t var mul = 1\n\t var i = 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n\t var i = byteLength - 1\n\t var mul = 1\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t this[offset] = value\n\t return offset + 1\n\t}\n\n\tfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n\t buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n\t (littleEndian ? i : 1 - i) * 8\n\t }\n\t}\n\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = value\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = value\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\n\tfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffffffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n\t buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n\t }\n\t}\n\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset + 3] = (value >>> 24)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset] = value\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = value\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\n\t var i = 0\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\n\t var i = byteLength - 1\n\t var mul = 1\n\t var sub = value < 0 ? 1 : 0\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\n\t return offset + byteLength\n\t}\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t if (value < 0) value = 0xff + value + 1\n\t this[offset] = value\n\t return offset + 1\n\t}\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = value\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = value\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = value\n\t this[offset + 1] = (value >>> 8)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 3] = (value >>> 24)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (value < 0) value = 0xffffffff + value + 1\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = value\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (value > max || value < min) throw new RangeError('value is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('index out of range')\n\t if (offset < 0) throw new RangeError('index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4)\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t}\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t}\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8)\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t}\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t}\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0\n\t if (!end && end !== 0) end = this.length\n\t if (targetStart >= target.length) targetStart = target.length\n\t if (!targetStart) targetStart = 0\n\t if (end > 0 && end < start) end = start\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start\n\t }\n\n\t var len = end - start\n\n\t if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < len; i++) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else {\n\t target._set(this.subarray(start, start + len), targetStart)\n\t }\n\n\t return len\n\t}\n\n\t// fill(value, start=0, end=buffer.length)\n\tBuffer.prototype.fill = function fill (value, start, end) {\n\t if (!value) value = 0\n\t if (!start) start = 0\n\t if (!end) end = this.length\n\n\t if (end < start) throw new RangeError('end < start')\n\n\t // Fill 0 bytes; we're done\n\t if (end === start) return\n\t if (this.length === 0) return\n\n\t if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n\t if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n\t var i\n\t if (typeof value === 'number') {\n\t for (i = start; i < end; i++) {\n\t this[i] = value\n\t }\n\t } else {\n\t var bytes = utf8ToBytes(value.toString())\n\t var len = bytes.length\n\t for (i = start; i < end; i++) {\n\t this[i] = bytes[i % len]\n\t }\n\t }\n\n\t return this\n\t}\n\n\t/**\n\t * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n\t * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n\t */\n\tBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n\t if (typeof Uint8Array !== 'undefined') {\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t return (new Buffer(this)).buffer\n\t } else {\n\t var buf = new Uint8Array(this.length)\n\t for (var i = 0, len = buf.length; i < len; i += 1) {\n\t buf[i] = this[i]\n\t }\n\t return buf.buffer\n\t }\n\t } else {\n\t throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n\t }\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tvar BP = Buffer.prototype\n\n\t/**\n\t * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n\t */\n\tBuffer._augment = function _augment (arr) {\n\t arr.constructor = Buffer\n\t arr._isBuffer = true\n\n\t // save reference to original Uint8Array set method before overwriting\n\t arr._set = arr.set\n\n\t // deprecated, will be removed in node 0.13+\n\t arr.get = BP.get\n\t arr.set = BP.set\n\n\t arr.write = BP.write\n\t arr.toString = BP.toString\n\t arr.toLocaleString = BP.toString\n\t arr.toJSON = BP.toJSON\n\t arr.equals = BP.equals\n\t arr.compare = BP.compare\n\t arr.indexOf = BP.indexOf\n\t arr.copy = BP.copy\n\t arr.slice = BP.slice\n\t arr.readUIntLE = BP.readUIntLE\n\t arr.readUIntBE = BP.readUIntBE\n\t arr.readUInt8 = BP.readUInt8\n\t arr.readUInt16LE = BP.readUInt16LE\n\t arr.readUInt16BE = BP.readUInt16BE\n\t arr.readUInt32LE = BP.readUInt32LE\n\t arr.readUInt32BE = BP.readUInt32BE\n\t arr.readIntLE = BP.readIntLE\n\t arr.readIntBE = BP.readIntBE\n\t arr.readInt8 = BP.readInt8\n\t arr.readInt16LE = BP.readInt16LE\n\t arr.readInt16BE = BP.readInt16BE\n\t arr.readInt32LE = BP.readInt32LE\n\t arr.readInt32BE = BP.readInt32BE\n\t arr.readFloatLE = BP.readFloatLE\n\t arr.readFloatBE = BP.readFloatBE\n\t arr.readDoubleLE = BP.readDoubleLE\n\t arr.readDoubleBE = BP.readDoubleBE\n\t arr.writeUInt8 = BP.writeUInt8\n\t arr.writeUIntLE = BP.writeUIntLE\n\t arr.writeUIntBE = BP.writeUIntBE\n\t arr.writeUInt16LE = BP.writeUInt16LE\n\t arr.writeUInt16BE = BP.writeUInt16BE\n\t arr.writeUInt32LE = BP.writeUInt32LE\n\t arr.writeUInt32BE = BP.writeUInt32BE\n\t arr.writeIntLE = BP.writeIntLE\n\t arr.writeIntBE = BP.writeIntBE\n\t arr.writeInt8 = BP.writeInt8\n\t arr.writeInt16LE = BP.writeInt16LE\n\t arr.writeInt16BE = BP.writeInt16BE\n\t arr.writeInt32LE = BP.writeInt32LE\n\t arr.writeInt32BE = BP.writeInt32BE\n\t arr.writeFloatLE = BP.writeFloatLE\n\t arr.writeFloatBE = BP.writeFloatBE\n\t arr.writeDoubleLE = BP.writeDoubleLE\n\t arr.writeDoubleBE = BP.writeDoubleBE\n\t arr.fill = BP.fill\n\t arr.inspect = BP.inspect\n\t arr.toArrayBuffer = BP.toArrayBuffer\n\n\t return arr\n\t}\n\n\tvar INVALID_BASE64_RE = /[^+\\/0-9A-z\\-]/g\n\n\tfunction base64clean (str) {\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '='\n\t }\n\t return str\n\t}\n\n\tfunction stringtrim (str) {\n\t if (str.trim) return str.trim()\n\t return str.replace(/^\\s+|\\s+$/g, '')\n\t}\n\n\tfunction toHex (n) {\n\t if (n < 16) return '0' + n.toString(16)\n\t return n.toString(16)\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity\n\t var codePoint\n\t var length = string.length\n\t var leadSurrogate = null\n\t var bytes = []\n\t var i = 0\n\n\t for (; i < length; i++) {\n\t codePoint = string.charCodeAt(i)\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (leadSurrogate) {\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t leadSurrogate = codePoint\n\t continue\n\t } else {\n\t // valid surrogate pair\n\t codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000\n\t leadSurrogate = null\n\t }\n\t } else {\n\t // no lead yet\n\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t } else {\n\t // valid lead\n\t leadSurrogate = codePoint\n\t continue\n\t }\n\t }\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t leadSurrogate = null\n\t }\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint)\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x200000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF)\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo\n\t var byteArray = []\n\t for (var i = 0; i < str.length; i++) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i)\n\t hi = c >> 8\n\t lo = c % 256\n\t byteArray.push(lo)\n\t byteArray.push(hi)\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; i++) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i]\n\t }\n\t return i\n\t}\n\n\tfunction decodeUtf8Char (str) {\n\t try {\n\t return decodeURIComponent(str)\n\t } catch (err) {\n\t return String.fromCharCode(0xFFFD) // UTF 8 invalid char\n\t }\n\t}\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer))\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* jslint node: true */\n\t'use strict';\n\n\tvar _ = __webpack_require__(11);\n\tvar FontWrapper = __webpack_require__(16);\n\n\tfunction typeName(bold, italics){\n\t\tvar type = 'normal';\n\t\tif (bold && italics) type = 'bolditalics';\n\t\telse if (bold) type = 'bold';\n\t\telse if (italics) type = 'italics';\n\t\treturn type;\n\t}\n\n\tfunction FontProvider(fontDescriptors, pdfDoc) {\n\t\tthis.fonts = {};\n\t\tthis.pdfDoc = pdfDoc;\n\t\tthis.fontWrappers = {};\n\n\t\tfor(var font in fontDescriptors) {\n\t\t\tif (fontDescriptors.hasOwnProperty(font)) {\n\t\t\t\tvar fontDef = fontDescriptors[font];\n\n\t\t\t\tthis.fonts[font] = {\n\t\t\t\t\tnormal: fontDef.normal,\n\t\t\t\t\tbold: fontDef.bold,\n\t\t\t\t\titalics: fontDef.italics,\n\t\t\t\t\tbolditalics: fontDef.bolditalics\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tFontProvider.prototype.provideFont = function(familyName, bold, italics) {\n\t if (!this.fonts[familyName]) return this.pdfDoc._font;\n\t\tvar type = typeName(bold, italics);\n\n\t this.fontWrappers[familyName] = this.fontWrappers[familyName] || {};\n\n\t if (!this.fontWrappers[familyName][type]) {\n\t\t\tthis.fontWrappers[familyName][type] = new FontWrapper(this.pdfDoc, this.fonts[familyName][type], familyName + '(' + type + ')');\n\t\t}\n\n\t return this.fontWrappers[familyName][type];\n\t};\n\n\tFontProvider.prototype.setFontRefsToPdfDoc = function(){\n\t var self = this;\n\n\t _.each(self.fontWrappers, function(fontFamily) {\n\t _.each(fontFamily, function(fontWrapper){\n\t _.each(fontWrapper.pdfFonts, function(font){\n\t if (!self.pdfDoc.page.fonts[font.id]) {\n\t self.pdfDoc.page.fonts[font.id] = font.ref();\n\t }\n\t });\n\t });\n\t });\n\t};\n\n\tmodule.exports = FontProvider;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* jslint node: true */\n\t'use strict';\n\n\tvar _ = __webpack_require__(11);\n\tvar TraversalTracker = __webpack_require__(18);\n\tvar DocMeasure = __webpack_require__(19);\n\tvar DocumentContext = __webpack_require__(20);\n\tvar PageElementWriter = __webpack_require__(21);\n\tvar ColumnCalculator = __webpack_require__(22);\n\tvar TableProcessor = __webpack_require__(23);\n\tvar Line = __webpack_require__(24);\n\tvar pack = __webpack_require__(25).pack;\n\tvar offsetVector = __webpack_require__(25).offsetVector;\n\tvar fontStringify = __webpack_require__(25).fontStringify;\n\tvar isFunction = __webpack_require__(25).isFunction;\n\tvar TextTools = __webpack_require__(26);\n\tvar StyleContextStack = __webpack_require__(27);\n\n\tfunction addAll(target, otherArray){\n\t _.each(otherArray, function(item){\n\t target.push(item);\n\t });\n\t}\n\n\t/**\n\t * Creates an instance of LayoutBuilder - layout engine which turns document-definition-object\n\t * into a set of pages, lines, inlines and vectors ready to be rendered into a PDF\n\t *\n\t * @param {Object} pageSize - an object defining page width and height\n\t * @param {Object} pageMargins - an object defining top, left, right and bottom margins\n\t */\n\tfunction LayoutBuilder(pageSize, pageMargins, imageMeasure) {\n\t\tthis.pageSize = pageSize;\n\t\tthis.pageMargins = pageMargins;\n\t\tthis.tracker = new TraversalTracker();\n\t this.imageMeasure = imageMeasure;\n\t this.tableLayouts = {};\n\t}\n\n\tLayoutBuilder.prototype.registerTableLayouts = function (tableLayouts) {\n\t this.tableLayouts = pack(this.tableLayouts, tableLayouts);\n\t};\n\n\t/**\n\t * Executes layout engine on document-definition-object and creates an array of pages\n\t * containing positioned Blocks, Lines and inlines\n\t *\n\t * @param {Object} docStructure document-definition-object\n\t * @param {Object} fontProvider font provider\n\t * @param {Object} styleDictionary dictionary with style definitions\n\t * @param {Object} defaultStyle default style definition\n\t * @return {Array} an array of pages\n\t */\n\tLayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {\n\n\t function addPageBreaksIfNecessary(linearNodeList, pages) {\n\t linearNodeList = _.reject(linearNodeList, function(node){\n\t return _.isEmpty(node.positions);\n\t });\n\n\t _.each(linearNodeList, function(node) {\n\t var nodeInfo = _.pick(node, [\n\t 'id', 'text', 'ul', 'ol', 'table', 'image', 'qr', 'canvas', 'columns',\n\t 'headlineLevel', 'style', 'pageBreak', 'pageOrientation',\n\t 'width', 'height'\n\t ]);\n\t nodeInfo.startPosition = _.first(node.positions);\n\t nodeInfo.pageNumbers = _.chain(node.positions).map('pageNumber').uniq().value();\n\t nodeInfo.pages = pages.length;\n\t nodeInfo.stack = _.isArray(node.stack);\n\n\t node.nodeInfo = nodeInfo;\n\t });\n\n\t return _.any(linearNodeList, function (node, index, followingNodeList) {\n\t if (node.pageBreak !== 'before' && !node.pageBreakCalculated) {\n\t node.pageBreakCalculated = true;\n\t var pageNumber = _.first(node.nodeInfo.pageNumbers);\n\n\t\t\t\t\tvar followingNodesOnPage = _.chain(followingNodeList).drop(index + 1).filter(function (node0) {\n\t return _.contains(node0.nodeInfo.pageNumbers, pageNumber);\n\t }).value();\n\n\t var nodesOnNextPage = _.chain(followingNodeList).drop(index + 1).filter(function (node0) {\n\t return _.contains(node0.nodeInfo.pageNumbers, pageNumber + 1);\n\t }).value();\n\n\t var previousNodesOnPage = _.chain(followingNodeList).take(index).filter(function (node0) {\n\t return _.contains(node0.nodeInfo.pageNumbers, pageNumber);\n\t }).value();\n\n\t if (pageBreakBeforeFct(node.nodeInfo,\n\t _.map(followingNodesOnPage, 'nodeInfo'),\n\t _.map(nodesOnNextPage, 'nodeInfo'),\n\t _.map(previousNodesOnPage, 'nodeInfo'))) {\n\t node.pageBreak = 'before';\n\t return true;\n\t }\n\t }\n\t });\n\t }\n\n\t if(!isFunction(pageBreakBeforeFct)){\n\t pageBreakBeforeFct = function(){\n\t return false;\n\t };\n\t }\n\n\t this.docMeasure = new DocMeasure(fontProvider, styleDictionary, defaultStyle, this.imageMeasure, this.tableLayouts, images);\n\n\n\t function resetXYs(result) {\n\t _.each(result.linearNodeList, function (node) {\n\t node.resetXY();\n\t });\n\t }\n\n\t var result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);\n\t while(addPageBreaksIfNecessary(result.linearNodeList, result.pages)){\n\t resetXYs(result);\n\t result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);\n\t }\n\n\t\treturn result.pages;\n\t};\n\n\tLayoutBuilder.prototype.tryLayoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {\n\n\t this.linearNodeList = [];\n\t docStructure = this.docMeasure.measureDocument(docStructure);\n\n\t this.writer = new PageElementWriter(\n\t new DocumentContext(this.pageSize, this.pageMargins), this.tracker);\n\n\t var _this = this;\n\t this.writer.context().tracker.startTracking('pageAdded', function() {\n\t _this.addBackground(background);\n\t });\n\n\t this.addBackground(background);\n\t this.processNode(docStructure);\n\t this.addHeadersAndFooters(header, footer);\n\t /* jshint eqnull:true */\n\t if(watermark != null)\n\t this.addWatermark(watermark, fontProvider);\n\n\t return {pages: this.writer.context().pages, linearNodeList: this.linearNodeList};\n\t};\n\n\n\tLayoutBuilder.prototype.addBackground = function(background) {\n\t var backgroundGetter = isFunction(background) ? background : function() { return background; };\n\n\t var pageBackground = backgroundGetter(this.writer.context().page + 1);\n\n\t if (pageBackground) {\n\t var pageSize = this.writer.context().getCurrentPage().pageSize;\n\t this.writer.beginUnbreakableBlock(pageSize.width, pageSize.height);\n\t this.processNode(this.docMeasure.measureDocument(pageBackground));\n\t this.writer.commitUnbreakableBlock(0, 0);\n\t }\n\t};\n\n\tLayoutBuilder.prototype.addStaticRepeatable = function(headerOrFooter, sizeFunction) {\n\t this.addDynamicRepeatable(function() { return headerOrFooter; }, sizeFunction);\n\t};\n\n\tLayoutBuilder.prototype.addDynamicRepeatable = function(nodeGetter, sizeFunction) {\n\t var pages = this.writer.context().pages;\n\n\t for(var pageIndex = 0, l = pages.length; pageIndex < l; pageIndex++) {\n\t this.writer.context().page = pageIndex;\n\n\t var node = nodeGetter(pageIndex + 1, l);\n\n\t if (node) {\n\t var sizes = sizeFunction(this.writer.context().getCurrentPage().pageSize, this.pageMargins);\n\t this.writer.beginUnbreakableBlock(sizes.width, sizes.height);\n\t this.processNode(this.docMeasure.measureDocument(node));\n\t this.writer.commitUnbreakableBlock(sizes.x, sizes.y);\n\t }\n\t }\n\t};\n\n\tLayoutBuilder.prototype.addHeadersAndFooters = function(header, footer) {\n\t var headerSizeFct = function(pageSize, pageMargins){\n\t return {\n\t x: 0,\n\t y: 0,\n\t width: pageSize.width,\n\t height: pageMargins.top\n\t };\n\t };\n\n\t var footerSizeFct = function (pageSize, pageMargins) {\n\t return {\n\t x: 0,\n\t y: pageSize.height - pageMargins.bottom,\n\t width: pageSize.width,\n\t height: pageMargins.bottom\n\t };\n\t };\n\n\t if(isFunction(header)) {\n\t this.addDynamicRepeatable(header, headerSizeFct);\n\t } else if(header) {\n\t this.addStaticRepeatable(header, headerSizeFct);\n\t }\n\n\t if(isFunction(footer)) {\n\t this.addDynamicRepeatable(footer, footerSizeFct);\n\t } else if(footer) {\n\t this.addStaticRepeatable(footer, footerSizeFct);\n\t }\n\t};\n\n\tLayoutBuilder.prototype.addWatermark = function(watermark, fontProvider){\n\t var defaultFont = Object.getOwnPropertyNames(fontProvider.fonts)[0]; // TODO allow selection of other font\n\t var watermarkObject = {\n\t text: watermark,\n\t font: fontProvider.provideFont(fontProvider[defaultFont], false, false),\n\t size: getSize(this.pageSize, watermark, fontProvider)\n\t };\n\n\t var pages = this.writer.context().pages;\n\t for(var i = 0, l = pages.length; i < l; i++) {\n\t pages[i].watermark = watermarkObject;\n\t }\n\n\t function getSize(pageSize, watermark, fontProvider){\n\t var width = pageSize.width;\n\t var height = pageSize.height;\n\t var targetWidth = Math.sqrt(width*width + height*height)*0.8; /* page diagnoal * sample factor */\n\t var textTools = new TextTools(fontProvider);\n\t var styleContextStack = new StyleContextStack();\n\t var size;\n\n\t /**\n\t * Binary search the best font size.\n\t * Initial bounds [0, 1000]\n\t * Break when range < 1\n\t */\n\t var a = 0;\n\t var b = 1000;\n\t var c = (a+b)/2;\n\t while(Math.abs(a - b) > 1){\n\t styleContextStack.push({\n\t fontSize: c\n\t });\n\t size = textTools.sizeOfString(watermark, styleContextStack);\n\t if(size.width > targetWidth){\n\t b = c;\n\t c = (a+b)/2;\n\t }\n\t else if(size.width < targetWidth){\n\t a = c;\n\t c = (a+b)/2;\n\t }\n\t styleContextStack.pop();\n\t }\n\t /*\n\t End binary search\n\t */\n\t return {size: size, fontSize: c};\n\t }\n\t};\n\n\tfunction decorateNode(node){\n\t var x = node.x, y = node.y;\n\t node.positions = [];\n\n\t _.each(node.canvas, function(vector){\n\t var x = vector.x, y = vector.y;\n\t vector.resetXY = function(){\n\t vector.x = x;\n\t vector.y = y;\n\t };\n\t });\n\n\t node.resetXY = function(){\n\t node.x = x;\n\t node.y = y;\n\t _.each(node.canvas, function(vector){\n\t vector.resetXY();\n\t });\n\t };\n\t}\n\n\tLayoutBuilder.prototype.processNode = function(node) {\n\t var self = this;\n\n\t this.linearNodeList.push(node);\n\t decorateNode(node);\n\n\t applyMargins(function() {\n\t var absPosition = node.absolutePosition;\n\t if(absPosition){\n\t self.writer.context().beginDetachedBlock();\n\t self.writer.context().moveTo(absPosition.x || 0, absPosition.y || 0);\n\t }\n\n\t if (node.stack) {\n\t self.processVerticalContainer(node);\n\t } else if (node.columns) {\n\t self.processColumns(node);\n\t } else if (node.ul) {\n\t self.processList(false, node);\n\t } else if (node.ol) {\n\t self.processList(true, node);\n\t } else if (node.table) {\n\t self.processTable(node);\n\t } else if (node.text !== undefined) {\n\t self.processLeaf(node);\n\t } else if (node.image) {\n\t self.processImage(node);\n\t } else if (node.canvas) {\n\t self.processCanvas(node);\n\t } else if (node.qr) {\n\t self.processQr(node);\n\t }else if (!node._span) {\n\t\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\n\t\t\t}\n\n\t if(absPosition){\n\t self.writer.context().endDetachedBlock();\n\t }\n\t\t});\n\n\t\tfunction applyMargins(callback) {\n\t\t\tvar margin = node._margin;\n\n\t if (node.pageBreak === 'before') {\n\t self.writer.moveToNextPage(node.pageOrientation);\n\t }\n\n\t\t\tif (margin) {\n\t\t\t\tself.writer.context().moveDown(margin[1]);\n\t\t\t\tself.writer.context().addMargin(margin[0], margin[2]);\n\t\t\t}\n\n\t\t\tcallback();\n\n\t\t\tif(margin) {\n\t\t\t\tself.writer.context().addMargin(-margin[0], -margin[2]);\n\t\t\t\tself.writer.context().moveDown(margin[3]);\n\t\t\t}\n\n\t if (node.pageBreak === 'after') {\n\t self.writer.moveToNextPage(node.pageOrientation);\n\t }\n\t\t}\n\t};\n\n\t// vertical container\n\tLayoutBuilder.prototype.processVerticalContainer = function(node) {\n\t\tvar self = this;\n\t\tnode.stack.forEach(function(item) {\n\t\t\tself.processNode(item);\n\t\t\taddAll(node.positions, item.positions);\n\n\t\t\t//TODO: paragraph gap\n\t\t});\n\t};\n\n\t// columns\n\tLayoutBuilder.prototype.processColumns = function(columnNode) {\n\t\tvar columns = columnNode.columns;\n\t\tvar availableWidth = this.writer.context().availableWidth;\n\t\tvar gaps = gapArray(columnNode._gap);\n\n\t\tif (gaps) availableWidth -= (gaps.length - 1) * columnNode._gap;\n\n\t\tColumnCalculator.buildColumnWidths(columns, availableWidth);\n\t\tvar result = this.processRow(columns, columns, gaps);\n\t addAll(columnNode.positions, result.positions);\n\n\n\t\tfunction gapArray(gap) {\n\t\t\tif (!gap) return null;\n\n\t\t\tvar gaps = [];\n\t\t\tgaps.push(0);\n\n\t\t\tfor(var i = columns.length - 1; i > 0; i--) {\n\t\t\t\tgaps.push(gap);\n\t\t\t}\n\n\t\t\treturn gaps;\n\t\t}\n\t};\n\n\tLayoutBuilder.prototype.processRow = function(columns, widths, gaps, tableBody, tableRow) {\n\t var self = this;\n\t var pageBreaks = [], positions = [];\n\n\t this.tracker.auto('pageChanged', storePageBreakData, function() {\n\t widths = widths || columns;\n\n\t self.writer.context().beginColumnGroup();\n\n\t for(var i = 0, l = columns.length; i < l; i++) {\n\t var column = columns[i];\n\t var width = widths[i]._calcWidth;\n\t var leftOffset = colLeftOffset(i);\n\n\t if (column.colSpan && column.colSpan > 1) {\n\t for(var j = 1; j < column.colSpan; j++) {\n\t width += widths[++i]._calcWidth + gaps[i];\n\t }\n\t }\n\n\t self.writer.context().beginColumn(width, leftOffset, getEndingCell(column, i));\n\t if (!column._span) {\n\t self.processNode(column);\n\t addAll(positions, column.positions);\n\t } else if (column._columnEndingContext) {\n\t // row-span ending\n\t self.writer.context().markEnding(column);\n\t }\n\t }\n\n\t self.writer.context().completeColumnGroup();\n\t });\n\n\t return {pageBreaks: pageBreaks, positions: positions};\n\n\t function storePageBreakData(data) {\n\t var pageDesc;\n\n\t for(var i = 0, l = pageBreaks.length; i < l; i++) {\n\t var desc = pageBreaks[i];\n\t if (desc.prevPage === data.prevPage) {\n\t pageDesc = desc;\n\t break;\n\t }\n\t }\n\n\t if (!pageDesc) {\n\t pageDesc = data;\n\t pageBreaks.push(pageDesc);\n\t }\n\t pageDesc.prevY = Math.max(pageDesc.prevY, data.prevY);\n\t pageDesc.y = Math.min(pageDesc.y, data.y);\n\t }\n\n\t\tfunction colLeftOffset(i) {\n\t\t\tif (gaps && gaps.length > i) return gaps[i];\n\t\t\treturn 0;\n\t\t}\n\n\t function getEndingCell(column, columnIndex) {\n\t if (column.rowSpan && column.rowSpan > 1) {\n\t var endingRow = tableRow + column.rowSpan - 1;\n\t if (endingRow >= tableBody.length) throw 'Row span for column ' + columnIndex + ' (with indexes starting from 0) exceeded row count';\n\t return tableBody[endingRow][columnIndex];\n\t }\n\n\t return null;\n\t }\n\t};\n\n\t// lists\n\tLayoutBuilder.prototype.processList = function(orderedList, node) {\n\t\tvar self = this,\n\t items = orderedList ? node.ol : node.ul,\n\t gapSize = node._gapSize;\n\n\t\tthis.writer.context().addMargin(gapSize.width);\n\n\t\tvar nextMarker;\n\t\tthis.tracker.auto('lineAdded', addMarkerToFirstLeaf, function() {\n\t\t\titems.forEach(function(item) {\n\t\t\t\tnextMarker = item.listMarker;\n\t\t\t\tself.processNode(item);\n\t addAll(node.positions, item.positions);\n\t\t\t});\n\t\t});\n\n\t\tthis.writer.context().addMargin(-gapSize.width);\n\n\t\tfunction addMarkerToFirstLeaf(line) {\n\t\t\t// I'm not very happy with the way list processing is implemented\n\t\t\t// (both code and algorithm should be rethinked)\n\t\t\tif (nextMarker) {\n\t\t\t\tvar marker = nextMarker;\n\t\t\t\tnextMarker = null;\n\n\t\t\t\tif (marker.canvas) {\n\t\t\t\t\tvar vector = marker.canvas[0];\n\n\t\t\t\t\toffsetVector(vector, -marker._minWidth, 0);\n\t\t\t\t\tself.writer.addVector(vector);\n\t\t\t\t} else {\n\t\t\t\t\tvar markerLine = new Line(self.pageSize.width);\n\t\t\t\t\tmarkerLine.addInline(marker._inlines[0]);\n\t\t\t\t\tmarkerLine.x = -marker._minWidth;\n\t\t\t\t\tmarkerLine.y = line.getAscenderHeight() - markerLine.getAscenderHeight();\n\t\t\t\t\tself.writer.addLine(markerLine, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// tables\n\tLayoutBuilder.prototype.processTable = function(tableNode) {\n\t var processor = new TableProcessor(tableNode);\n\n\t processor.beginTable(this.writer);\n\n\t for(var i = 0, l = tableNode.table.body.length; i < l; i++) {\n\t processor.beginRow(i, this.writer);\n\n\t var result = this.processRow(tableNode.table.body[i], tableNode.table.widths, tableNode._offsets.offsets, tableNode.table.body, i);\n\t addAll(tableNode.positions, result.positions);\n\n\t processor.endRow(i, this.writer, result.pageBreaks);\n\t }\n\n\t processor.endTable(this.writer);\n\t};\n\n\t// leafs (texts)\n\tLayoutBuilder.prototype.processLeaf = function(node) {\n\t\tvar line = this.buildNextLine(node);\n\n\t\twhile (line) {\n\t\t\tvar positions = this.writer.addLine(line);\n\t node.positions.push(positions);\n\t\t\tline = this.buildNextLine(node);\n\t\t}\n\t};\n\n\tLayoutBuilder.prototype.buildNextLine = function(textNode) {\n\t\tif (!textNode._inlines || textNode._inlines.length === 0) return null;\n\n\t\tvar line = new Line(this.writer.context().availableWidth);\n\n\t\twhile(textNode._inlines && textNode._inlines.length > 0 && line.hasEnoughSpaceForInline(textNode._inlines[0])) {\n\t\t\tline.addInline(textNode._inlines.shift());\n\t\t}\n\n\t\tline.lastLineInParagraph = textNode._inlines.length === 0;\n\t\treturn line;\n\t};\n\n\t// images\n\tLayoutBuilder.prototype.processImage = function(node) {\n\t var position = this.writer.addImage(node);\n\t node.positions.push(position);\n\t};\n\n\tLayoutBuilder.prototype.processCanvas = function(node) {\n\t\tvar height = node._minHeight;\n\n\t\tif (this.writer.context().availableHeight < height) {\n\t\t\t// TODO: support for canvas larger than a page\n\t\t\t// TODO: support for other overflow methods\n\n\t\t\tthis.writer.moveToNextPage();\n\t\t}\n\n\t\tnode.canvas.forEach(function(vector) {\n\t\t\tvar position = this.writer.addVector(vector);\n\t node.positions.push(position);\n\t\t}, this);\n\n\t\tthis.writer.context().moveDown(height);\n\t};\n\n\tLayoutBuilder.prototype.processQr = function(node) {\n\t\tvar position = this.writer.addQr(node);\n\t node.positions.push(position);\n\t};\n\n\tmodule.exports = LayoutBuilder;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = {\n\t\t'4A0': [4767.87, 6740.79],\n\t\t'2A0': [3370.39, 4767.87],\n\t\tA0: [2383.94, 3370.39],\n\t\tA1: [1683.78, 2383.94],\n\t\tA2: [1190.55, 1683.78],\n\t\tA3: [841.89, 1190.55],\n\t\tA4: [595.28, 841.89],\n\t\tA5: [419.53, 595.28],\n\t\tA6: [297.64, 419.53],\n\t\tA7: [209.76, 297.64],\n\t\tA8: [147.40, 209.76],\n\t\tA9: [104.88, 147.40],\n\t\tA10: [73.70, 104.88],\n\t\tB0: [2834.65, 4008.19],\n\t\tB1: [2004.09, 2834.65],\n\t\tB2: [1417.32, 2004.09],\n\t\tB3: [1000.63, 1417.32],\n\t\tB4: [708.66, 1000.63],\n\t\tB5: [498.90, 708.66],\n\t\tB6: [354.33, 498.90],\n\t\tB7: [249.45, 354.33],\n\t\tB8: [175.75, 249.45],\n\t\tB9: [124.72, 175.75],\n\t\tB10: [87.87, 124.72],\n\t\tC0: [2599.37, 3676.54],\n\t\tC1: [1836.85, 2599.37],\n\t\tC2: [1298.27, 1836.85],\n\t\tC3: [918.43, 1298.27],\n\t\tC4: [649.13, 918.43],\n\t\tC5: [459.21, 649.13],\n\t\tC6: [323.15, 459.21],\n\t\tC7: [229.61, 323.15],\n\t\tC8: [161.57, 229.61],\n\t\tC9: [113.39, 161.57],\n\t\tC10: [79.37, 113.39],\n\t\tRA0: [2437.80, 3458.27],\n\t\tRA1: [1729.13, 2437.80],\n\t\tRA2: [1218.90, 1729.13],\n\t\tRA3: [864.57, 1218.90],\n\t\tRA4: [609.45, 864.57],\n\t\tSRA0: [2551.18, 3628.35],\n\t\tSRA1: [1814.17, 2551.18],\n\t\tSRA2: [1275.59, 1814.17],\n\t\tSRA3: [907.09, 1275.59],\n\t\tSRA4: [637.80, 907.09],\n\t\tEXECUTIVE: [521.86, 756.00],\n\t\tFOLIO: [612.00, 936.00],\n\t\tLEGAL: [612.00, 1008.00],\n\t\tLETTER: [612.00, 792.00],\n\t\tTABLOID: [792.00, 1224.00]\n\t};\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/* jslint node: true */\n\t'use strict';\n\n\tvar pdfKit = __webpack_require__(28);\n\tvar PDFImage = __webpack_require__(17);\n\n\tfunction ImageMeasure(pdfDoc, imageDictionary) {\n\t\tthis.pdfDoc = pdfDoc;\n\t\tthis.imageDictionary = imageDictionary || {};\n\t}\n\n\tImageMeasure.prototype.measureImage = function(src) {\n\t\tvar image, label;\n\t\tvar that = this;\n\n\t\tif (!this.pdfDoc._imageRegistry[src]) {\n\t\t\tlabel = 'I' + (++this.pdfDoc._imageCount);\n\t\t\timage = PDFImage.open(realImageSrc(src), label);\n\t\t\timage.embed(this.pdfDoc);\n\t\t\tthis.pdfDoc._imageRegistry[src] = image;\n\t\t} else {\n\t\t\timage = this.pdfDoc._imageRegistry[src];\n\t\t}\n\n\t\treturn { width: image.width, height: image.height };\n\n\t\tfunction realImageSrc(src) {\n\t\t\tvar img = that.imageDictionary[src];\n\n\t\t\tif (!img) return src;\n\n\t\t\tvar index = img.indexOf('base64,');\n\t\t\tif (index < 0) {\n\t\t\t\tthrow 'invalid image format, images dictionary should contain dataURL entries';\n\t\t\t}\n\n\t\t\treturn new Buffer(img.substring(index + 7), 'base64');\n\t\t}\n\t};\n\n\tmodule.exports = ImageMeasure;\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer))\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* jslint node: true */\n\t'use strict';\n\n\n\tfunction groupDecorations(line) {\n\t\tvar groups = [], curGroup = null;\n\t\tfor(var i = 0, l = line.inlines.length; i < l; i++) {\n\t\t\tvar inline = line.inlines[i];\n\t\t\tvar decoration = inline.decoration;\n\t\t\tif(!decoration) {\n\t\t\t\tcurGroup = null;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar color = inline.decorationColor || inline.color || 'black';\n\t\t\tvar style = inline.decorationStyle || 'solid';\n\t\t\tdecoration = Array.isArray(decoration) ? decoration : [ decoration ];\n\t\t\tfor(var ii = 0, ll = decoration.length; ii < ll; ii++) {\n\t\t\t\tvar deco = decoration[ii];\n\t\t\t\tif(!curGroup || deco !== curGroup.decoration ||\n\t\t\t\t\t\tstyle !== curGroup.decorationStyle || color !== curGroup.decorationColor ||\n\t\t\t\t\t\tdeco === 'lineThrough') {\n\t\t\t\n\t\t\t\t\tcurGroup = {\n\t\t\t\t\t\tline: line,\n\t\t\t\t\t\tdecoration: deco, \n\t\t\t\t\t\tdecorationColor: color, \n\t\t\t\t\t\tdecorationStyle: style,\n\t\t\t\t\t\tinlines: [ inline ]\n\t\t\t\t\t};\n\t\t\t\t\tgroups.push(curGroup);\n\t\t\t\t} else {\n\t\t\t\t\tcurGroup.inlines.push(inline);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groups;\n\t}\n\n\tfunction drawDecoration(group, x, y, pdfKitDoc) {\n\t\tfunction maxInline() {\n\t\t\tvar max = 0;\n\t\t\tfor (var i = 0, l = group.inlines.length; i < l; i++) {\n\t\t\t\tvar inl = group.inlines[i];\n\t\t\t\tmax = inl.fontSize > max ? i : max;\n\t\t\t}\n\t\t\treturn group.inlines[max];\n\t\t}\n\t\tfunction width() {\n\t\t\tvar sum = 0;\n\t\t\tfor (var i = 0, l = group.inlines.length; i < l; i++) {\n\t\t\t\tsum += group.inlines[i].width;\n\t\t\t}\n\t\t\treturn sum;\n\t\t}\n\t\tvar firstInline = group.inlines[0],\n\t\t\tbiggerInline = maxInline(),\n\t\t\ttotalWidth = width(),\n\t\t\tlineAscent = group.line.getAscenderHeight(),\n\t\t\tascent = biggerInline.font.ascender / 1000 * biggerInline.fontSize,\n\t\t\theight = biggerInline.height,\n\t\t\tdescent = height - ascent;\n\t\t\n\t\tvar lw = 0.5 + Math.floor(Math.max(biggerInline.fontSize - 8, 0) / 2) * 0.12;\n\t\t\n\t\tswitch (group.decoration) {\n\t\t\tcase 'underline':\n\t\t\t\ty += lineAscent + descent * 0.45;\n\t\t\t\tbreak;\n\t\t\tcase 'overline':\n\t\t\t\ty += lineAscent - (ascent * 0.85);\n\t\t\t\tbreak;\n\t\t\tcase 'lineThrough':\n\t\t\t\ty += lineAscent - (ascent * 0.25);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow 'Unkown decoration : ' + group.decoration;\n\t\t}\n\t\tpdfKitDoc.save();\n\t\t\n\t\tif(group.decorationStyle === 'double') {\n\t\t\tvar gap = Math.max(0.5, lw*2);\n\t\t\tpdfKitDoc\t.fillColor(group.decorationColor)\n\t\t\t\t\t\t.rect(x + firstInline.x, y-lw/2, totalWidth, lw/2).fill()\n\t\t\t\t\t\t.rect(x + firstInline.x, y+gap-lw/2, totalWidth, lw/2).fill();\n\t\t} else if(group.decorationStyle === 'dashed') {\n\t\t\tvar nbDashes = Math.ceil(totalWidth / (3.96+2.84));\n\t\t\tvar rdx = x + firstInline.x;\n\t\t\tpdfKitDoc.rect(rdx, y, totalWidth, lw).clip();\n\t\t\tpdfKitDoc.fillColor(group.decorationColor);\n\t\t\tfor (var i = 0; i < nbDashes; i++) {\n\t\t\t\tpdfKitDoc.rect(rdx, y-lw/2, 3.96, lw).fill();\n\t\t\t\trdx += 3.96 + 2.84;\n\t\t\t}\n\t\t} else if(group.decorationStyle === 'dotted') {\n\t\t\tvar nbDots = Math.ceil(totalWidth / (lw*3));\n\t\t\tvar rx = x + firstInline.x;\n\t\t\tpdfKitDoc.rect(rx, y, totalWidth, lw).clip();\n\t\t\tpdfKitDoc.fillColor(group.decorationColor);\n\t\t\tfor (var ii = 0; ii < nbDots; ii++) {\n\t\t\t\tpdfKitDoc.rect(rx, y-lw/2, lw, lw).fill();\n\t\t\t\trx += (lw*3);\n\t\t\t}\n\t\t} else if(group.decorationStyle === 'wavy') {\n\t\t\tvar sh = 0.7, sv = 1;\n\t\t\tvar nbWaves = Math.ceil(totalWidth / (sh*2))+1;\n\t\t\tvar rwx = x + firstInline.x - 1;\n\t\t\tpdfKitDoc.rect(x + firstInline.x, y-sv, totalWidth, y+sv).clip();\n\t\t\tpdfKitDoc.lineWidth(0.24);\n\t\t\tpdfKitDoc.moveTo(rwx, y);\n\t\t\tfor(var iii = 0; iii < nbWaves; iii++) {\n\t\t\t\tpdfKitDoc .bezierCurveTo(rwx+sh, y-sv, rwx+sh*2, y-sv, rwx+sh*3, y)\n\t\t\t\t\t\t\t.bezierCurveTo(rwx+sh*4, y+sv, rwx+sh*5, y+sv, rwx+sh*6, y);\n\t\t\t\t\trwx += sh*6;\n\t\t\t\t}\n\t\t\tpdfKitDoc.stroke(group.decorationColor);\n\t\t\t\n\t\t} else {\n\t\t\tpdfKitDoc\t.fillColor(group.decorationColor)\n\t\t\t\t\t\t.rect(x + firstInline.x, y-lw/2, totalWidth, lw)\n\t\t\t\t\t\t.fill();\n\t\t}\n\t\tpdfKitDoc.restore();\n\t}\n\n\tfunction drawDecorations(line, x, y, pdfKitDoc) {\n\t\tvar groups = groupDecorations(line);\n\t\tfor (var i = 0, l = groups.length; i < l; i++) {\n\t\t\tdrawDecoration(groups[i], x, y, pdfKitDoc);\n\t\t}\n\t}\n\n\tfunction drawBackground(line, x, y, pdfKitDoc) {\n\t\tvar height = line.getHeight();\n\t\tfor(var i = 0, l = line.inlines.length; i < l; i++) {\n\t\t\tvar inline = line.inlines[i];\n\t\t\t\tif(inline.background) {\n\t\t\t\t\tpdfKitDoc\t.fillColor(inline.background)\n\t\t\t\t\t\t\t\t.rect(x + inline.x, y, inline.width, height)\n\t\t\t\t\t\t\t\t.fill();\n\t\t\t\t}\n\t\t}\n\t}\n\n\tmodule.exports = {\n\t\tdrawBackground: drawBackground,\n\t\tdrawDecorations: drawDecorations\n\t};\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, __dirname) {/* jslint node: true */\n\t'use strict';\n\n\t// var b64 = require('./base64.js').base64DecToArr;\n\tfunction VirtualFileSystem() {\n\t\tthis.fileSystem = {};\n\t\tthis.baseSystem = {};\n\t}\n\n\tVirtualFileSystem.prototype.readFileSync = function(filename) {\n\t\tfilename = fixFilename(filename);\n\n\t\tvar base64content = this.baseSystem[filename];\n\t\tif (base64content) {\n\t\t\treturn new Buffer(base64content, 'base64');\n\t\t}\n\n\t\treturn this.fileSystem[filename];\n\t};\n\n\tVirtualFileSystem.prototype.writeFileSync = function(filename, content) {\n\t\tthis.fileSystem[fixFilename(filename)] = content;\n\t};\n\n\tVirtualFileSystem.prototype.bindFS = function(data) {\n\t\tthis.baseSystem = data;\n\t};\n\n\n\tfunction fixFilename(filename) {\n\t\tif (filename.indexOf(__dirname) === 0) {\n\t\t\tfilename = filename.substring(__dirname.length);\n\t\t}\n\n\t\tif (filename.indexOf('/') === 0) {\n\t\t\tfilename = filename.substring(1);\n\t\t}\n\n\t\treturn filename;\n\t}\n\n\tmodule.exports = new VirtualFileSystem();\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer, \"/\"))\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/**\n\t * @license\n\t * lodash 3.1.0 (Custom Build) \n\t * Build: `lodash modern -d -o ./index.js`\n\t * Copyright 2012-2015 The Dojo Foundation \n\t * Based on Underscore.js 1.7.0 \n\t * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t * Available under MIT license \n\t */\n\t;(function() {\n\n\t /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n\t var undefined;\n\n\t /** Used as the semantic version number. */\n\t var VERSION = '3.1.0';\n\n\t /** Used to compose bitmasks for wrapper metadata. */\n\t var BIND_FLAG = 1,\n\t BIND_KEY_FLAG = 2,\n\t CURRY_BOUND_FLAG = 4,\n\t CURRY_FLAG = 8,\n\t CURRY_RIGHT_FLAG = 16,\n\t PARTIAL_FLAG = 32,\n\t PARTIAL_RIGHT_FLAG = 64,\n\t REARG_FLAG = 128,\n\t ARY_FLAG = 256;\n\n\t /** Used as default options for `_.trunc`. */\n\t var DEFAULT_TRUNC_LENGTH = 30,\n\t DEFAULT_TRUNC_OMISSION = '...';\n\n\t /** Used to detect when a function becomes hot. */\n\t var HOT_COUNT = 150,\n\t HOT_SPAN = 16;\n\n\t /** Used to indicate the type of lazy iteratees. */\n\t var LAZY_FILTER_FLAG = 0,\n\t LAZY_MAP_FLAG = 1,\n\t LAZY_WHILE_FLAG = 2;\n\n\t /** Used as the `TypeError` message for \"Functions\" methods. */\n\t var FUNC_ERROR_TEXT = 'Expected a function';\n\n\t /** Used as the internal argument placeholder. */\n\t var PLACEHOLDER = '__lodash_placeholder__';\n\n\t /** `Object#toString` result references. */\n\t var argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t weakMapTag = '[object WeakMap]';\n\n\t var arrayBufferTag = '[object ArrayBuffer]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t /** Used to match empty string literals in compiled template source. */\n\t var reEmptyStringLeading = /\\b__p \\+= '';/g,\n\t reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n\t reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n\t /** Used to match HTML entities and HTML characters. */\n\t var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,\n\t reUnescapedHtml = /[&<>\"'`]/g,\n\t reHasEscapedHtml = RegExp(reEscapedHtml.source),\n\t reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n\t /** Used to match template delimiters. */\n\t var reEscape = /<%-([\\s\\S]+?)%>/g,\n\t reEvaluate = /<%([\\s\\S]+?)%>/g,\n\t reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n\t /**\n\t * Used to match ES template delimiters.\n\t * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components)\n\t * for more details.\n\t */\n\t var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n\t /** Used to match `RegExp` flags from their coerced string values. */\n\t var reFlags = /\\w*$/;\n\n\t /** Used to detect named functions. */\n\t var reFuncName = /^\\s*function[ \\n\\r\\t]+\\w/;\n\n\t /** Used to detect hexadecimal string values. */\n\t var reHexPrefix = /^0[xX]/;\n\n\t /** Used to detect host constructors (Safari > 5). */\n\t var reHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t /** Used to match latin-1 supplementary letters (excluding mathematical operators). */\n\t var reLatin1 = /[\\xc0-\\xd6\\xd8-\\xde\\xdf-\\xf6\\xf8-\\xff]/g;\n\n\t /** Used to ensure capturing order of template delimiters. */\n\t var reNoMatch = /($^)/;\n\n\t /**\n\t * Used to match `RegExp` special characters.\n\t * See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special)\n\t * for more details.\n\t */\n\t var reRegExpChars = /[.*+?^${}()|[\\]\\/\\\\]/g,\n\t reHasRegExpChars = RegExp(reRegExpChars.source);\n\n\t /** Used to detect functions containing a `this` reference. */\n\t var reThis = /\\bthis\\b/;\n\n\t /** Used to match unescaped characters in compiled string literals. */\n\t var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n\t /** Used to match words to create compound words. */\n\t var reWords = (function() {\n\t var upper = '[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]',\n\t lower = '[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+';\n\n\t return RegExp(upper + '{2,}(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');\n\t }());\n\n\t /** Used to detect and test for whitespace. */\n\t var whitespace = (\n\t // Basic whitespace characters.\n\t ' \\t\\x0b\\f\\xa0\\ufeff' +\n\n\t // Line terminators.\n\t '\\n\\r\\u2028\\u2029' +\n\n\t // Unicode category \"Zs\" space separators.\n\t '\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000'\n\t );\n\n\t /** Used to assign default `context` object properties. */\n\t var contextProps = [\n\t 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',\n\t 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',\n\t 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'document',\n\t 'isFinite', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',\n\t 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n\t 'window', 'WinRTError'\n\t ];\n\n\t /** Used to make template sourceURLs easier to identify. */\n\t var templateCounter = -1;\n\n\t /** Used to identify `toStringTag` values of typed arrays. */\n\t var typedArrayTags = {};\n\t typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n\t typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n\t typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n\t typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n\t typedArrayTags[uint32Tag] = true;\n\t typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n\t typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n\t typedArrayTags[dateTag] = typedArrayTags[errorTag] =\n\t typedArrayTags[funcTag] = typedArrayTags[mapTag] =\n\t typedArrayTags[numberTag] = typedArrayTags[objectTag] =\n\t typedArrayTags[regexpTag] = typedArrayTags[setTag] =\n\t typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n\t /** Used to identify `toStringTag` values supported by `_.clone`. */\n\t var cloneableTags = {};\n\t cloneableTags[argsTag] = cloneableTags[arrayTag] =\n\t cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\n\t cloneableTags[dateTag] = cloneableTags[float32Tag] =\n\t cloneableTags[float64Tag] = cloneableTags[int8Tag] =\n\t cloneableTags[int16Tag] = cloneableTags[int32Tag] =\n\t cloneableTags[numberTag] = cloneableTags[objectTag] =\n\t cloneableTags[regexpTag] = cloneableTags[stringTag] =\n\t cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\t cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\t cloneableTags[errorTag] = cloneableTags[funcTag] =\n\t cloneableTags[mapTag] = cloneableTags[setTag] =\n\t cloneableTags[weakMapTag] = false;\n\n\t /** Used as an internal `_.debounce` options object by `_.throttle`. */\n\t var debounceOptions = {\n\t 'leading': false,\n\t 'maxWait': 0,\n\t 'trailing': false\n\t };\n\n\t /** Used to map latin-1 supplementary letters to basic latin letters. */\n\t var deburredLetters = {\n\t '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n\t '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n\t '\\xc7': 'C', '\\xe7': 'c',\n\t '\\xd0': 'D', '\\xf0': 'd',\n\t '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n\t '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n\t '\\xcC': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n\t '\\xeC': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n\t '\\xd1': 'N', '\\xf1': 'n',\n\t '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n\t '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n\t '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n\t '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n\t '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n\t '\\xc6': 'Ae', '\\xe6': 'ae',\n\t '\\xde': 'Th', '\\xfe': 'th',\n\t '\\xdf': 'ss'\n\t };\n\n\t /** Used to map characters to HTML entities. */\n\t var htmlEscapes = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '\"': '"',\n\t \"'\": ''',\n\t '`': '`'\n\t };\n\n\t /** Used to map HTML entities to characters. */\n\t var htmlUnescapes = {\n\t '&': '&',\n\t '<': '<',\n\t '>': '>',\n\t '"': '\"',\n\t ''': \"'\",\n\t '`': '`'\n\t };\n\n\t /** Used to determine if values are of the language type `Object`. */\n\t var objectTypes = {\n\t 'function': true,\n\t 'object': true\n\t };\n\n\t /** Used to escape characters for inclusion in compiled string literals. */\n\t var stringEscapes = {\n\t '\\\\': '\\\\',\n\t \"'\": \"'\",\n\t '\\n': 'n',\n\t '\\r': 'r',\n\t '\\u2028': 'u2028',\n\t '\\u2029': 'u2029'\n\t };\n\n\t /**\n\t * Used as a reference to the global object.\n\t *\n\t * The `this` value is used if it is the global object to avoid Greasemonkey's\n\t * restricted `window` object, otherwise the `window` object is used.\n\t */\n\t var root = (objectTypes[typeof window] && window !== (this && this.window)) ? window : this;\n\n\t /** Detect free variable `exports`. */\n\t var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n\t /** Detect free variable `module`. */\n\t var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n\t /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n\t var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n\t if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n\t root = freeGlobal;\n\t }\n\n\t /** Detect the popular CommonJS extension `module.exports`. */\n\t var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;\n\n\t /*--------------------------------------------------------------------------*/\n\n\t /**\n\t * The base implementation of `compareAscending` which compares values and\n\t * sorts them in ascending order without guaranteeing a stable sort.\n\t *\n\t * @private\n\t * @param {*} value The value to compare to `other`.\n\t * @param {*} other The value to compare to `value`.\n\t * @returns {number} Returns the sort order indicator for `value`.\n\t */\n\t function baseCompareAscending(value, other) {\n\t if (value !== other) {\n\t var valIsReflexive = value === value,\n\t othIsReflexive = other === other;\n\n\t if (value > other || !valIsReflexive || (typeof value == 'undefined' && othIsReflexive)) {\n\t return 1;\n\t }\n\t if (value < other || !othIsReflexive || (typeof other == 'undefined' && valIsReflexive)) {\n\t return -1;\n\t }\n\t }\n\t return 0;\n\t }\n\n\t /**\n\t * The base implementation of `_.indexOf` without support for binary searches.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\t function baseIndexOf(array, value, fromIndex) {\n\t if (value !== value) {\n\t return indexOfNaN(array, fromIndex);\n\t }\n\t var index = (fromIndex || 0) - 1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (array[index] === value) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * The base implementation of `_.sortBy` and `_.sortByAll` which uses `comparer`\n\t * to define the sort order of `array` and replaces criteria objects with their\n\t * corresponding values.\n\t *\n\t * @private\n\t * @param {Array} array The array to sort.\n\t * @param {Function} comparer The function to define sort order.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function baseSortBy(array, comparer) {\n\t var length = array.length;\n\n\t array.sort(comparer);\n\t while (length--) {\n\t array[length] = array[length].value;\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * Converts `value` to a string if it is not one. An empty string is returned\n\t * for `null` or `undefined` values.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {string} Returns the string.\n\t */\n\t function baseToString(value) {\n\t if (typeof value == 'string') {\n\t return value;\n\t }\n\t return value == null ? '' : (value + '');\n\t }\n\n\t /**\n\t * Used by `_.max` and `_.min` as the default callback for string values.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @returns {number} Returns the code unit of the first character of the string.\n\t */\n\t function charAtCallback(string) {\n\t return string.charCodeAt(0);\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimLeft` to get the index of the first character\n\t * of `string` that is not found in `chars`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @param {string} chars The characters to find.\n\t * @returns {number} Returns the index of the first character not found in `chars`.\n\t */\n\t function charsLeftIndex(string, chars) {\n\t var index = -1,\n\t length = string.length;\n\n\t while (++index < length && chars.indexOf(string.charAt(index)) > -1) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimRight` to get the index of the last character\n\t * of `string` that is not found in `chars`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @param {string} chars The characters to find.\n\t * @returns {number} Returns the index of the last character not found in `chars`.\n\t */\n\t function charsRightIndex(string, chars) {\n\t var index = string.length;\n\n\t while (index-- && chars.indexOf(string.charAt(index)) > -1) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.sortBy` to compare transformed elements of a collection and stable\n\t * sort them in ascending order.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare to `other`.\n\t * @param {Object} other The object to compare to `object`.\n\t * @returns {number} Returns the sort order indicator for `object`.\n\t */\n\t function compareAscending(object, other) {\n\t return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);\n\t }\n\n\t /**\n\t * Used by `_.sortByAll` to compare multiple properties of each element\n\t * in a collection and stable sort them in ascending order.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare to `other`.\n\t * @param {Object} other The object to compare to `object`.\n\t * @returns {number} Returns the sort order indicator for `object`.\n\t */\n\t function compareMultipleAscending(object, other) {\n\t var index = -1,\n\t objCriteria = object.criteria,\n\t othCriteria = other.criteria,\n\t length = objCriteria.length;\n\n\t while (++index < length) {\n\t var result = baseCompareAscending(objCriteria[index], othCriteria[index]);\n\t if (result) {\n\t return result;\n\t }\n\t }\n\t // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n\t // that causes it, under certain circumstances, to provide the same value for\n\t // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n\t // for more details.\n\t //\n\t // This also ensures a stable sort in V8 and other engines.\n\t // See https://code.google.com/p/v8/issues/detail?id=90 for more details.\n\t return object.index - other.index;\n\t }\n\n\t /**\n\t * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters.\n\t *\n\t * @private\n\t * @param {string} letter The matched letter to deburr.\n\t * @returns {string} Returns the deburred letter.\n\t */\n\t function deburrLetter(letter) {\n\t return deburredLetters[letter];\n\t }\n\n\t /**\n\t * Used by `_.escape` to convert characters to HTML entities.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to escape.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeHtmlChar(chr) {\n\t return htmlEscapes[chr];\n\t }\n\n\t /**\n\t * Used by `_.template` to escape characters for inclusion in compiled\n\t * string literals.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to escape.\n\t * @returns {string} Returns the escaped character.\n\t */\n\t function escapeStringChar(chr) {\n\t return '\\\\' + stringEscapes[chr];\n\t }\n\n\t /**\n\t * Gets the index at which the first occurrence of `NaN` is found in `array`.\n\t * If `fromRight` is provided elements of `array` are iterated from right to left.\n\t *\n\t * @private\n\t * @param {Array} array The array to search.\n\t * @param {number} [fromIndex] The index to search from.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n\t */\n\t function indexOfNaN(array, fromIndex, fromRight) {\n\t var length = array.length,\n\t index = fromRight ? (fromIndex || length) : ((fromIndex || 0) - 1);\n\n\t while ((fromRight ? index-- : ++index < length)) {\n\t var other = array[index];\n\t if (other !== other) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * Checks if `value` is object-like.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t */\n\t function isObjectLike(value) {\n\t return (value && typeof value == 'object') || false;\n\t }\n\n\t /**\n\t * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a\n\t * character code is whitespace.\n\t *\n\t * @private\n\t * @param {number} charCode The character code to inspect.\n\t * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`.\n\t */\n\t function isSpace(charCode) {\n\t return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 ||\n\t (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279)));\n\t }\n\n\t /**\n\t * Replaces all `placeholder` elements in `array` with an internal placeholder\n\t * and returns an array of their indexes.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {*} placeholder The placeholder to replace.\n\t * @returns {Array} Returns the new array of placeholder indexes.\n\t */\n\t function replaceHolders(array, placeholder) {\n\t var index = -1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t if (array[index] === placeholder) {\n\t array[index] = PLACEHOLDER;\n\t result[++resIndex] = index;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * An implementation of `_.uniq` optimized for sorted arrays without support\n\t * for callback shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Function} [iteratee] The function invoked per iteration.\n\t * @returns {Array} Returns the new duplicate-value-free array.\n\t */\n\t function sortedUniq(array, iteratee) {\n\t var seen,\n\t index = -1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index],\n\t computed = iteratee ? iteratee(value, index, array) : value;\n\n\t if (!index || seen !== computed) {\n\t seen = computed;\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace\n\t * character of `string`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @returns {number} Returns the index of the first non-whitespace character.\n\t */\n\t function trimmedLeftIndex(string) {\n\t var index = -1,\n\t length = string.length;\n\n\t while (++index < length && isSpace(string.charCodeAt(index))) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace\n\t * character of `string`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @returns {number} Returns the index of the last non-whitespace character.\n\t */\n\t function trimmedRightIndex(string) {\n\t var index = string.length;\n\n\t while (index-- && isSpace(string.charCodeAt(index))) {}\n\t return index;\n\t }\n\n\t /**\n\t * Used by `_.unescape` to convert HTML entities to characters.\n\t *\n\t * @private\n\t * @param {string} chr The matched character to unescape.\n\t * @returns {string} Returns the unescaped character.\n\t */\n\t function unescapeHtmlChar(chr) {\n\t return htmlUnescapes[chr];\n\t }\n\n\t /*--------------------------------------------------------------------------*/\n\n\t /**\n\t * Create a new pristine `lodash` function using the given `context` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Utility\n\t * @param {Object} [context=root] The context object.\n\t * @returns {Function} Returns a new `lodash` function.\n\t * @example\n\t *\n\t * _.mixin({ 'add': function(a, b) { return a + b; } });\n\t *\n\t * var lodash = _.runInContext();\n\t * lodash.mixin({ 'sub': function(a, b) { return a - b; } });\n\t *\n\t * _.isFunction(_.add);\n\t * // => true\n\t * _.isFunction(_.sub);\n\t * // => false\n\t *\n\t * lodash.isFunction(lodash.add);\n\t * // => false\n\t * lodash.isFunction(lodash.sub);\n\t * // => true\n\t *\n\t * // using `context` to mock `Date#getTime` use in `_.now`\n\t * var mock = _.runInContext({\n\t * 'Date': function() {\n\t * return { 'getTime': getTimeMock };\n\t * }\n\t * });\n\t *\n\t * // or creating a suped-up `defer` in Node.js\n\t * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n\t */\n\t function runInContext(context) {\n\t // Avoid issues with some ES3 environments that attempt to use values, named\n\t // after built-in constructors like `Object`, for the creation of literals.\n\t // ES5 clears this up by stating that literals must use built-in constructors.\n\t // See https://es5.github.io/#x11.1.5 for more details.\n\t context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;\n\n\t /** Native constructor references. */\n\t var Array = context.Array,\n\t Date = context.Date,\n\t Error = context.Error,\n\t Function = context.Function,\n\t Math = context.Math,\n\t Number = context.Number,\n\t Object = context.Object,\n\t RegExp = context.RegExp,\n\t String = context.String,\n\t TypeError = context.TypeError;\n\n\t /** Used for native method references. */\n\t var arrayProto = Array.prototype,\n\t objectProto = Object.prototype;\n\n\t /** Used to detect DOM support. */\n\t var document = (document = context.window) && document.document;\n\n\t /** Used to resolve the decompiled source of functions. */\n\t var fnToString = Function.prototype.toString;\n\n\t /** Used to the length of n-tuples for `_.unzip`. */\n\t var getLength = baseProperty('length');\n\n\t /** Used to check objects for own properties. */\n\t var hasOwnProperty = objectProto.hasOwnProperty;\n\n\t /** Used to generate unique IDs. */\n\t var idCounter = 0;\n\n\t /**\n\t * Used to resolve the `toStringTag` of values.\n\t * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n\t * for more details.\n\t */\n\t var objToString = objectProto.toString;\n\n\t /** Used to restore the original `_` reference in `_.noConflict`. */\n\t var oldDash = context._;\n\n\t /** Used to detect if a method is native. */\n\t var reNative = RegExp('^' +\n\t escapeRegExp(objToString)\n\t .replace(/toString|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t );\n\n\t /** Native method references. */\n\t var ArrayBuffer = isNative(ArrayBuffer = context.ArrayBuffer) && ArrayBuffer,\n\t bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice,\n\t ceil = Math.ceil,\n\t clearTimeout = context.clearTimeout,\n\t floor = Math.floor,\n\t getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,\n\t push = arrayProto.push,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t Set = isNative(Set = context.Set) && Set,\n\t setTimeout = context.setTimeout,\n\t splice = arrayProto.splice,\n\t Uint8Array = isNative(Uint8Array = context.Uint8Array) && Uint8Array,\n\t unshift = arrayProto.unshift,\n\t WeakMap = isNative(WeakMap = context.WeakMap) && WeakMap;\n\n\t /** Used to clone array buffers. */\n\t var Float64Array = (function() {\n\t // Safari 5 errors when using an array buffer to initialize a typed array\n\t // where the array buffer's `byteLength` is not a multiple of the typed\n\t // array's `BYTES_PER_ELEMENT`.\n\t try {\n\t var func = isNative(func = context.Float64Array) && func,\n\t result = new func(new ArrayBuffer(10), 0, 1) && func;\n\t } catch(e) {}\n\t return result;\n\t }());\n\n\t /* Native method references for those with the same name as other `lodash` methods. */\n\t var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray,\n\t nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate,\n\t nativeIsFinite = context.isFinite,\n\t nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys,\n\t nativeMax = Math.max,\n\t nativeMin = Math.min,\n\t nativeNow = isNative(nativeNow = Date.now) && nativeNow,\n\t nativeNumIsFinite = isNative(nativeNumIsFinite = Number.isFinite) && nativeNumIsFinite,\n\t nativeParseInt = context.parseInt,\n\t nativeRandom = Math.random;\n\n\t /** Used as references for `-Infinity` and `Infinity`. */\n\t var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY,\n\t POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n\n\t /** Used as references for the maximum length and index of an array. */\n\t var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1,\n\t MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n\t HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n\t /** Used as the size, in bytes, of each `Float64Array` element. */\n\t var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;\n\n\t /**\n\t * Used as the maximum length of an array-like value.\n\t * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n\t * for more details.\n\t */\n\t var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;\n\n\t /** Used to store function metadata. */\n\t var metaMap = WeakMap && new WeakMap;\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a `lodash` object which wraps `value` to enable intuitive chaining.\n\t * Methods that operate on and return arrays, collections, and functions can\n\t * be chained together. Methods that return a boolean or single value will\n\t * automatically end the chain returning the unwrapped value. Explicit chaining\n\t * may be enabled using `_.chain`. The execution of chained methods is lazy,\n\t * that is, execution is deferred until `_#value` is implicitly or explicitly\n\t * called.\n\t *\n\t * Lazy evaluation allows several methods to support shortcut fusion. Shortcut\n\t * fusion is an optimization that merges iteratees to avoid creating intermediate\n\t * arrays and reduce the number of iteratee executions.\n\t *\n\t * Chaining is supported in custom builds as long as the `_#value` method is\n\t * directly or indirectly included in the build.\n\t *\n\t * In addition to lodash methods, wrappers also have the following `Array` methods:\n\t * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`,\n\t * and `unshift`\n\t *\n\t * The wrapper functions that support shortcut fusion are:\n\t * `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, `first`,\n\t * `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, `slice`,\n\t * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `where`\n\t *\n\t * The chainable wrapper functions are:\n\t * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,\n\t * `callback`, `chain`, `chunk`, `compact`, `concat`, `constant`, `countBy`,\n\t * `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`, `difference`,\n\t * `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, `flatten`,\n\t * `flattenDeep`, `flow`, `flowRight`, `forEach`, `forEachRight`, `forIn`,\n\t * `forInRight`, `forOwn`, `forOwnRight`, `functions`, `groupBy`, `indexBy`,\n\t * `initial`, `intersection`, `invert`, `invoke`, `keys`, `keysIn`, `map`,\n\t * `mapValues`, `matches`, `memoize`, `merge`, `mixin`, `negate`, `noop`,\n\t * `omit`, `once`, `pairs`, `partial`, `partialRight`, `partition`, `pick`,\n\t * `pluck`, `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`,\n\t * `rearg`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`,\n\t * `sortBy`, `sortByAll`, `splice`, `take`, `takeRight`, `takeRightWhile`,\n\t * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,\n\t * `transform`, `union`, `uniq`, `unshift`, `unzip`, `values`, `valuesIn`,\n\t * `where`, `without`, `wrap`, `xor`, `zip`, and `zipObject`\n\t *\n\t * The wrapper functions that are **not** chainable by default are:\n\t * `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,\n\t * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,\n\t * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,\n\t * `identity`, `includes`, `indexOf`, `isArguments`, `isArray`, `isBoolean`,\n\t * `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`,\n\t * `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,\n\t * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,\n\t * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`,\n\t * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`,\n\t * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`,\n\t * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`,\n\t * `startCase`, `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`,\n\t * `trunc`, `unescape`, `uniqueId`, `value`, and `words`\n\t *\n\t * The wrapper function `sample` will return a wrapped value when `n` is provided,\n\t * otherwise an unwrapped value is returned.\n\t *\n\t * @name _\n\t * @constructor\n\t * @category Chain\n\t * @param {*} value The value to wrap in a `lodash` instance.\n\t * @returns {Object} Returns a `lodash` instance.\n\t * @example\n\t *\n\t * var wrapped = _([1, 2, 3]);\n\t *\n\t * // returns an unwrapped value\n\t * wrapped.reduce(function(sum, n) { return sum + n; });\n\t * // => 6\n\t *\n\t * // returns a wrapped value\n\t * var squares = wrapped.map(function(n) { return n * n; });\n\t *\n\t * _.isArray(squares);\n\t * // => false\n\t *\n\t * _.isArray(squares.value());\n\t * // => true\n\t */\n\t function lodash(value) {\n\t if (isObjectLike(value) && !isArray(value)) {\n\t if (value instanceof LodashWrapper) {\n\t return value;\n\t }\n\t if (hasOwnProperty.call(value, '__wrapped__')) {\n\t return new LodashWrapper(value.__wrapped__, value.__chain__, arrayCopy(value.__actions__));\n\t }\n\t }\n\t return new LodashWrapper(value);\n\t }\n\n\t /**\n\t * The base constructor for creating `lodash` wrapper objects.\n\t *\n\t * @private\n\t * @param {*} value The value to wrap.\n\t * @param {boolean} [chainAll] Enable chaining for all wrapper methods.\n\t * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.\n\t */\n\t function LodashWrapper(value, chainAll, actions) {\n\t this.__actions__ = actions || [];\n\t this.__chain__ = !!chainAll;\n\t this.__wrapped__ = value;\n\t }\n\n\t /**\n\t * An object environment feature flags.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Object\n\t */\n\t var support = lodash.support = {};\n\n\t (function(x) {\n\n\t /**\n\t * Detect if functions can be decompiled by `Function#toString`\n\t * (all but Firefox OS certified apps, older Opera mobile browsers, and\n\t * the PlayStation 3; forced `false` for Windows 8 apps).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext);\n\n\t /**\n\t * Detect if `Function#name` is supported (all but IE).\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t support.funcNames = typeof Function.name == 'string';\n\n\t /**\n\t * Detect if the DOM is supported.\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t try {\n\t support.dom = document.createDocumentFragment().nodeType === 11;\n\t } catch(e) {\n\t support.dom = false;\n\t }\n\n\t /**\n\t * Detect if `arguments` object indexes are non-enumerable.\n\t *\n\t * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object\n\t * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat\n\t * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`\n\t * checks for indexes that exceed their function's formal parameters with\n\t * associated values of `0`.\n\t *\n\t * @memberOf _.support\n\t * @type boolean\n\t */\n\t try {\n\t support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1);\n\t } catch(e) {\n\t support.nonEnumArgs = true;\n\t }\n\t }(0, 0));\n\n\t /**\n\t * By default, the template delimiters used by lodash are like those in\n\t * embedded Ruby (ERB). Change the following template settings to use\n\t * alternative delimiters.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Object\n\t */\n\t lodash.templateSettings = {\n\n\t /**\n\t * Used to detect `data` property values to be HTML-escaped.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'escape': reEscape,\n\n\t /**\n\t * Used to detect code to be evaluated.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'evaluate': reEvaluate,\n\n\t /**\n\t * Used to detect `data` property values to inject.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type RegExp\n\t */\n\t 'interpolate': reInterpolate,\n\n\t /**\n\t * Used to reference the data object in the template text.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type string\n\t */\n\t 'variable': '',\n\n\t /**\n\t * Used to import variables into the compiled template.\n\t *\n\t * @memberOf _.templateSettings\n\t * @type Object\n\t */\n\t 'imports': {\n\n\t /**\n\t * A reference to the `lodash` function.\n\t *\n\t * @memberOf _.templateSettings.imports\n\t * @type Function\n\t */\n\t '_': lodash\n\t }\n\t };\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n\t *\n\t * @private\n\t * @param {*} value The value to wrap.\n\t */\n\t function LazyWrapper(value) {\n\t this.actions = null;\n\t this.dir = 1;\n\t this.dropCount = 0;\n\t this.filtered = false;\n\t this.iteratees = null;\n\t this.takeCount = POSITIVE_INFINITY;\n\t this.views = null;\n\t this.wrapped = value;\n\t }\n\n\t /**\n\t * Creates a clone of the lazy wrapper object.\n\t *\n\t * @private\n\t * @name clone\n\t * @memberOf LazyWrapper\n\t * @returns {Object} Returns the cloned `LazyWrapper` object.\n\t */\n\t function lazyClone() {\n\t var actions = this.actions,\n\t iteratees = this.iteratees,\n\t views = this.views,\n\t result = new LazyWrapper(this.wrapped);\n\n\t result.actions = actions ? arrayCopy(actions) : null;\n\t result.dir = this.dir;\n\t result.dropCount = this.dropCount;\n\t result.filtered = this.filtered;\n\t result.iteratees = iteratees ? arrayCopy(iteratees) : null;\n\t result.takeCount = this.takeCount;\n\t result.views = views ? arrayCopy(views) : null;\n\t return result;\n\t }\n\n\t /**\n\t * Reverses the direction of lazy iteration.\n\t *\n\t * @private\n\t * @name reverse\n\t * @memberOf LazyWrapper\n\t * @returns {Object} Returns the new reversed `LazyWrapper` object.\n\t */\n\t function lazyReverse() {\n\t if (this.filtered) {\n\t var result = new LazyWrapper(this);\n\t result.dir = -1;\n\t result.filtered = true;\n\t } else {\n\t result = this.clone();\n\t result.dir *= -1;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Extracts the unwrapped value from its lazy wrapper.\n\t *\n\t * @private\n\t * @name value\n\t * @memberOf LazyWrapper\n\t * @returns {*} Returns the unwrapped value.\n\t */\n\t function lazyValue() {\n\t var array = this.wrapped.value();\n\t if (!isArray(array)) {\n\t return baseWrapperValue(array, this.actions);\n\t }\n\t var dir = this.dir,\n\t isRight = dir < 0,\n\t view = getView(0, array.length, this.views),\n\t start = view.start,\n\t end = view.end,\n\t length = end - start,\n\t dropCount = this.dropCount,\n\t takeCount = nativeMin(length, this.takeCount - dropCount),\n\t index = isRight ? end : start - 1,\n\t iteratees = this.iteratees,\n\t iterLength = iteratees ? iteratees.length : 0,\n\t resIndex = 0,\n\t result = [];\n\n\t outer:\n\t while (length-- && resIndex < takeCount) {\n\t index += dir;\n\n\t var iterIndex = -1,\n\t value = array[index];\n\n\t while (++iterIndex < iterLength) {\n\t var data = iteratees[iterIndex],\n\t iteratee = data.iteratee,\n\t computed = iteratee(value, index, array),\n\t type = data.type;\n\n\t if (type == LAZY_MAP_FLAG) {\n\t value = computed;\n\t } else if (!computed) {\n\t if (type == LAZY_FILTER_FLAG) {\n\t continue outer;\n\t } else {\n\t break outer;\n\t }\n\t }\n\t }\n\t if (dropCount) {\n\t dropCount--;\n\t } else {\n\t result[resIndex++] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a cache object to store key/value pairs.\n\t *\n\t * @private\n\t * @static\n\t * @name Cache\n\t * @memberOf _.memoize\n\t */\n\t function MapCache() {\n\t this.__data__ = {};\n\t }\n\n\t /**\n\t * Removes `key` and its value from the cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`.\n\t */\n\t function mapDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t }\n\n\t /**\n\t * Gets the cached value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the cached value.\n\t */\n\t function mapGet(key) {\n\t return key == '__proto__' ? undefined : this.__data__[key];\n\t }\n\n\t /**\n\t * Checks if a cached value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\t function mapHas(key) {\n\t return key != '__proto__' && hasOwnProperty.call(this.__data__, key);\n\t }\n\n\t /**\n\t * Adds `value` to `key` of the cache.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf _.memoize.Cache\n\t * @param {string} key The key of the value to cache.\n\t * @param {*} value The value to cache.\n\t * @returns {Object} Returns the cache object.\n\t */\n\t function mapSet(key, value) {\n\t if (key != '__proto__') {\n\t this.__data__[key] = value;\n\t }\n\t return this;\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t *\n\t * Creates a cache object to store unique values.\n\t *\n\t * @private\n\t * @param {Array} [values] The values to cache.\n\t */\n\t function SetCache(values) {\n\t var length = values ? values.length : 0;\n\n\t this.data = { 'hash': nativeCreate(null), 'set': new Set };\n\t while (length--) {\n\t this.push(values[length]);\n\t }\n\t }\n\n\t /**\n\t * Checks if `value` is in `cache` mimicking the return signature of\n\t * `_.indexOf` by returning `0` if the value is found, else `-1`.\n\t *\n\t * @private\n\t * @param {Object} cache The cache to search.\n\t * @param {*} value The value to search for.\n\t * @returns {number} Returns `0` if `value` is found, else `-1`.\n\t */\n\t function cacheIndexOf(cache, value) {\n\t var data = cache.data,\n\t result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];\n\n\t return result ? 0 : -1;\n\t }\n\n\t /**\n\t * Adds `value` to the cache.\n\t *\n\t * @private\n\t * @name push\n\t * @memberOf SetCache\n\t * @param {*} value The value to cache.\n\t */\n\t function cachePush(value) {\n\t var data = this.data;\n\t if (typeof value == 'string' || isObject(value)) {\n\t data.set.add(value);\n\t } else {\n\t data.hash[value] = true;\n\t }\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayCopy(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.forEach` for arrays without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.forEachRight` for arrays without support for\n\t * callback shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function arrayEachRight(array, iteratee) {\n\t var length = array.length;\n\n\t while (length--) {\n\t if (iteratee(array[length], length, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * A specialized version of `_.every` for arrays without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if all elements pass the predicate check,\n\t * else `false`.\n\t */\n\t function arrayEvery(array, predicate) {\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (!predicate(array[index], index, array)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * A specialized version of `_.filter` for arrays without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\t function arrayFilter(array, predicate) {\n\t var index = -1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (predicate(value, index, array)) {\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.map` for arrays without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\t function arrayMap(array, iteratee) {\n\t var index = -1,\n\t length = array.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t result[index] = iteratee(array[index], index, array);\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.max` for arrays without support for iteratees.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @returns {*} Returns the maximum value.\n\t */\n\t function arrayMax(array) {\n\t var index = -1,\n\t length = array.length,\n\t result = NEGATIVE_INFINITY;\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (value > result) {\n\t result = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.min` for arrays without support for iteratees.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @returns {*} Returns the minimum value.\n\t */\n\t function arrayMin(array) {\n\t var index = -1,\n\t length = array.length,\n\t result = POSITIVE_INFINITY;\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (value < result) {\n\t result = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.reduce` for arrays without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initFromArray] Specify using the first element of `array`\n\t * as the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\t function arrayReduce(array, iteratee, accumulator, initFromArray) {\n\t var index = -1,\n\t length = array.length;\n\n\t if (initFromArray && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t }\n\n\t /**\n\t * A specialized version of `_.reduceRight` for arrays without support for\n\t * callback shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initFromArray] Specify using the last element of `array`\n\t * as the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\t function arrayReduceRight(array, iteratee, accumulator, initFromArray) {\n\t var length = array.length;\n\t if (initFromArray && length) {\n\t accumulator = array[--length];\n\t }\n\t while (length--) {\n\t accumulator = iteratee(accumulator, array[length], length, array);\n\t }\n\t return accumulator;\n\t }\n\n\t /**\n\t * A specialized version of `_.some` for arrays without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\t function arraySome(array, predicate) {\n\t var index = -1,\n\t length = array.length;\n\n\t while (++index < length) {\n\t if (predicate(array[index], index, array)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t }\n\n\t /**\n\t * Used by `_.defaults` to customize its `_.assign` use.\n\t *\n\t * @private\n\t * @param {*} objectValue The destination object property value.\n\t * @param {*} sourceValue The source object property value.\n\t * @returns {*} Returns the value to assign to the destination object.\n\t */\n\t function assignDefaults(objectValue, sourceValue) {\n\t return typeof objectValue == 'undefined' ? sourceValue : objectValue;\n\t }\n\n\t /**\n\t * Used by `_.template` to customize its `_.assign` use.\n\t *\n\t * **Note:** This method is like `assignDefaults` except that it ignores\n\t * inherited property values when checking if a property is `undefined`.\n\t *\n\t * @private\n\t * @param {*} objectValue The destination object property value.\n\t * @param {*} sourceValue The source object property value.\n\t * @param {string} key The key associated with the object and source values.\n\t * @param {Object} object The destination object.\n\t * @returns {*} Returns the value to assign to the destination object.\n\t */\n\t function assignOwnDefaults(objectValue, sourceValue, key, object) {\n\t return (typeof objectValue == 'undefined' || !hasOwnProperty.call(object, key))\n\t ? sourceValue\n\t : objectValue;\n\t }\n\n\t /**\n\t * The base implementation of `_.assign` without support for argument juggling,\n\t * multiple sources, and `this` binding `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {Function} [customizer] The function to customize assigning values.\n\t * @returns {Object} Returns the destination object.\n\t */\n\t function baseAssign(object, source, customizer) {\n\t var props = keys(source);\n\t if (!customizer) {\n\t return baseCopy(source, object, props);\n\t }\n\t var index = -1,\n\t length = props.length\n\n\t while (++index < length) {\n\t var key = props[index],\n\t value = object[key],\n\t result = customizer(value, source[key], key, object, source);\n\n\t if ((result === result ? result !== value : value === value) ||\n\t (typeof value == 'undefined' && !(key in object))) {\n\t object[key] = result;\n\t }\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * The base implementation of `_.at` without support for strings and individual\n\t * key arguments.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {number[]|string[]} [props] The property names or indexes of elements to pick.\n\t * @returns {Array} Returns the new array of picked elements.\n\t */\n\t function baseAt(collection, props) {\n\t var index = -1,\n\t length = collection.length,\n\t isArr = isLength(length),\n\t propsLength = props.length,\n\t result = Array(propsLength);\n\n\t while(++index < propsLength) {\n\t var key = props[index];\n\t if (isArr) {\n\t key = parseFloat(key);\n\t result[index] = isIndex(key, length) ? collection[key] : undefined;\n\t } else {\n\t result[index] = collection[key];\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Copies the properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Array} props The property names to copy.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseCopy(source, object, props) {\n\t if (!props) {\n\t props = object;\n\t object = {};\n\t }\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\t object[key] = source[key];\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * The base implementation of `_.bindAll` without support for individual\n\t * method name arguments.\n\t *\n\t * @private\n\t * @param {Object} object The object to bind and assign the bound methods to.\n\t * @param {string[]} methodNames The object method names to bind.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseBindAll(object, methodNames) {\n\t var index = -1,\n\t length = methodNames.length;\n\n\t while (++index < length) {\n\t var key = methodNames[index];\n\t object[key] = createWrapper(object[key], BIND_FLAG, object);\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * The base implementation of `_.callback` which supports specifying the\n\t * number of arguments to provide to `func`.\n\t *\n\t * @private\n\t * @param {*} [func=_.identity] The value to convert to a callback.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {number} [argCount] The number of arguments to provide to `func`.\n\t * @returns {Function} Returns the callback.\n\t */\n\t function baseCallback(func, thisArg, argCount) {\n\t var type = typeof func;\n\t if (type == 'function') {\n\t return (typeof thisArg != 'undefined' && isBindable(func))\n\t ? bindCallback(func, thisArg, argCount)\n\t : func;\n\t }\n\t if (func == null) {\n\t return identity;\n\t }\n\t // Handle \"_.property\" and \"_.matches\" style callback shorthands.\n\t return type == 'object'\n\t ? baseMatches(func)\n\t : baseProperty(func + '');\n\t }\n\n\t /**\n\t * The base implementation of `_.clone` without support for argument juggling\n\t * and `this` binding `customizer` functions.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {Function} [customizer] The function to customize cloning values.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The object `value` belongs to.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates clones with source counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\t function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object) : customizer(value);\n\t }\n\t if (typeof result != 'undefined') {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return arrayCopy(value, result);\n\t }\n\t } else {\n\t var tag = objToString.call(value),\n\t isFunc = tag == funcTag;\n\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return baseCopy(value, result, keys(value));\n\t }\n\t } else {\n\t return cloneableTags[tag]\n\t ? initCloneByTag(value, tag, isDeep)\n\t : (object ? value : {});\n\t }\n\t }\n\t // Check for circular references and return corresponding clone.\n\t stackA || (stackA = []);\n\t stackB || (stackB = []);\n\n\t var length = stackA.length;\n\t while (length--) {\n\t if (stackA[length] == value) {\n\t return stackB[length];\n\t }\n\t }\n\t // Add the source value to the stack of traversed objects and associate it with its clone.\n\t stackA.push(value);\n\t stackB.push(result);\n\n\t // Recursively populate clone (susceptible to call stack limits).\n\t (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n\t result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\t var baseCreate = (function() {\n\t function Object() {}\n\t return function(prototype) {\n\t if (isObject(prototype)) {\n\t Object.prototype = prototype;\n\t var result = new Object;\n\t Object.prototype = null;\n\t }\n\t return result || context.Object();\n\t };\n\t }());\n\n\t /**\n\t * The base implementation of `_.delay` and `_.defer` which accepts an index\n\t * of where to slice the arguments to provide to `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to delay.\n\t * @param {number} wait The number of milliseconds to delay invocation.\n\t * @param {Object} args The `arguments` object to slice and provide to `func`.\n\t * @returns {number} Returns the timer id.\n\t */\n\t function baseDelay(func, wait, args, fromIndex) {\n\t if (!isFunction(func)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return setTimeout(function() { func.apply(undefined, baseSlice(args, fromIndex)); }, wait);\n\t }\n\n\t /**\n\t * The base implementation of `_.difference` which accepts a single array\n\t * of values to exclude.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Array} values The values to exclude.\n\t * @returns {Array} Returns the new array of filtered values.\n\t */\n\t function baseDifference(array, values) {\n\t var length = array ? array.length : 0,\n\t result = [];\n\n\t if (!length) {\n\t return result;\n\t }\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t isCommon = indexOf == baseIndexOf,\n\t cache = isCommon && values.length >= 200 && createCache(values),\n\t valuesLength = values.length;\n\n\t if (cache) {\n\t indexOf = cacheIndexOf;\n\t isCommon = false;\n\t values = cache;\n\t }\n\t outer:\n\t while (++index < length) {\n\t var value = array[index];\n\n\t if (isCommon && value === value) {\n\t var valuesIndex = valuesLength;\n\t while (valuesIndex--) {\n\t if (values[valuesIndex] === value) {\n\t continue outer;\n\t }\n\t }\n\t result.push(value);\n\t }\n\t else if (indexOf(values, value) < 0) {\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.forEach` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t */\n\t function baseEach(collection, iteratee) {\n\t var length = collection ? collection.length : 0;\n\t if (!isLength(length)) {\n\t return baseForOwn(collection, iteratee);\n\t }\n\t var index = -1,\n\t iterable = toObject(collection);\n\n\t while (++index < length) {\n\t if (iteratee(iterable[index], index, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return collection;\n\t }\n\n\t /**\n\t * The base implementation of `_.forEachRight` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t */\n\t function baseEachRight(collection, iteratee) {\n\t var length = collection ? collection.length : 0;\n\t if (!isLength(length)) {\n\t return baseForOwnRight(collection, iteratee);\n\t }\n\t var iterable = toObject(collection);\n\t while (length--) {\n\t if (iteratee(iterable[length], length, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return collection;\n\t }\n\n\t /**\n\t * The base implementation of `_.every` without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if all elements pass the predicate check,\n\t * else `false`\n\t */\n\t function baseEvery(collection, predicate) {\n\t var result = true;\n\t baseEach(collection, function(value, index, collection) {\n\t result = !!predicate(value, index, collection);\n\t return result;\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.filter` without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\t function baseFilter(collection, predicate) {\n\t var result = [];\n\t baseEach(collection, function(value, index, collection) {\n\t if (predicate(value, index, collection)) {\n\t result.push(value);\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,\n\t * without support for callback shorthands and `this` binding, which iterates\n\t * over `collection` using the provided `eachFunc`.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @param {Function} eachFunc The function to iterate over `collection`.\n\t * @param {boolean} [retKey] Specify returning the key of the found element\n\t * instead of the element itself.\n\t * @returns {*} Returns the found element or its key, else `undefined`.\n\t */\n\t function baseFind(collection, predicate, eachFunc, retKey) {\n\t var result;\n\t eachFunc(collection, function(value, key, collection) {\n\t if (predicate(value, key, collection)) {\n\t result = retKey ? key : value;\n\t return false;\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.flatten` with added support for restricting\n\t * flattening and specifying the start index.\n\t *\n\t * @private\n\t * @param {Array} array The array to flatten.\n\t * @param {boolean} [isDeep] Specify a deep flatten.\n\t * @param {boolean} [isStrict] Restrict flattening to arrays and `arguments` objects.\n\t * @param {number} [fromIndex=0] The index to start from.\n\t * @returns {Array} Returns the new flattened array.\n\t */\n\t function baseFlatten(array, isDeep, isStrict, fromIndex) {\n\t var index = (fromIndex || 0) - 1,\n\t length = array.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index];\n\n\t if (isObjectLike(value) && isLength(value.length) && (isArray(value) || isArguments(value))) {\n\t if (isDeep) {\n\t // Recursively flatten arrays (susceptible to call stack limits).\n\t value = baseFlatten(value, isDeep, isStrict);\n\t }\n\t var valIndex = -1,\n\t valLength = value.length;\n\n\t result.length += valLength;\n\t while (++valIndex < valLength) {\n\t result[++resIndex] = value[valIndex];\n\t }\n\t } else if (!isStrict) {\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `baseForIn` and `baseForOwn` which iterates\n\t * over `object` properties returned by `keysFunc` invoking `iteratee` for\n\t * each property. Iterator functions may exit iteration early by explicitly\n\t * returning `false`.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseFor(object, iteratee, keysFunc) {\n\t var index = -1,\n\t iterable = toObject(object),\n\t props = keysFunc(object),\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\t if (iteratee(iterable[key], key, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * This function is like `baseFor` except that it iterates over properties\n\t * in the opposite order.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForRight(object, iteratee, keysFunc) {\n\t var iterable = toObject(object),\n\t props = keysFunc(object),\n\t length = props.length;\n\n\t while (length--) {\n\t var key = props[length];\n\t if (iteratee(iterable[key], key, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return object;\n\t }\n\n\t /**\n\t * The base implementation of `_.forIn` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForIn(object, iteratee) {\n\t return baseFor(object, iteratee, keysIn);\n\t }\n\n\t /**\n\t * The base implementation of `_.forOwn` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForOwn(object, iteratee) {\n\t return baseFor(object, iteratee, keys);\n\t }\n\n\t /**\n\t * The base implementation of `_.forOwnRight` without support for callback\n\t * shorthands and `this` binding.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\t function baseForOwnRight(object, iteratee) {\n\t return baseForRight(object, iteratee, keys);\n\t }\n\n\t /**\n\t * The base implementation of `_.functions` which creates an array of\n\t * `object` function property names filtered from those provided.\n\t *\n\t * @private\n\t * @param {Object} object The object to inspect.\n\t * @param {Array} props The property names to filter.\n\t * @returns {Array} Returns the new array of filtered property names.\n\t */\n\t function baseFunctions(object, props) {\n\t var index = -1,\n\t length = props.length,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var key = props[index];\n\t if (isFunction(object[key])) {\n\t result[++resIndex] = key;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.invoke` which requires additional arguments\n\t * to be provided as an array of arguments rather than individually.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|string} methodName The name of the method to invoke or\n\t * the function invoked per iteration.\n\t * @param {Array} [args] The arguments to invoke the method with.\n\t * @returns {Array} Returns the array of results.\n\t */\n\t function baseInvoke(collection, methodName, args) {\n\t var index = -1,\n\t isFunc = typeof methodName == 'function',\n\t length = collection ? collection.length : 0,\n\t result = isLength(length) ? Array(length) : [];\n\n\t baseEach(collection, function(value) {\n\t var func = isFunc ? methodName : (value != null && value[methodName]);\n\t result[++index] = func ? func.apply(value, args) : undefined;\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.isEqual` without support for `this` binding\n\t * `customizer` functions.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize comparing values.\n\t * @param {boolean} [isWhere] Specify performing partial comparisons.\n\t * @param {Array} [stackA] Tracks traversed `value` objects.\n\t * @param {Array} [stackB] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\t function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) {\n\t // Exit early for identical values.\n\t if (value === other) {\n\t // Treat `+0` vs. `-0` as not equal.\n\t return value !== 0 || (1 / value == 1 / other);\n\t }\n\t var valType = typeof value,\n\t othType = typeof other;\n\n\t // Exit early for unlike primitive values.\n\t if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||\n\t value == null || other == null) {\n\t // Return `false` unless both values are `NaN`.\n\t return value !== value && other !== other;\n\t }\n\t return baseIsEqualDeep(value, other, baseIsEqual, customizer, isWhere, stackA, stackB);\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqual` for arrays and objects which performs\n\t * deep comparisons and tracks traversed objects enabling objects with circular\n\t * references to be compared.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparing objects.\n\t * @param {boolean} [isWhere] Specify performing partial comparisons.\n\t * @param {Array} [stackA=[]] Tracks traversed `value` objects.\n\t * @param {Array} [stackB=[]] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, stackA, stackB) {\n\t var objIsArr = isArray(object),\n\t othIsArr = isArray(other),\n\t objTag = arrayTag,\n\t othTag = arrayTag;\n\n\t if (!objIsArr) {\n\t objTag = objToString.call(object);\n\t if (objTag == argsTag) {\n\t objTag = objectTag;\n\t } else if (objTag != objectTag) {\n\t objIsArr = isTypedArray(object);\n\t }\n\t }\n\t if (!othIsArr) {\n\t othTag = objToString.call(other);\n\t if (othTag == argsTag) {\n\t othTag = objectTag;\n\t } else if (othTag != objectTag) {\n\t othIsArr = isTypedArray(other);\n\t }\n\t }\n\t var objIsObj = objTag == objectTag,\n\t othIsObj = othTag == objectTag,\n\t isSameTag = objTag == othTag;\n\n\t if (isSameTag && !(objIsArr || objIsObj)) {\n\t return equalByTag(object, other, objTag);\n\t }\n\t var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n\t othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n\t if (valWrapped || othWrapped) {\n\t return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isWhere, stackA, stackB);\n\t }\n\t if (!isSameTag) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t // For more information on detecting circular references see https://es5.github.io/#JO.\n\t stackA || (stackA = []);\n\t stackB || (stackB = []);\n\n\t var length = stackA.length;\n\t while (length--) {\n\t if (stackA[length] == object) {\n\t return stackB[length] == other;\n\t }\n\t }\n\t // Add `object` and `other` to the stack of traversed objects.\n\t stackA.push(object);\n\t stackB.push(other);\n\n\t var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isWhere, stackA, stackB);\n\n\t stackA.pop();\n\t stackB.pop();\n\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.isMatch` without support for callback\n\t * shorthands or `this` binding.\n\t *\n\t * @private\n\t * @param {Object} source The object to inspect.\n\t * @param {Array} props The source property names to match.\n\t * @param {Array} values The source values to match.\n\t * @param {Array} strictCompareFlags Strict comparison flags for source values.\n\t * @param {Function} [customizer] The function to customize comparing objects.\n\t * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n\t */\n\t function baseIsMatch(object, props, values, strictCompareFlags, customizer) {\n\t var length = props.length;\n\t if (object == null) {\n\t return !length;\n\t }\n\t var index = -1,\n\t noCustomizer = !customizer;\n\n\t while (++index < length) {\n\t if ((noCustomizer && strictCompareFlags[index])\n\t ? values[index] !== object[props[index]]\n\t : !hasOwnProperty.call(object, props[index])\n\t ) {\n\t return false;\n\t }\n\t }\n\t index = -1;\n\t while (++index < length) {\n\t var key = props[index];\n\t if (noCustomizer && strictCompareFlags[index]) {\n\t var result = hasOwnProperty.call(object, key);\n\t } else {\n\t var objValue = object[key],\n\t srcValue = values[index];\n\n\t result = customizer ? customizer(objValue, srcValue, key) : undefined;\n\t if (typeof result == 'undefined') {\n\t result = baseIsEqual(srcValue, objValue, customizer, true);\n\t }\n\t }\n\t if (!result) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * The base implementation of `_.map` without support for callback shorthands\n\t * or `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\t function baseMap(collection, iteratee) {\n\t var result = [];\n\t baseEach(collection, function(value, key, collection) {\n\t result.push(iteratee(value, key, collection));\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.matches` which supports specifying whether\n\t * `source` should be cloned.\n\t *\n\t * @private\n\t * @param {Object} source The object of property values to match.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function baseMatches(source) {\n\t var props = keys(source),\n\t length = props.length;\n\n\t if (length == 1) {\n\t var key = props[0],\n\t value = source[key];\n\n\t if (isStrictComparable(value)) {\n\t return function(object) {\n\t return object != null && value === object[key] && hasOwnProperty.call(object, key);\n\t };\n\t }\n\t }\n\t var values = Array(length),\n\t strictCompareFlags = Array(length);\n\n\t while (length--) {\n\t value = source[props[length]];\n\t values[length] = value;\n\t strictCompareFlags[length] = isStrictComparable(value);\n\t }\n\t return function(object) {\n\t return baseIsMatch(object, props, values, strictCompareFlags);\n\t };\n\t }\n\n\t /**\n\t * The base implementation of `_.merge` without support for argument juggling,\n\t * multiple sources, and `this` binding `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {Function} [customizer] The function to customize merging properties.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates values with source counterparts.\n\t * @returns {Object} Returns the destination object.\n\t */\n\t function baseMerge(object, source, customizer, stackA, stackB) {\n\t var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source));\n\n\t (isSrcArr ? arrayEach : baseForOwn)(source, function(srcValue, key, source) {\n\t if (isObjectLike(srcValue)) {\n\t stackA || (stackA = []);\n\t stackB || (stackB = []);\n\t return baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n\t }\n\t var value = object[key],\n\t result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n\t isCommon = typeof result == 'undefined';\n\n\t if (isCommon) {\n\t result = srcValue;\n\t }\n\t if ((isSrcArr || typeof result != 'undefined') &&\n\t (isCommon || (result === result ? result !== value : value === value))) {\n\t object[key] = result;\n\t }\n\t });\n\t return object;\n\t }\n\n\t /**\n\t * A specialized version of `baseMerge` for arrays and objects which performs\n\t * deep merges and tracks traversed objects enabling objects with circular\n\t * references to be merged.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @param {string} key The key of the value to merge.\n\t * @param {Function} mergeFunc The function to merge values.\n\t * @param {Function} [customizer] The function to customize merging properties.\n\t * @param {Array} [stackA=[]] Tracks traversed source objects.\n\t * @param {Array} [stackB=[]] Associates values with source counterparts.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n\t var length = stackA.length,\n\t srcValue = source[key];\n\n\t while (length--) {\n\t if (stackA[length] == srcValue) {\n\t object[key] = stackB[length];\n\t return;\n\t }\n\t }\n\t var value = object[key],\n\t result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n\t isCommon = typeof result == 'undefined';\n\n\t if (isCommon) {\n\t result = srcValue;\n\t if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) {\n\t result = isArray(value)\n\t ? value\n\t : (value ? arrayCopy(value) : []);\n\t }\n\t else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n\t result = isArguments(value)\n\t ? toPlainObject(value)\n\t : (isPlainObject(value) ? value : {});\n\t }\n\t else {\n\t isCommon = false;\n\t }\n\t }\n\t // Add the source value to the stack of traversed objects and associate\n\t // it with its merged value.\n\t stackA.push(srcValue);\n\t stackB.push(result);\n\n\t if (isCommon) {\n\t // Recursively merge objects and arrays (susceptible to call stack limits).\n\t object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n\t } else if (result === result ? result !== value : value === value) {\n\t object[key] = result;\n\t }\n\t }\n\n\t /**\n\t * The base implementation of `_.property` which does not coerce `key` to a string.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new function.\n\t */\n\t function baseProperty(key) {\n\t return function(object) {\n\t return object == null ? undefined : object[key];\n\t };\n\t }\n\n\t /**\n\t * The base implementation of `_.pullAt` without support for individual\n\t * index arguments.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {number[]} indexes The indexes of elements to remove.\n\t * @returns {Array} Returns the new array of removed elements.\n\t */\n\t function basePullAt(array, indexes) {\n\t var length = indexes.length,\n\t result = baseAt(array, indexes);\n\n\t indexes.sort(baseCompareAscending);\n\t while (length--) {\n\t var index = parseFloat(indexes[length]);\n\t if (index != previous && isIndex(index)) {\n\t var previous = index;\n\t splice.call(array, index, 1);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.random` without support for argument juggling\n\t * and returning floating-point numbers.\n\t *\n\t * @private\n\t * @param {number} min The minimum possible value.\n\t * @param {number} max The maximum possible value.\n\t * @returns {number} Returns the random number.\n\t */\n\t function baseRandom(min, max) {\n\t return min + floor(nativeRandom() * (max - min + 1));\n\t }\n\n\t /**\n\t * The base implementation of `_.reduce` and `_.reduceRight` without support\n\t * for callback shorthands or `this` binding, which iterates over `collection`\n\t * using the provided `eachFunc`.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} accumulator The initial value.\n\t * @param {boolean} initFromCollection Specify using the first or last element\n\t * of `collection` as the initial value.\n\t * @param {Function} eachFunc The function to iterate over `collection`.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\t function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {\n\t eachFunc(collection, function(value, index, collection) {\n\t accumulator = initFromCollection\n\t ? (initFromCollection = false, value)\n\t : iteratee(accumulator, value, index, collection)\n\t });\n\t return accumulator;\n\t }\n\n\t /**\n\t * The base implementation of `setData` without support for hot loop detection.\n\t *\n\t * @private\n\t * @param {Function} func The function to associate metadata with.\n\t * @param {*} data The metadata.\n\t * @returns {Function} Returns `func`.\n\t */\n\t var baseSetData = !metaMap ? identity : function(func, data) {\n\t metaMap.set(func, data);\n\t return func;\n\t };\n\n\t /**\n\t * The base implementation of `_.slice` without an iteratee call guard.\n\t *\n\t * @private\n\t * @param {Array} array The array to slice.\n\t * @param {number} [start=0] The start position.\n\t * @param {number} [end=array.length] The end position.\n\t * @returns {Array} Returns the slice of `array`.\n\t */\n\t function baseSlice(array, start, end) {\n\t var index = -1,\n\t length = array.length;\n\n\t start = start == null ? 0 : (+start || 0);\n\t if (start < 0) {\n\t start = -start > length ? 0 : (length + start);\n\t }\n\t end = (typeof end == 'undefined' || end > length) ? length : (+end || 0);\n\t if (end < 0) {\n\t end += length;\n\t }\n\t length = start > end ? 0 : (end - start) >>> 0;\n\t start >>>= 0;\n\n\t var result = Array(length);\n\t while (++index < length) {\n\t result[index] = array[index + start];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.some` without support for callback shorthands\n\t * or `this` binding.\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\t function baseSome(collection, predicate) {\n\t var result;\n\n\t baseEach(collection, function(value, index, collection) {\n\t result = predicate(value, index, collection);\n\t return !result;\n\t });\n\t return !!result;\n\t }\n\n\t /**\n\t * The base implementation of `_.uniq` without support for callback shorthands\n\t * and `this` binding.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Function} [iteratee] The function invoked per iteration.\n\t * @returns {Array} Returns the new duplicate-value-free array.\n\t */\n\t function baseUniq(array, iteratee) {\n\t var index = -1,\n\t indexOf = getIndexOf(),\n\t length = array.length,\n\t isCommon = indexOf == baseIndexOf,\n\t isLarge = isCommon && length >= 200,\n\t seen = isLarge && createCache(),\n\t result = [];\n\n\t if (seen) {\n\t indexOf = cacheIndexOf;\n\t isCommon = false;\n\t } else {\n\t isLarge = false;\n\t seen = iteratee ? [] : result;\n\t }\n\t outer:\n\t while (++index < length) {\n\t var value = array[index],\n\t computed = iteratee ? iteratee(value, index, array) : value;\n\n\t if (isCommon && value === value) {\n\t var seenIndex = seen.length;\n\t while (seenIndex--) {\n\t if (seen[seenIndex] === computed) {\n\t continue outer;\n\t }\n\t }\n\t if (iteratee) {\n\t seen.push(computed);\n\t }\n\t result.push(value);\n\t }\n\t else if (indexOf(seen, computed) < 0) {\n\t if (iteratee || isLarge) {\n\t seen.push(computed);\n\t }\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `_.values` and `_.valuesIn` which creates an\n\t * array of `object` property values corresponding to the property names\n\t * returned by `keysFunc`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array} props The property names to get values for.\n\t * @returns {Object} Returns the array of property values.\n\t */\n\t function baseValues(object, props) {\n\t var index = -1,\n\t length = props.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t result[index] = object[props[index]];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * The base implementation of `wrapperValue` which returns the result of\n\t * performing a sequence of actions on the unwrapped `value`, where each\n\t * successive action is supplied the return value of the previous.\n\t *\n\t * @private\n\t * @param {*} value The unwrapped value.\n\t * @param {Array} actions Actions to peform to resolve the unwrapped value.\n\t * @returns {*} Returns the resolved unwrapped value.\n\t */\n\t function baseWrapperValue(value, actions) {\n\t var result = value;\n\t if (result instanceof LazyWrapper) {\n\t result = result.value();\n\t }\n\t var index = -1,\n\t length = actions.length;\n\n\t while (++index < length) {\n\t var args = [result],\n\t action = actions[index];\n\n\t push.apply(args, action.args);\n\t result = action.func.apply(action.thisArg, args);\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Performs a binary search of `array` to determine the index at which `value`\n\t * should be inserted into `array` in order to maintain its sort order.\n\t *\n\t * @private\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {boolean} [retHighest] Specify returning the highest, instead\n\t * of the lowest, index at which a value should be inserted into `array`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t */\n\t function binaryIndex(array, value, retHighest) {\n\t var low = 0,\n\t high = array ? array.length : low;\n\n\t if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n\t while (low < high) {\n\t var mid = (low + high) >>> 1,\n\t computed = array[mid];\n\n\t if (retHighest ? (computed <= value) : (computed < value)) {\n\t low = mid + 1;\n\t } else {\n\t high = mid;\n\t }\n\t }\n\t return high;\n\t }\n\t return binaryIndexBy(array, value, identity, retHighest);\n\t }\n\n\t /**\n\t * This function is like `binaryIndex` except that it invokes `iteratee` for\n\t * `value` and each element of `array` to compute their sort ranking. The\n\t * iteratee is invoked with one argument; (value).\n\t *\n\t * @private\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {boolean} [retHighest] Specify returning the highest, instead\n\t * of the lowest, index at which a value should be inserted into `array`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t */\n\t function binaryIndexBy(array, value, iteratee, retHighest) {\n\t value = iteratee(value);\n\n\t var low = 0,\n\t high = array ? array.length : 0,\n\t valIsNaN = value !== value,\n\t valIsUndef = typeof value == 'undefined';\n\n\t while (low < high) {\n\t var mid = floor((low + high) / 2),\n\t computed = iteratee(array[mid]),\n\t isReflexive = computed === computed;\n\n\t if (valIsNaN) {\n\t var setLow = isReflexive || retHighest;\n\t } else if (valIsUndef) {\n\t setLow = isReflexive && (retHighest || typeof computed != 'undefined');\n\t } else {\n\t setLow = retHighest ? (computed <= value) : (computed < value);\n\t }\n\t if (setLow) {\n\t low = mid + 1;\n\t } else {\n\t high = mid;\n\t }\n\t }\n\t return nativeMin(high, MAX_ARRAY_INDEX);\n\t }\n\n\t /**\n\t * A specialized version of `baseCallback` which only supports `this` binding\n\t * and specifying the number of arguments to provide to `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to bind.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {number} [argCount] The number of arguments to provide to `func`.\n\t * @returns {Function} Returns the callback.\n\t */\n\t function bindCallback(func, thisArg, argCount) {\n\t if (typeof func != 'function') {\n\t return identity;\n\t }\n\t if (typeof thisArg == 'undefined') {\n\t return func;\n\t }\n\t switch (argCount) {\n\t case 1: return function(value) {\n\t return func.call(thisArg, value);\n\t };\n\t case 3: return function(value, index, collection) {\n\t return func.call(thisArg, value, index, collection);\n\t };\n\t case 4: return function(accumulator, value, index, collection) {\n\t return func.call(thisArg, accumulator, value, index, collection);\n\t };\n\t case 5: return function(value, other, key, object, source) {\n\t return func.call(thisArg, value, other, key, object, source);\n\t };\n\t }\n\t return function() {\n\t return func.apply(thisArg, arguments);\n\t };\n\t }\n\n\t /**\n\t * Creates a clone of the given array buffer.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} buffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\t function bufferClone(buffer) {\n\t return bufferSlice.call(buffer, 0);\n\t }\n\t if (!bufferSlice) {\n\t // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.\n\t bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {\n\t var byteLength = buffer.byteLength,\n\t floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,\n\t offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,\n\t result = new ArrayBuffer(byteLength);\n\n\t if (floatLength) {\n\t var view = new Float64Array(result, 0, floatLength);\n\t view.set(new Float64Array(buffer, 0, floatLength));\n\t }\n\t if (byteLength != offset) {\n\t view = new Uint8Array(result, offset);\n\t view.set(new Uint8Array(buffer, offset));\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates an array that is the composition of partially applied arguments,\n\t * placeholders, and provided arguments into a single array of arguments.\n\t *\n\t * @private\n\t * @param {Array|Object} args The provided arguments.\n\t * @param {Array} partials The arguments to prepend to those provided.\n\t * @param {Array} holders The `partials` placeholder indexes.\n\t * @returns {Array} Returns the new array of composed arguments.\n\t */\n\t function composeArgs(args, partials, holders) {\n\t var holdersLength = holders.length,\n\t argsIndex = -1,\n\t argsLength = nativeMax(args.length - holdersLength, 0),\n\t leftIndex = -1,\n\t leftLength = partials.length,\n\t result = Array(argsLength + leftLength);\n\n\t while (++leftIndex < leftLength) {\n\t result[leftIndex] = partials[leftIndex];\n\t }\n\t while (++argsIndex < holdersLength) {\n\t result[holders[argsIndex]] = args[argsIndex];\n\t }\n\t while (argsLength--) {\n\t result[leftIndex++] = args[argsIndex++];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * This function is like `composeArgs` except that the arguments composition\n\t * is tailored for `_.partialRight`.\n\t *\n\t * @private\n\t * @param {Array|Object} args The provided arguments.\n\t * @param {Array} partials The arguments to append to those provided.\n\t * @param {Array} holders The `partials` placeholder indexes.\n\t * @returns {Array} Returns the new array of composed arguments.\n\t */\n\t function composeArgsRight(args, partials, holders) {\n\t var holdersIndex = -1,\n\t holdersLength = holders.length,\n\t argsIndex = -1,\n\t argsLength = nativeMax(args.length - holdersLength, 0),\n\t rightIndex = -1,\n\t rightLength = partials.length,\n\t result = Array(argsLength + rightLength);\n\n\t while (++argsIndex < argsLength) {\n\t result[argsIndex] = args[argsIndex];\n\t }\n\t var pad = argsIndex;\n\t while (++rightIndex < rightLength) {\n\t result[pad + rightIndex] = partials[rightIndex];\n\t }\n\t while (++holdersIndex < holdersLength) {\n\t result[pad + holders[holdersIndex]] = args[argsIndex++];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates a function that aggregates a collection, creating an accumulator\n\t * object composed from the results of running each element in the collection\n\t * through an iteratee. The `setter` sets the keys and values of the accumulator\n\t * object. If `initializer` is provided initializes the accumulator object.\n\t *\n\t * @private\n\t * @param {Function} setter The function to set keys and values of the accumulator object.\n\t * @param {Function} [initializer] The function to initialize the accumulator object.\n\t * @returns {Function} Returns the new aggregator function.\n\t */\n\t function createAggregator(setter, initializer) {\n\t return function(collection, iteratee, thisArg) {\n\t var result = initializer ? initializer() : {};\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\n\t if (isArray(collection)) {\n\t var index = -1,\n\t length = collection.length;\n\n\t while (++index < length) {\n\t var value = collection[index];\n\t setter(result, value, iteratee(value, index, collection), collection);\n\t }\n\t } else {\n\t baseEach(collection, function(value, key, collection) {\n\t setter(result, value, iteratee(value, key, collection), collection);\n\t });\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that assigns properties of source object(s) to a given\n\t * destination object.\n\t *\n\t * @private\n\t * @param {Function} assigner The function to assign values.\n\t * @returns {Function} Returns the new assigner function.\n\t */\n\t function createAssigner(assigner) {\n\t return function() {\n\t var length = arguments.length,\n\t object = arguments[0];\n\n\t if (length < 2 || object == null) {\n\t return object;\n\t }\n\t if (length > 3 && isIterateeCall(arguments[1], arguments[2], arguments[3])) {\n\t length = 2;\n\t }\n\t // Juggle arguments.\n\t if (length > 3 && typeof arguments[length - 2] == 'function') {\n\t var customizer = bindCallback(arguments[--length - 1], arguments[length--], 5);\n\t } else if (length > 2 && typeof arguments[length - 1] == 'function') {\n\t customizer = arguments[--length];\n\t }\n\t var index = 0;\n\t while (++index < length) {\n\t var source = arguments[index];\n\t if (source) {\n\t assigner(object, source, customizer);\n\t }\n\t }\n\t return object;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that wraps `func` and invokes it with the `this`\n\t * binding of `thisArg`.\n\t *\n\t * @private\n\t * @param {Function} func The function to bind.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @returns {Function} Returns the new bound function.\n\t */\n\t function createBindWrapper(func, thisArg) {\n\t var Ctor = createCtorWrapper(func);\n\n\t function wrapper() {\n\t return (this instanceof wrapper ? Ctor : func).apply(thisArg, arguments);\n\t }\n\t return wrapper;\n\t }\n\n\t /**\n\t * Creates a `Set` cache object to optimize linear searches of large arrays.\n\t *\n\t * @private\n\t * @param {Array} [values] The values to cache.\n\t * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.\n\t */\n\t var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {\n\t return new SetCache(values);\n\t };\n\n\t /**\n\t * Creates a function that produces compound words out of the words in a\n\t * given string.\n\t *\n\t * @private\n\t * @param {Function} callback The function to combine each word.\n\t * @returns {Function} Returns the new compounder function.\n\t */\n\t function createCompounder(callback) {\n\t return function(string) {\n\t var index = -1,\n\t array = words(deburr(string)),\n\t length = array.length,\n\t result = '';\n\n\t while (++index < length) {\n\t result = callback(result, array[index], index);\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that produces an instance of `Ctor` regardless of\n\t * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n\t *\n\t * @private\n\t * @param {Function} Ctor The constructor to wrap.\n\t * @returns {Function} Returns the new wrapped function.\n\t */\n\t function createCtorWrapper(Ctor) {\n\t return function() {\n\t var thisBinding = baseCreate(Ctor.prototype),\n\t result = Ctor.apply(thisBinding, arguments);\n\n\t // Mimic the constructor's `return` behavior.\n\t // See https://es5.github.io/#x13.2.2 for more details.\n\t return isObject(result) ? result : thisBinding;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that gets the extremum value of a collection.\n\t *\n\t * @private\n\t * @param {Function} arrayFunc The function to get the extremum value from an array.\n\t * @param {boolean} [isMin] Specify returning the minimum, instead of the maximum,\n\t * extremum value.\n\t * @returns {Function} Returns the new extremum function.\n\t */\n\t function createExtremum(arrayFunc, isMin) {\n\t return function(collection, iteratee, thisArg) {\n\t if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n\t iteratee = null;\n\t }\n\t var func = getCallback(),\n\t noIteratee = iteratee == null;\n\n\t if (!(func === baseCallback && noIteratee)) {\n\t noIteratee = false;\n\t iteratee = func(iteratee, thisArg, 3);\n\t }\n\t if (noIteratee) {\n\t var isArr = isArray(collection);\n\t if (!isArr && isString(collection)) {\n\t iteratee = charAtCallback;\n\t } else {\n\t return arrayFunc(isArr ? collection : toIterable(collection));\n\t }\n\t }\n\t return extremumBy(collection, iteratee, isMin);\n\t };\n\t }\n\n\t /**\n\t * Creates a function that wraps `func` and invokes it with optional `this`\n\t * binding of, partial application, and currying.\n\t *\n\t * @private\n\t * @param {Function|string} func The function or method name to reference.\n\t * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {Array} [partials] The arguments to prepend to those provided to the new function.\n\t * @param {Array} [holders] The `partials` placeholder indexes.\n\t * @param {Array} [partialsRight] The arguments to append to those provided to the new function.\n\t * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n\t * @param {Array} [argPos] The argument positions of the new function.\n\t * @param {number} [ary] The arity cap of `func`.\n\t * @param {number} [arity] The arity of `func`.\n\t * @returns {Function} Returns the new wrapped function.\n\t */\n\t function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n\t var isAry = bitmask & ARY_FLAG,\n\t isBind = bitmask & BIND_FLAG,\n\t isBindKey = bitmask & BIND_KEY_FLAG,\n\t isCurry = bitmask & CURRY_FLAG,\n\t isCurryBound = bitmask & CURRY_BOUND_FLAG,\n\t isCurryRight = bitmask & CURRY_RIGHT_FLAG;\n\n\t var Ctor = !isBindKey && createCtorWrapper(func),\n\t key = func;\n\n\t function wrapper() {\n\t // Avoid `arguments` object use disqualifying optimizations by\n\t // converting it to an array before providing it to other functions.\n\t var length = arguments.length,\n\t index = length,\n\t args = Array(length);\n\n\t while (index--) {\n\t args[index] = arguments[index];\n\t }\n\t if (partials) {\n\t args = composeArgs(args, partials, holders);\n\t }\n\t if (partialsRight) {\n\t args = composeArgsRight(args, partialsRight, holdersRight);\n\t }\n\t if (isCurry || isCurryRight) {\n\t var placeholder = wrapper.placeholder,\n\t argsHolders = replaceHolders(args, placeholder);\n\n\t length -= argsHolders.length;\n\t if (length < arity) {\n\t var newArgPos = argPos ? arrayCopy(argPos) : null,\n\t newArity = nativeMax(arity - length, 0),\n\t newsHolders = isCurry ? argsHolders : null,\n\t newHoldersRight = isCurry ? null : argsHolders,\n\t newPartials = isCurry ? args : null,\n\t newPartialsRight = isCurry ? null : args;\n\n\t bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n\t bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n\t if (!isCurryBound) {\n\t bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n\t }\n\t var result = createHybridWrapper(func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity);\n\t result.placeholder = placeholder;\n\t return result;\n\t }\n\t }\n\t var thisBinding = isBind ? thisArg : this;\n\t if (isBindKey) {\n\t func = thisBinding[key];\n\t }\n\t if (argPos) {\n\t args = reorder(args, argPos);\n\t }\n\t if (isAry && ary < args.length) {\n\t args.length = ary;\n\t }\n\t return (this instanceof wrapper ? (Ctor || createCtorWrapper(func)) : func).apply(thisBinding, args);\n\t }\n\t return wrapper;\n\t }\n\n\t /**\n\t * Creates the pad required for `string` based on the given padding length.\n\t * The `chars` string may be truncated if the number of padding characters\n\t * exceeds the padding length.\n\t *\n\t * @private\n\t * @param {string} string The string to create padding for.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the pad for `string`.\n\t */\n\t function createPad(string, length, chars) {\n\t var strLength = string.length;\n\t length = +length;\n\n\t if (strLength >= length || !nativeIsFinite(length)) {\n\t return '';\n\t }\n\t var padLength = length - strLength;\n\t chars = chars == null ? ' ' : (chars + '');\n\t return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength);\n\t }\n\n\t /**\n\t * Creates a function that wraps `func` and invokes it with the optional `this`\n\t * binding of `thisArg` and the `partials` prepended to those provided to\n\t * the wrapper.\n\t *\n\t * @private\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {Array} partials The arguments to prepend to those provided to the new function.\n\t * @returns {Function} Returns the new bound function.\n\t */\n\t function createPartialWrapper(func, bitmask, thisArg, partials) {\n\t var isBind = bitmask & BIND_FLAG,\n\t Ctor = createCtorWrapper(func);\n\n\t function wrapper() {\n\t // Avoid `arguments` object use disqualifying optimizations by\n\t // converting it to an array before providing it `func`.\n\t var argsIndex = -1,\n\t argsLength = arguments.length,\n\t leftIndex = -1,\n\t leftLength = partials.length,\n\t args = Array(argsLength + leftLength);\n\n\t while (++leftIndex < leftLength) {\n\t args[leftIndex] = partials[leftIndex];\n\t }\n\t while (argsLength--) {\n\t args[leftIndex++] = arguments[++argsIndex];\n\t }\n\t return (this instanceof wrapper ? Ctor : func).apply(isBind ? thisArg : this, args);\n\t }\n\t return wrapper;\n\t }\n\n\t /**\n\t * Creates a function that either curries or invokes `func` with optional\n\t * `this` binding and partially applied arguments.\n\t *\n\t * @private\n\t * @param {Function|string} func The function or method name to reference.\n\t * @param {number} bitmask The bitmask of flags.\n\t * The bitmask may be composed of the following flags:\n\t * 1 - `_.bind`\n\t * 2 - `_.bindKey`\n\t * 4 - `_.curry` or `_.curryRight` of a bound function\n\t * 8 - `_.curry`\n\t * 16 - `_.curryRight`\n\t * 32 - `_.partial`\n\t * 64 - `_.partialRight`\n\t * 128 - `_.rearg`\n\t * 256 - `_.ary`\n\t * @param {*} [thisArg] The `this` binding of `func`.\n\t * @param {Array} [partials] The arguments to be partially applied.\n\t * @param {Array} [holders] The `partials` placeholder indexes.\n\t * @param {Array} [argPos] The argument positions of the new function.\n\t * @param {number} [ary] The arity cap of `func`.\n\t * @param {number} [arity] The arity of `func`.\n\t * @returns {Function} Returns the new wrapped function.\n\t */\n\t function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n\t var isBindKey = bitmask & BIND_KEY_FLAG;\n\t if (!isBindKey && !isFunction(func)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t var length = partials ? partials.length : 0;\n\t if (!length) {\n\t bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n\t partials = holders = null;\n\t }\n\t length -= (holders ? holders.length : 0);\n\t if (bitmask & PARTIAL_RIGHT_FLAG) {\n\t var partialsRight = partials,\n\t holdersRight = holders;\n\n\t partials = holders = null;\n\t }\n\t var data = !isBindKey && getData(func),\n\t newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n\n\t if (data && data !== true) {\n\t mergeData(newData, data);\n\t bitmask = newData[1];\n\t arity = newData[9];\n\t }\n\t newData[9] = arity == null\n\t ? (isBindKey ? 0 : func.length)\n\t : (nativeMax(arity - length, 0) || 0);\n\n\t if (bitmask == BIND_FLAG) {\n\t var result = createBindWrapper(newData[0], newData[2]);\n\t } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {\n\t result = createPartialWrapper.apply(null, newData);\n\t } else {\n\t result = createHybridWrapper.apply(null, newData);\n\t }\n\t var setter = data ? baseSetData : setData;\n\t return setter(result, newData);\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqualDeep` for arrays with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Array} array The array to compare.\n\t * @param {Array} other The other array to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparing arrays.\n\t * @param {boolean} [isWhere] Specify performing partial comparisons.\n\t * @param {Array} [stackA] Tracks traversed `value` objects.\n\t * @param {Array} [stackB] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n\t */\n\t function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) {\n\t var index = -1,\n\t arrLength = array.length,\n\t othLength = other.length,\n\t result = true;\n\n\t if (arrLength != othLength && !(isWhere && othLength > arrLength)) {\n\t return false;\n\t }\n\t // Deep compare the contents, ignoring non-numeric properties.\n\t while (result && ++index < arrLength) {\n\t var arrValue = array[index],\n\t othValue = other[index];\n\n\t result = undefined;\n\t if (customizer) {\n\t result = isWhere\n\t ? customizer(othValue, arrValue, index)\n\t : customizer(arrValue, othValue, index);\n\t }\n\t if (typeof result == 'undefined') {\n\t // Recursively compare arrays (susceptible to call stack limits).\n\t if (isWhere) {\n\t var othIndex = othLength;\n\t while (othIndex--) {\n\t othValue = other[othIndex];\n\t result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB);\n\t if (result) {\n\t break;\n\t }\n\t }\n\t } else {\n\t result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB);\n\t }\n\t }\n\t }\n\t return !!result;\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqualDeep` for comparing objects of\n\t * the same `toStringTag`.\n\t *\n\t * **Note:** This function only supports comparing values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} value The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {string} tag The `toStringTag` of the objects to compare.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function equalByTag(object, other, tag) {\n\t switch (tag) {\n\t case boolTag:\n\t case dateTag:\n\t // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n\t // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n\t return +object == +other;\n\n\t case errorTag:\n\t return object.name == other.name && object.message == other.message;\n\n\t case numberTag:\n\t // Treat `NaN` vs. `NaN` as equal.\n\t return (object != +object)\n\t ? other != +other\n\t // But, treat `-0` vs. `+0` as not equal.\n\t : (object == 0 ? ((1 / object) == (1 / other)) : object == +other);\n\n\t case regexpTag:\n\t case stringTag:\n\t // Coerce regexes to strings and treat strings primitives and string\n\t // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n\t return object == (other + '');\n\t }\n\t return false;\n\t }\n\n\t /**\n\t * A specialized version of `baseIsEqualDeep` for objects with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparing values.\n\t * @param {boolean} [isWhere] Specify performing partial comparisons.\n\t * @param {Array} [stackA] Tracks traversed `value` objects.\n\t * @param {Array} [stackB] Tracks traversed `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\t function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) {\n\t var objProps = keys(object),\n\t objLength = objProps.length,\n\t othProps = keys(other),\n\t othLength = othProps.length;\n\n\t if (objLength != othLength && !isWhere) {\n\t return false;\n\t }\n\t var hasCtor,\n\t index = -1;\n\n\t while (++index < objLength) {\n\t var key = objProps[index],\n\t result = hasOwnProperty.call(other, key);\n\n\t if (result) {\n\t var objValue = object[key],\n\t othValue = other[key];\n\n\t result = undefined;\n\t if (customizer) {\n\t result = isWhere\n\t ? customizer(othValue, objValue, key)\n\t : customizer(objValue, othValue, key);\n\t }\n\t if (typeof result == 'undefined') {\n\t // Recursively compare objects (susceptible to call stack limits).\n\t result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB);\n\t }\n\t }\n\t if (!result) {\n\t return false;\n\t }\n\t hasCtor || (hasCtor = key == 'constructor');\n\t }\n\t if (!hasCtor) {\n\t var objCtor = object.constructor,\n\t othCtor = other.constructor;\n\n\t // Non `Object` object instances with different constructors are not equal.\n\t if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) &&\n\t !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t /**\n\t * Gets the extremum value of `collection` invoking `iteratee` for each value\n\t * in `collection` to generate the criterion by which the value is ranked.\n\t * The `iteratee` is invoked with three arguments; (value, index, collection).\n\t *\n\t * @private\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {boolean} [isMin] Specify returning the minimum, instead of the\n\t * maximum, extremum value.\n\t * @returns {*} Returns the extremum value.\n\t */\n\t function extremumBy(collection, iteratee, isMin) {\n\t var exValue = isMin ? POSITIVE_INFINITY : NEGATIVE_INFINITY,\n\t computed = exValue,\n\t result = computed;\n\n\t baseEach(collection, function(value, index, collection) {\n\t var current = iteratee(value, index, collection);\n\t if ((isMin ? current < computed : current > computed) || (current === exValue && current === result)) {\n\t computed = current;\n\t result = value;\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * Gets the appropriate \"callback\" function. If the `_.callback` method is\n\t * customized this function returns the custom method, otherwise it returns\n\t * the `baseCallback` function. If arguments are provided the chosen function\n\t * is invoked with them and its result is returned.\n\t *\n\t * @private\n\t * @returns {Function} Returns the chosen function or its result.\n\t */\n\t function getCallback(func, thisArg, argCount) {\n\t var result = lodash.callback || callback;\n\t result = result === callback ? baseCallback : result;\n\t return argCount ? result(func, thisArg, argCount) : result;\n\t }\n\n\t /**\n\t * Gets metadata for `func`.\n\t *\n\t * @private\n\t * @param {Function} func The function to query.\n\t * @returns {*} Returns the metadata for `func`.\n\t */\n\t var getData = !metaMap ? noop : function(func) {\n\t return metaMap.get(func);\n\t };\n\n\t /**\n\t * Gets the appropriate \"indexOf\" function. If the `_.indexOf` method is\n\t * customized this function returns the custom method, otherwise it returns\n\t * the `baseIndexOf` function. If arguments are provided the chosen function\n\t * is invoked with them and its result is returned.\n\t *\n\t * @private\n\t * @returns {Function|number} Returns the chosen function or its result.\n\t */\n\t function getIndexOf(collection, target, fromIndex) {\n\t var result = lodash.indexOf || indexOf;\n\t result = result === indexOf ? baseIndexOf : result;\n\t return collection ? result(collection, target, fromIndex) : result;\n\t }\n\n\t /**\n\t * Gets the view, applying any `transforms` to the `start` and `end` positions.\n\t *\n\t * @private\n\t * @param {number} start The start of the view.\n\t * @param {number} end The end of the view.\n\t * @param {Array} [transforms] The transformations to apply to the view.\n\t * @returns {Object} Returns an object containing the `start` and `end`\n\t * positions of the view.\n\t */\n\t function getView(start, end, transforms) {\n\t var index = -1,\n\t length = transforms ? transforms.length : 0;\n\n\t while (++index < length) {\n\t var data = transforms[index],\n\t size = data.size;\n\n\t switch (data.type) {\n\t case 'drop': start += size; break;\n\t case 'dropRight': end -= size; break;\n\t case 'take': end = nativeMin(end, start + size); break;\n\t case 'takeRight': start = nativeMax(start, end - size); break;\n\t }\n\t }\n\t return { 'start': start, 'end': end };\n\t }\n\n\t /**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\t function initCloneArray(array) {\n\t var length = array.length,\n\t result = new array.constructor(length);\n\n\t // Add array properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\t function initCloneObject(object) {\n\t var Ctor = object.constructor;\n\t if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {\n\t Ctor = Object;\n\t }\n\t return new Ctor;\n\t }\n\n\t /**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\t function initCloneByTag(object, tag, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return bufferClone(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t var buffer = object.buffer;\n\t return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t var result = new Ctor(object.source, reFlags.exec(object));\n\t result.lastIndex = object.lastIndex;\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Checks if `func` is eligible for `this` binding.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is eligible, else `false`.\n\t */\n\t function isBindable(func) {\n\t var support = lodash.support,\n\t result = !(support.funcNames ? func.name : support.funcDecomp);\n\n\t if (!result) {\n\t var source = fnToString.call(func);\n\t if (!support.funcNames) {\n\t result = !reFuncName.test(source);\n\t }\n\t if (!result) {\n\t // Check if `func` references the `this` keyword and store the result.\n\t result = reThis.test(source) || isNative(func);\n\t baseSetData(func, result);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\t function isIndex(value, length) {\n\t value = +value;\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return value > -1 && value % 1 == 0 && value < length;\n\t }\n\n\t /**\n\t * Checks if the provided arguments are from an iteratee call.\n\t *\n\t * @private\n\t * @param {*} value The potential iteratee value argument.\n\t * @param {*} index The potential iteratee index or key argument.\n\t * @param {*} object The potential iteratee object argument.\n\t * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n\t */\n\t function isIterateeCall(value, index, object) {\n\t if (!isObject(object)) {\n\t return false;\n\t }\n\t var type = typeof index;\n\t if (type == 'number') {\n\t var length = object.length,\n\t prereq = isLength(length) && isIndex(index, length);\n\t } else {\n\t prereq = type == 'string' && index in object;\n\t }\n\t return prereq && object[index] === value;\n\t }\n\n\t /**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This function is based on ES `ToLength`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n\t * for more details.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t */\n\t function isLength(value) {\n\t return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t }\n\n\t /**\n\t * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` if suitable for strict\n\t * equality comparisons, else `false`.\n\t */\n\t function isStrictComparable(value) {\n\t return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value));\n\t }\n\n\t /**\n\t * Merges the function metadata of `source` into `data`.\n\t *\n\t * Merging metadata reduces the number of wrappers required to invoke a function.\n\t * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n\t * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`\n\t * augment function arguments, making the order in which they are executed important,\n\t * preventing the merging of metadata. However, we make an exception for a safe\n\t * common case where curried functions have `_.ary` and or `_.rearg` applied.\n\t *\n\t * @private\n\t * @param {Array} data The destination metadata.\n\t * @param {Array} source The source metadata.\n\t * @returns {Array} Returns `data`.\n\t */\n\t function mergeData(data, source) {\n\t var bitmask = data[1],\n\t srcBitmask = source[1],\n\t newBitmask = bitmask | srcBitmask;\n\n\t var arityFlags = ARY_FLAG | REARG_FLAG,\n\t bindFlags = BIND_FLAG | BIND_KEY_FLAG,\n\t comboFlags = arityFlags | bindFlags | CURRY_BOUND_FLAG | CURRY_RIGHT_FLAG;\n\n\t var isAry = bitmask & ARY_FLAG && !(srcBitmask & ARY_FLAG),\n\t isRearg = bitmask & REARG_FLAG && !(srcBitmask & REARG_FLAG),\n\t argPos = (isRearg ? data : source)[7],\n\t ary = (isAry ? data : source)[8];\n\n\t var isCommon = !(bitmask >= REARG_FLAG && srcBitmask > bindFlags) &&\n\t !(bitmask > bindFlags && srcBitmask >= REARG_FLAG);\n\n\t var isCombo = (newBitmask >= arityFlags && newBitmask <= comboFlags) &&\n\t (bitmask < REARG_FLAG || ((isRearg || isAry) && argPos.length <= ary));\n\n\t // Exit early if metadata can't be merged.\n\t if (!(isCommon || isCombo)) {\n\t return data;\n\t }\n\t // Use source `thisArg` if available.\n\t if (srcBitmask & BIND_FLAG) {\n\t data[2] = source[2];\n\t // Set when currying a bound function.\n\t newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;\n\t }\n\t // Compose partial arguments.\n\t var value = source[3];\n\t if (value) {\n\t var partials = data[3];\n\t data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);\n\t data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);\n\t }\n\t // Compose partial right arguments.\n\t value = source[5];\n\t if (value) {\n\t partials = data[5];\n\t data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);\n\t data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);\n\t }\n\t // Use source `argPos` if available.\n\t value = source[7];\n\t if (value) {\n\t data[7] = arrayCopy(value);\n\t }\n\t // Use source `ary` if it's smaller.\n\t if (srcBitmask & ARY_FLAG) {\n\t data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n\t }\n\t // Use source `arity` if one is not provided.\n\t if (data[9] == null) {\n\t data[9] = source[9];\n\t }\n\t // Use source `func` and merge bitmasks.\n\t data[0] = source[0];\n\t data[1] = newBitmask;\n\n\t return data;\n\t }\n\n\t /**\n\t * A specialized version of `_.pick` that picks `object` properties specified\n\t * by the `props` array.\n\t *\n\t * @private\n\t * @param {Object} object The source object.\n\t * @param {string[]} props The property names to pick.\n\t * @returns {Object} Returns the new object.\n\t */\n\t function pickByArray(object, props) {\n\t object = toObject(object);\n\n\t var index = -1,\n\t length = props.length,\n\t result = {};\n\n\t while (++index < length) {\n\t var key = props[index];\n\t if (key in object) {\n\t result[key] = object[key];\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * A specialized version of `_.pick` that picks `object` properties `predicate`\n\t * returns truthy for.\n\t *\n\t * @private\n\t * @param {Object} object The source object.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Object} Returns the new object.\n\t */\n\t function pickByCallback(object, predicate) {\n\t var result = {};\n\t baseForIn(object, function(value, key, object) {\n\t if (predicate(value, key, object)) {\n\t result[key] = value;\n\t }\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * Reorder `array` according to the specified indexes where the element at\n\t * the first index is assigned as the first element, the element at\n\t * the second index is assigned as the second element, and so on.\n\t *\n\t * @private\n\t * @param {Array} array The array to reorder.\n\t * @param {Array} indexes The arranged array indexes.\n\t * @returns {Array} Returns `array`.\n\t */\n\t function reorder(array, indexes) {\n\t var arrLength = array.length,\n\t length = nativeMin(indexes.length, arrLength),\n\t oldArray = arrayCopy(array);\n\n\t while (length--) {\n\t var index = indexes[length];\n\t array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * Sets metadata for `func`.\n\t *\n\t * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n\t * period of time, it will trip its breaker and transition to an identity function\n\t * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)\n\t * for more details.\n\t *\n\t * @private\n\t * @param {Function} func The function to associate metadata with.\n\t * @param {*} data The metadata.\n\t * @returns {Function} Returns `func`.\n\t */\n\t var setData = (function() {\n\t var count = 0,\n\t lastCalled = 0;\n\n\t return function(key, value) {\n\t var stamp = now(),\n\t remaining = HOT_SPAN - (stamp - lastCalled);\n\n\t lastCalled = stamp;\n\t if (remaining > 0) {\n\t if (++count >= HOT_COUNT) {\n\t return key;\n\t }\n\t } else {\n\t count = 0;\n\t }\n\t return baseSetData(key, value);\n\t };\n\t }());\n\n\t /**\n\t * A fallback implementation of `_.isPlainObject` which checks if `value`\n\t * is an object created by the `Object` constructor or has a `[[Prototype]]`\n\t * of `null`.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t */\n\t function shimIsPlainObject(value) {\n\t var Ctor,\n\t support = lodash.support;\n\n\t // Exit early for non `Object` objects.\n\t if (!(isObjectLike(value) && objToString.call(value) == objectTag) ||\n\t (!hasOwnProperty.call(value, 'constructor') &&\n\t (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n\t return false;\n\t }\n\t // IE < 9 iterates inherited properties before own properties. If the first\n\t // iterated property is an object's own property then there are no inherited\n\t // enumerable properties.\n\t var result;\n\t // In most environments an object's own properties are iterated before\n\t // its inherited properties. If the last iterated property is an object's\n\t // own property then there are no inherited enumerable properties.\n\t baseForIn(value, function(subValue, key) {\n\t result = key;\n\t });\n\t return typeof result == 'undefined' || hasOwnProperty.call(value, result);\n\t }\n\n\t /**\n\t * A fallback implementation of `Object.keys` which creates an array of the\n\t * own enumerable property names of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\t function shimKeys(object) {\n\t var props = keysIn(object),\n\t propsLength = props.length,\n\t length = propsLength && object.length,\n\t support = lodash.support;\n\n\t var allowIndexes = length && isLength(length) &&\n\t (isArray(object) || (support.nonEnumArgs && isArguments(object)));\n\n\t var index = -1,\n\t result = [];\n\n\t while (++index < propsLength) {\n\t var key = props[index];\n\t if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Converts `value` to an array-like object if it is not one.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {Array|Object} Returns the array-like object.\n\t */\n\t function toIterable(value) {\n\t if (value == null) {\n\t return [];\n\t }\n\t if (!isLength(value.length)) {\n\t return values(value);\n\t }\n\t return isObject(value) ? value : Object(value);\n\t }\n\n\t /**\n\t * Converts `value` to an object if it is not one.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {Object} Returns the object.\n\t */\n\t function toObject(value) {\n\t return isObject(value) ? value : Object(value);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates an array of elements split into groups the length of `size`.\n\t * If `collection` can't be split evenly, the final chunk will be the remaining\n\t * elements.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to process.\n\t * @param {numer} [size=1] The length of each chunk.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the new array containing chunks.\n\t * @example\n\t *\n\t * _.chunk(['a', 'b', 'c', 'd'], 2);\n\t * // => [['a', 'b'], ['c', 'd']]\n\t *\n\t * _.chunk(['a', 'b', 'c', 'd'], 3);\n\t * // => [['a', 'b', 'c'], ['d']]\n\t */\n\t function chunk(array, size, guard) {\n\t if (guard ? isIterateeCall(array, size, guard) : size == null) {\n\t size = 1;\n\t } else {\n\t size = nativeMax(+size || 1, 1);\n\t }\n\t var index = 0,\n\t length = array ? array.length : 0,\n\t resIndex = -1,\n\t result = Array(ceil(length / size));\n\n\t while (index < length) {\n\t result[++resIndex] = baseSlice(array, index, (index += size));\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array with all falsey values removed. The values `false`, `null`,\n\t * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to compact.\n\t * @returns {Array} Returns the new array of filtered values.\n\t * @example\n\t *\n\t * _.compact([0, 1, false, 2, '', 3]);\n\t * // => [1, 2, 3]\n\t */\n\t function compact(array) {\n\t var index = -1,\n\t length = array ? array.length : 0,\n\t resIndex = -1,\n\t result = [];\n\n\t while (++index < length) {\n\t var value = array[index];\n\t if (value) {\n\t result[++resIndex] = value;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array excluding all values of the provided arrays using\n\t * `SameValueZero` for equality comparisons.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to inspect.\n\t * @param {...Array} [values] The arrays of values to exclude.\n\t * @returns {Array} Returns the new array of filtered values.\n\t * @example\n\t *\n\t * _.difference([1, 2, 3], [5, 2, 10]);\n\t * // => [1, 3]\n\t */\n\t function difference() {\n\t var index = -1,\n\t length = arguments.length;\n\n\t while (++index < length) {\n\t var value = arguments[index];\n\t if (isArray(value) || isArguments(value)) {\n\t break;\n\t }\n\t }\n\t return baseDifference(value, baseFlatten(arguments, false, true, ++index));\n\t }\n\n\t /**\n\t * Creates a slice of `array` with `n` elements dropped from the beginning.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to drop.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.drop([1, 2, 3]);\n\t * // => [2, 3]\n\t *\n\t * _.drop([1, 2, 3], 2);\n\t * // => [3]\n\t *\n\t * _.drop([1, 2, 3], 5);\n\t * // => []\n\t *\n\t * _.drop([1, 2, 3], 0);\n\t * // => [1, 2, 3]\n\t */\n\t function drop(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t return baseSlice(array, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with `n` elements dropped from the end.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to drop.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.dropRight([1, 2, 3]);\n\t * // => [1, 2]\n\t *\n\t * _.dropRight([1, 2, 3], 2);\n\t * // => [1]\n\t *\n\t * _.dropRight([1, 2, 3], 5);\n\t * // => []\n\t *\n\t * _.dropRight([1, 2, 3], 0);\n\t * // => [1, 2, 3]\n\t */\n\t function dropRight(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t n = length - (+n || 0);\n\t return baseSlice(array, 0, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` excluding elements dropped from the end.\n\t * Elements are dropped until `predicate` returns falsey. The predicate is\n\t * bound to `thisArg` and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per element.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.dropRightWhile([1, 2, 3], function(n) { return n > 1; });\n\t * // => [1]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'status': 'busy', 'active': false },\n\t * { 'user': 'fred', 'status': 'busy', 'active': true },\n\t * { 'user': 'pebbles', 'status': 'away', 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.dropRightWhile(users, 'active'), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.pluck(_.dropRightWhile(users, { 'status': 'away' }), 'user');\n\t * // => ['barney', 'fred']\n\t */\n\t function dropRightWhile(array, predicate, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (length-- && predicate(array[length], length, array)) {}\n\t return baseSlice(array, 0, length + 1);\n\t }\n\n\t /**\n\t * Creates a slice of `array` excluding elements dropped from the beginning.\n\t * Elements are dropped until `predicate` returns falsey. The predicate is\n\t * bound to `thisArg` and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per element.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.dropWhile([1, 2, 3], function(n) { return n < 3; });\n\t * // => [3]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'status': 'busy', 'active': true },\n\t * { 'user': 'fred', 'status': 'busy', 'active': false },\n\t * { 'user': 'pebbles', 'status': 'away', 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.dropWhile(users, 'active'), 'user');\n\t * // => ['fred', 'pebbles']\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.pluck(_.dropWhile(users, { 'status': 'busy' }), 'user');\n\t * // => ['pebbles']\n\t */\n\t function dropWhile(array, predicate, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t var index = -1;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (++index < length && predicate(array[index], index, array)) {}\n\t return baseSlice(array, index);\n\t }\n\n\t /**\n\t * This method is like `_.find` except that it returns the index of the first\n\t * element `predicate` returns truthy for, instead of the element itself.\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true },\n\t * { 'user': 'pebbles', 'age': 1, 'active': false }\n\t * ];\n\t *\n\t * _.findIndex(users, function(chr) { return chr.age < 40; });\n\t * // => 0\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.findIndex(users, { 'age': 1 });\n\t * // => 2\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.findIndex(users, 'active');\n\t * // => 1\n\t */\n\t function findIndex(array, predicate, thisArg) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (++index < length) {\n\t if (predicate(array[index], index, array)) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * This method is like `_.findIndex` except that it iterates over elements\n\t * of `collection` from right to left.\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': true },\n\t * { 'user': 'fred', 'age': 40, 'active': false },\n\t * { 'user': 'pebbles', 'age': 1, 'active': false }\n\t * ];\n\t *\n\t * _.findLastIndex(users, function(chr) { return chr.age < 40; });\n\t * // => 2\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.findLastIndex(users, { 'age': 40 });\n\t * // => 1\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.findLastIndex(users, 'active');\n\t * // => 0\n\t */\n\t function findLastIndex(array, predicate, thisArg) {\n\t var length = array ? array.length : 0;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (length--) {\n\t if (predicate(array[length], length, array)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * Gets the first element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias head\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {*} Returns the first element of `array`.\n\t * @example\n\t *\n\t * _.first([1, 2, 3]);\n\t * // => 1\n\t *\n\t * _.first([]);\n\t * // => undefined\n\t */\n\t function first(array) {\n\t return array ? array[0] : undefined;\n\t }\n\n\t /**\n\t * Flattens a nested array. If `isDeep` is `true` the array is recursively\n\t * flattened, otherwise it is only flattened a single level.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to flatten.\n\t * @param {boolean} [isDeep] Specify a deep flatten.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the new flattened array.\n\t * @example\n\t *\n\t * _.flatten([1, [2], [3, [[4]]]]);\n\t * // => [1, 2, 3, [[4]]];\n\t *\n\t * // using `isDeep`\n\t * _.flatten([1, [2], [3, [[4]]]], true);\n\t * // => [1, 2, 3, 4];\n\t */\n\t function flatten(array, isDeep, guard) {\n\t var length = array ? array.length : 0;\n\t if (guard && isIterateeCall(array, isDeep, guard)) {\n\t isDeep = false;\n\t }\n\t return length ? baseFlatten(array, isDeep) : [];\n\t }\n\n\t /**\n\t * Recursively flattens a nested array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to recursively flatten.\n\t * @returns {Array} Returns the new flattened array.\n\t * @example\n\t *\n\t * _.flattenDeep([1, [2], [3, [[4]]]]);\n\t * // => [1, 2, 3, 4];\n\t */\n\t function flattenDeep(array) {\n\t var length = array ? array.length : 0;\n\t return length ? baseFlatten(array, true) : [];\n\t }\n\n\t /**\n\t * Gets the index at which the first occurrence of `value` is found in `array`\n\t * using `SameValueZero` for equality comparisons. If `fromIndex` is negative,\n\t * it is used as the offset from the end of `array`. If `array` is sorted\n\t * providing `true` for `fromIndex` performs a faster binary search.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {boolean|number} [fromIndex=0] The index to search from or `true`\n\t * to perform a binary search on a sorted array.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t * @example\n\t *\n\t * _.indexOf([1, 2, 3, 1, 2, 3], 2);\n\t * // => 1\n\t *\n\t * // using `fromIndex`\n\t * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3);\n\t * // => 4\n\t *\n\t * // performing a binary search\n\t * _.indexOf([4, 4, 5, 5, 6, 6], 5, true);\n\t * // => 2\n\t */\n\t function indexOf(array, value, fromIndex) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return -1;\n\t }\n\t if (typeof fromIndex == 'number') {\n\t fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);\n\t } else if (fromIndex) {\n\t var index = binaryIndex(array, value),\n\t other = array[index];\n\n\t return (value === value ? value === other : other !== other) ? index : -1;\n\t }\n\t return baseIndexOf(array, value, fromIndex);\n\t }\n\n\t /**\n\t * Gets all but the last element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.initial([1, 2, 3]);\n\t * // => [1, 2]\n\t */\n\t function initial(array) {\n\t return dropRight(array, 1);\n\t }\n\n\t /**\n\t * Creates an array of unique values in all provided arrays using `SameValueZero`\n\t * for equality comparisons.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to inspect.\n\t * @returns {Array} Returns the new array of shared values.\n\t * @example\n\t *\n\t * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);\n\t * // => [1, 2]\n\t */\n\t function intersection() {\n\t var args = [],\n\t argsIndex = -1,\n\t argsLength = arguments.length,\n\t caches = [],\n\t indexOf = getIndexOf(),\n\t isCommon = indexOf == baseIndexOf;\n\n\t while (++argsIndex < argsLength) {\n\t var value = arguments[argsIndex];\n\t if (isArray(value) || isArguments(value)) {\n\t args.push(value);\n\t caches.push(isCommon && value.length >= 120 && createCache(argsIndex && value));\n\t }\n\t }\n\t argsLength = args.length;\n\t var array = args[0],\n\t index = -1,\n\t length = array ? array.length : 0,\n\t result = [],\n\t seen = caches[0];\n\n\t outer:\n\t while (++index < length) {\n\t value = array[index];\n\t if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value)) < 0) {\n\t argsIndex = argsLength;\n\t while (--argsIndex) {\n\t var cache = caches[argsIndex];\n\t if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) {\n\t continue outer;\n\t }\n\t }\n\t if (seen) {\n\t seen.push(value);\n\t }\n\t result.push(value);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Gets the last element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {*} Returns the last element of `array`.\n\t * @example\n\t *\n\t * _.last([1, 2, 3]);\n\t * // => 3\n\t */\n\t function last(array) {\n\t var length = array ? array.length : 0;\n\t return length ? array[length - 1] : undefined;\n\t }\n\n\t /**\n\t * This method is like `_.indexOf` except that it iterates over elements of\n\t * `array` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to search.\n\t * @param {*} value The value to search for.\n\t * @param {boolean|number} [fromIndex=array.length-1] The index to search from\n\t * or `true` to perform a binary search on a sorted array.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t * @example\n\t *\n\t * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2);\n\t * // => 4\n\t *\n\t * // using `fromIndex`\n\t * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3);\n\t * // => 1\n\t *\n\t * // performing a binary search\n\t * _.lastIndexOf([4, 4, 5, 5, 6, 6], 5, true);\n\t * // => 3\n\t */\n\t function lastIndexOf(array, value, fromIndex) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return -1;\n\t }\n\t var index = length;\n\t if (typeof fromIndex == 'number') {\n\t index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;\n\t } else if (fromIndex) {\n\t index = binaryIndex(array, value, true) - 1;\n\t var other = array[index];\n\t return (value === value ? value === other : other !== other) ? index : -1;\n\t }\n\t if (value !== value) {\n\t return indexOfNaN(array, index, true);\n\t }\n\t while (index--) {\n\t if (array[index] === value) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t }\n\n\t /**\n\t * Removes all provided values from `array` using `SameValueZero` for equality\n\t * comparisons.\n\t *\n\t * **Notes:**\n\t * - Unlike `_.without`, this method mutates `array`.\n\t * - `SameValueZero` comparisons are like strict equality comparisons, e.g. `===`,\n\t * except that `NaN` matches `NaN`. See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to modify.\n\t * @param {...*} [values] The values to remove.\n\t * @returns {Array} Returns `array`.\n\t * @example\n\t *\n\t * var array = [1, 2, 3, 1, 2, 3];\n\t * _.pull(array, 2, 3);\n\t * console.log(array);\n\t * // => [1, 1]\n\t */\n\t function pull() {\n\t var array = arguments[0];\n\t if (!(array && array.length)) {\n\t return array;\n\t }\n\t var index = 0,\n\t indexOf = getIndexOf(),\n\t length = arguments.length;\n\n\t while (++index < length) {\n\t var fromIndex = 0,\n\t value = arguments[index];\n\n\t while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {\n\t splice.call(array, fromIndex, 1);\n\t }\n\t }\n\t return array;\n\t }\n\n\t /**\n\t * Removes elements from `array` corresponding to the given indexes and returns\n\t * an array of the removed elements. Indexes may be specified as an array of\n\t * indexes or as individual arguments.\n\t *\n\t * **Note:** Unlike `_.at`, this method mutates `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to modify.\n\t * @param {...(number|number[])} [indexes] The indexes of elements to remove,\n\t * specified as individual indexes or arrays of indexes.\n\t * @returns {Array} Returns the new array of removed elements.\n\t * @example\n\t *\n\t * var array = [5, 10, 15, 20];\n\t * var evens = _.pullAt(array, [1, 3]);\n\t *\n\t * console.log(array);\n\t * // => [5, 15]\n\t *\n\t * console.log(evens);\n\t * // => [10, 20]\n\t */\n\t function pullAt(array) {\n\t return basePullAt(array || [], baseFlatten(arguments, false, false, 1));\n\t }\n\n\t /**\n\t * Removes all elements from `array` that `predicate` returns truthy for\n\t * and returns an array of the removed elements. The predicate is bound to\n\t * `thisArg` and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * **Note:** Unlike `_.filter`, this method mutates `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to modify.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the new array of removed elements.\n\t * @example\n\t *\n\t * var array = [1, 2, 3, 4];\n\t * var evens = _.remove(array, function(n) { return n % 2 == 0; });\n\t *\n\t * console.log(array);\n\t * // => [1, 3]\n\t *\n\t * console.log(evens);\n\t * // => [2, 4]\n\t */\n\t function remove(array, predicate, thisArg) {\n\t var index = -1,\n\t length = array ? array.length : 0,\n\t result = [];\n\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (++index < length) {\n\t var value = array[index];\n\t if (predicate(value, index, array)) {\n\t result.push(value);\n\t splice.call(array, index--, 1);\n\t length--;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Gets all but the first element of `array`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias tail\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.rest([1, 2, 3]);\n\t * // => [2, 3]\n\t */\n\t function rest(array) {\n\t return drop(array, 1);\n\t }\n\n\t /**\n\t * Creates a slice of `array` from `start` up to, but not including, `end`.\n\t *\n\t * **Note:** This function is used instead of `Array#slice` to support node\n\t * lists in IE < 9 and to ensure dense arrays are returned.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to slice.\n\t * @param {number} [start=0] The start position.\n\t * @param {number} [end=array.length] The end position.\n\t * @returns {Array} Returns the slice of `array`.\n\t */\n\t function slice(array, start, end) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n\t start = 0;\n\t end = length;\n\t }\n\t return baseSlice(array, start, end);\n\t }\n\n\t /**\n\t * Uses a binary search to determine the lowest index at which `value` should\n\t * be inserted into `array` in order to maintain its sort order. If an iteratee\n\t * function is provided it is invoked for `value` and each element of `array`\n\t * to compute their sort ranking. The iteratee is bound to `thisArg` and\n\t * invoked with one argument; (value).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t * @example\n\t *\n\t * _.sortedIndex([30, 50], 40);\n\t * // => 1\n\t *\n\t * _.sortedIndex([4, 4, 5, 5, 6, 6], 5);\n\t * // => 2\n\t *\n\t * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };\n\t *\n\t * // using an iteratee function\n\t * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {\n\t * return this.data[word];\n\t * }, dict);\n\t * // => 1\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');\n\t * // => 1\n\t */\n\t function sortedIndex(array, value, iteratee, thisArg) {\n\t var func = getCallback(iteratee);\n\t return (func === baseCallback && iteratee == null)\n\t ? binaryIndex(array, value)\n\t : binaryIndexBy(array, value, func(iteratee, thisArg, 1));\n\t }\n\n\t /**\n\t * This method is like `_.sortedIndex` except that it returns the highest\n\t * index at which `value` should be inserted into `array` in order to\n\t * maintain its sort order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The sorted array to inspect.\n\t * @param {*} value The value to evaluate.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {number} Returns the index at which `value` should be inserted\n\t * into `array`.\n\t * @example\n\t *\n\t * _.sortedLastIndex([4, 4, 5, 5, 6, 6], 5);\n\t * // => 4\n\t */\n\t function sortedLastIndex(array, value, iteratee, thisArg) {\n\t var func = getCallback(iteratee);\n\t return (func === baseCallback && iteratee == null)\n\t ? binaryIndex(array, value, true)\n\t : binaryIndexBy(array, value, func(iteratee, thisArg, 1), true);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with `n` elements taken from the beginning.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to take.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.take([1, 2, 3]);\n\t * // => [1]\n\t *\n\t * _.take([1, 2, 3], 2);\n\t * // => [1, 2]\n\t *\n\t * _.take([1, 2, 3], 5);\n\t * // => [1, 2, 3]\n\t *\n\t * _.take([1, 2, 3], 0);\n\t * // => []\n\t */\n\t function take(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t return baseSlice(array, 0, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with `n` elements taken from the end.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {number} [n=1] The number of elements to take.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.takeRight([1, 2, 3]);\n\t * // => [3]\n\t *\n\t * _.takeRight([1, 2, 3], 2);\n\t * // => [2, 3]\n\t *\n\t * _.takeRight([1, 2, 3], 5);\n\t * // => [1, 2, 3]\n\t *\n\t * _.takeRight([1, 2, 3], 0);\n\t * // => []\n\t */\n\t function takeRight(array, n, guard) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t if (guard ? isIterateeCall(array, n, guard) : n == null) {\n\t n = 1;\n\t }\n\t n = length - (+n || 0);\n\t return baseSlice(array, n < 0 ? 0 : n);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with elements taken from the end. Elements are\n\t * taken until `predicate` returns falsey. The predicate is bound to `thisArg`\n\t * and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per element.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.takeRightWhile([1, 2, 3], function(n) { return n > 1; });\n\t * // => [2, 3]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'status': 'busy', 'active': false },\n\t * { 'user': 'fred', 'status': 'busy', 'active': true },\n\t * { 'user': 'pebbles', 'status': 'away', 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.takeRightWhile(users, 'active'), 'user');\n\t * // => ['fred', 'pebbles']\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.pluck(_.takeRightWhile(users, { 'status': 'away' }), 'user');\n\t * // => ['pebbles']\n\t */\n\t function takeRightWhile(array, predicate, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (length-- && predicate(array[length], length, array)) {}\n\t return baseSlice(array, length + 1);\n\t }\n\n\t /**\n\t * Creates a slice of `array` with elements taken from the beginning. Elements\n\t * are taken until `predicate` returns falsey. The predicate is bound to\n\t * `thisArg` and invoked with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Array\n\t * @param {Array} array The array to query.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per element.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the slice of `array`.\n\t * @example\n\t *\n\t * _.takeWhile([1, 2, 3], function(n) { return n < 3; });\n\t * // => [1, 2]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'status': 'busy', 'active': true },\n\t * { 'user': 'fred', 'status': 'busy', 'active': false },\n\t * { 'user': 'pebbles', 'status': 'away', 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.takeWhile(users, 'active'), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.pluck(_.takeWhile(users, { 'status': 'busy' }), 'user');\n\t * // => ['barney', 'fred']\n\t */\n\t function takeWhile(array, predicate, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t var index = -1;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t while (++index < length && predicate(array[index], index, array)) {}\n\t return baseSlice(array, 0, index);\n\t }\n\n\t /**\n\t * Creates an array of unique values, in order, of the provided arrays using\n\t * `SameValueZero` for equality comparisons.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to inspect.\n\t * @returns {Array} Returns the new array of combined values.\n\t * @example\n\t *\n\t * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]);\n\t * // => [1, 2, 3, 5, 4]\n\t */\n\t function union() {\n\t return baseUniq(baseFlatten(arguments, false, true));\n\t }\n\n\t /**\n\t * Creates a duplicate-value-free version of an array using `SameValueZero`\n\t * for equality comparisons. Providing `true` for `isSorted` performs a faster\n\t * search algorithm for sorted arrays. If an iteratee function is provided it\n\t * is invoked for each value in the array to generate the criterion by which\n\t * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked\n\t * with three arguments; (value, index, array).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias unique\n\t * @category Array\n\t * @param {Array} array The array to inspect.\n\t * @param {boolean} [isSorted] Specify the array is sorted.\n\t * @param {Function|Object|string} [iteratee] The function invoked per iteration.\n\t * If a property name or object is provided it is used to create a \"_.property\"\n\t * or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new duplicate-value-free array.\n\t * @example\n\t *\n\t * _.uniq([1, 2, 1]);\n\t * // => [1, 2]\n\t *\n\t * // using `isSorted`\n\t * _.uniq([1, 1, 2], true);\n\t * // => [1, 2]\n\t *\n\t * // using an iteratee function\n\t * _.uniq([1, 2.5, 1.5, 2], function(n) { return this.floor(n); }, Math);\n\t * // => [1, 2.5]\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n\t * // => [{ 'x': 1 }, { 'x': 2 }]\n\t */\n\t function uniq(array, isSorted, iteratee, thisArg) {\n\t var length = array ? array.length : 0;\n\t if (!length) {\n\t return [];\n\t }\n\t // Juggle arguments.\n\t if (typeof isSorted != 'boolean' && isSorted != null) {\n\t thisArg = iteratee;\n\t iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;\n\t isSorted = false;\n\t }\n\t var func = getCallback();\n\t if (!(func === baseCallback && iteratee == null)) {\n\t iteratee = func(iteratee, thisArg, 3);\n\t }\n\t return (isSorted && getIndexOf() == baseIndexOf)\n\t ? sortedUniq(array, iteratee)\n\t : baseUniq(array, iteratee);\n\t }\n\n\t /**\n\t * This method is like `_.zip` except that it accepts an array of grouped\n\t * elements and creates an array regrouping the elements to their pre-`_.zip`\n\t * configuration.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array of grouped elements to process.\n\t * @returns {Array} Returns the new array of regrouped elements.\n\t * @example\n\t *\n\t * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);\n\t * // => [['fred', 30, true], ['barney', 40, false]]\n\t *\n\t * _.unzip(zipped);\n\t * // => [['fred', 'barney'], [30, 40], [true, false]]\n\t */\n\t function unzip(array) {\n\t var index = -1,\n\t length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t result[index] = arrayMap(array, baseProperty(index));\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array excluding all provided values using `SameValueZero` for\n\t * equality comparisons.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {Array} array The array to filter.\n\t * @param {...*} [values] The values to exclude.\n\t * @returns {Array} Returns the new array of filtered values.\n\t * @example\n\t *\n\t * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1);\n\t * // => [2, 3, 4]\n\t */\n\t function without(array) {\n\t return baseDifference(array, baseSlice(arguments, 1));\n\t }\n\n\t /**\n\t * Creates an array that is the symmetric difference of the provided arrays.\n\t * See [Wikipedia](https://en.wikipedia.org/wiki/Symmetric_difference) for\n\t * more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to inspect.\n\t * @returns {Array} Returns the new array of values.\n\t * @example\n\t *\n\t * _.xor([1, 2, 3], [5, 2, 1, 4]);\n\t * // => [3, 5, 4]\n\t *\n\t * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]);\n\t * // => [1, 4, 5]\n\t */\n\t function xor() {\n\t var index = -1,\n\t length = arguments.length;\n\n\t while (++index < length) {\n\t var array = arguments[index];\n\t if (isArray(array) || isArguments(array)) {\n\t var result = result\n\t ? baseDifference(result, array).concat(baseDifference(array, result))\n\t : array;\n\t }\n\t }\n\t return result ? baseUniq(result) : [];\n\t }\n\n\t /**\n\t * Creates an array of grouped elements, the first of which contains the first\n\t * elements of the given arrays, the second of which contains the second elements\n\t * of the given arrays, and so on.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Array\n\t * @param {...Array} [arrays] The arrays to process.\n\t * @returns {Array} Returns the new array of grouped elements.\n\t * @example\n\t *\n\t * _.zip(['fred', 'barney'], [30, 40], [true, false]);\n\t * // => [['fred', 30, true], ['barney', 40, false]]\n\t */\n\t function zip() {\n\t var length = arguments.length,\n\t array = Array(length);\n\n\t while (length--) {\n\t array[length] = arguments[length];\n\t }\n\t return unzip(array);\n\t }\n\n\t /**\n\t * Creates an object composed from arrays of property names and values. Provide\n\t * either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]`\n\t * or two arrays, one of property names and one of corresponding values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias object\n\t * @category Array\n\t * @param {Array} props The property names.\n\t * @param {Array} [values=[]] The property values.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * _.zipObject(['fred', 'barney'], [30, 40]);\n\t * // => { 'fred': 30, 'barney': 40 }\n\t */\n\t function zipObject(props, values) {\n\t var index = -1,\n\t length = props ? props.length : 0,\n\t result = {};\n\n\t if (length && !values && !isArray(props[0])) {\n\t values = [];\n\t }\n\t while (++index < length) {\n\t var key = props[index];\n\t if (values) {\n\t result[key] = values[index];\n\t } else if (key) {\n\t result[key[0]] = key[1];\n\t }\n\t }\n\t return result;\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a `lodash` object that wraps `value` with explicit method\n\t * chaining enabled.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Chain\n\t * @param {*} value The value to wrap.\n\t * @returns {Object} Returns the new `lodash` object.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 },\n\t * { 'user': 'pebbles', 'age': 1 }\n\t * ];\n\t *\n\t * var youngest = _.chain(users)\n\t * .sortBy('age')\n\t * .map(function(chr) { return chr.user + ' is ' + chr.age; })\n\t * .first()\n\t * .value();\n\t * // => 'pebbles is 1'\n\t */\n\t function chain(value) {\n\t var result = lodash(value);\n\t result.__chain__ = true;\n\t return result;\n\t }\n\n\t /**\n\t * This method invokes `interceptor` and returns `value`. The interceptor is\n\t * bound to `thisArg` and invoked with one argument; (value). The purpose of\n\t * this method is to \"tap into\" a method chain in order to perform operations\n\t * on intermediate results within the chain.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Chain\n\t * @param {*} value The value to provide to `interceptor`.\n\t * @param {Function} interceptor The function to invoke.\n\t * @param {*} [thisArg] The `this` binding of `interceptor`.\n\t * @returns {*} Returns `value`.\n\t * @example\n\t *\n\t * _([1, 2, 3])\n\t * .tap(function(array) { array.pop(); })\n\t * .reverse()\n\t * .value();\n\t * // => [2, 1]\n\t */\n\t function tap(value, interceptor, thisArg) {\n\t interceptor.call(thisArg, value);\n\t return value;\n\t }\n\n\t /**\n\t * This method is like `_.tap` except that it returns the result of `interceptor`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Chain\n\t * @param {*} value The value to provide to `interceptor`.\n\t * @param {Function} interceptor The function to invoke.\n\t * @param {*} [thisArg] The `this` binding of `interceptor`.\n\t * @returns {*} Returns the result of `interceptor`.\n\t * @example\n\t *\n\t * _([1, 2, 3])\n\t * .last()\n\t * .thru(function(value) { return [value]; })\n\t * .value();\n\t * // => [3]\n\t */\n\t function thru(value, interceptor, thisArg) {\n\t return interceptor.call(thisArg, value);\n\t }\n\n\t /**\n\t * Enables explicit method chaining on the wrapper object.\n\t *\n\t * @name chain\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {*} Returns the `lodash` object.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * // without explicit chaining\n\t * _(users).first();\n\t * // => { 'user': 'barney', 'age': 36 }\n\t *\n\t * // with explicit chaining\n\t * _(users).chain()\n\t * .first()\n\t * .pick('user')\n\t * .value();\n\t * // => { 'user': 'barney' }\n\t */\n\t function wrapperChain() {\n\t return chain(this);\n\t }\n\n\t /**\n\t * Reverses the wrapped array so the first element becomes the last, the\n\t * second element becomes the second to last, and so on.\n\t *\n\t * **Note:** This method mutates the wrapped array.\n\t *\n\t * @name reverse\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {Object} Returns the new reversed `lodash` object.\n\t * @example\n\t *\n\t * var array = [1, 2, 3];\n\t *\n\t * _(array).reverse().value()\n\t * // => [3, 2, 1]\n\t *\n\t * console.log(array);\n\t * // => [3, 2, 1]\n\t */\n\t function wrapperReverse() {\n\t var value = this.__wrapped__;\n\t if (value instanceof LazyWrapper) {\n\t if (this.__actions__.length) {\n\t value = new LazyWrapper(this);\n\t }\n\t return new LodashWrapper(value.reverse());\n\t }\n\t return this.thru(function(value) {\n\t return value.reverse();\n\t });\n\t }\n\n\t /**\n\t * Produces the result of coercing the unwrapped value to a string.\n\t *\n\t * @name toString\n\t * @memberOf _\n\t * @category Chain\n\t * @returns {string} Returns the coerced string value.\n\t * @example\n\t *\n\t * _([1, 2, 3]).toString();\n\t * // => '1,2,3'\n\t */\n\t function wrapperToString() {\n\t return (this.value() + '');\n\t }\n\n\t /**\n\t * Executes the chained sequence to extract the unwrapped value.\n\t *\n\t * @name value\n\t * @memberOf _\n\t * @alias toJSON, valueOf\n\t * @category Chain\n\t * @returns {*} Returns the resolved unwrapped value.\n\t * @example\n\t *\n\t * _([1, 2, 3]).value();\n\t * // => [1, 2, 3]\n\t */\n\t function wrapperValue() {\n\t return baseWrapperValue(this.__wrapped__, this.__actions__);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates an array of elements corresponding to the given keys, or indexes,\n\t * of `collection`. Keys may be specified as individual arguments or as arrays\n\t * of keys.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {...(number|number[]|string|string[])} [props] The property names\n\t * or indexes of elements to pick, specified individually or in arrays.\n\t * @returns {Array} Returns the new array of picked elements.\n\t * @example\n\t *\n\t * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]);\n\t * // => ['a', 'c', 'e']\n\t *\n\t * _.at(['fred', 'barney', 'pebbles'], 0, 2);\n\t * // => ['fred', 'pebbles']\n\t */\n\t function at(collection) {\n\t var length = collection ? collection.length : 0;\n\t if (isLength(length)) {\n\t collection = toIterable(collection);\n\t }\n\t return baseAt(collection, baseFlatten(arguments, false, false, 1));\n\t }\n\n\t /**\n\t * Checks if `value` is in `collection` using `SameValueZero` for equality\n\t * comparisons. If `fromIndex` is negative, it is used as the offset from\n\t * the end of `collection`.\n\t *\n\t * **Note:** `SameValueZero` comparisons are like strict equality comparisons,\n\t * e.g. `===`, except that `NaN` matches `NaN`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias contains, include\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {*} target The value to search for.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @returns {boolean} Returns `true` if a matching element is found, else `false`.\n\t * @example\n\t *\n\t * _.includes([1, 2, 3], 1);\n\t * // => true\n\t *\n\t * _.includes([1, 2, 3], 1, 2);\n\t * // => false\n\t *\n\t * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');\n\t * // => true\n\t *\n\t * _.includes('pebbles', 'eb');\n\t * // => true\n\t */\n\t function includes(collection, target, fromIndex) {\n\t var length = collection ? collection.length : 0;\n\t if (!isLength(length)) {\n\t collection = values(collection);\n\t length = collection.length;\n\t }\n\t if (!length) {\n\t return false;\n\t }\n\t if (typeof fromIndex == 'number') {\n\t fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);\n\t } else {\n\t fromIndex = 0;\n\t }\n\t return (typeof collection == 'string' || !isArray(collection) && isString(collection))\n\t ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)\n\t : (getIndexOf(collection, target, fromIndex) > -1);\n\t }\n\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through `iteratee`. The corresponding value\n\t * of each key is the number of times the key was returned by `iteratee`.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * _.countBy([4.3, 6.1, 6.4], function(n) { return Math.floor(n); });\n\t * // => { '4': 1, '6': 2 }\n\t *\n\t * _.countBy([4.3, 6.1, 6.4], function(n) { return this.floor(n); }, Math);\n\t * // => { '4': 1, '6': 2 }\n\t *\n\t * _.countBy(['one', 'two', 'three'], 'length');\n\t * // => { '3': 2, '5': 1 }\n\t */\n\t var countBy = createAggregator(function(result, value, key) {\n\t hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1);\n\t });\n\n\t /**\n\t * Checks if `predicate` returns truthy for **all** elements of `collection`.\n\t * The predicate is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias all\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {boolean} Returns `true` if all elements pass the predicate check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.every([true, 1, null, 'yes']);\n\t * // => false\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.every(users, 'age');\n\t * // => true\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.every(users, { 'age': 36 });\n\t * // => false\n\t */\n\t function every(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arrayEvery : baseEvery;\n\t if (typeof predicate != 'function' || typeof thisArg != 'undefined') {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t }\n\t return func(collection, predicate);\n\t }\n\n\t /**\n\t * Iterates over elements of `collection`, returning an array of all elements\n\t * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n\t * invoked with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias select\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * var evens = _.filter([1, 2, 3, 4], function(n) { return n % 2 == 0; });\n\t * // => [2, 4]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.filter(users, 'active'), 'user');\n\t * // => ['fred']\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.pluck(_.filter(users, { 'age': 36 }), 'user');\n\t * // => ['barney']\n\t */\n\t function filter(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arrayFilter : baseFilter;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return func(collection, predicate);\n\t }\n\n\t /**\n\t * Iterates over elements of `collection`, returning the first element\n\t * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n\t * invoked with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias detect\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true },\n\t * { 'user': 'pebbles', 'age': 1, 'active': false }\n\t * ];\n\t *\n\t * _.result(_.find(users, function(chr) { return chr.age < 40; }), 'user');\n\t * // => 'barney'\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.result(_.find(users, { 'age': 1 }), 'user');\n\t * // => 'pebbles'\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.result(_.find(users, 'active'), 'user');\n\t * // => 'fred'\n\t */\n\t function find(collection, predicate, thisArg) {\n\t if (isArray(collection)) {\n\t var index = findIndex(collection, predicate, thisArg);\n\t return index > -1 ? collection[index] : undefined;\n\t }\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return baseFind(collection, predicate, baseEach);\n\t }\n\n\t /**\n\t * This method is like `_.find` except that it iterates over elements of\n\t * `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * _.findLast([1, 2, 3, 4], function(n) { return n % 2 == 1; });\n\t * // => 3\n\t */\n\t function findLast(collection, predicate, thisArg) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return baseFind(collection, predicate, baseEachRight);\n\t }\n\n\t /**\n\t * Performs a deep comparison between each element in `collection` and the\n\t * source object, returning the first element that has equivalent property\n\t * values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Object} source The object of property values to match.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'status': 'busy' },\n\t * { 'user': 'fred', 'age': 40, 'status': 'busy' }\n\t * ];\n\t *\n\t * _.result(_.findWhere(users, { 'status': 'busy' }), 'user');\n\t * // => 'barney'\n\t *\n\t * _.result(_.findWhere(users, { 'age': 40 }), 'user');\n\t * // => 'fred'\n\t */\n\t function findWhere(collection, source) {\n\t return find(collection, baseMatches(source));\n\t }\n\n\t /**\n\t * Iterates over elements of `collection` invoking `iteratee` for each element.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection). Iterator functions may exit iteration early\n\t * by explicitly returning `false`.\n\t *\n\t * **Note:** As with other \"Collections\" methods, objects with a `length` property\n\t * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n\t * may be used for object iteration.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias each\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t * @example\n\t *\n\t * _([1, 2, 3]).forEach(function(n) { console.log(n); }).value();\n\t * // => logs each value from left to right and returns the array\n\t *\n\t * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(n, key) { console.log(n, key); });\n\t * // => logs each value-key pair and returns the object (iteration order is not guaranteed)\n\t */\n\t function forEach(collection, iteratee, thisArg) {\n\t return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))\n\t ? arrayEach(collection, iteratee)\n\t : baseEach(collection, bindCallback(iteratee, thisArg, 3));\n\t }\n\n\t /**\n\t * This method is like `_.forEach` except that it iterates over elements of\n\t * `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias eachRight\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array|Object|string} Returns `collection`.\n\t * @example\n\t *\n\t * _([1, 2, 3]).forEachRight(function(n) { console.log(n); }).join(',');\n\t * // => logs each value from right to left and returns the array\n\t */\n\t function forEachRight(collection, iteratee, thisArg) {\n\t return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))\n\t ? arrayEachRight(collection, iteratee)\n\t : baseEachRight(collection, bindCallback(iteratee, thisArg, 3));\n\t }\n\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through `iteratee`. The corresponding value\n\t * of each key is an array of the elements responsible for generating the key.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * _.groupBy([4.2, 6.1, 6.4], function(n) { return Math.floor(n); });\n\t * // => { '4': [4.2], '6': [6.1, 6.4] }\n\t *\n\t * _.groupBy([4.2, 6.1, 6.4], function(n) { return this.floor(n); }, Math);\n\t * // => { '4': [4.2], '6': [6.1, 6.4] }\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.groupBy(['one', 'two', 'three'], 'length');\n\t * // => { '3': ['one', 'two'], '5': ['three'] }\n\t */\n\t var groupBy = createAggregator(function(result, value, key) {\n\t if (hasOwnProperty.call(result, key)) {\n\t result[key].push(value);\n\t } else {\n\t result[key] = [value];\n\t }\n\t });\n\n\t /**\n\t * Creates an object composed of keys generated from the results of running\n\t * each element of `collection` through `iteratee`. The corresponding value\n\t * of each key is the last element responsible for generating the key. The\n\t * iteratee function is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the composed aggregate object.\n\t * @example\n\t *\n\t * var keyData = [\n\t * { 'dir': 'left', 'code': 97 },\n\t * { 'dir': 'right', 'code': 100 }\n\t * ];\n\t *\n\t * _.indexBy(keyData, 'dir');\n\t * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n\t *\n\t * _.indexBy(keyData, function(object) { return String.fromCharCode(object.code); });\n\t * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\t *\n\t * _.indexBy(keyData, function(object) { return this.fromCharCode(object.code); }, String);\n\t * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n\t */\n\t var indexBy = createAggregator(function(result, value, key) {\n\t result[key] = value;\n\t });\n\n\t /**\n\t * Invokes the method named by `methodName` on each element in `collection`,\n\t * returning an array of the results of each invoked method. Any additional\n\t * arguments are provided to each invoked method. If `methodName` is a function\n\t * it is invoked for, and `this` bound to, each element in `collection`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|string} methodName The name of the method to invoke or\n\t * the function invoked per iteration.\n\t * @param {...*} [args] The arguments to invoke the method with.\n\t * @returns {Array} Returns the array of results.\n\t * @example\n\t *\n\t * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');\n\t * // => [[1, 5, 7], [1, 2, 3]]\n\t *\n\t * _.invoke([123, 456], String.prototype.split, '');\n\t * // => [['1', '2', '3'], ['4', '5', '6']]\n\t */\n\t function invoke(collection, methodName) {\n\t return baseInvoke(collection, methodName, baseSlice(arguments, 2));\n\t }\n\n\t /**\n\t * Creates an array of values by running each element in `collection` through\n\t * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three\n\t * arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias collect\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new mapped array.\n\t * @example\n\t *\n\t * _.map([1, 2, 3], function(n) { return n * 3; });\n\t * // => [3, 6, 9]\n\t *\n\t * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(n) { return n * 3; });\n\t * // => [3, 6, 9] (iteration order is not guaranteed)\n\t *\n\t * var users = [\n\t * { 'user': 'barney' },\n\t * { 'user': 'fred' }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.map(users, 'user');\n\t * // => ['barney', 'fred']\n\t */\n\t function map(collection, iteratee, thisArg) {\n\t var func = isArray(collection) ? arrayMap : baseMap;\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\t return func(collection, iteratee);\n\t }\n\n\t /**\n\t * Gets the maximum value of `collection`. If `collection` is empty or falsey\n\t * `-Infinity` is returned. If an iteratee function is provided it is invoked\n\t * for each value in `collection` to generate the criterion by which the value\n\t * is ranked. The `iteratee` is bound to `thisArg` and invoked with three\n\t * arguments; (value, index, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee] The function invoked per iteration.\n\t * If a property name or object is provided it is used to create a \"_.property\"\n\t * or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the maximum value.\n\t * @example\n\t *\n\t * _.max([4, 2, 8, 6]);\n\t * // => 8\n\t *\n\t * _.max([]);\n\t * // => -Infinity\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.max(users, function(chr) { return chr.age; });\n\t * // => { 'user': 'fred', 'age': 40 };\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.max(users, 'age');\n\t * // => { 'user': 'fred', 'age': 40 };\n\t */\n\t var max = createExtremum(arrayMax);\n\n\t /**\n\t * Gets the minimum value of `collection`. If `collection` is empty or falsey\n\t * `Infinity` is returned. If an iteratee function is provided it is invoked\n\t * for each value in `collection` to generate the criterion by which the value\n\t * is ranked. The `iteratee` is bound to `thisArg` and invoked with three\n\t * arguments; (value, index, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [iteratee] The function invoked per iteration.\n\t * If a property name or object is provided it is used to create a \"_.property\"\n\t * or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the minimum value.\n\t * @example\n\t *\n\t * _.min([4, 2, 8, 6]);\n\t * // => 2\n\t *\n\t * _.min([]);\n\t * // => Infinity\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.min(users, function(chr) { return chr.age; });\n\t * // => { 'user': 'barney', 'age': 36 };\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.min(users, 'age');\n\t * // => { 'user': 'barney', 'age': 36 };\n\t */\n\t var min = createExtremum(arrayMin, true);\n\n\t /**\n\t * Creates an array of elements split into two groups, the first of which\n\t * contains elements `predicate` returns truthy for, while the second of which\n\t * contains elements `predicate` returns falsey for. The predicate is bound\n\t * to `thisArg` and invoked with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the array of grouped elements.\n\t * @example\n\t *\n\t * _.partition([1, 2, 3], function(n) { return n % 2; });\n\t * // => [[1, 3], [2]]\n\t *\n\t * _.partition([1.2, 2.3, 3.4], function(n) { return this.floor(n) % 2; }, Math);\n\t * // => [[1, 3], [2]]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true },\n\t * { 'user': 'pebbles', 'age': 1, 'active': false }\n\t * ];\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.map(_.partition(users, { 'age': 1 }), function(array) { return _.pluck(array, 'user'); });\n\t * // => [['pebbles'], ['barney', 'fred']]\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.map(_.partition(users, 'active'), function(array) { return _.pluck(array, 'user'); });\n\t * // => [['fred'], ['barney', 'pebbles']]\n\t */\n\t var partition = createAggregator(function(result, value, key) {\n\t result[key ? 0 : 1].push(value);\n\t }, function() { return [[], []]; });\n\n\t /**\n\t * Gets the value of `key` from all elements in `collection`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {string} key The key of the property to pluck.\n\t * @returns {Array} Returns the property values.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 }\n\t * ];\n\t *\n\t * _.pluck(users, 'user');\n\t * // => ['barney', 'fred']\n\t *\n\t * var userIndex = _.indexBy(users, 'user');\n\t * _.pluck(userIndex, 'age');\n\t * // => [36, 40] (iteration order is not guaranteed)\n\t */\n\t function pluck(collection, key) {\n\t return map(collection, baseProperty(key + ''));\n\t }\n\n\t /**\n\t * Reduces `collection` to a value which is the accumulated result of running\n\t * each element in `collection` through `iteratee`, where each successive\n\t * invocation is supplied the return value of the previous. If `accumulator`\n\t * is not provided the first element of `collection` is used as the initial\n\t * value. The `iteratee` is bound to `thisArg`and invoked with four arguments;\n\t * (accumulator, value, index|key, collection).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias foldl, inject\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var sum = _.reduce([1, 2, 3], function(sum, n) { return sum + n; });\n\t * // => 6\n\t *\n\t * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, n, key) {\n\t * result[key] = n * 3;\n\t * return result;\n\t * }, {});\n\t * // => { 'a': 3, 'b': 6, 'c': 9 } (iteration order is not guaranteed)\n\t */\n\t function reduce(collection, iteratee, accumulator, thisArg) {\n\t var func = isArray(collection) ? arrayReduce : baseReduce;\n\t return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEach);\n\t }\n\n\t /**\n\t * This method is like `_.reduce` except that it iterates over elements of\n\t * `collection` from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias foldr\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var array = [[0, 1], [2, 3], [4, 5]];\n\t * _.reduceRight(array, function(flattened, other) { return flattened.concat(other); }, []);\n\t * // => [4, 5, 2, 3, 0, 1]\n\t */\n\t function reduceRight(collection, iteratee, accumulator, thisArg) {\n\t var func = isArray(collection) ? arrayReduceRight : baseReduce;\n\t return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEachRight);\n\t }\n\n\t /**\n\t * The opposite of `_.filter`; this method returns the elements of `collection`\n\t * that `predicate` does **not** return truthy for.\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * var odds = _.reject([1, 2, 3, 4], function(n) { return n % 2 == 0; });\n\t * // => [1, 3]\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.reject(users, 'active'), 'user');\n\t * // => ['barney']\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.pluck(_.reject(users, { 'age': 36 }), 'user');\n\t * // => ['fred']\n\t */\n\t function reject(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arrayFilter : baseFilter;\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return func(collection, function(value, index, collection) {\n\t return !predicate(value, index, collection);\n\t });\n\t }\n\n\t /**\n\t * Gets a random element or `n` random elements from a collection.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to sample.\n\t * @param {number} [n] The number of elements to sample.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {*} Returns the random sample(s).\n\t * @example\n\t *\n\t * _.sample([1, 2, 3, 4]);\n\t * // => 2\n\t *\n\t * _.sample([1, 2, 3, 4], 2);\n\t * // => [3, 1]\n\t */\n\t function sample(collection, n, guard) {\n\t if (guard ? isIterateeCall(collection, n, guard) : n == null) {\n\t collection = toIterable(collection);\n\t var length = collection.length;\n\t return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;\n\t }\n\t var result = shuffle(collection);\n\t result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length);\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array of shuffled values, using a version of the Fisher-Yates\n\t * shuffle. See [Wikipedia](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to shuffle.\n\t * @returns {Array} Returns the new shuffled array.\n\t * @example\n\t *\n\t * _.shuffle([1, 2, 3, 4]);\n\t * // => [4, 1, 3, 2]\n\t */\n\t function shuffle(collection) {\n\t collection = toIterable(collection);\n\n\t var index = -1,\n\t length = collection.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t var rand = baseRandom(0, index);\n\t if (index != rand) {\n\t result[index] = result[rand];\n\t }\n\t result[rand] = collection[index];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Gets the size of `collection` by returning `collection.length` for\n\t * array-like values or the number of own enumerable properties for objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to inspect.\n\t * @returns {number} Returns the size of `collection`.\n\t * @example\n\t *\n\t * _.size([1, 2]);\n\t * // => 2\n\t *\n\t * _.size({ 'one': 1, 'two': 2, 'three': 3 });\n\t * // => 3\n\t *\n\t * _.size('pebbles');\n\t * // => 7\n\t */\n\t function size(collection) {\n\t var length = collection ? collection.length : 0;\n\t return isLength(length) ? length : keys(collection).length;\n\t }\n\n\t /**\n\t * Checks if `predicate` returns truthy for **any** element of `collection`.\n\t * The function returns as soon as it finds a passing value and does not iterate\n\t * over the entire collection. The predicate is bound to `thisArg` and invoked\n\t * with three arguments; (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias any\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.some([null, 0, 'yes', false], Boolean);\n\t * // => true\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': false },\n\t * { 'user': 'fred', 'age': 40, 'active': true }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.some(users, 'active');\n\t * // => true\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.some(users, { 'age': 1 });\n\t * // => false\n\t */\n\t function some(collection, predicate, thisArg) {\n\t var func = isArray(collection) ? arraySome : baseSome;\n\t if (typeof predicate != 'function' || typeof thisArg != 'undefined') {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t }\n\t return func(collection, predicate);\n\t }\n\n\t /**\n\t * Creates an array of elements, sorted in ascending order by the results of\n\t * running each element in a collection through `iteratee`. This method performs\n\t * a stable sort, that is, it preserves the original sort order of equal elements.\n\t * The `iteratee` is bound to `thisArg` and invoked with three arguments;\n\t * (value, index|key, collection).\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {Array|Function|Object|string} [iteratee=_.identity] The function\n\t * invoked per iteration. If a property name or an object is provided it is\n\t * used to create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Array} Returns the new sorted array.\n\t * @example\n\t *\n\t * _.sortBy([1, 2, 3], function(n) { return Math.sin(n); });\n\t * // => [3, 1, 2]\n\t *\n\t * _.sortBy([1, 2, 3], function(n) { return this.sin(n); }, Math);\n\t * // => [3, 1, 2]\n\t *\n\t * var users = [\n\t * { 'user': 'fred' },\n\t * { 'user': 'pebbles' },\n\t * { 'user': 'barney' }\n\t * ];\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.pluck(_.sortBy(users, 'user'), 'user');\n\t * // => ['barney', 'fred', 'pebbles']\n\t */\n\t function sortBy(collection, iteratee, thisArg) {\n\t var index = -1,\n\t length = collection ? collection.length : 0,\n\t result = isLength(length) ? Array(length) : [];\n\n\t if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n\t iteratee = null;\n\t }\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\t baseEach(collection, function(value, key, collection) {\n\t result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value };\n\t });\n\t return baseSortBy(result, compareAscending);\n\t }\n\n\t /**\n\t * This method is like `_.sortBy` except that it sorts by property names\n\t * instead of an iteratee function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to iterate over.\n\t * @param {...(string|string[])} props The property names to sort by,\n\t * specified as individual property names or arrays of property names.\n\t * @returns {Array} Returns the new sorted array.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36 },\n\t * { 'user': 'fred', 'age': 40 },\n\t * { 'user': 'barney', 'age': 26 },\n\t * { 'user': 'fred', 'age': 30 }\n\t * ];\n\t *\n\t * _.map(_.sortByAll(users, ['user', 'age']), _.values);\n\t * // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]]\n\t */\n\t function sortByAll(collection) {\n\t var args = arguments;\n\t if (args.length > 3 && isIterateeCall(args[1], args[2], args[3])) {\n\t args = [collection, args[1]];\n\t }\n\t var index = -1,\n\t length = collection ? collection.length : 0,\n\t props = baseFlatten(args, false, false, 1),\n\t result = isLength(length) ? Array(length) : [];\n\n\t baseEach(collection, function(value, key, collection) {\n\t var length = props.length,\n\t criteria = Array(length);\n\n\t while (length--) {\n\t criteria[length] = value == null ? undefined : value[props[length]];\n\t }\n\t result[++index] = { 'criteria': criteria, 'index': index, 'value': value };\n\t });\n\t return baseSortBy(result, compareMultipleAscending);\n\t }\n\n\t /**\n\t * Performs a deep comparison between each element in `collection` and the\n\t * source object, returning an array of all elements that have equivalent\n\t * property values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Collection\n\t * @param {Array|Object|string} collection The collection to search.\n\t * @param {Object} source The object of property values to match.\n\t * @returns {Array} Returns the new filtered array.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'status': 'busy', 'pets': ['hoppy'] },\n\t * { 'user': 'fred', 'age': 40, 'status': 'busy', 'pets': ['baby puss', 'dino'] }\n\t * ];\n\t *\n\t * _.pluck(_.where(users, { 'age': 36 }), 'user');\n\t * // => ['barney']\n\t *\n\t * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');\n\t * // => ['fred']\n\t *\n\t * _.pluck(_.where(users, { 'status': 'busy' }), 'user');\n\t * // => ['barney', 'fred']\n\t */\n\t function where(collection, source) {\n\t return filter(collection, baseMatches(source));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Gets the number of milliseconds that have elapsed since the Unix epoch\n\t * (1 January 1970 00:00:00 UTC).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Date\n\t * @example\n\t *\n\t * _.defer(function(stamp) { console.log(_.now() - stamp); }, _.now());\n\t * // => logs the number of milliseconds it took for the deferred function to be invoked\n\t */\n\t var now = nativeNow || function() {\n\t return new Date().getTime();\n\t };\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * The opposite of `_.before`; this method creates a function that invokes\n\t * `func` once it is called `n` or more times.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {number} n The number of calls before `func` is invoked.\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * var saves = ['profile', 'settings'];\n\t *\n\t * var done = _.after(saves.length, function() {\n\t * console.log('done saving!');\n\t * });\n\t *\n\t * _.forEach(saves, function(type) {\n\t * asyncSave({ 'type': type, 'complete': done });\n\t * });\n\t * // => logs 'done saving!' after the two async saves have completed\n\t */\n\t function after(n, func) {\n\t if (!isFunction(func)) {\n\t if (isFunction(n)) {\n\t var temp = n;\n\t n = func;\n\t func = temp;\n\t } else {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t }\n\t n = nativeIsFinite(n = +n) ? n : 0;\n\t return function() {\n\t if (--n < 1) {\n\t return func.apply(this, arguments);\n\t }\n\t };\n\t }\n\n\t /**\n\t * Creates a function that accepts up to `n` arguments ignoring any\n\t * additional arguments.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to cap arguments for.\n\t * @param {number} [n=func.length] The arity cap.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n\t * // => [6, 8, 10]\n\t */\n\t function ary(func, n, guard) {\n\t if (guard && isIterateeCall(func, n, guard)) {\n\t n = null;\n\t }\n\t n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);\n\t return createWrapper(func, ARY_FLAG, null, null, null, null, n);\n\t }\n\n\t /**\n\t * Creates a function that invokes `func`, with the `this` binding and arguments\n\t * of the created function, while it is called less than `n` times. Subsequent\n\t * calls to the created function return the result of the last `func` invocation.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {number} n The number of calls at which `func` is no longer invoked.\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * jQuery('#add').on('click', _.before(5, addContactToList));\n\t * // => allows adding up to 4 contacts to the list\n\t */\n\t function before(n, func) {\n\t var result;\n\t if (!isFunction(func)) {\n\t if (isFunction(n)) {\n\t var temp = n;\n\t n = func;\n\t func = temp;\n\t } else {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t }\n\t return function() {\n\t if (--n > 0) {\n\t result = func.apply(this, arguments);\n\t } else {\n\t func = null;\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that invokes `func` with the `this` binding of `thisArg`\n\t * and prepends any additional `_.bind` arguments to those provided to the\n\t * bound function.\n\t *\n\t * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n\t * may be used as a placeholder for partially applied arguments.\n\t *\n\t * **Note:** Unlike native `Function#bind` this method does not set the `length`\n\t * property of bound functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to bind.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {...*} [args] The arguments to be partially applied.\n\t * @returns {Function} Returns the new bound function.\n\t * @example\n\t *\n\t * var greet = function(greeting, punctuation) {\n\t * return greeting + ' ' + this.user + punctuation;\n\t * };\n\t *\n\t * var object = { 'user': 'fred' };\n\t *\n\t * var bound = _.bind(greet, object, 'hi');\n\t * bound('!');\n\t * // => 'hi fred!'\n\t *\n\t * // using placeholders\n\t * var bound = _.bind(greet, object, _, '!');\n\t * bound('hi');\n\t * // => 'hi fred!'\n\t */\n\t function bind(func, thisArg) {\n\t var bitmask = BIND_FLAG;\n\t if (arguments.length > 2) {\n\t var partials = baseSlice(arguments, 2),\n\t holders = replaceHolders(partials, bind.placeholder);\n\n\t bitmask |= PARTIAL_FLAG;\n\t }\n\t return createWrapper(func, bitmask, thisArg, partials, holders);\n\t }\n\n\t /**\n\t * Binds methods of an object to the object itself, overwriting the existing\n\t * method. Method names may be specified as individual arguments or as arrays\n\t * of method names. If no method names are provided all enumerable function\n\t * properties, own and inherited, of `object` are bound.\n\t *\n\t * **Note:** This method does not set the `length` property of bound functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Object} object The object to bind and assign the bound methods to.\n\t * @param {...(string|string[])} [methodNames] The object method names to bind,\n\t * specified as individual method names or arrays of method names.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var view = {\n\t * 'label': 'docs',\n\t * 'onClick': function() { console.log('clicked ' + this.label); }\n\t * };\n\t *\n\t * _.bindAll(view);\n\t * jQuery('#docs').on('click', view.onClick);\n\t * // => logs 'clicked docs' when the element is clicked\n\t */\n\t function bindAll(object) {\n\t return baseBindAll(object,\n\t arguments.length > 1\n\t ? baseFlatten(arguments, false, false, 1)\n\t : functions(object)\n\t );\n\t }\n\n\t /**\n\t * Creates a function that invokes the method at `object[key]` and prepends\n\t * any additional `_.bindKey` arguments to those provided to the bound function.\n\t *\n\t * This method differs from `_.bind` by allowing bound functions to reference\n\t * methods that may be redefined or don't yet exist.\n\t * See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern)\n\t * for more details.\n\t *\n\t * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for partially applied arguments.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Object} object The object the method belongs to.\n\t * @param {string} key The key of the method.\n\t * @param {...*} [args] The arguments to be partially applied.\n\t * @returns {Function} Returns the new bound function.\n\t * @example\n\t *\n\t * var object = {\n\t * 'user': 'fred',\n\t * 'greet': function(greeting, punctuation) {\n\t * return greeting + ' ' + this.user + punctuation;\n\t * }\n\t * };\n\t *\n\t * var bound = _.bindKey(object, 'greet', 'hi');\n\t * bound('!');\n\t * // => 'hi fred!'\n\t *\n\t * object.greet = function(greeting, punctuation) {\n\t * return greeting + 'ya ' + this.user + punctuation;\n\t * };\n\t *\n\t * bound('!');\n\t * // => 'hiya fred!'\n\t *\n\t * // using placeholders\n\t * var bound = _.bindKey(object, 'greet', _, '!');\n\t * bound('hi');\n\t * // => 'hiya fred!'\n\t */\n\t function bindKey(object, key) {\n\t var bitmask = BIND_FLAG | BIND_KEY_FLAG;\n\t if (arguments.length > 2) {\n\t var partials = baseSlice(arguments, 2),\n\t holders = replaceHolders(partials, bindKey.placeholder);\n\n\t bitmask |= PARTIAL_FLAG;\n\t }\n\t return createWrapper(key, bitmask, object, partials, holders);\n\t }\n\n\t /**\n\t * Creates a function that accepts one or more arguments of `func` that when\n\t * called either invokes `func` returning its result, if all `func` arguments\n\t * have been provided, or returns a function that accepts one or more of the\n\t * remaining `func` arguments, and so on. The arity of `func` may be specified\n\t * if `func.length` is not sufficient.\n\t *\n\t * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n\t * may be used as a placeholder for provided arguments.\n\t *\n\t * **Note:** This method does not set the `length` property of curried functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to curry.\n\t * @param {number} [arity=func.length] The arity of `func`.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Function} Returns the new curried function.\n\t * @example\n\t *\n\t * var abc = function(a, b, c) {\n\t * return [a, b, c];\n\t * };\n\t *\n\t * var curried = _.curry(abc);\n\t *\n\t * curried(1)(2)(3);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(1, 2)(3);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(1, 2, 3);\n\t * // => [1, 2, 3]\n\t *\n\t * // using placeholders\n\t * curried(1)(_, 3)(2);\n\t * // => [1, 2, 3]\n\t */\n\t function curry(func, arity, guard) {\n\t if (guard && isIterateeCall(func, arity, guard)) {\n\t arity = null;\n\t }\n\t var result = createWrapper(func, CURRY_FLAG, null, null, null, null, null, arity);\n\t result.placeholder = curry.placeholder;\n\t return result;\n\t }\n\n\t /**\n\t * This method is like `_.curry` except that arguments are applied to `func`\n\t * in the manner of `_.partialRight` instead of `_.partial`.\n\t *\n\t * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for provided arguments.\n\t *\n\t * **Note:** This method does not set the `length` property of curried functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to curry.\n\t * @param {number} [arity=func.length] The arity of `func`.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Function} Returns the new curried function.\n\t * @example\n\t *\n\t * var abc = function(a, b, c) {\n\t * return [a, b, c];\n\t * };\n\t *\n\t * var curried = _.curryRight(abc);\n\t *\n\t * curried(3)(2)(1);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(2, 3)(1);\n\t * // => [1, 2, 3]\n\t *\n\t * curried(1, 2, 3);\n\t * // => [1, 2, 3]\n\t *\n\t * // using placeholders\n\t * curried(3)(1, _)(2);\n\t * // => [1, 2, 3]\n\t */\n\t function curryRight(func, arity, guard) {\n\t if (guard && isIterateeCall(func, arity, guard)) {\n\t arity = null;\n\t }\n\t var result = createWrapper(func, CURRY_RIGHT_FLAG, null, null, null, null, null, arity);\n\t result.placeholder = curryRight.placeholder;\n\t return result;\n\t }\n\n\t /**\n\t * Creates a function that delays invoking `func` until after `wait` milliseconds\n\t * have elapsed since the last time it was invoked. The created function comes\n\t * with a `cancel` method to cancel delayed invocations. Provide an options\n\t * object to indicate that `func` should be invoked on the leading and/or\n\t * trailing edge of the `wait` timeout. Subsequent calls to the debounced\n\t * function return the result of the last `func` invocation.\n\t *\n\t * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n\t * on the trailing edge of the timeout only if the the debounced function is\n\t * invoked more than once during the `wait` timeout.\n\t *\n\t * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n\t * for details over the differences between `_.debounce` and `_.throttle`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to debounce.\n\t * @param {number} wait The number of milliseconds to delay.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.leading=false] Specify invoking on the leading\n\t * edge of the timeout.\n\t * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n\t * delayed before it is invoked.\n\t * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n\t * edge of the timeout.\n\t * @returns {Function} Returns the new debounced function.\n\t * @example\n\t *\n\t * // avoid costly calculations while the window size is in flux\n\t * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n\t *\n\t * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n\t * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n\t * 'leading': true,\n\t * 'trailing': false\n\t * }));\n\t *\n\t * // ensure `batchLog` is invoked once after 1 second of debounced calls\n\t * var source = new EventSource('/stream');\n\t * jQuery(source).on('message', _.debounce(batchLog, 250, {\n\t * 'maxWait': 1000\n\t * }));\n\t *\n\t * // cancel a debounced call\n\t * var todoChanges = _.debounce(batchLog, 1000);\n\t * Object.observe(models.todo, todoChanges);\n\t *\n\t * Object.observe(models, function(changes) {\n\t * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n\t * todoChanges.cancel();\n\t * }\n\t * }, ['delete']);\n\t *\n\t * // ...at some point `models.todo` is changed\n\t * models.todo.completed = true;\n\t *\n\t * // ...before 1 second has passed `models.todo` is deleted\n\t * // which cancels the debounced `todoChanges` call\n\t * delete models.todo;\n\t */\n\t function debounce(func, wait, options) {\n\t var args,\n\t maxTimeoutId,\n\t result,\n\t stamp,\n\t thisArg,\n\t timeoutId,\n\t trailingCall,\n\t lastCalled = 0,\n\t maxWait = false,\n\t trailing = true;\n\n\t if (!isFunction(func)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t wait = wait < 0 ? 0 : wait;\n\t if (options === true) {\n\t var leading = true;\n\t trailing = false;\n\t } else if (isObject(options)) {\n\t leading = options.leading;\n\t maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n\t trailing = 'trailing' in options ? options.trailing : trailing;\n\t }\n\n\t function cancel() {\n\t if (timeoutId) {\n\t clearTimeout(timeoutId);\n\t }\n\t if (maxTimeoutId) {\n\t clearTimeout(maxTimeoutId);\n\t }\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t }\n\n\t function delayed() {\n\t var remaining = wait - (now() - stamp);\n\t if (remaining <= 0 || remaining > wait) {\n\t if (maxTimeoutId) {\n\t clearTimeout(maxTimeoutId);\n\t }\n\t var isCalled = trailingCall;\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t if (isCalled) {\n\t lastCalled = now();\n\t result = func.apply(thisArg, args);\n\t if (!timeoutId && !maxTimeoutId) {\n\t args = thisArg = null;\n\t }\n\t }\n\t } else {\n\t timeoutId = setTimeout(delayed, remaining);\n\t }\n\t }\n\n\t function maxDelayed() {\n\t if (timeoutId) {\n\t clearTimeout(timeoutId);\n\t }\n\t maxTimeoutId = timeoutId = trailingCall = undefined;\n\t if (trailing || (maxWait !== wait)) {\n\t lastCalled = now();\n\t result = func.apply(thisArg, args);\n\t if (!timeoutId && !maxTimeoutId) {\n\t args = thisArg = null;\n\t }\n\t }\n\t }\n\n\t function debounced() {\n\t args = arguments;\n\t stamp = now();\n\t thisArg = this;\n\t trailingCall = trailing && (timeoutId || !leading);\n\n\t if (maxWait === false) {\n\t var leadingCall = leading && !timeoutId;\n\t } else {\n\t if (!maxTimeoutId && !leading) {\n\t lastCalled = stamp;\n\t }\n\t var remaining = maxWait - (stamp - lastCalled),\n\t isCalled = remaining <= 0 || remaining > maxWait;\n\n\t if (isCalled) {\n\t if (maxTimeoutId) {\n\t maxTimeoutId = clearTimeout(maxTimeoutId);\n\t }\n\t lastCalled = stamp;\n\t result = func.apply(thisArg, args);\n\t }\n\t else if (!maxTimeoutId) {\n\t maxTimeoutId = setTimeout(maxDelayed, remaining);\n\t }\n\t }\n\t if (isCalled && timeoutId) {\n\t timeoutId = clearTimeout(timeoutId);\n\t }\n\t else if (!timeoutId && wait !== maxWait) {\n\t timeoutId = setTimeout(delayed, wait);\n\t }\n\t if (leadingCall) {\n\t isCalled = true;\n\t result = func.apply(thisArg, args);\n\t }\n\t if (isCalled && !timeoutId && !maxTimeoutId) {\n\t args = thisArg = null;\n\t }\n\t return result;\n\t }\n\t debounced.cancel = cancel;\n\t return debounced;\n\t }\n\n\t /**\n\t * Defers invoking the `func` until the current call stack has cleared. Any\n\t * additional arguments are provided to `func` when it is invoked.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to defer.\n\t * @param {...*} [args] The arguments to invoke the function with.\n\t * @returns {number} Returns the timer id.\n\t * @example\n\t *\n\t * _.defer(function(text) { console.log(text); }, 'deferred');\n\t * // logs 'deferred' after one or more milliseconds\n\t */\n\t function defer(func) {\n\t return baseDelay(func, 1, arguments, 1);\n\t }\n\n\t /**\n\t * Invokes `func` after `wait` milliseconds. Any additional arguments are\n\t * provided to `func` when it is invoked.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to delay.\n\t * @param {number} wait The number of milliseconds to delay invocation.\n\t * @param {...*} [args] The arguments to invoke the function with.\n\t * @returns {number} Returns the timer id.\n\t * @example\n\t *\n\t * _.delay(function(text) { console.log(text); }, 1000, 'later');\n\t * // => logs 'later' after one second\n\t */\n\t function delay(func, wait) {\n\t return baseDelay(func, wait, arguments, 2);\n\t }\n\n\t /**\n\t * Creates a function that returns the result of invoking the provided\n\t * functions with the `this` binding of the created function, where each\n\t * successive invocation is supplied the return value of the previous.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {...Function} [funcs] Functions to invoke.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function add(x, y) {\n\t * return x + y;\n\t * }\n\t *\n\t * function square(n) {\n\t * return n * n;\n\t * }\n\t *\n\t * var addSquare = _.flow(add, square);\n\t * addSquare(1, 2);\n\t * // => 9\n\t */\n\t function flow() {\n\t var funcs = arguments,\n\t length = funcs.length;\n\n\t if (!length) {\n\t return function() {};\n\t }\n\t if (!arrayEvery(funcs, isFunction)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return function() {\n\t var index = 0,\n\t result = funcs[index].apply(this, arguments);\n\n\t while (++index < length) {\n\t result = funcs[index].call(this, result);\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * This method is like `_.flow` except that it creates a function that\n\t * invokes the provided functions from right to left.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias backflow, compose\n\t * @category Function\n\t * @param {...Function} [funcs] Functions to invoke.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function add(x, y) {\n\t * return x + y;\n\t * }\n\t *\n\t * function square(n) {\n\t * return n * n;\n\t * }\n\t *\n\t * var addSquare = _.flowRight(square, add);\n\t * addSquare(1, 2);\n\t * // => 9\n\t */\n\t function flowRight() {\n\t var funcs = arguments,\n\t fromIndex = funcs.length - 1;\n\n\t if (fromIndex < 0) {\n\t return function() {};\n\t }\n\t if (!arrayEvery(funcs, isFunction)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return function() {\n\t var index = fromIndex,\n\t result = funcs[index].apply(this, arguments);\n\n\t while (index--) {\n\t result = funcs[index].call(this, result);\n\t }\n\t return result;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that memoizes the result of `func`. If `resolver` is\n\t * provided it determines the cache key for storing the result based on the\n\t * arguments provided to the memoized function. By default, the first argument\n\t * provided to the memoized function is coerced to a string and used as the\n\t * cache key. The `func` is invoked with the `this` binding of the memoized\n\t * function.\n\t *\n\t * **Note:** The cache is exposed as the `cache` property on the memoized\n\t * function. Its creation may be customized by replacing the `_.memoize.Cache`\n\t * constructor with one whose instances implement the ES `Map` method interface\n\t * of `get`, `has`, and `set`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to have its output memoized.\n\t * @param {Function} [resolver] The function to resolve the cache key.\n\t * @returns {Function} Returns the new memoizing function.\n\t * @example\n\t *\n\t * var upperCase = _.memoize(function(string) {\n\t * return string.toUpperCase();\n\t * });\n\t *\n\t * upperCase('fred');\n\t * // => 'FRED'\n\t *\n\t * // modifying the result cache\n\t * upperCase.cache.set('fred', 'BARNEY');\n\t * upperCase('fred');\n\t * // => 'BARNEY'\n\t *\n\t * // replacing `_.memoize.Cache`\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'barney' };\n\t * var identity = _.memoize(_.identity);\n\t *\n\t * identity(object);\n\t * // => { 'user': 'fred' }\n\t * identity(other);\n\t * // => { 'user': 'fred' }\n\t *\n\t * _.memoize.Cache = WeakMap;\n\t * var identity = _.memoize(_.identity);\n\t *\n\t * identity(object);\n\t * // => { 'user': 'fred' }\n\t * identity(other);\n\t * // => { 'user': 'barney' }\n\t */\n\t function memoize(func, resolver) {\n\t if (!isFunction(func) || (resolver && !isFunction(resolver))) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t var memoized = function() {\n\t var cache = memoized.cache,\n\t key = resolver ? resolver.apply(this, arguments) : arguments[0];\n\n\t if (cache.has(key)) {\n\t return cache.get(key);\n\t }\n\t var result = func.apply(this, arguments);\n\t cache.set(key, result);\n\t return result;\n\t };\n\t memoized.cache = new memoize.Cache;\n\t return memoized;\n\t }\n\n\t /**\n\t * Creates a function that negates the result of the predicate `func`. The\n\t * `func` predicate is invoked with the `this` binding and arguments of the\n\t * created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} predicate The predicate to negate.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * function isEven(n) {\n\t * return n % 2 == 0;\n\t * }\n\t *\n\t * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n\t * // => [1, 3, 5]\n\t */\n\t function negate(predicate) {\n\t if (!isFunction(predicate)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t return function() {\n\t return !predicate.apply(this, arguments);\n\t };\n\t }\n\n\t /**\n\t * Creates a function that is restricted to invoking `func` once. Repeat calls\n\t * to the function return the value of the first call. The `func` is invoked\n\t * with the `this` binding of the created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @type Function\n\t * @category Function\n\t * @param {Function} func The function to restrict.\n\t * @returns {Function} Returns the new restricted function.\n\t * @example\n\t *\n\t * var initialize = _.once(createApplication);\n\t * initialize();\n\t * initialize();\n\t * // `initialize` invokes `createApplication` once\n\t */\n\t function once(func) {\n\t return before(func, 2);\n\t }\n\n\t /**\n\t * Creates a function that invokes `func` with `partial` arguments prepended\n\t * to those provided to the new function. This method is like `_.bind` except\n\t * it does **not** alter the `this` binding.\n\t *\n\t * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for partially applied arguments.\n\t *\n\t * **Note:** This method does not set the `length` property of partially\n\t * applied functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {...*} [args] The arguments to be partially applied.\n\t * @returns {Function} Returns the new partially applied function.\n\t * @example\n\t *\n\t * var greet = function(greeting, name) {\n\t * return greeting + ' ' + name;\n\t * };\n\t *\n\t * var sayHelloTo = _.partial(greet, 'hello');\n\t * sayHelloTo('fred');\n\t * // => 'hello fred'\n\t *\n\t * // using placeholders\n\t * var greetFred = _.partial(greet, _, 'fred');\n\t * greetFred('hi');\n\t * // => 'hi fred'\n\t */\n\t function partial(func) {\n\t var partials = baseSlice(arguments, 1),\n\t holders = replaceHolders(partials, partial.placeholder);\n\n\t return createWrapper(func, PARTIAL_FLAG, null, partials, holders);\n\t }\n\n\t /**\n\t * This method is like `_.partial` except that partially applied arguments\n\t * are appended to those provided to the new function.\n\t *\n\t * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n\t * builds, may be used as a placeholder for partially applied arguments.\n\t *\n\t * **Note:** This method does not set the `length` property of partially\n\t * applied functions.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to partially apply arguments to.\n\t * @param {...*} [args] The arguments to be partially applied.\n\t * @returns {Function} Returns the new partially applied function.\n\t * @example\n\t *\n\t * var greet = function(greeting, name) {\n\t * return greeting + ' ' + name;\n\t * };\n\t *\n\t * var greetFred = _.partialRight(greet, 'fred');\n\t * greetFred('hi');\n\t * // => 'hi fred'\n\t *\n\t * // using placeholders\n\t * var sayHelloTo = _.partialRight(greet, 'hello', _);\n\t * sayHelloTo('fred');\n\t * // => 'hello fred'\n\t */\n\t function partialRight(func) {\n\t var partials = baseSlice(arguments, 1),\n\t holders = replaceHolders(partials, partialRight.placeholder);\n\n\t return createWrapper(func, PARTIAL_RIGHT_FLAG, null, partials, holders);\n\t }\n\n\t /**\n\t * Creates a function that invokes `func` with arguments arranged according\n\t * to the specified indexes where the argument value at the first index is\n\t * provided as the first argument, the argument value at the second index is\n\t * provided as the second argument, and so on.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to rearrange arguments for.\n\t * @param {...(number|number[])} indexes The arranged argument indexes,\n\t * specified as individual indexes or arrays of indexes.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var rearged = _.rearg(function(a, b, c) {\n\t * return [a, b, c];\n\t * }, 2, 0, 1);\n\t *\n\t * rearged('b', 'c', 'a')\n\t * // => ['a', 'b', 'c']\n\t *\n\t * var map = _.rearg(_.map, [1, 0]);\n\t * map(function(n) { return n * 3; }, [1, 2, 3]);\n\t * // => [3, 6, 9]\n\t */\n\t function rearg(func) {\n\t var indexes = baseFlatten(arguments, false, false, 1);\n\t return createWrapper(func, REARG_FLAG, null, null, null, indexes);\n\t }\n\n\t /**\n\t * Creates a function that only invokes `func` at most once per every `wait`\n\t * milliseconds. The created function comes with a `cancel` method to cancel\n\t * delayed invocations. Provide an options object to indicate that `func`\n\t * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n\t * Subsequent calls to the throttled function return the result of the last\n\t * `func` call.\n\t *\n\t * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n\t * on the trailing edge of the timeout only if the the throttled function is\n\t * invoked more than once during the `wait` timeout.\n\t *\n\t * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n\t * for details over the differences between `_.throttle` and `_.debounce`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {Function} func The function to throttle.\n\t * @param {number} wait The number of milliseconds to throttle invocations to.\n\t * @param {Object} [options] The options object.\n\t * @param {boolean} [options.leading=true] Specify invoking on the leading\n\t * edge of the timeout.\n\t * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n\t * edge of the timeout.\n\t * @returns {Function} Returns the new throttled function.\n\t * @example\n\t *\n\t * // avoid excessively updating the position while scrolling\n\t * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n\t *\n\t * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n\t * var throttled = _.throttle(renewToken, 300000, { 'trailing': false })\n\t * jQuery('.interactive').on('click', throttled);\n\t *\n\t * // cancel a trailing throttled call\n\t * jQuery(window).on('popstate', throttled.cancel);\n\t */\n\t function throttle(func, wait, options) {\n\t var leading = true,\n\t trailing = true;\n\n\t if (!isFunction(func)) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t if (options === false) {\n\t leading = false;\n\t } else if (isObject(options)) {\n\t leading = 'leading' in options ? !!options.leading : leading;\n\t trailing = 'trailing' in options ? !!options.trailing : trailing;\n\t }\n\t debounceOptions.leading = leading;\n\t debounceOptions.maxWait = +wait;\n\t debounceOptions.trailing = trailing;\n\t return debounce(func, wait, debounceOptions);\n\t }\n\n\t /**\n\t * Creates a function that provides `value` to the wrapper function as its\n\t * first argument. Any additional arguments provided to the function are\n\t * appended to those provided to the wrapper function. The wrapper is invoked\n\t * with the `this` binding of the created function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Function\n\t * @param {*} value The value to wrap.\n\t * @param {Function} wrapper The wrapper function.\n\t * @returns {Function} Returns the new function.\n\t * @example\n\t *\n\t * var p = _.wrap(_.escape, function(func, text) {\n\t * return '

' + func(text) + '

';\n\t * });\n\t *\n\t * p('fred, barney, & pebbles');\n\t * // => '

fred, barney, & pebbles

'\n\t */\n\t function wrap(value, wrapper) {\n\t wrapper = wrapper == null ? identity : wrapper;\n\t return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,\n\t * otherwise they are assigned by reference. If `customizer` is provided it is\n\t * invoked to produce the cloned values. If `customizer` returns `undefined`\n\t * cloning is handled by the method instead. The `customizer` is bound to\n\t * `thisArg` and invoked with two argument; (value [, index|key, object]).\n\t *\n\t * **Note:** This method is loosely based on the structured clone algorithm.\n\t * The enumerable properties of `arguments` objects and objects created by\n\t * constructors other than `Object` are cloned to plain `Object` objects. An\n\t * empty object is returned for uncloneable values such as functions, DOM nodes,\n\t * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {Function} [customizer] The function to customize cloning values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {*} Returns the cloned value.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney' },\n\t * { 'user': 'fred' }\n\t * ];\n\t *\n\t * var shallow = _.clone(users);\n\t * shallow[0] === users[0];\n\t * // => true\n\t *\n\t * var deep = _.clone(users, true);\n\t * deep[0] === users[0];\n\t * // => false\n\t *\n\t * // using a customizer callback\n\t * var body = _.clone(document.body, function(value) {\n\t * return _.isElement(value) ? value.cloneNode(false) : undefined;\n\t * });\n\t *\n\t * body === document.body\n\t * // => false\n\t * body.nodeName\n\t * // => BODY\n\t * body.childNodes.length;\n\t * // => 0\n\t */\n\t function clone(value, isDeep, customizer, thisArg) {\n\t // Juggle arguments.\n\t if (typeof isDeep != 'boolean' && isDeep != null) {\n\t thisArg = customizer;\n\t customizer = isIterateeCall(value, isDeep, thisArg) ? null : isDeep;\n\t isDeep = false;\n\t }\n\t customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);\n\t return baseClone(value, isDeep, customizer);\n\t }\n\n\t /**\n\t * Creates a deep clone of `value`. If `customizer` is provided it is invoked\n\t * to produce the cloned values. If `customizer` returns `undefined` cloning\n\t * is handled by the method instead. The `customizer` is bound to `thisArg`\n\t * and invoked with two argument; (value [, index|key, object]).\n\t *\n\t * **Note:** This method is loosely based on the structured clone algorithm.\n\t * The enumerable properties of `arguments` objects and objects created by\n\t * constructors other than `Object` are cloned to plain `Object` objects. An\n\t * empty object is returned for uncloneable values such as functions, DOM nodes,\n\t * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to deep clone.\n\t * @param {Function} [customizer] The function to customize cloning values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {*} Returns the deep cloned value.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney' },\n\t * { 'user': 'fred' }\n\t * ];\n\t *\n\t * var deep = _.cloneDeep(users);\n\t * deep[0] === users[0];\n\t * // => false\n\t *\n\t * // using a customizer callback\n\t * var el = _.cloneDeep(document.body, function(value) {\n\t * return _.isElement(value) ? value.cloneNode(true) : undefined;\n\t * });\n\t *\n\t * body === document.body\n\t * // => false\n\t * body.nodeName\n\t * // => BODY\n\t * body.childNodes.length;\n\t * // => 20\n\t */\n\t function cloneDeep(value, customizer, thisArg) {\n\t customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);\n\t return baseClone(value, true, customizer);\n\t }\n\n\t /**\n\t * Checks if `value` is classified as an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * (function() { return _.isArguments(arguments); })();\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\t function isArguments(value) {\n\t var length = isObjectLike(value) ? value.length : undefined;\n\t return (isLength(length) && objToString.call(value) == argsTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * (function() { return _.isArray(arguments); })();\n\t * // => false\n\t */\n\t var isArray = nativeIsArray || function(value) {\n\t return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false;\n\t };\n\n\t /**\n\t * Checks if `value` is classified as a boolean primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isBoolean(false);\n\t * // => true\n\t *\n\t * _.isBoolean(null);\n\t * // => false\n\t */\n\t function isBoolean(value) {\n\t return (value === true || value === false || isObjectLike(value) && objToString.call(value) == boolTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `Date` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isDate(new Date);\n\t * // => true\n\t *\n\t * _.isDate('Mon April 23 2012');\n\t * // => false\n\t */\n\t function isDate(value) {\n\t return (isObjectLike(value) && objToString.call(value) == dateTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is a DOM element.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n\t * @example\n\t *\n\t * _.isElement(document.body);\n\t * // => true\n\t *\n\t * _.isElement('');\n\t * // => false\n\t */\n\t function isElement(value) {\n\t return (value && value.nodeType === 1 && isObjectLike(value) &&\n\t objToString.call(value).indexOf('Element') > -1) || false;\n\t }\n\t // Fallback for environments without DOM support.\n\t if (!support.dom) {\n\t isElement = function(value) {\n\t return (value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value)) || false;\n\t };\n\t }\n\n\t /**\n\t * Checks if a value is empty. A value is considered empty unless it is an\n\t * `arguments` object, array, string, or jQuery-like collection with a length\n\t * greater than `0` or an object with own enumerable properties.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {Array|Object|string} value The value to inspect.\n\t * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n\t * @example\n\t *\n\t * _.isEmpty(null);\n\t * // => true\n\t *\n\t * _.isEmpty(true);\n\t * // => true\n\t *\n\t * _.isEmpty(1);\n\t * // => true\n\t *\n\t * _.isEmpty([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isEmpty({ 'a': 1 });\n\t * // => false\n\t */\n\t function isEmpty(value) {\n\t if (value == null) {\n\t return true;\n\t }\n\t var length = value.length;\n\t if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) ||\n\t (isObjectLike(value) && isFunction(value.splice)))) {\n\t return !length;\n\t }\n\t return !keys(value).length;\n\t }\n\n\t /**\n\t * Performs a deep comparison between two values to determine if they are\n\t * equivalent. If `customizer` is provided it is invoked to compare values.\n\t * If `customizer` returns `undefined` comparisons are handled by the method\n\t * instead. The `customizer` is bound to `thisArg` and invoked with three\n\t * arguments; (value, other [, index|key]).\n\t *\n\t * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n\t * numbers, `Object` objects, regexes, and strings. Functions and DOM nodes\n\t * are **not** supported. Provide a customizer function to extend support\n\t * for comparing other values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize comparing values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred' };\n\t * var other = { 'user': 'fred' };\n\t *\n\t * object == other;\n\t * // => false\n\t *\n\t * _.isEqual(object, other);\n\t * // => true\n\t *\n\t * // using a customizer callback\n\t * var array = ['hello', 'goodbye'];\n\t * var other = ['hi', 'goodbye'];\n\t *\n\t * _.isEqual(array, other, function(value, other) {\n\t * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;\n\t * });\n\t * // => true\n\t */\n\t function isEqual(value, other, customizer, thisArg) {\n\t customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3);\n\t if (!customizer && isStrictComparable(value) && isStrictComparable(other)) {\n\t return value === other;\n\t }\n\t var result = customizer ? customizer(value, other) : undefined;\n\t return typeof result == 'undefined' ? baseIsEqual(value, other, customizer) : !!result;\n\t }\n\n\t /**\n\t * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n\t * `SyntaxError`, `TypeError`, or `URIError` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n\t * @example\n\t *\n\t * _.isError(new Error);\n\t * // => true\n\t *\n\t * _.isError(Error);\n\t * // => false\n\t */\n\t function isError(value) {\n\t return (isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is a finite primitive number.\n\t *\n\t * **Note:** This method is based on ES `Number.isFinite`. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n\t * @example\n\t *\n\t * _.isFinite(10);\n\t * // => true\n\t *\n\t * _.isFinite('10');\n\t * // => false\n\t *\n\t * _.isFinite(true);\n\t * // => false\n\t *\n\t * _.isFinite(Object(10));\n\t * // => false\n\t *\n\t * _.isFinite(Infinity);\n\t * // => false\n\t */\n\t var isFinite = nativeNumIsFinite || function(value) {\n\t return typeof value == 'number' && nativeIsFinite(value);\n\t };\n\n\t /**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\t function isFunction(value) {\n\t // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n\t // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n\t return typeof value == 'function' || false;\n\t }\n\t // Fallback for environments that return incorrect `typeof` operator results.\n\t if (isFunction(/x/) || (Uint8Array && !isFunction(Uint8Array))) {\n\t isFunction = function(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in older versions of Chrome and Safari which return 'function' for regexes\n\t // and Safari 8 equivalents which return 'object' for typed array constructors.\n\t return objToString.call(value) == funcTag;\n\t };\n\t }\n\n\t /**\n\t * Checks if `value` is the language type of `Object`.\n\t * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(1);\n\t * // => false\n\t */\n\t function isObject(value) {\n\t // Avoid a V8 JIT bug in Chrome 19-20.\n\t // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n\t var type = typeof value;\n\t return type == 'function' || (value && type == 'object') || false;\n\t }\n\n\t /**\n\t * Performs a deep comparison between `object` and `source` to determine if\n\t * `object` contains equivalent property values. If `customizer` is provided\n\t * it is invoked to compare values. If `customizer` returns `undefined`\n\t * comparisons are handled by the method instead. The `customizer` is bound\n\t * to `thisArg` and invoked with three arguments; (value, other, index|key).\n\t *\n\t * **Note:** This method supports comparing properties of arrays, booleans,\n\t * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions\n\t * and DOM nodes are **not** supported. Provide a customizer function to extend\n\t * support for comparing other values.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {Object} source The object to inspect.\n\t * @param {Object} source The object of property values to match.\n\t * @param {Function} [customizer] The function to customize comparing values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': 40 };\n\t *\n\t * _.isMatch(object, { 'age': 40 });\n\t * // => true\n\t *\n\t * _.isMatch(object, { 'age': 36 });\n\t * // => false\n\t *\n\t * // using a customizer callback\n\t * var object = { 'greeting': 'hello' };\n\t * var source = { 'greeting': 'hi' };\n\t *\n\t * _.isMatch(object, source, function(value, other) {\n\t * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;\n\t * });\n\t * // => true\n\t */\n\t function isMatch(object, source, customizer, thisArg) {\n\t var props = keys(source),\n\t length = props.length;\n\n\t customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3);\n\t if (!customizer && length == 1) {\n\t var key = props[0],\n\t value = source[key];\n\n\t if (isStrictComparable(value)) {\n\t return object != null && value === object[key] && hasOwnProperty.call(object, key);\n\t }\n\t }\n\t var values = Array(length),\n\t strictCompareFlags = Array(length);\n\n\t while (length--) {\n\t value = values[length] = source[props[length]];\n\t strictCompareFlags[length] = isStrictComparable(value);\n\t }\n\t return baseIsMatch(object, props, values, strictCompareFlags, customizer);\n\t }\n\n\t /**\n\t * Checks if `value` is `NaN`.\n\t *\n\t * **Note:** This method is not the same as native `isNaN` which returns `true`\n\t * for `undefined` and other non-numeric values. See the [ES5 spec](https://es5.github.io/#x15.1.2.4)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n\t * @example\n\t *\n\t * _.isNaN(NaN);\n\t * // => true\n\t *\n\t * _.isNaN(new Number(NaN));\n\t * // => true\n\t *\n\t * isNaN(undefined);\n\t * // => true\n\t *\n\t * _.isNaN(undefined);\n\t * // => false\n\t */\n\t function isNaN(value) {\n\t // An `NaN` primitive is the only value that is not equal to itself.\n\t // Perform the `toStringTag` check first to avoid errors with some host objects in IE.\n\t return isNumber(value) && value != +value;\n\t }\n\n\t /**\n\t * Checks if `value` is a native function.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n\t * @example\n\t *\n\t * _.isNative(Array.prototype.push);\n\t * // => true\n\t *\n\t * _.isNative(_);\n\t * // => false\n\t */\n\t function isNative(value) {\n\t if (value == null) {\n\t return false;\n\t }\n\t if (objToString.call(value) == funcTag) {\n\t return reNative.test(fnToString.call(value));\n\t }\n\t return (isObjectLike(value) && reHostCtor.test(value)) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n\t * @example\n\t *\n\t * _.isNull(null);\n\t * // => true\n\t *\n\t * _.isNull(void 0);\n\t * // => false\n\t */\n\t function isNull(value) {\n\t return value === null;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `Number` primitive or object.\n\t *\n\t * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n\t * as numbers, use the `_.isFinite` method.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isNumber(8.4);\n\t * // => true\n\t *\n\t * _.isNumber(NaN);\n\t * // => true\n\t *\n\t * _.isNumber('8.4');\n\t * // => false\n\t */\n\t function isNumber(value) {\n\t return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is a plain object, that is, an object created by the\n\t * `Object` constructor or one with a `[[Prototype]]` of `null`.\n\t *\n\t * **Note:** This method assumes objects created by the `Object` constructor\n\t * have no inherited enumerable properties.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * _.isPlainObject(new Foo);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t *\n\t * _.isPlainObject(Object.create(null));\n\t * // => true\n\t */\n\t var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n\t if (!(value && objToString.call(value) == objectTag)) {\n\t return false;\n\t }\n\t var valueOf = value.valueOf,\n\t objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\n\t return objProto\n\t ? (value == objProto || getPrototypeOf(value) == objProto)\n\t : shimIsPlainObject(value);\n\t };\n\n\t /**\n\t * Checks if `value` is classified as a `RegExp` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isRegExp(/abc/);\n\t * // => true\n\t *\n\t * _.isRegExp('/abc/');\n\t * // => false\n\t */\n\t function isRegExp(value) {\n\t return (isObjectLike(value) && objToString.call(value) == regexpTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a `String` primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isString('abc');\n\t * // => true\n\t *\n\t * _.isString(1);\n\t * // => false\n\t */\n\t function isString(value) {\n\t return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is classified as a typed array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n\t * @example\n\t *\n\t * _.isTypedArray(new Uint8Array);\n\t * // => true\n\t *\n\t * _.isTypedArray([]);\n\t * // => false\n\t */\n\t function isTypedArray(value) {\n\t return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false;\n\t }\n\n\t /**\n\t * Checks if `value` is `undefined`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n\t * @example\n\t *\n\t * _.isUndefined(void 0);\n\t * // => true\n\t *\n\t * _.isUndefined(null);\n\t * // => false\n\t */\n\t function isUndefined(value) {\n\t return typeof value == 'undefined';\n\t }\n\n\t /**\n\t * Converts `value` to an array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {Array} Returns the converted array.\n\t * @example\n\t *\n\t * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3);\n\t * // => [2, 3]\n\t */\n\t function toArray(value) {\n\t var length = value ? value.length : 0;\n\t if (!isLength(length)) {\n\t return values(value);\n\t }\n\t if (!length) {\n\t return [];\n\t }\n\t return arrayCopy(value);\n\t }\n\n\t /**\n\t * Converts `value` to a plain object flattening inherited enumerable\n\t * properties of `value` to own properties of the plain object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {Object} Returns the converted plain object.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.assign({ 'a': 1 }, new Foo);\n\t * // => { 'a': 1, 'b': 2 }\n\t *\n\t * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n\t * // => { 'a': 1, 'b': 2, 'c': 3 }\n\t */\n\t function toPlainObject(value) {\n\t return baseCopy(value, keysIn(value));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Assigns own enumerable properties of source object(s) to the destination\n\t * object. Subsequent sources overwrite property assignments of previous sources.\n\t * If `customizer` is provided it is invoked to produce the assigned values.\n\t * The `customizer` is bound to `thisArg` and invoked with five arguments;\n\t * (objectValue, sourceValue, key, object, source).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias extend\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @param {Function} [customizer] The function to customize assigning values.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n\t * // => { 'user': 'fred', 'age': 40 }\n\t *\n\t * // using a customizer callback\n\t * var defaults = _.partialRight(_.assign, function(value, other) {\n\t * return typeof value == 'undefined' ? other : value;\n\t * });\n\t *\n\t * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n\t * // => { 'user': 'barney', 'age': 36 }\n\t */\n\t var assign = createAssigner(baseAssign);\n\n\t /**\n\t * Creates an object that inherits from the given `prototype` object. If a\n\t * `properties` object is provided its own enumerable properties are assigned\n\t * to the created object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} prototype The object to inherit from.\n\t * @param {Object} [properties] The properties to assign to the object.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * function Shape() {\n\t * this.x = 0;\n\t * this.y = 0;\n\t * }\n\t *\n\t * function Circle() {\n\t * Shape.call(this);\n\t * }\n\t *\n\t * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle });\n\t *\n\t * var circle = new Circle;\n\t * circle instanceof Circle;\n\t * // => true\n\t *\n\t * circle instanceof Shape;\n\t * // => true\n\t */\n\t function create(prototype, properties, guard) {\n\t var result = baseCreate(prototype);\n\t if (guard && isIterateeCall(prototype, properties, guard)) {\n\t properties = null;\n\t }\n\t return properties ? baseCopy(properties, result, keys(properties)) : result;\n\t }\n\n\t /**\n\t * Assigns own enumerable properties of source object(s) to the destination\n\t * object for all destination properties that resolve to `undefined`. Once a\n\t * property is set, additional defaults of the same property are ignored.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n\t * // => { 'user': 'barney', 'age': 36 }\n\t */\n\t function defaults(object) {\n\t if (object == null) {\n\t return object;\n\t }\n\t var args = arrayCopy(arguments);\n\t args.push(assignDefaults);\n\t return assign.apply(undefined, args);\n\t }\n\n\t /**\n\t * This method is like `_.findIndex` except that it returns the key of the\n\t * first element `predicate` returns truthy for, instead of the element itself.\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = {\n\t * 'barney': { 'age': 36, 'active': true },\n\t * 'fred': { 'age': 40, 'active': false },\n\t * 'pebbles': { 'age': 1, 'active': true }\n\t * };\n\t *\n\t * _.findKey(users, function(chr) { return chr.age < 40; });\n\t * // => 'barney' (iteration order is not guaranteed)\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.findKey(users, { 'age': 1 });\n\t * // => 'pebbles'\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.findKey(users, 'active');\n\t * // => 'barney'\n\t */\n\t function findKey(object, predicate, thisArg) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return baseFind(object, predicate, baseForOwn, true);\n\t }\n\n\t /**\n\t * This method is like `_.findKey` except that it iterates over elements of\n\t * a collection in the opposite order.\n\t *\n\t * If a property name is provided for `predicate` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `predicate` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to search.\n\t * @param {Function|Object|string} [predicate=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = {\n\t * 'barney': { 'age': 36, 'active': true },\n\t * 'fred': { 'age': 40, 'active': false },\n\t * 'pebbles': { 'age': 1, 'active': true }\n\t * };\n\t *\n\t * _.findLastKey(users, function(chr) { return chr.age < 40; });\n\t * // => returns `pebbles` assuming `_.findKey` returns `barney`\n\t *\n\t * // using the \"_.matches\" callback shorthand\n\t * _.findLastKey(users, { 'age': 36 });\n\t * // => 'barney'\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.findLastKey(users, 'active');\n\t * // => 'pebbles'\n\t */\n\t function findLastKey(object, predicate, thisArg) {\n\t predicate = getCallback(predicate, thisArg, 3);\n\t return baseFind(object, predicate, baseForOwnRight, true);\n\t }\n\n\t /**\n\t * Iterates over own and inherited enumerable properties of an object invoking\n\t * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked\n\t * with three arguments; (value, key, object). Iterator functions may exit\n\t * iteration early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.forIn(new Foo, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed)\n\t */\n\t function forIn(object, iteratee, thisArg) {\n\t if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {\n\t iteratee = bindCallback(iteratee, thisArg, 3);\n\t }\n\t return baseFor(object, iteratee, keysIn);\n\t }\n\n\t /**\n\t * This method is like `_.forIn` except that it iterates over properties of\n\t * `object` in the opposite order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.forInRight(new Foo, function(value, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c'\n\t */\n\t function forInRight(object, iteratee, thisArg) {\n\t iteratee = bindCallback(iteratee, thisArg, 3);\n\t return baseForRight(object, iteratee, keysIn);\n\t }\n\n\t /**\n\t * Iterates over own enumerable properties of an object invoking `iteratee`\n\t * for each property. The `iteratee` is bound to `thisArg` and invoked with\n\t * three arguments; (value, key, object). Iterator functions may exit iteration\n\t * early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(n, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs '0', '1', and 'length' (iteration order is not guaranteed)\n\t */\n\t function forOwn(object, iteratee, thisArg) {\n\t if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {\n\t iteratee = bindCallback(iteratee, thisArg, 3);\n\t }\n\t return baseForOwn(object, iteratee);\n\t }\n\n\t /**\n\t * This method is like `_.forOwn` except that it iterates over properties of\n\t * `object` in the opposite order.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(n, key) {\n\t * console.log(key);\n\t * });\n\t * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length'\n\t */\n\t function forOwnRight(object, iteratee, thisArg) {\n\t iteratee = bindCallback(iteratee, thisArg, 3);\n\t return baseForRight(object, iteratee, keys);\n\t }\n\n\t /**\n\t * Creates an array of function property names from all enumerable properties,\n\t * own and inherited, of `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @alias methods\n\t * @category Object\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns the new array of property names.\n\t * @example\n\t *\n\t * _.functions(_);\n\t * // => ['all', 'any', 'bind', ...]\n\t */\n\t function functions(object) {\n\t return baseFunctions(object, keysIn(object));\n\t }\n\n\t /**\n\t * Checks if `key` exists as a direct property of `object` instead of an\n\t * inherited property.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to inspect.\n\t * @param {string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` is a direct property, else `false`.\n\t * @example\n\t *\n\t * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b');\n\t * // => true\n\t */\n\t function has(object, key) {\n\t return object ? hasOwnProperty.call(object, key) : false;\n\t }\n\n\t /**\n\t * Creates an object composed of the inverted keys and values of `object`.\n\t * If `object` contains duplicate values, subsequent values overwrite property\n\t * assignments of previous values unless `multiValue` is `true`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to invert.\n\t * @param {boolean} [multiValue] Allow multiple values per key.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {Object} Returns the new inverted object.\n\t * @example\n\t *\n\t * _.invert({ 'first': 'fred', 'second': 'barney' });\n\t * // => { 'fred': 'first', 'barney': 'second' }\n\t *\n\t * // without `multiValue`\n\t * _.invert({ 'first': 'fred', 'second': 'barney', 'third': 'fred' });\n\t * // => { 'fred': 'third', 'barney': 'second' }\n\t *\n\t * // with `multiValue`\n\t * _.invert({ 'first': 'fred', 'second': 'barney', 'third': 'fred' }, true);\n\t * // => { 'fred': ['first', 'third'], 'barney': ['second'] }\n\t */\n\t function invert(object, multiValue, guard) {\n\t if (guard && isIterateeCall(object, multiValue, guard)) {\n\t multiValue = null;\n\t }\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = {};\n\n\t while (++index < length) {\n\t var key = props[index],\n\t value = object[key];\n\n\t if (multiValue) {\n\t if (hasOwnProperty.call(result, value)) {\n\t result[value].push(key);\n\t } else {\n\t result[value] = [key];\n\t }\n\t }\n\t else {\n\t result[value] = key;\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\t var keys = !nativeKeys ? shimKeys : function(object) {\n\t if (object) {\n\t var Ctor = object.constructor,\n\t length = object.length;\n\t }\n\t if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n\t (typeof object != 'function' && (length && isLength(length)))) {\n\t return shimKeys(object);\n\t }\n\t return isObject(object) ? nativeKeys(object) : [];\n\t };\n\n\t /**\n\t * Creates an array of the own and inherited enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keysIn(new Foo);\n\t * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n\t */\n\t function keysIn(object) {\n\t if (object == null) {\n\t return [];\n\t }\n\t if (!isObject(object)) {\n\t object = Object(object);\n\t }\n\t var length = object.length;\n\t length = (length && isLength(length) &&\n\t (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;\n\n\t var Ctor = object.constructor,\n\t index = -1,\n\t isProto = typeof Ctor == 'function' && Ctor.prototype == object,\n\t result = Array(length),\n\t skipIndexes = length > 0;\n\n\t while (++index < length) {\n\t result[index] = (index + '');\n\t }\n\t for (var key in object) {\n\t if (!(skipIndexes && isIndex(key, length)) &&\n\t !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an object with the same keys as `object` and values generated by\n\t * running each own enumerable property of `object` through `iteratee`. The\n\t * iteratee function is bound to `thisArg` and invoked with three arguments;\n\t * (value, key, object).\n\t *\n\t * If a property name is provided for `iteratee` the created \"_.property\"\n\t * style callback returns the property value of the given element.\n\t *\n\t * If an object is provided for `iteratee` the created \"_.matches\" style\n\t * callback returns `true` for elements that have the properties of the given\n\t * object, else `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n\t * per iteration. If a property name or object is provided it is used to\n\t * create a \"_.property\" or \"_.matches\" style callback respectively.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {Object} Returns the new mapped object.\n\t * @example\n\t *\n\t * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(n) { return n * 3; });\n\t * // => { 'a': 3, 'b': 6, 'c': 9 }\n\t *\n\t * var users = {\n\t * 'fred': { 'user': 'fred', 'age': 40 },\n\t * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n\t * };\n\t *\n\t * // using the \"_.property\" callback shorthand\n\t * _.mapValues(users, 'age');\n\t * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n\t */\n\t function mapValues(object, iteratee, thisArg) {\n\t var result = {};\n\t iteratee = getCallback(iteratee, thisArg, 3);\n\n\t baseForOwn(object, function(value, key, object) {\n\t result[key] = iteratee(value, key, object);\n\t });\n\t return result;\n\t }\n\n\t /**\n\t * Recursively merges own enumerable properties of the source object(s), that\n\t * don't resolve to `undefined` into the destination object. Subsequent sources\n\t * overwrite property assignments of previous sources. If `customizer` is\n\t * provided it is invoked to produce the merged values of the destination and\n\t * source properties. If `customizer` returns `undefined` merging is handled\n\t * by the method instead. The `customizer` is bound to `thisArg` and invoked\n\t * with five arguments; (objectValue, sourceValue, key, object, source).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @param {Function} [customizer] The function to customize merging properties.\n\t * @param {*} [thisArg] The `this` binding of `customizer`.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var users = {\n\t * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n\t * };\n\t *\n\t * var ages = {\n\t * 'data': [{ 'age': 36 }, { 'age': 40 }]\n\t * };\n\t *\n\t * _.merge(users, ages);\n\t * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n\t *\n\t * // using a customizer callback\n\t * var object = {\n\t * 'fruits': ['apple'],\n\t * 'vegetables': ['beet']\n\t * };\n\t *\n\t * var other = {\n\t * 'fruits': ['banana'],\n\t * 'vegetables': ['carrot']\n\t * };\n\t *\n\t * _.merge(object, other, function(a, b) {\n\t * return _.isArray(a) ? a.concat(b) : undefined;\n\t * });\n\t * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n\t */\n\t var merge = createAssigner(baseMerge);\n\n\t /**\n\t * The opposite of `_.pick`; this method creates an object composed of the\n\t * own and inherited enumerable properties of `object` that are not omitted.\n\t * Property names may be specified as individual arguments or as arrays of\n\t * property names. If `predicate` is provided it is invoked for each property\n\t * of `object` omitting the properties `predicate` returns truthy for. The\n\t * predicate is bound to `thisArg` and invoked with three arguments;\n\t * (value, key, object).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The source object.\n\t * @param {Function|...(string|string[])} [predicate] The function invoked per\n\t * iteration or property names to omit, specified as individual property\n\t * names or arrays of property names.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': 40 };\n\t *\n\t * _.omit(object, 'age');\n\t * // => { 'user': 'fred' }\n\t *\n\t * _.omit(object, _.isNumber);\n\t * // => { 'user': 'fred' }\n\t */\n\t function omit(object, predicate, thisArg) {\n\t if (object == null) {\n\t return {};\n\t }\n\t if (typeof predicate != 'function') {\n\t var props = arrayMap(baseFlatten(arguments, false, false, 1), String);\n\t return pickByArray(object, baseDifference(keysIn(object), props));\n\t }\n\t predicate = bindCallback(predicate, thisArg, 3);\n\t return pickByCallback(object, function(value, key, object) {\n\t return !predicate(value, key, object);\n\t });\n\t }\n\n\t /**\n\t * Creates a two dimensional array of the key-value pairs for `object`,\n\t * e.g. `[[key1, value1], [key2, value2]]`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to inspect.\n\t * @returns {Array} Returns the new array of key-value pairs.\n\t * @example\n\t *\n\t * _.pairs({ 'barney': 36, 'fred': 40 });\n\t * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)\n\t */\n\t function pairs(object) {\n\t var index = -1,\n\t props = keys(object),\n\t length = props.length,\n\t result = Array(length);\n\n\t while (++index < length) {\n\t var key = props[index];\n\t result[index] = [key, object[key]];\n\t }\n\t return result;\n\t }\n\n\t /**\n\t * Creates an object composed of the picked `object` properties. Property\n\t * names may be specified as individual arguments or as arrays of property\n\t * names. If `predicate` is provided it is invoked for each property of `object`\n\t * picking the properties `predicate` returns truthy for. The predicate is\n\t * bound to `thisArg` and invoked with three arguments; (value, key, object).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The source object.\n\t * @param {Function|...(string|string[])} [predicate] The function invoked per\n\t * iteration or property names to pick, specified as individual property\n\t * names or arrays of property names.\n\t * @param {*} [thisArg] The `this` binding of `predicate`.\n\t * @returns {Object} Returns the new object.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': 40 };\n\t *\n\t * _.pick(object, 'user');\n\t * // => { 'user': 'fred' }\n\t *\n\t * _.pick(object, _.isString);\n\t * // => { 'user': 'fred' }\n\t */\n\t function pick(object, predicate, thisArg) {\n\t if (object == null) {\n\t return {};\n\t }\n\t return typeof predicate == 'function'\n\t ? pickByCallback(object, bindCallback(predicate, thisArg, 3))\n\t : pickByArray(object, baseFlatten(arguments, false, false, 1));\n\t }\n\n\t /**\n\t * Resolves the value of property `key` on `object`. If the value of `key` is\n\t * a function it is invoked with the `this` binding of `object` and its result\n\t * is returned, else the property value is returned. If the property value is\n\t * `undefined` the `defaultValue` is used in its place.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the property to resolve.\n\t * @param {*} [defaultValue] The value returned if the property value\n\t * resolves to `undefined`.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = { 'user': 'fred', 'age': _.constant(40) };\n\t *\n\t * _.result(object, 'user');\n\t * // => 'fred'\n\t *\n\t * _.result(object, 'age');\n\t * // => 40\n\t *\n\t * _.result(object, 'status', 'busy');\n\t * // => 'busy'\n\t *\n\t * _.result(object, 'status', _.constant('busy'));\n\t * // => 'busy'\n\t */\n\t function result(object, key, defaultValue) {\n\t var value = object == null ? undefined : object[key];\n\t if (typeof value == 'undefined') {\n\t value = defaultValue;\n\t }\n\t return isFunction(value) ? value.call(object) : value;\n\t }\n\n\t /**\n\t * An alternative to `_.reduce`; this method transforms `object` to a new\n\t * `accumulator` object which is the result of running each of its own enumerable\n\t * properties through `iteratee`, with each invocation potentially mutating\n\t * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked\n\t * with four arguments; (accumulator, value, key, object). Iterator functions\n\t * may exit iteration early by explicitly returning `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Array|Object} object The object to iterate over.\n\t * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n\t * @param {*} [accumulator] The custom accumulator value.\n\t * @param {*} [thisArg] The `this` binding of `iteratee`.\n\t * @returns {*} Returns the accumulated value.\n\t * @example\n\t *\n\t * var squares = _.transform([1, 2, 3, 4, 5, 6], function(result, n) {\n\t * n *= n;\n\t * if (n % 2) {\n\t * return result.push(n) < 3;\n\t * }\n\t * });\n\t * // => [1, 9, 25]\n\t *\n\t * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, n, key) {\n\t * result[key] = n * 3;\n\t * });\n\t * // => { 'a': 3, 'b': 6, 'c': 9 }\n\t */\n\t function transform(object, iteratee, accumulator, thisArg) {\n\t var isArr = isArray(object) || isTypedArray(object);\n\t iteratee = getCallback(iteratee, thisArg, 4);\n\n\t if (accumulator == null) {\n\t if (isArr || isObject(object)) {\n\t var Ctor = object.constructor;\n\t if (isArr) {\n\t accumulator = isArray(object) ? new Ctor : [];\n\t } else {\n\t accumulator = baseCreate(typeof Ctor == 'function' && Ctor.prototype);\n\t }\n\t } else {\n\t accumulator = {};\n\t }\n\t }\n\t (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {\n\t return iteratee(accumulator, value, index, object);\n\t });\n\t return accumulator;\n\t }\n\n\t /**\n\t * Creates an array of the own enumerable property values of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property values.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.values(new Foo);\n\t * // => [1, 2] (iteration order is not guaranteed)\n\t *\n\t * _.values('hi');\n\t * // => ['h', 'i']\n\t */\n\t function values(object) {\n\t return baseValues(object, keys(object));\n\t }\n\n\t /**\n\t * Creates an array of the own and inherited enumerable property values\n\t * of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property values.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.valuesIn(new Foo);\n\t * // => [1, 2, 3] (iteration order is not guaranteed)\n\t */\n\t function valuesIn(object) {\n\t return baseValues(object, keysIn(object));\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Produces a random number between `min` and `max` (inclusive). If only one\n\t * argument is provided a number between `0` and the given number is returned.\n\t * If `floating` is `true`, or either `min` or `max` are floats, a floating-point\n\t * number is returned instead of an integer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category Number\n\t * @param {number} [min=0] The minimum possible value.\n\t * @param {number} [max=1] The maximum possible value.\n\t * @param {boolean} [floating] Specify returning a floating-point number.\n\t * @returns {number} Returns the random number.\n\t * @example\n\t *\n\t * _.random(0, 5);\n\t * // => an integer between 0 and 5\n\t *\n\t * _.random(5);\n\t * // => also an integer between 0 and 5\n\t *\n\t * _.random(5, true);\n\t * // => a floating-point number between 0 and 5\n\t *\n\t * _.random(1.2, 5.2);\n\t * // => a floating-point number between 1.2 and 5.2\n\t */\n\t function random(min, max, floating) {\n\t if (floating && isIterateeCall(min, max, floating)) {\n\t max = floating = null;\n\t }\n\t var noMin = min == null,\n\t noMax = max == null;\n\n\t if (floating == null) {\n\t if (noMax && typeof min == 'boolean') {\n\t floating = min;\n\t min = 1;\n\t }\n\t else if (typeof max == 'boolean') {\n\t floating = max;\n\t noMax = true;\n\t }\n\t }\n\t if (noMin && noMax) {\n\t max = 1;\n\t noMax = false;\n\t }\n\t min = +min || 0;\n\t if (noMax) {\n\t max = min;\n\t min = 0;\n\t } else {\n\t max = +max || 0;\n\t }\n\t if (floating || min % 1 || max % 1) {\n\t var rand = nativeRandom();\n\t return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max);\n\t }\n\t return baseRandom(min, max);\n\t }\n\n\t /*------------------------------------------------------------------------*/\n\n\t /**\n\t * Converts `string` to camel case.\n\t * See [Wikipedia](https://en.wikipedia.org/wiki/CamelCase) for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the camel cased string.\n\t * @example\n\t *\n\t * _.camelCase('Foo Bar');\n\t * // => 'fooBar'\n\t *\n\t * _.camelCase('--foo-bar');\n\t * // => 'fooBar'\n\t *\n\t * _.camelCase('__foo_bar__');\n\t * // => 'fooBar'\n\t */\n\t var camelCase = createCompounder(function(result, word, index) {\n\t word = word.toLowerCase();\n\t return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);\n\t });\n\n\t /**\n\t * Capitalizes the first character of `string`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to capitalize.\n\t * @returns {string} Returns the capitalized string.\n\t * @example\n\t *\n\t * _.capitalize('fred');\n\t * // => 'Fred'\n\t */\n\t function capitalize(string) {\n\t string = baseToString(string);\n\t return string && (string.charAt(0).toUpperCase() + string.slice(1));\n\t }\n\n\t /**\n\t * Deburrs `string` by converting latin-1 supplementary letters to basic latin letters.\n\t * See [Wikipedia](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to deburr.\n\t * @returns {string} Returns the deburred string.\n\t * @example\n\t *\n\t * _.deburr('déjà vu');\n\t * // => 'deja vu'\n\t */\n\t function deburr(string) {\n\t string = baseToString(string);\n\t return string && string.replace(reLatin1, deburrLetter);\n\t }\n\n\t /**\n\t * Checks if `string` ends with the given target string.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to search.\n\t * @param {string} [target] The string to search for.\n\t * @param {number} [position=string.length] The position to search from.\n\t * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`.\n\t * @example\n\t *\n\t * _.endsWith('abc', 'c');\n\t * // => true\n\t *\n\t * _.endsWith('abc', 'b');\n\t * // => false\n\t *\n\t * _.endsWith('abc', 'b', 2);\n\t * // => true\n\t */\n\t function endsWith(string, target, position) {\n\t string = baseToString(string);\n\t target = (target + '');\n\n\t var length = string.length;\n\t position = (typeof position == 'undefined' ? length : nativeMin(position < 0 ? 0 : (+position || 0), length)) - target.length;\n\t return position >= 0 && string.indexOf(target, position) == position;\n\t }\n\n\t /**\n\t * Converts the characters \"&\", \"<\", \">\", '\"', \"'\", and '`', in `string` to\n\t * their corresponding HTML entities.\n\t *\n\t * **Note:** No other characters are escaped. To escape additional characters\n\t * use a third-party library like [_he_](https://mths.be/he).\n\t *\n\t * Though the \">\" character is escaped for symmetry, characters like\n\t * \">\" and \"/\" don't require escaping in HTML and have no special meaning\n\t * unless they're part of a tag or unquoted attribute value.\n\t * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n\t * (under \"semi-related fun fact\") for more details.\n\t *\n\t * Backticks are escaped because in Internet Explorer < 9, they can break out\n\t * of attribute values or HTML comments. See [#102](https://html5sec.org/#102),\n\t * [#108](https://html5sec.org/#108), and [#133](https://html5sec.org/#133) of\n\t * the [HTML5 Security Cheatsheet](https://html5sec.org/) for more details.\n\t *\n\t * When working with HTML you should always quote attribute values to reduce\n\t * XSS vectors. See [Ryan Grove's article](http://wonko.com/post/html-escaping)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to escape.\n\t * @returns {string} Returns the escaped string.\n\t * @example\n\t *\n\t * _.escape('fred, barney, & pebbles');\n\t * // => 'fred, barney, & pebbles'\n\t */\n\t function escape(string) {\n\t // Reset `lastIndex` because in IE < 9 `String#replace` does not.\n\t string = baseToString(string);\n\t return (string && reHasUnescapedHtml.test(string))\n\t ? string.replace(reUnescapedHtml, escapeHtmlChar)\n\t : string;\n\t }\n\n\t /**\n\t * Escapes the `RegExp` special characters \"\\\", \"^\", \"$\", \".\", \"|\", \"?\", \"*\",\n\t * \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to escape.\n\t * @returns {string} Returns the escaped string.\n\t * @example\n\t *\n\t * _.escapeRegExp('[lodash](https://lodash.com/)');\n\t * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n\t */\n\t function escapeRegExp(string) {\n\t string = baseToString(string);\n\t return (string && reHasRegExpChars.test(string))\n\t ? string.replace(reRegExpChars, '\\\\$&')\n\t : string;\n\t }\n\n\t /**\n\t * Converts `string` to kebab case (a.k.a. spinal case).\n\t * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for\n\t * more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the kebab cased string.\n\t * @example\n\t *\n\t * _.kebabCase('Foo Bar');\n\t * // => 'foo-bar'\n\t *\n\t * _.kebabCase('fooBar');\n\t * // => 'foo-bar'\n\t *\n\t * _.kebabCase('__foo_bar__');\n\t * // => 'foo-bar'\n\t */\n\t var kebabCase = createCompounder(function(result, word, index) {\n\t return result + (index ? '-' : '') + word.toLowerCase();\n\t });\n\n\t /**\n\t * Pads `string` on the left and right sides if it is shorter then the given\n\t * padding length. The `chars` string may be truncated if the number of padding\n\t * characters can't be evenly divided by the padding length.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to pad.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the padded string.\n\t * @example\n\t *\n\t * _.pad('abc', 8);\n\t * // => ' abc '\n\t *\n\t * _.pad('abc', 8, '_-');\n\t * // => '_-abc_-_'\n\t *\n\t * _.pad('abc', 3);\n\t * // => 'abc'\n\t */\n\t function pad(string, length, chars) {\n\t string = baseToString(string);\n\t length = +length;\n\n\t var strLength = string.length;\n\t if (strLength >= length || !nativeIsFinite(length)) {\n\t return string;\n\t }\n\t var mid = (length - strLength) / 2,\n\t leftLength = floor(mid),\n\t rightLength = ceil(mid);\n\n\t chars = createPad('', rightLength, chars);\n\t return chars.slice(0, leftLength) + string + chars;\n\t }\n\n\t /**\n\t * Pads `string` on the left side if it is shorter then the given padding\n\t * length. The `chars` string may be truncated if the number of padding\n\t * characters exceeds the padding length.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to pad.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the padded string.\n\t * @example\n\t *\n\t * _.padLeft('abc', 6);\n\t * // => ' abc'\n\t *\n\t * _.padLeft('abc', 6, '_-');\n\t * // => '_-_abc'\n\t *\n\t * _.padLeft('abc', 3);\n\t * // => 'abc'\n\t */\n\t function padLeft(string, length, chars) {\n\t string = baseToString(string);\n\t return string && (createPad(string, length, chars) + string);\n\t }\n\n\t /**\n\t * Pads `string` on the right side if it is shorter then the given padding\n\t * length. The `chars` string may be truncated if the number of padding\n\t * characters exceeds the padding length.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to pad.\n\t * @param {number} [length=0] The padding length.\n\t * @param {string} [chars=' '] The string used as padding.\n\t * @returns {string} Returns the padded string.\n\t * @example\n\t *\n\t * _.padRight('abc', 6);\n\t * // => 'abc '\n\t *\n\t * _.padRight('abc', 6, '_-');\n\t * // => 'abc_-_'\n\t *\n\t * _.padRight('abc', 3);\n\t * // => 'abc'\n\t */\n\t function padRight(string, length, chars) {\n\t string = baseToString(string);\n\t return string && (string + createPad(string, length, chars));\n\t }\n\n\t /**\n\t * Converts `string` to an integer of the specified radix. If `radix` is\n\t * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal,\n\t * in which case a `radix` of `16` is used.\n\t *\n\t * **Note:** This method aligns with the ES5 implementation of `parseInt`.\n\t * See the [ES5 spec](https://es5.github.io/#E) for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} string The string to convert.\n\t * @param {number} [radix] The radix to interpret `value` by.\n\t * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n\t * @returns {number} Returns the converted integer.\n\t * @example\n\t *\n\t * _.parseInt('08');\n\t * // => 8\n\t *\n\t * _.map(['6', '08', '10'], _.parseInt);\n\t * // => [6, 8, 10]\n\t */\n\t function parseInt(string, radix, guard) {\n\t if (guard && isIterateeCall(string, radix, guard)) {\n\t radix = 0;\n\t }\n\t return nativeParseInt(string, radix);\n\t }\n\t // Fallback for environments with pre-ES5 implementations.\n\t if (nativeParseInt(whitespace + '08') != 8) {\n\t parseInt = function(string, radix, guard) {\n\t // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.\n\t // Chrome fails to trim leading whitespace characters.\n\t // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.\n\t if (guard ? isIterateeCall(string, radix, guard) : radix == null) {\n\t radix = 0;\n\t } else if (radix) {\n\t radix = +radix;\n\t }\n\t string = trim(string);\n\t return nativeParseInt(string, radix || (reHexPrefix.test(string) ? 16 : 10));\n\t };\n\t }\n\n\t /**\n\t * Repeats the given string `n` times.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to repeat.\n\t * @param {number} [n=0] The number of times to repeat the string.\n\t * @returns {string} Returns the repeated string.\n\t * @example\n\t *\n\t * _.repeat('*', 3);\n\t * // => '***'\n\t *\n\t * _.repeat('abc', 2);\n\t * // => 'abcabc'\n\t *\n\t * _.repeat('abc', 0);\n\t * // => ''\n\t */\n\t function repeat(string, n) {\n\t var result = '';\n\t string = baseToString(string);\n\t n = +n;\n\t if (n < 1 || !string || !nativeIsFinite(n)) {\n\t return result;\n\t }\n\t // Leverage the exponentiation by squaring algorithm for a faster repeat.\n\t // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n\t do {\n\t if (n % 2) {\n\t result += string;\n\t }\n\t n = floor(n / 2);\n\t string += string;\n\t } while (n);\n\n\t return result;\n\t }\n\n\t /**\n\t * Converts `string` to snake case.\n\t * See [Wikipedia](https://en.wikipedia.org/wiki/Snake_case) for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the snake cased string.\n\t * @example\n\t *\n\t * _.snakeCase('Foo Bar');\n\t * // => 'foo_bar'\n\t *\n\t * _.snakeCase('fooBar');\n\t * // => 'foo_bar'\n\t *\n\t * _.snakeCase('--foo-bar');\n\t * // => 'foo_bar'\n\t */\n\t var snakeCase = createCompounder(function(result, word, index) {\n\t return result + (index ? '_' : '') + word.toLowerCase();\n\t });\n\n\t /**\n\t * Converts `string` to start case.\n\t * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage)\n\t * for more details.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to convert.\n\t * @returns {string} Returns the start cased string.\n\t * @example\n\t *\n\t * _.startCase('--foo-bar');\n\t * // => 'Foo Bar'\n\t *\n\t * _.startCase('fooBar');\n\t * // => 'Foo Bar'\n\t *\n\t * _.startCase('__foo_bar__');\n\t * // => 'Foo Bar'\n\t */\n\t var startCase = createCompounder(function(result, word, index) {\n\t return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));\n\t });\n\n\t /**\n\t * Checks if `string` starts with the given target string.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The string to search.\n\t * @param {string} [target] The string to search for.\n\t * @param {number} [position=0] The position to search from.\n\t * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`.\n\t * @example\n\t *\n\t * _.startsWith('abc', 'a');\n\t * // => true\n\t *\n\t * _.startsWith('abc', 'b');\n\t * // => false\n\t *\n\t * _.startsWith('abc', 'b', 1);\n\t * // => true\n\t */\n\t function startsWith(string, target, position) {\n\t string = baseToString(string);\n\t position = position == null ? 0 : nativeMin(position < 0 ? 0 : (+position || 0), string.length);\n\t return string.lastIndexOf(target, position) == position;\n\t }\n\n\t /**\n\t * Creates a compiled template function that can interpolate data properties\n\t * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n\t * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n\t * properties may be accessed as free variables in the template. If a setting\n\t * object is provided it takes precedence over `_.templateSettings` values.\n\t *\n\t * **Note:** In the development build `_.template` utilizes sourceURLs for easier debugging.\n\t * See the [HTML5 Rocks article on sourcemaps](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n\t * for more details.\n\t *\n\t * For more information on precompiling templates see\n\t * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n\t *\n\t * For more information on Chrome extension sandboxes see\n\t * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @category String\n\t * @param {string} [string=''] The template string.\n\t * @param {Object} [options] The options object.\n\t * @param {RegExp} [options.escape] The HTML \"escape\" delimiter.\n\t * @param {RegExp} [options.evaluate] The \"evaluate\" delimiter.\n\t * @param {Object} [options.imports] An object to import into the template as free variables.\n\t * @param {RegExp} [options.interpolate] The \"interpolate\" delimiter.\n\t * @param {string} [options.sourceURL] The sourceURL of the template's compiled source.\n\t * @param {string} [options.variable] The data object variable name.\n\t * @param- {Object} [otherOptions] Enables the legacy `options` param signature.\n\t * @returns {Function} Returns the compiled template function.\n\t * @example\n\t *\n\t * // using the \"interpolate\" delimiter to create a compiled template\n\t * var compiled = _.template('hello <%= user %>!');\n\t * compiled({ 'user': 'fred' });\n\t * // => 'hello fred!'\n\t *\n\t * // using the HTML \"escape\" delimiter to escape data property values\n\t * var compiled = _.template('<%- value %>');\n\t * compiled({ 'value': '