�¬argb colorSpace _floatToInt8valuetoARGB32alphaopacityredgreenblue withValues withAlpha withOpacitywithRed withGreenwithBlue_linearizeColorComponentcomputeLuminancelerp alphaBlendgetAlphaFromOpacity==hashCodetoStringclearsrcdstsrcOverdstOversrcIndstInsrcOutdstOutsrcATopdstATopxorplusmodulatescreenoverlaydarkenlighten colorDodge colorBurn hardLight softLight difference exclusionmultiplyhue saturationcolor luminositynonelowmediumhighbuttroundsquaremiterbevelfillstrokehardEdge antiAliasantiAliasWithSaveLayer_data_kIsAntiAliasIndex_kColorRedIndex_kColorGreenIndex_kColorBlueIndex_kColorAlphaIndex_kColorSpaceIndex_kBlendModeIndex _kStyleIndex_kStrokeWidthIndex_kStrokeCapIndex_kStrokeJoinIndex_kStrokeMiterLimitIndex_kFilterQualityIndex_kMaskFilterIndex_kMaskFilterBlurStyleIndex_kMaskFilterSigmaIndex_kInvertColorIndex_kIsAntiAliasOffset_kColorRedOffset_kColorGreenOffset_kColorBlueOffset_kColorAlphaOffset_kColorSpaceOffset_kBlendModeOffset _kStyleOffset_kStrokeWidthOffset_kStrokeCapOffset_kStrokeJoinOffset_kStrokeMiterLimitOffset_kFilterQualityOffset_kMaskFilterOffset_kMaskFilterBlurStyleOffset_kMaskFilterSigmaOffset_kInvertColorOffset_kDataByteCount_objects_ensureObjectsInitialized _kShaderIndex_kColorFilterIndex_kImageFilterIndex _kObjectCount isAntiAlias_kColorDefault_kBlendModeDefault blendModestyle strokeWidth strokeCap strokeJoin_kStrokeMiterLimitDefaultstrokeMiterLimit maskFilter filterQualityshader colorFilter imageFilter invertColorssRGB extendedSRGB displayP3rawRgbarawStraightRgba rawUnmodifiedrawExtendedRgba128pngrgba8888bgra8888 rgbaFloat32_imageonCreate onDispose _debugStackwidthheight _disposeddispose debugDisposed toByteDatadebugGetOpenHandleStackTracesclone isCloneOf _toByteData_dispose_handlesdurationimage frameCountrepetitionCount getNextFrame_cachedFrameCount _frameCount_cachedRepetitionCount_repetitionCount _getNextFramenonZeroevenOdd intersectunionreverseDifferencefillTypemoveTorelativeMoveTolineTorelativeLineToquadraticBezierTorelativeQuadraticBezierTocubicTorelativeCubicToconicTorelativeConicToarcTo arcToPointrelativeArcToPointaddRectaddOvaladdArc addPolygonaddRRectaddRSuperellipseaddPathextendWithPathcloseresetcontainsshift transform getBoundscombinecomputeMetrics _constructor_clone _getFillType _setFillType_arcTo _arcToPoint_relativeArcToPoint_addRect_addOval_addArc _addPolygon _addRRect_addRSuperellipse_addPath_addPathWithMatrix_extendWithPath_extendWithPathAndMatrix _contains_shift _transform _getBounds_oppositionvectorangle _iteratoriterator _pathMetric _pathMeasurecurrentmoveNextlengthisClosed contourIndex_measuregetTangentForOffset extractPath_length _getPosTan _extractPath _isClosed _nextContour_nativeNextContourcurrentContourIndexnormalsolidouterinner_style_sigma _TypeNone _TypeBlurchildvalues_color _blendMode_matrix_type _kTypeMode _kTypeMatrix_kTypeLinearToSrgbGamma_kTypeSrgbToLinearGamma_toNativeImageFilter_toNativeColorFilter_shortDescriptioncreator _initMode _initMatrix_initLinearToSrgbGamma_initSrgbToLinearGammaisShaderFilterSupporteddata nativeFiltersigmaXsigmaYtileMode _modeStringradiusXradiusY innerFilter outerFilter_equals _initBlur _initDilate _initErode_initColorFilter _initComposed _initShader_debugDisposedclamprepeatedmirrordecal _initLinear _initRadial _initConical _initSweep_validateColorStops_initWithImage _debugName fromAsset_shaderRegistry_reinitializeShader_uniformFloatCount _samplerCount_initFromAssetfragmentShader_kEmptyFloat32List_floatssetFloatsetImageSampler_setImageSampler_validateSamplers_validateImageFilter triangles triangleStrip triangleFan_initpointslinespolygonsave saveLayerrestorerestoreToCount getSaveCount translatescalerotateskew getTransformclipRect clipRRectclipRSuperellipseclipPathgetLocalClipBoundsgetDestinationClipBounds drawColordrawLine drawPaintdrawRect drawRRect drawDRRectdrawRSuperellipsedrawOval drawCircledrawArcdrawPath drawImage drawImageRect drawImageNine drawPicture drawParagraph drawPoints drawRawPoints drawVertices drawAtlas drawRawAtlas drawShadow _recorder_sorted_saveLayerWithoutBounds _saveLayer_scale _getTransform _clipRect _clipRRect_clipRSuperellipse _clipPath_getLocalClipBounds_getDestinationClipBounds _drawColor _drawLine _drawPaint _drawRect _drawRRect _drawDRRect_drawRSuperellipse _drawOval _drawCircle_drawArc _drawPath _drawImage_drawImageRect_drawImageNine _drawPicture _drawPoints _drawVertices _drawAtlas _drawShadowtoImage toImageSyncapproximateBytesUsed_toImage _toImageSync isRecording endRecording _endRecording_canvas_kBytesPerShadow _kColorOffset _kXOffset _kYOffset _kBlurOffsetoffset blurRadiusconvertRadiusToSigma blurSigmatoPaintlerpList_encodeShadows fromUint8List fromFilePath _initFromFileencoded bytesPerPixelinstantiateCodec _initEncoded_initRaw_width _getWidth_height _getHeight_bytesPerPixel_getBytesPerPixel_instantiateCodecmessagestacka _rectIsValid _rrectIsValid_rsuperellipseIsValid_offsetIsValid_matrix4IsValid_radiusIsValid _scaleAlphaColor BlendMode FilterQuality StrokeCap StrokeJoin PaintingStyleClipPaint ColorSpace_colorSpaceToIndex_indexToColorSpaceImageByteFormat PixelFormatImageEventCallbackImage_Image _wrapImageImageDecoderCallback FrameInfoCodec _NativeCodecinstantiateImageCodecinstantiateImageCodecFromBufferinstantiateImageCodecWithSize_getDefaultImageSizeTargetImageSizeCallbackTargetImageSizedecodeImageFromList_decodeImageFromListAsyncdecodeImageFromPixels PathFillType PathOperation EngineLayer_NativeEngineLayerPath _NativePathTangent PathMetricsPathMetricIterator PathMetric _PathMeasure BlurStyle MaskFilter_ColorTransform_IdentityColorTransform_ClampTransform_MatrixColorTransform_getColorTransform ColorFilter _ColorFilter ImageFilter_MatrixImageFilter_GaussianBlurImageFilter_DilateImageFilter_ErodeImageFilter_ComposeImageFilter_FragmentShaderImageFilter _ImageFilterShaderTileMode_encodeWideColorList_encodeColorList_encodePointList_encodeTwoPointsGradient ImageShaderFragmentProgramFragmentShader VertexModeVertices PointModeClipOpCanvas _NativeCanvasPictureEventCallbackPicture_NativePicturePictureRecorder_NativePictureRecorderShadowImmutableBufferImageDescriptor_NativeImageDescriptor _Callback_CallbackWithError _Callbacker_CallbackerWithError _futurize_futurizeWithErrorPictureRasterizationException�¡dartuiboolRecthasNaNRRect RSuperellipseOffsetdxisNaNdy Float64ListlengtheverydoublevalueisFiniteRadiusxy withValuesalpha clampDoubleanewsRGBint _fromARGBCfromRGBO _fromRGBOCfromARGBroundclamp Deprecatedfromredgreenblue colorSpace transformmathpow extendedSRGBHSVColormaterialColors transparentCurves elasticInOutAnimationController _lerpDoublergboverrideObject identical runtimeTypehashStringtoStringAsFixedsrcdstclear saveLayerrestore blendModesrcOverdstInsrcOutsrcIndstOutdstATopdstOversrcATopplusmultiplyscreenoverlaymodulate hardLight colorDodge colorBurncolor exclusion difference luminosityhue softLight saturationblurBackdropFilternonelowmediumhigh filterQualitymatrix drawImage drawImageRect drawImageNine drawAtlas strokeCapAsquare strokeWidthbuttdrawPath drawPoints strokeJoinstrokeMiterLimitstyle drawCircle isAntiAliashardEdge antiAliasantiAliasWithSaveLayerbuffer asUint32ListsetAll_data_objectstoListpragmaByteDataListfilledgetInt32_kFakeHostEndiansetInt32 getFloat32 setFloat32indexvaluesfillstrokemiterbevel _TypeNone _TypeBlur_style_sigma debugDisposed_validateSamplers Exception _debugNamecreator_toNativeColorFilter_toNativeImageFilterfromEnvironmenttoString StringBufferwrite toByteDatarawExtendedRgba128 displayP3 ArgumentErrorvoidwidgets StackTracecurrent_handlesaddcallMemoryAllocations _disposedcontainsremoveisEmptydispose StateErrorformatrawRgbaFutureUnsupportedErrormaphandle _debugStack__imageNativeFieldWrapperClass1NativeInt32PointerVoidsymbolisLeaf Uint8Listerrorencodedcallback asByteDataHandleSetwidthheight getNextFramecloneDurationimage Completersync decodeError completeErrorcompleteduration millisecondsdurationMillisecondsfuture fromUint8List targetWidth targetHeightallowUpscaling getTargetSizeintrinsicWidthintrinsicHeightinstantiateCodecthenrawrowBytes pixelFormatcodec frameInfofillTypecombinereverseDifferencexor intersect SceneBuilderclipPath_clonenonZerozero fromCircle_op extractPathIterableDoublelefttoprightbottomBoolradiusrotationlargeArc clockwise Float32List _getValue32_native_NativeRSuperellipsematrix4fromLTRB forceClosedgetTangentForOffsetcossinatan2computeMetricslineTomoveTo IterableBaseIterator RangeError _nextContourcurrentContourIndexisClosedcloseaddRectstartWithMoveTo nextContour maskFilter drawShadow colorFilterfromColorFiltermodelinearToSrgbGammasrgbToLinearGamma_type _listEquals_matrix_color _blendModehashAll _kTypeMode _kTypeMatrixfromList_kTypeLinearToSrgbGamma_kTypeSrgbToLinearGamma ImageFilteredpushBackdropFilterpushImageFiltersigmaXsigmaYtileModeradiusXradiusYMatrix4 diagonal3data innerFilterinner outerFilterouter_impellerEnabled_floats_validateImageFiltershadermirrorrepeateddecaldilateerodecomposed_shortDescriptionhashCode nativeFilterpaintingGradientLinearGradientRadialGradient BoxDecorationlinearradiali Int32ListNoSuchMethodError colorStopsfocal focalRadiuspi startAngleendAngle isNotEmptyUripath encodeFull microtask _fromAssetMap_initFromAsset debugNamefragmentShader_uniformFloatCount _samplerCount drawVertices triangles triangleStrip triangleFan Uint16ListcolorstextureCoordinatesindices drawRawPointsclipRectSceneRendererBinding createCanvas PictureLayertoImage endRecording CustomPainterpaintsy doAntiAliasarcTo ParagraphlayoutParagraphStyleParagraphBuilder TextAlignParagraphConstraintspointslinespolygon RSTransformscosssintxty isRecording_canvascullRectlargestminmaxclipOpUint32stack_NativeParagraph _needsLayout_paint addPicture drawPicture onDisposeUint64createPictureRecorder _recorderonCreate TextStylenormaloffset blurRadiusscalelerp shadowIndex_kColorDefaultconvertRadiusToSigma_init_length _initFromFile _initEncodedTt toImageSyncwritelnNativeFieldWrapperClass1Codec EngineLayerPath IterableBaseIterator_ColorTransform ImageFilterShaderCanvasPicturePictureRecorderImageDescriptor ExceptionjaIUkÓÂ]#Ìd:¸ÆáÀË•ÀªTŸo<€†€¤€µ€¶€Î€ï�-�F�y�«�¬�ù‚C‚“‚äƒ4ƒ‚ƒÓ„„„b„ˆ„‰„¨„è„÷„ù„ú……^…m…o…p…ª…ü† † ††3†�†œ†ž†Ÿ†Ë‡ ‡j‡y‡{‡|‡¡‡ùˆˆ ˆ ˆ7ˆvˆxˆyˆ¦ˆªˆû‰L‰˜‰ãŠjЍЬŠÜŠàŠì‹C‹k‹¨‹àŒŒ Œ$ŒtŒ¼� �D�H�T�¡�é�펎fŽnŽrŽÂ��d�h�v�z�Ç��/�€�„�Û�é‘8‘>‘i‘o‘—‘½‘ä’ ’’_’­’Õ’Û“!“n“““™“Ù“é”:”Š”É”Þ”÷•L•M•‹•‘•â–+–;–A–R–X–f–Ž–Þ–ä—#—s—y—š—ê—ô˜ ˜$˜=˜X˜r˜™˜«˜»˜Í˜Þ˜ß™%™+™x™ˆ™­™Ô™úššCšIš”š¡š§šä›G›H›¡›ì›íœ7œNœTœyœ œÆ��C�I�Œ�’�Ú�àžžYž“ž”žãžöŸŸ.ŸJŸKŸrŸ„Ÿ…ŸªŸ¼Ÿ½ŸäŸöŸ÷  / 0 U t u › É Í Î ü¡¡O¡h¡Ç¡æ¡ç¢¢#¢g¢·£#£)£t£Á¤¤ ¤W¤¢¤¿¤Å¤í¤ó¥?¥‹¥Ö¦ ¦&¦9¦†¦Ô§%§o§Œ§Ÿ§Â§â¨¨¨#¨$¨]¨c¨²¨Ô© ©<©=©p©v©Ç©éªª(ª)ª`ª™ªÆªÇ««9«g«h« «Ù¬¬¬G¬M¬‘¬Ø¬Þ­)­w­”­š­©­·­Ï­ú®D®N®c®v®‡®š®¬®È®Ï®í¯6¯\¯w¯Ž¯©¯Â¯ç¯ð¯ö°5°Ž°×°ä± ±±±±`±–±œ±Ô±ï²²#²$²m²µ²»²ó³/³U³ƒ³´³¸³¹´ ´6´<´t´�´¿´Ã´Äµ µCµIµ�µœµÌµÐµÑ¶"¶O¶U¶�¶§¶Ø¶Ü¶Ý··X·x·˜·ž·ß·ã·ä¸/¸5¸‰¸§¸­¸ë¹ ¹<¹|¹®¹àººCºGºHºwº}ºÅ»»»X»¥»ä¼*¼0¼}¼Ç½½^½¬½ü¾I¾š¾Ç¾Í¿¿<¿q¿§¿Ý¿òÀ@ À@À@-À@UÀ@]À@jÀ@�À@£À@²À@àÀ@ûÀA9ÀAuÀA³ÀAðÀBÀBÀB'ÀB-ÀB1ÀB2ÀBuÀB»ÀBÁÀC ÀCTÀCŸÀCîÀD9ÀDyÀDµÀDóÀEÀE0ÀE\ÀEuÀE{ÀE¢ÀEÇÀEáÀFÀFÀF,ÀFiÀF¨ÀFæÀGÀGÀG'ÀG=ÀGeÀG–ÀG³ÀGÌÀGåÀH0ÀH}ÀHÉÀHôÀHýÀIÀIÀIÀIUÀI[ÀI†ÀI¹ÀIôÀIøÀIùÀJÀJ(ÀJJÀJ]ÀJcÀJ�ÀJ£ÀJ©ÀJÆÀJÞÀJöÀKÀK&ÀKNÀKRÀKSÀK_ÀKšÀK›ÀK§ÀK¾ÀLcÀLeÀLfÀL™ÀL�ÀLêÀM4ÀMSÀMWÀM¨ÀMõÀNDÀN’ÀNâÀO-ÀOqÀOuÀOÅÀPÀPaÀP­ÀPûÀQHÀQ�ÀQÚÀR)ÀRoÀRŠÀRŽÀRÜÀS)ÀSsÀSÅÀTÀTcÀT¤ÀT¨ÀTÏÀTÓÀU!ÀUbÀU³ÀVÀVQÀV ÀVïÀW ÀWÀWÀW ÀWkÀW|ÀW�ÀWÜÀWïÀX5ÀX6ÀXzÀX€ÀX¼ÀXÂÀYÀY(ÀY)ÀYhÀYnÀY½ÀYÌÀYÒÀZ ÀZÀZnÀZuÀZvÀZµÀZ»À[À[À[À[_À[eÀ[ÀÀ[ÇÀ[ÈÀ\À\ À\YÀ\ªÀ\ÇÀ\ÍÀ]À]HÀ]NÀ]­À]¸À]¹À]÷À]ýÀ^&À^,À^zÀ^€À^ßÀ^åÀ_4À__À_jÀ_kÀ_³À`À`MÀ`[À`aÀ` À`¦À`óÀa;ÀaKÀaQÀa�Àa£ÀbÀb Àb ÀbWÀb¥ÀbïÀbõÀc/Àc5Àc‚ÀcÔÀcÚÀd&Àd,Àd‰Àd’Àd“ÀdâÀe5Àe„ÀeŠÀeÊÀeÐÀfÀfnÀftÀfÁÀfÇÀg%Àg/Àg0Àg„ÀgÒÀhÀh"Àh]ÀhcÀhµÀiÀiÀiTÀiZÀi¸ÀiÂÀiÃÀjÀj2Àj8Àj†ÀjŒÀjÜÀk(Àk\ÀkbÀk­Àk¾ÀkÄÀl#Àl.Àl/Àl~Àl™ÀlŸÀlíÀlóÀmCÀmŠÀm¾ÀmÄÀnÀn Àn&Àn…Àn�Àn‘ÀnáÀoÀoÀohÀonÀoÉÀoÐÀoÑÀpÀpÀpeÀp±Àp×ÀpÝÀq+Àq1Àq‚ÀqÐÀr!ÀrpÀrºÀrÀÀsÀs$Às%ÀsoÀsuÀsÄÀtÀtÀtjÀt“Àt™ÀtêÀtðÀuPÀuVÀufÀulÀu®ÀuöÀvÀv\ÀvsÀvÀv€ÀvÈÀvÉÀwÀw:Àw@ÀwŒÀwÙÀxÀxÀx_Àx«ÀxÑÀx×Ày'ÀyvÀyÇÀyÍÀzÀz>ÀzDÀz¢Àz¨Àz¸Àz¾À{À{À{gÀ{ƒÀ{ÍÀ{äÀ|À|OÀ|~À|„À|ÕÀ}#À}tÀ}“À}™À}åÀ~2À~aÀ~gÀ~ÆÀ~ÌÀ~ÜÀ~âÀÀbÀ²ÀÝÀèÀéÀ€7À€VÀ€\À€¥À€¶À€¼À�À�$À�%À�tÀ�“À�™À�âÀ�óÀ�ùÀ‚XÀ‚cÀ‚dÀ‚ŸÀ‚¥À‚ñÀƒ>ÀƒmÀƒsÀƒÕÀƒãÀƒäÀ„7À„=À„‰À„ÖÀ…À… À…lÀ…yÀ…zÀ…ÃÀ…íÀ…óÀ†CÀ†ŒÀ†ÚÀ‡À‡ À‡YÀ‡¦À‡ÕÀ‡ÛÀˆ<ÀˆBÀˆRÀˆXÀˆ‘ÀˆØÀ‰'À‰SÀ‰`À‰aÀ‰¯À‰ÇÀ‰ÍÀŠÀŠÀŠvÀŠ|ÀŠŒÀŠ’ÀŠËÀŠØÀŠÙÀ‹"À‹(À‹wÀ‹ŽÀ‹”À‹ÝÀ‹îÀ‹ôÀŒ,ÀŒ2ÀŒ”ÀŒ¢ÀŒ£ÀŒïÀŒýÀ�À�RÀ�iÀ�oÀ�¸À�ÉÀ�ÏÀŽÀŽ ÀŽnÀŽ{ÀŽ|ÀŽÊÀŽãÀŽéÀ�8À�‡À��À�ÙÀ�&À�nÀ�tÀ�ÃÀ�çÀ�íÀ‘MÀ‘uÀ‘ÆÀ‘ßÀ‘åÀ’.À’4À’}À’ÍÀ’óÀ’ùÀ“TÀ“ZÀ“jÀ“pÀ“ÀÀ“éÀ”8À”iÀ”pÀ”qÀ”ÂÀ”ÛÀ”áÀ•*À•zÀ•§À•­À–À–À–%À–+À–mÀ–¼À–ÒÀ–àÀ–áÀ—2À—KÀ—QÀ—šÀ— À—éÀ˜9À˜nÀ˜tÀ˜ÑÀ˜×À˜çÀ˜íÀ™#À™qÀ™¿À™ÈÀ™ÉÀšÀš3Àš9Àš‚ÀšÒÀšÿÀ›À›gÀ›mÀ›}À›ƒÀ›ÒÀ›èÀœ3ÀœLÀœZÀœ\Àœ]ÀœµÀœðÀœôÀ�QÀ�˜À�œÀ�ñÀžEÀž›ÀžïÀžóÀŸAÀŸ|ÀŸ€ÀŸÙÀŸÝÀ *À rÀ ‘À •À £À §À òÀ¡+À¡AÀ¡^À¡yÀ¡˜À¡·À¡ÒÀ¡çÀ¢=À¢eÀ¢fÀ¢ªÀ¢°À¢öÀ£;À£CÀ£DÀ£|À£‚À£ÄÀ£óÀ£úÀ£ûÀ¤EÀ¤mÀ¤sÀ¤¾À¥ À¥TÀ¥ŸÀ¥¥À¥ÕÀ¥åÀ¥ëÀ¦:À¦nÀ¦ƒÀ¦�À¦ŽÀ¦ÞÀ¦ëÀ¦ñÀ§?À§|À§‚À§©À§¯À¨À¨QÀ¨œÀ¨¢À¨ÏÀ¨×À¨ÙÀ¨ÚÀ¨þÀ©À©À©À©IÀ©ŒÀ©ÈÀ©ÙÀªÀªÀªpÀªÔÀªÚÀ«(À«ZÀ«bÀ«cÀ«žÀ«¤À«îÀ¬>À¬®À¬´À­À­)À­2À­3À­vÀ­»À­àÀ­æÀ®5À®¦À®¬À®üÀ¯!À¯'À¯uÀ¯•À¯ŸÀ¯¡À¯¢À¯ÌÀ¯ÐÀ°À°aÀ°eÀ°sÀ°wÀ°ÃÀ°ÏÀ± À±GÀ±YÀ±�À±•À±þÀ²À²LÀ²œÀ²¨À²®À²¾À²ÄÀ³À³#À³tÀ³­À³¶À³·À³ìÀ³òÀ´YÀ´_À´§À´÷ÀµÀµ ÀµÀµÀµmÀµ~Àµ‡ÀµˆÀµÖÀ¶À¶À¶uÀ¶{À¶ÃÀ·À·À·%À·5À·;À·‰À·šÀ·£À·¥À·¦À·àÀ·äÀ·ûÀ¸7À¸LÀ¸—À¸¥À¸¦À¸ìÀ¹2À¹YÀ¹aÀ¹bÀ¹¦À¹ìÀº3ÀºqÀº{Àº}Àº~Àº¢Àº¦Àº´Àº¸À» À»À»,À»2À»}À»ÎÀ»ÔÀ¼À¼%À¼rÀ¼ËÀ½ À½9À½AÀ½BÀ½nÀ½tÀ½ÍÀ½þÀ¾À¾DÀ¾JÀ¾¢À¾ýÀ¿À¿À¿À¿hÀ¿ŒÀ¿˜À¿™À¿¸À¿¾ÀÀÀÀ]ÀÀuÀÀ{ÀÀÐÀÀÖÀÁ#ÀÁAÀÁœÀÁ¢ÀÁ²ÀÁ¸ÀÁ÷ÀÂDÀÂ]ÀºÀÂÇÀÂÈÀÃÀÃÀÃoÀÃÁÀÃêÀÃðÀÄ@ÀĉÀÄ¥ÀÅ ÀÅÀÅzÀÅ€ÀÅÃÀÆÀÆPÀƤÀÆéÀÆïÀÆÿÀÇÀÇSÀÇpÀÇŠÀÇŒÀÇ�ÀÇÏÀÇÓÀÈÀÈ8ÀÈLÀÈ”ÀȪÀȵÀȶÀÈýÀÉÀÉNÀÉŒÀÉ’ÀÉàÀÊ0ÀÊxÀÊ”ÀÊäÀË5ÀËXÀ˦ÀËÏÀËÓÀËÔÀÌÀÌÀÌSÀÌžÀÌíÀÍ;ÀÍŠÀÍ�ÀÍßÀÎ0ÀÎAÀÎFÀÎŽÀÎ�ÀΰÀÎÌÀÏÀÏÀÏ-ÀÏXÀÏ€ÀϪÀÏÓÀÏýÀÐ'ÀÐPÀÐuÀРÀÐÉÀÐôÀÑ%ÀÑSÀÑ~ÀѲÀÑâÀÒÀÒÀÒQÀÒ�ÀÒÍÀÓ ÀÓKÀÓ‹ÀÓÉÀÓÿÀÔAÀÔÀÔ¿ÀÕ ÀÕQÀÕ‘ÀÕãÀÖ-ÀÖoÀÖpÀÖ±ÀÖóÀÖôÀ×8À×YÀ×uÀ×�ÀבÀ׿ÀØÀØÀØÀØ-ÀØXÀ؃ÀØ×ÀØØÀÙÀÙ,ÀÙ2ÀÙJÀÙcÀÙªÀÙ®ÀÙ¯ÀÙÏÀÚÀÚIÀÚpÀÚ´ÀÚ¸ÀÚ¹ÀÚñÀÛ!ÀÛ"ÀÛ[ÀÛaÀÛ�ÀÛ‡ÀÛ—ÀÛ�ÀÛãÀÜÀÜ\ÀÜbÀܪÀÜ¿ÀÜÓÀÝ ÀÝqÀÝÀÀÞÀÞMÀÞ‰ÀÞ�ÀÞñÀÞõÀÞöÀßÀßTÀß™ÀßÝÀà(ÀàˆÀàŒÀà�ÀàÅÀáÀáÀáSÀáYÀá›ÀáìÀâ=Àâ^ÀâdÀâ±ÀâÒÀâØÀâÿÀãÀãÀãÀãjÀãžÀãèÀãþÀäÀägÀä¢Àä¦Àä§ÀäÊÀåÀåFÀåJÀåKÀå�Àå•Àå½ÀåÙÀæ+Àæ/Àæ0ÀæSÀæxÀæ¶ÀæºÀæ»ÀæõÀçDÀç�Àç‡ÀçÄÀçßÀè#Àè'Àè(ÀèJÀèlÀè²Àè¶Àè·ÀèøÀé(Àé.Àé`Àé|ÀéÎÀéÒÀéÓÀéöÀêÀê]ÀêaÀêbÀê£Àê©ÀêúÀëEÀëKÀë…Àë‹Àë©Àë¯ÀìÀìÀì…Àì‹ÀìòÀìøÀíDÀí•Àí¡Àí§Àí·Àí½Àî Àî8Àî�ÀîÀÀîÞÀï2Àï6Àï7Àï\Àï�ÀïÄÀïÈÀïÉÀðÀð8Àð9Àð„ÀðÒÀñÀñjÀñ¸Àñ¾ÀòÀò ÀòWÀò{Àò�ÀòêÀòðÀóYÀó_ÀóÈÀóÎÀôÀôkÀôwÀô}Àô�Àô“ÀôÝÀôøÀõAÀõaÀõªÀõ®Àõ¯ÀõÖÀöÀö_ÀöcÀödÀö´ÀöòÀöøÀ÷À÷;À÷À÷ À÷µÀ÷ÖÀ÷öÀøQÀø˜Àø£Àø©ÀøºÀø¾Àø¿ÀøåÀøþÀùPÀù˜ÀùàÀùíÀú:ÀúlÀú¾ÀûÀûhÀûnÀûrÀûsÀûÅÀüÀüeÀükÀü“ÀüàÀýÀý^ÀýbÀýcÀýŽÀý³ÀýùÀýýÀýþÀþ8Àþ>ÀþtÀþzÀþŠÀþ�ÀþÌÀÿÀÿ6Àÿ~Àÿ•ÀÿÅÀÿÉÀÿÊÀÿèÀÿøÀ\ÀoÀyÀ‰À®ÀØÀ8ÀBÀJÀ]ÀgÀŸÀ£À¤ÀëÀýÀÀ(À.ÀÀ À÷ÀÀÀÀFÀŒÀ¬ÀÊÀøÀÀ ÀSÀYÀ]À^À™ÀŸÀæÀÀÀÀAÀ[ÀmÀ‡À×ÀâÀêÀôÀúÀ ÀÀKÀlÀÃÀåÀéÀêÀÀ+ÀIÀwÀÀŒÀÍÀ#ÀNÀ’ÀšÀ À¤À¥ÀäÀêÀ 6À €À ±À ËÀ À À À 8À ‚À †À ‡À “À ©À âÀ À À 7À RÀ nÀ —À µÀ ÕÀ À À CÀ KÀ tÀ ™À ¡À ÍÀ À _À iÀ xÀ žÀ ¦À ¾À ÄÀ ÜÀ À%À+À[ÀƒÀ›À¡ÀÒÀþÀÀÀ;ÀxÀ�À–À´ÀïÀÀ À<À}À•À›ÀµÀèÀÀÀ%ÀbÀzÀ€À˜ÀÑÀ×ÀîÀ ÀÀÀÀ^ÀbÀ¥ÀïÀ:ÀlÀpÀ£À§ÀßÀñÀ ÀÀ`ÀŒÀ’ÀÅÀÍÀÎÀÀiÀ¡ÀÚÀêÀëÀ ÀÀ`À­ÀøÀþÀ3À@ÀBÀCÀsÀ‹À¥ÀµÀ×ÀçÀÀÀÀÀÀHÀ[ÀgÀ…À‘À·ÀÃÀæÀóÀ-À1À3À4ÀvÀŽÀÜÀ)ÀqÀ»ÀÒÀéÀïÀMÀXÀYÀyÀÀØÀëÀìÀ ÀÀ_ÀšÀ«À¬ÀÒÀØÀ$ÀQÀWÀlÀrÀ€ÀžÀ¾ÀÄÀ À*À€ÀÂÀãÀýÀÀ1ÀKÀVÀ^ÀhÀ~ÀÀ‘À—ÀçÀ 5À �À ÎÀ!À!À!nÀ!zÀ!€À!�À!–À!õÀ":À"AÀ"CÀ"DÀ"ƒÀ"–À"äÀ#4À#gÀ#sÀ#tÀ#ÃÀ$À$EÀ$QÀ$RÀ$¢À$éÀ%8À%sÀ%‚À%„À%…À%±À%êÀ%ëÀ&!À&%À&eÀ&iÀ&·À&ÏÀ&ÓÀ'"À'qÀ'¸À(À(NÀ(\À(`À(¬À(ûÀ)BÀ)FÀ)TÀ)XÀ)ÆÀ*À*;À*ŠÀ*˜À*ÊÀ*ÚÀ+À+À+À+>À+XÀ+\À+]À+~À+šÀ+±À+²À+ðÀ+öÀ,AÀ,ƒÀ,¤À,ËÀ,ÌÀ- À-À-\À-ŸÀ-ÀÀ-èÀ-éÀ.À.À.IÀ.\À.]À.ŸÀ.³À.´À.ÎÀ.ÏÀ/À/MÀ/SÀ/¤À/¿À/ÅÀ0À0[À0ªÀ0ÊÀ0ÝÀ0øÀ1%À1QÀ1gÀ1žÀ1³À1ÖÀ1îÀ1ôÀ1øÀ1ùÀ2=À2CÀ2‘À2§À2ÂÀ2ÖÀ2æÀ3À3À3À36À3•À3™À3šÀ3ÏÀ3ÕÀ4!À41À47À4|À4ËÀ5À5À5eÀ5~À5ÎÀ6À6gÀ6³À7À75À7cÀ7gÀ7hÀ7¤À7ªÀ7öÀ8EÀ8qÀ8wÀ8ÆÀ9À9GÀ9“À9ÀÀ9ÞÀ:À:0À:>À:^À:lÀ:”À:£À:ñÀ:÷À:ûÀ:üÀ;MÀ;oÀ;uÀ;µÀ;ëÀ< À<ÀÀ>`À>®À>úÀ?À?À?lÀ?•À?›À?ãÀ@4À@JÀ@PÀ@†À@ŒÀ@šÀ@µÀ@ÕÀ@íÀ@óÀA+ÀAjÀA‰ÀAÓÀAäÀAöÀBÀBfÀB´ÀBÚÀCÀCÀC<ÀCDÀCJÀClÀC ÀCëÀDÀDYÀD�ÀDÚÀDóÀDùÀE5ÀEeÀEkÀEˆÀE¢ÀE¨ÀEÊÀEèÀFÀF ÀFÀF-ÀFPÀFVÀFqÀFwÀFšÀFÓÀFÝÀFãÀGÀGÀG ÀG&ÀGkÀG¹ÀGÝÀGïÀHÀHÀHGÀH˜ÀHæÀI)ÀI2ÀI8ÀIWÀI‚ÀI†ÀI‡ÀIÓÀJÀJÀJlÀJ¶ÀKÀKUÀKŸÀKìÀL%ÀL&ÀL2ÀL\ÀL^ÀL_ÀLyÀL®ÀL÷ÀMÀMÀMeÀM‡ÀM£ÀM±ÀM²ÀNÀNÀNÀNlÀN‡ÀNˆÀNÝÀO&ÀOsÀO£ÀOÚÀOëÀP ÀPÀP ÀP(ÀP,ÀP-ÀPiÀP¿ÀQÀQÀQ3ÀQFÀQ^ÀQjÀQ‚ÀQÏÀQçÀR1ÀRiÀRpÀR†ÀR–ÀRšÀR›ÀRæÀS ÀSMÀSiÀSjÀS“ÀS”ÀSÚÀSùÀSúÀTÀT6ÀT8ÀT9ÀTSÀTtÀT¨ÀTªÀT«ÀTÝÀUÀUÀUNÀURÀUŽÀU¨ÀU¬ÀUöÀV?ÀV�ÀVÓÀWÀWGÀWKÀW„ÀWˆÀW”ÀW ÀWÚÀXÀX9ÀX†ÀXÑÀXîÀY:ÀYYÀYzÀY€ÀYˆÀYŒÀY¢ÀY¦ÀY²ÀY¿ÀYùÀZ:ÀZzÀZ¹À[À[À[nÀ[¶À[×À[ÝÀ[åÀ[÷À\AÀ\]À\cÀ\¡À\½À\ûÀ\üÀ]+À]1À]~À]™À]šÀ]ÃÀ]ÉÀ^À^À^cÀ^xÀ^zÀ^{À^›À^ŸÀ^çÀ_À_À_=À_ZÀ_qÀ_—À_­À_®À_ÝÀ_ãÀ`À`<À`WÀ`XÀ`€À`†À`ÊÀ`ÐÀa!Àa'ÀahÀa˜Àa¼Àa½Àb Àb0Àb6Àb�Àb¦Àb¸ÀbºÀb»ÀcÀc ÀcUÀcpÀcuÀc®ÀcÌÀcàÀcáÀcûÀcüÀdÀdCÀdDÀd˜Àd¸Àd¹ÀdØÀdÙÀdåÀe/Àe0Àe‰Àe®Àe¯Àe»ÀeæÀf.ÀfXÀfmÀf�Àf§Àf¯ÀfÊÀfíÀgNÀgXÀg‘Àg Àg¼ÀgÓÀhÀhUÀhbÀhmÀhuÀh}Àh–Àh´ÀhºÀh×ÀhÛÀhÜÀiÀiiÀi¹ÀiºÀiÆÀjÀj#Àj$Àj0Àj‘Àj“Àj”Àj·Àj»Àk ÀkZÀk¨ÀkËÀkÏÀl!ÀloÀlŠÀlÊÀlïÀm@Àm†ÀmÒÀn"Àn5Àn9Àn„ÀnÎÀoÀomÀo¹Àp ÀpYÀp¡ÀpÝÀpáÀq+ÀquÀqÅÀrÀrÀrRÀr^ÀrƒÀr—Àr«ÀrÀÀrÞÀréÀs5Às_ÀskÀs‰Às©ÀsÍÀsÒÀsÔÀsÕÀsøÀsüÀtKÀt›ÀtéÀu ÀuÀudÀu²ÀuëÀuïÀvAÀv‘Àv�Àv¡ÀvìÀw6Àw†ÀwÕÀx!ÀxrÀxÁÀy ÀyEÀyIÀy“ÀyÝÀz-ÀziÀzmÀzºÀzÆÀzÊÀzïÀzóÀ{CÀ{ŽÀ{ÙÀ|À|0À|LÀ|`À|uÀ|“À|˜À|ÀÀ|ÌÀ} À}(À}lÀ}”À}žÀ}åÀ~À~À~!À~iÀ~pÀ~uÀ~wÀ~xÀ~›À~ŸÀ~êÀ~îÀ;ÀŠÀÉÀÍÀ€À€eÀ€{À€À€ÍÀ�À�fÀ�§À�öÀ‚FÀ‚–À‚æÀƒÀƒ!ÀƒkÀƒµÀƒéÀƒíÀ„:À„FÀ„JÀ„oÀ„sÀ„ÃÀ…À…YÀ…�À…®À…ÊÀ…ôÀ…ÿÀ†)À†uÀ†}À†ØÀ‡À‡XÀ‡€À‡¥À‡ÌÀ‡ÓÀ‡áÀ‡÷À‡ûÀ‡ýÀ‡þÀˆNÀˆpÀˆrÀˆsÀˆÂÀˆëÀˆïÀˆýÀ‰À‰KÀ‰lÀ‰ÑÀ‰ÒÀŠÀŠÀŠ)ÀŠ-ÀŠyÀŠ·ÀŠßÀŠ÷À‹#À‹)À‹xÀ‹�À‹ÃÀ‹íÀŒÀŒÀŒHÀŒNÀŒ�ÀŒíÀ�;À�ˆÀ�³À�¹À�ïÀŽÀŽÀŽ3ÀŽ9ÀމÀŽØÀ�%À�sÀ��À�£À�ÙÀ�îÀ�ïÀ�ûÀ�7À�9À�:À�ƒÀ�‡À�ÖÀ‘$À‘kÀ‘µÀ‘âÀ‘äÀ‘åÀ’CÀ’|À’™À’¡À’ÍÀ’ÛÀ’ðÀ’ôÀ“À“À“À“QÀ“UÀ“£À“îÀ”À” À”VÀ”§À”æÀ”êÀ•5À•À•ÏÀ–À–jÀ–»À— À—RÀ—ŽÀ—’À—ÜÀ˜&À˜vÀ˜²À˜ÎÀ˜âÀ˜ïÀ˜ýÀ™À™6À™GÀ™[À™pÀ™ŽÀ™“À™°À™äÀ™èÀšÀš<Àš@ÀšAÀš‰ÀšÅÀšÓÀšçÀšýÀ›À›2À›9À›:À›UÀ›™À›ÁÀ›ÉÀœÀœ:ÀœBÀœHÀœIÀœXÀœ¨ÀœÆÀ� À�%À�AÀ�LÀ�rÀ�ŽÀ�®À�¯À�ÛÀ�çÀ�íÀ�ïÀ�ðÀž=ÀžMÀžQÀžˆÀžœÀžæÀžìÀŸ=ÀŸŒÀŸÛÀ À  À DÀ OÀ PÀ ’À ˜À éÀ¡:À¡@À¡yÀ¡„À¡†À¡‡À¡«À¡¯À¡½À¡ÁÀ¢À¢6À¢KÀ¢À¢…À¢ÓÀ£À£_À£eÀ£uÀ£{À£ÊÀ£äÀ£òÀ£óÀ¤BÀ¤hÀ¤nÀ¤¼À¥ À¥$À¥*À¥:À¥qÀ¥~À¥À¥ÊÀ¥ÐÀ¦À¦iÀ¦žÀ¦§À¦¨À¦óÀ§,À§2À§€À§ÔÀ§ÚÀ§êÀ¨'À¨.À¨/À¨cÀ¨iÀ¨·À©À©CÀ©IÀ©YÀ©_À©¨À©ÁÀ©ÖÀ©ØÀ©ÙÀª*ÀªGÀª—ÀªºÀªÀÀ«À«YÀ«ªÀ«óÀ¬ À¬À¬bÀ¬®À¬èÀ¬îÀ­9À­^À­pÀ­rÀ­sÀ­ËÀ®À®1À®KÀ®LÀ®XÀ® À®»À®½À®¾À®ðÀ®ôÀ¯9À¯=À¯€À¯¿À¯ÓÀ¯×À°À°HÀ°LÀ°‹À°ÎÀ°öÀ°úÀ±>À±wÀ±�À±úÀ²À²>À²?À²gÀ²mÀ²ºÀ³ À³,À³`À³�À³§À³«À³¬À³êÀ³ðÀ´5À´RÀ´vÀ´wÀ´¬À´ÏÀ´ÐÀµÀµEÀµFÀµ�ÀµšÀµ½Àµ¾À¶À¶7À¶dÀ¶eÀ¶¨À¶èÀ¶÷À¶ýÀ·nÀ·ãÀ¸)À¸*À¸mÀ¸´À¸ùÀ¹À¹TÀ¹UÀ¹šÀ¹áÀ¹ðÀ¹öÀºcÀºÔÀ»&À»'À»lÀ»³À»øÀ¼ À¼gÀ¼hÀ¼®À¼òÀ½7À½~À½£À½©À¾À¾‡À¾ÍÀ¾ÎÀ¿À¿XÀ¿�À¿äÀÀ*ÀÀRÀÀ ÀÀ¡ÀÀäÀÁÀÁ ÀÁOÀÁsÀÁyÀÁÀÀÂÀÂGÀ‹ÀÂÒÀÃÀÃDÀÃJÀÃ�ÀÃÅÀÄÀÄÀÄfÀÄ«ÀıÀÅÀÅIÀÅ�ÀÅ´ÀźÀÅÿÀÆNÀÆšÀÆ ÀƳÀÆÈÀÆéÀÇÀÇÀÇ:ÀÇ@ÀÇAÀÇ�ÀÇÕÀÇÛÀÈÀÈÀÈdÀȲÀÈõÀÉ?ÀÉEÀɈÀÉÖÀÊ#ÀÊ:ÀÊUÀÊoÀÊ�ÀÊ«ÀÊÆÀÊáÀÊçÀÊèÀË/ÀËFÀËaÀËbÀˤÀËÒÀËØÀÌ*ÀÌxÀÌ“ÀÌ”ÀÌÜÀÍÀÍXÀÍ™ÀÍßÀÎ#ÀÎgÀÎsÀÎyÀÎåÀÏUÀÏ[ÀÏËÀÐ?ÀÐÀЀÀÐÒÀÐàÀÐæÀÑ5ÀÑZÀÑ`ÀѧÀÑÛÀÑÜÀÒÀÒaÀÒqÀÒ�ÀÒ�ÀÒÝÀÓ ÀÓAÀÓBÀÓˆÀÓŽÀÓÛÀÔ)ÀÔTÀÔ–ÀÔ—ÀÔÝÀÕÀÕYÀÕ_ÀÕ¬ÀÕýÀÖ(ÀÖqÀÖrÀÖ·ÀÖøÀ×À× À×NÀ×’À×­À×½À×¾ÀØÀØ[ÀØzÀØ€ÀØÈÀØÎÀÙÀÙ2ÀÙ3ÀÙsÀÙ¢ÀÙ¿ÀÙÀÀÚÀÚ0ÀÚWÀÚXÀÚ�ÀÚ“ÀÚãÀÛ0ÀÛ{ÀÛºÀÛÀÀÜÀÜ`ÀܲÀÜÿÀÝIÀÝ—ÀÝ¥ÀÝêÀÝþÀÝÿÀÞKÀÞ^ÀÞdÀÞ´ÀßÀß<Àß…Àß±ÀàÀàÀàÀà1Àà˜ÀàŸÀà£Àà¤ÀàóÀá$Àá*ÀávÀá¾Àâ Àâ\Àâ¦ÀâÞÀâäÀã/Àã|ÀãÅÀãùÀãÿÀäOÀäœÀäìÀå/Àå|ÀåÉÀæÀæhÀæ·Àæ½Àç ÀçZÀçŽÀç”ÀçåÀè0ÀèjÀèlÀèmÀè·ÀèßÀèñÀéÀé Àé ÀéXÀé�Àé°Àé±ÀéêÀê Àê ÀêRÀêxÀêyÀê…ÀêÉÀêÕÀëÀëÀëkÀëŠÀë‹ÀëåÀìÀìÀìÀì|Àì¨Àì©ÀìµÀìîÀíÀí$Àí(Àí^Àí_ÀíkÀíÉÀíõÀíöÀîÀî;Àî_ÀîqÀîuÀî«Àî¬Àî¸ÀïÀï(Àï:Àï>Àï�ÀïŽÀïšÀïãÀðÀð$Àð(ÀðÀð€ÀðŒÀðåÀñÀñÀñÀñsÀñtÀñ€ÀñÙÀñþÀòÀòÀòwÀòxÀò„ÀòÕÀòòÀóÀóÀóWÀóXÀódÀóµÀóÚÀóìÀóðÀôGÀôHÀôTÀô¦ÀôÆÀõ%Àõ)Àõ*Àõ‰Àõ¤Àõ¶ÀõºÀõÒÀõãÀõóÀöÀöÀö/ÀöFÀö\ÀöaÀöbÀönÀö�Àö–Àö·ÀöÒÀöíÀ÷À÷À÷3À÷WÀ÷±À÷µÀ÷¶ÀøÀø3ÀøEÀøIÀøfÀøzÀøŽÀø¢Àø¶ÀøËÀøÞÀøòÀø÷ÀøøÀùÀùÀù9ÀùZÀùuÀù�Àù«Àù²ÀùÛÀùÿÀúÀú.ÀúDÀúTÀúdÀútÀú„Àú•ÀúœÀú Àú¡ÀúþÀû&Àû8Àû<ÀûaÀûuÀû‰Àû�Àû±ÀûÆÀûÙÀûíÀûòÀûóÀûÿÀüÀü;ÀüwÀü{Àü|ÀüÅÀüâÀüôÀüøÀýHÀýIÀýUÀýqÀý‘ÀýÍÀýÑÀýÒÀþÀþ8ÀþJÀþNÀþžÀþŸÀþ«ÀþìÀÿ Àÿ_ÀÿcÀÿdÀÿ½ÀÿÙÀÿëÀÿïÀÀÀ)À;ÀNÀeÀ|À�À‚ÀŽÀÃÀõÀùÀúÀLÀ‰ÀŠÀ–ÀµÀ×ÀûÀÿÀÀJÀxÀyÀ…À¼ÀîÀÀ"À#À|ÀÃÀÄÀÐÀÀ7ÀRÀzÀÈÀÕÀÀÀÀÀ{À½À¾ÀÀ5À9À™ÀšÀ¦ÀðÀÀ/ÀWÀ«À¸ÀúÀÀÀÀMÀqÀuÀ¾À¿À À <À @À jÀ €À �À žÀ ¶À »À ¼À ÈÀ À .À /À ;À ˆÀ ¡À ¢À ®À ÎÀ ñÀ À À À €À ¯À °À ¼À ÚÀ þÀ ,À TÀ eÀ iÀ jÀ ÁÀ ýÀ þÀ À 2À XÀ †À ¥À ¶À ºÀ »ÀÀMÀNÀZÀoÀšÀØÀÜÀÝÀ"ÀGÀHÀ©ÀóÀôÀÀ;ÀhÀlÀmÀyÀ˜ÀšÀ›ÀÝÀáÀïÀMÀ]ÀŽÀ”ÀºÀçÀèÀ-À3ÀˆÀ´ÀñÀ9À=À>À]ÀcÀ¶ÀúÀÀÀAÀGÀ˜ÀêÀÀÀÀNÀTÀ¤ÀóÀÀÀcÀ²ÀÀOÀ`À¥ÀÞÀàÀáÀ)À-À~ÀÊÀÀÀZÀ^ÀªÀùÀÀÀeÀµÀÖÀÀCÀ›ÀœÀÄÀÅÀÑÀÀÀÀUÀoÀªÀÕÀÖÀñÀÀÀ!À<ÀoÀ�À¨À ÀgÀÜÀåÀëÀÀ À ÀÀ*ÀQÀ�À”ÀšÀ²ÀÄÀÈÀÊÀËÀ À À VÀ ¡À ïÀ!À!À!eÀ!´À"À"PÀ"žÀ"¬À"¿À"ÝÀ#À#]À#�À#‘À#ÇÀ#ÍÀ$À$`À$©À$ÀÀ$ÁÀ$æÀ$ìÀ%:À%€À%ÐÀ%ïÀ&À&À&2À&8À&ˆÀ&ÏÀ'À'lÀ'¥À'«À'ùÀ(IÀ(˜À(ÑÀ(ëÀ(ìÀ) À) À)\À)ƒÀ)‰À)ØÀ*%À*=À*CÀ*xÀ*~À*ÄÀ*öÀ+7À+;À+<À+…À+‹À+ÍÀ,À,_À,¼À,ÀÀ,ÁÀ,ÍÀ,äÀ-;À-=À->À-yÀ-®À-ÓÀ-×À-ØÀ.-À.oÀ.pÀ.”À. À.ËÀ/À/À/?À/CÀ/DÀ/¥À/ÒÀ/ÓÀ0À0#À0NÀ0™À0 À0ãÀ1À1:À1MÀ1ZÀ1¬À1²À1¶À1·À2À2XÀ2YÀ2¹À2ÅÀ2ðÀ3;À3BÀ3pÀ3³À3ÄÀ3ÈÀ3ÉÀ4À4>À4BÀ4`À4rÀ4ˆÀ4šÀ4ªÀ4ÄÀ4ÉÀ4ÊÀ4îÀ4úÀ5%À5pÀ5wÀ5›À5ŸÀ5 À5þÀ6+À6,À6WÀ6\À6±À6ÛÀ6óÀ7À7/À7LÀ7RÀ7cÀ7gÀ7hÀ7ÂÀ7èÀ7éÀ85À8;À8|À8œÀ8žÀ8ŸÀ8ÔÀ9À9!À9YÀ9ZÀ9§À9êÀ9ôÀ9õÀ:CÀ:�À:½À:ÆÀ:ÇÀ;À;eÀ;¨À;±À;²À<À<À<À<À<ÀÀ>À>dÀ>²À?À?À?À?hÀ?nÀ?”À?šÀ?ªÀ?°À?ýÀ@0À@1À@KÀ@bÀ@cÀ@©À@ôÀAÀATÀAUÀAaÀA„ÀAØÀAÜÀAÝÀAéÀBÀBÀB)ÀBzÀB|ÀB}ÀBžÀBÛÀBÝÀBÞÀCÀC<ÀCHÀCŽÀC�ÀC‘ÀCÄÀCéÀDÀDÀDRÀDiÀD’ÀD¹ÀDâÀE ÀE.ÀE5ÀE9ÀE;ÀE<ÀEuÀE†ÀE²ÀE³ÀEÐÀEÑÀEÝÀFÀF2ÀFHÀF ÀFúÀGUÀGyÀG€ÀG„ÀG†ÀG‡ÀG×ÀH'ÀHsÀHxÀHŠÀH ÀHµÀHËÀHÞÀHæÀHúÀIXÀI·ÀJÀJ7ÀJ?ÀJDÀJUÀJ€ÀJžÀJçÀK%ÀK?ÀK}ÀK—ÀKéÀKïÀL2ÀLpÀL‹ÀLÉÀLäÀM5ÀM;ÀMOÀMiÀM†ÀM¤ÀMÖÀMüÀN.ÀNQÀNlÀNtÀN–ÀN³ÀNÑÀOÀO:ÀOlÀO�ÀOÁÀOÉÀOèÀPÀP#ÀPUÀP{ÀP–ÀP¹ÀPëÀPóÀP÷ÀPùÀPúÀQKÀQšÀQèÀR4ÀReÀRiÀR²ÀR¿ÀRêÀS7ÀSˆÀSÌÀSÒÀT#ÀTqÀTžÀTÙÀTïÀU ÀU#ÀU=ÀU>ÀUˆÀUÏÀUäÀUêÀV7ÀV_ÀVeÀV˜ÀVËÀVþÀW1ÀWdÀWjÀW¹ÀXÀX ÀXÀXYÀXpÀX‡ÀXžÀXµÀX¿ÀXÉÀXÏÀXáÀXçÀYÀYÀYÀYZÀYvÀY’ÀY®ÀYÊÀYÔÀYÞÀYäÀZkÀZqÀZÀZ¼ÀZßÀ[À[%À[HÀ[RÀ[\À[bÀ[ëÀ[ñÀ[ÿÀ\@À\fÀ\ŒÀ\²À\ØÀ\âÀ\ìÀ]À]1À]JÀ]bÀ]~À]À]ËÀ]ÛÀ^À^À^1À^GÀ^nÀ^oÀ^½À^ØÀ_À_À_.À_DÀ_kÀ_lÀ_ƒÀ_¢À_ÁÀ_ÔÀ_ÕÀ`À`:À`~À`ÇÀaÀaÀa)Àa5Àa‚ÀaƒÀa¬ÀaÁÀaØÀb Àb#Àb-ÀbUÀbnÀbœÀbºÀbÑÀbÛÀc&ÀcPÀctÀc©ÀcÍÀdÀdÀdSÀdYÀd]Àd^ÀdjÀd�Àd¹ÀdÍÀdÓÀdöÀeÀeMÀeoÀe—Àe›ÀeœÀe¨Àe½ÀeçÀfJÀfNÀfOÀf[Àf|Àf‘Àf¨ÀfáÀfúÀg)ÀgMÀgÀg£ÀgÕÀgäÀh ÀhÀhÀhÀh Àh6ÀhKÀhbÀh›Àh´ÀhãÀiÀi9Ài]Ài�ÀižÀj:Àj@ÀjDÀjFÀjGÀj…Àj‰ÀjÙÀk$ÀkvÀkŒÀkÇÀlÀl1ÀlrÀlvÀlwÀlÑÀlåÀmÀm"ÀmQÀm–ÀmªÀmÈÀmÌÀmÍÀmüÀnAÀnUÀnsÀnwÀnxÀnÆÀnìÀo Ào ÀoJÀojÀokÀoÐÀpÀpÀpYÀpŠÀp‹ÀpïÀqÀqÀq~Àq¨ÀqªÀq«ÀqÞÀqâÀqðÀqôÀrCÀr�ÀrßÀsÀsSÀs~Às›ÀsíÀtÀtÀtWÀt´Àu ÀuÀuÀu_Àu¥ÀuòÀv5Àv9Àv:Àv~ÀvÐÀwÀw^ÀwbÀwcÀw§Àw­ÀwûÀxEÀxcÀx~Àx¶Àx½ÀxÝÀyÀy!ÀyƒÀy‡ÀyˆÀyÒÀyØÀz'Àz^ÀzƒÀzÝÀ{%À{)À{*À{aÀ{gÀ{¶À|À|SÀ|£À|ÑÀ|×À} À}bÀ}ŽÀ}”À}áÀ~/À~GÀ~MÀ~[À~ˆÀ~ŽÀ~©À~ÅÀ~ËÀ~ôÀ~úÀÀÀ/ÀaÀ�À³ÀÍÀÚÀ€À€À€$À€*À€4À€:À€ˆÀ€ÖÀ�À�NÀ�kÀ�ÎÀ�ÔÀ‚À‚NÀ‚yÀ‚©À‚øÀƒ+Àƒ4ÀƒOÀƒ˜Àƒ Àƒ¼À„À„À„À„=À„AÀ„BÀ„ŠÀ„ÉÀ„ÊÀ…À…hÀ…�À…�À…ÙÀ†À†1À†3À†4À†fÀ†¯À†°À†ÊÀ†ïÀ†ðÀ‡À‡UÀ‡aÀ‡˜À‡™À‡¥À‡èÀ‡éÀ‡õÀˆ9Àˆ:ÀˆFÀˆiÀˆ•Àˆ©Àˆ¯ÀˆÙÀ‰ À‰8À‰<À‰=À‰IÀ‰‘À‰“À‰”À‰ÌÀŠ.ÀŠ/ÀŠFÀŠ]ÀŠyÀŠzÀŠŽÀŠÐÀŠÜÀ‹À‹À‹/À‹GÀ‹bÀ‹zÀ‹–À‹¯À‹ÍÀ‹èÀŒÀŒÀŒ,ÀŒJÀŒPÀŒTÀŒUÀŒaÀŒ«ÀŒ¬ÀŒ¸À�À�À�À�3À�_À�sÀ�yÀ�©À�ËÀ�íÀŽÀŽÀŽÀŽ"ÀŽUÀŽWÀŽXÀŽŠÀŽÐÀŽÑÀŽéÀ�À�À�FÀ�RÀ�‰À�ŠÀ�–À�ÖÀ�×À�ãÀ�$À�%À�1À�TÀ�€À�”À�šÀ�úÀ�þÀ�ÿÀ‘ À‘@À‘BÀ‘CÀ‘tÀ‘¹À‘ºÀ‘ÒÀ‘êÀ‘ëÀ’.À’:À’qÀ’rÀ’~À’½À’¾À’ÊÀ“ À“ À“À“:À“fÀ“zÀ“€À“ßÀ“ãÀ“äÀ“ðÀ”%À”'À”(À”[À”ªÀ”«À”ÌÀ”íÀ”îÀ•À•NÀ•ZÀ•‘À•’À•žÀ•ÀÀ–À–À–À–qÀ–rÀ–~À–¡À–ÍÀ–áÀ–çÀ—À—>À—hÀ—lÀ—mÀ—yÀ—¶À—¸À—¹À—óÀ˜À˜À˜>À˜?À˜ƒÀ˜„À˜�À˜ÇÀ˜ÈÀ˜ÔÀ™À™À™ À™UÀ™VÀ™bÀ™…À™±À™ÅÀ™ËÀ™ýÀšÀšRÀšVÀšWÀšŸÀšßÀšàÀšìÀ›À›À›À›UÀ›YÀ›©À›üÀœ@Àœ{Àœ·À�À�À�`À�dÀ�eÀ�²À�øÀž>ÀžRÀžƒÀž‡ÀžˆÀžÌÀŸÀŸbÀŸvÀŸ¦ÀŸªÀŸ«ÀŸïÀŸõÀ CÀ �À ÓÀ ÷À¡5À¡;À¡OÀ¡‰À¡�À¡ŽÀ¡ÀÀ¢À¢À¢bÀ¢†À¢ŠÀ¢‹À¢¾À£À£À£qÀ£ÇÀ¤À¤À¤À¤SÀ¤gÀ¤‡À¤‹À¤ŒÀ¤ÌÀ¤ìÀ¤íÀ¥-À¥RÀ¥dÀ¥hÀ¥¯À¥°À¥éÀ¦À¦"À¦&À¦cÀ¦dÀ¦�À¦ÃÀ¦ÕÀ¦ÙÀ§À§À§pÀ§µÀ§¶À¨À¨RÀ¨SÀ¨šÀ¨ÈÀ¨ÌÀ©À© À©zÀ©®À©¯À©ýÀª#Àª@ÀªBÀªCÀª‰Àª¾ÀªóÀ«=À«YÀ«uÀ«ƒÀ«„À«£À«¤À«ÍÀ«ÓÀ¬$À¬?À¬WÀ¬gÀ¬ˆÀ¬›À¬¥À¬ºÀ¬¾À¬¿À­À­2À­8À­…À­ÏÀ®À®bÀ®hÀ®­À®ÀÀ®ÐÀ¯À¯;À¯NÀ¯XÀ¯\À¯^À¯_À¯´À¯ÍÀ¯ÑÀ°À°lÀ°¹À± À± À±bÀ±¶À²À²gÀ²ºÀ²ãÀ²çÀ³AÀ³fÀ³jÀ³xÀ³|À³ÀÀ´ À´ZÀ´„À´ÎÀµÀµ=ÀµŠÀµØÀµòÀ¶-À¶=À¶—À¶�À¶éÀ·/À·5À·�À·­À·³À¸À¸yÀ¸ÛÀ¸äÀ¸åÀ¹6À¹<À¹”À¹òÀºÀº$Àº~ÀºÛÀºáÀ»GÀ»­À¼À¼À¼À¼rÀ¼xÀ¼ÐÀ½(À½~À½™À½ŸÀ½ùÀ¾OÀ¾dÀ¾jÀ¾ÎÀ¿2À¿•À¿ŸÀ¿ À¿àÀ¿æÀÀ@ÀÀ›ÀÀ«ÀÀ±ÀÁ ÀÁ*ÀÁ0ÀÁ“ÀÁöÀÂXÀÂaÀÂcÀÂdÀ›ÀÂÃÀÂýÀÃ&ÀÃ{ÀÞÀÃÁÀÃäÀÄÀÄ ÀÄÀÄÀÄÀÄPÀÄxÀĪÀÄÓÀÄôÀÄøÀÅ ÀÅ ÀÅ ÀÅ@ÀÅhÀÅ¢ÀÅËÀÅéÀÆ ÀÆ0ÀÆSÀÆrÀÆ‘ÀÆ•ÀƦÀƨÀÆ©ÀÆæÀÇÀÇ*ÀÇWÀÇpÀljÀÇ¢ÀÇ»ÀÇÌÀÇÎÀÇÏÀÈÀÈÀÈmÀÈ€ÀÈ„ÀÈ’ÀÈ–ÀÉ ÀÉÀÉ5ÀÉjÀÉpÀÉ¿ÀÊÀÊZÀÊ©ÀÊúÀËKÀË›À˽ÀËÃÀÌÀÌHÀÌNÀ̱ÀÍÀÍxÀÍÞÀÍäÀÎ/ÀÎuÀÎ�ÀΖÀÎãÀÏ6ÀÏvÀωÀÏšÀÏ©ÀÏÃÀÏáÀÐ ÀÐ#ÀÐHÀÐkÀЧÀкÀÐçÀÑ+ÀÑnÀÑ«ÀѺÀÑæÀÑúÀÒUÀÒYÀÒZÀÒ¥ÀÒÅÀÒËÀÓÀÓkÀÓµÀÔÀÔUÀÔ¦ÀÔöÀÕÀÕÀÕlÀÕ¢ÀÕ¨ÀÖ ÀÖnÀÖÒÀ×8À×>À×�À×ÕÀ×ðÀ×öÀØCÀØ–ÀØÖÀØÜÀÙ(ÀÙvÀÙÀÀÚÀÚ]ÀÚ‚ÀÚ•ÀÚ¨ÀÚ»ÀÚÕÀÚóÀÛÀÛ5ÀÛHÀÛfÀÛ�ÀÛÉÀÛÜÀÜ ÀÜFÀÜUÀÜ�ÀÜÄÀÜÅÀÝ*À݆ÀÝÊÀÝàÀÝóÀÞÀÞÀÞ)ÀÞ?ÀÞYÀÞqÀÞ‚ÀÞ‹ÀÞ˜ÀÞ¦ÀÞÝÀßÀß(Àß<ÀßNÀß`ÀßuÀ߈Àß›Àß«ÀßÁÀßÛÀßóÀàÀà ÀàÀàÀàÀàhÀà†ÀàŒÀà×Àá%Àá`ÀáfÀáµÀâÀâPÀâŸÀâðÀãAÀã‘Àã³Àã¹Àä ÀäJÀäPÀä²ÀåÀåwÀåÜÀåâÀæ1Àæ�Àæ¤ÀæªÀæ÷ÀçJÀçŠÀçœÀç¯ÀçÉÀççÀèÀè,ÀèOÀèiÀè�Àè¶ÀèòÀéÀé2ÀéuÀé²ÀéÁÀéíÀêÀêÀê"Àê3ÀêGÀê_ÀêuÀê‡Àê—Àê¦Àê­Àê±Àê²ÀêïÀëÀëÀë`Àë„ÀëˆÀë¥ÀëÀÀëØÀëõÀìÀì!Àì&Àì'Àì‡Àì«Àì¯ÀìÌÀìàÀìôÀíÀíÀí<ÀíNÀíhÀímÀínÀíyÀíŒÀí¡Àí¯Àí½ÀíËÀíÙÀíçÀíõÀîÀîÀîÀî,Àî2Àî_Àî}Àî�Àî£Àî»ÀîÌÀîÝÀîóÀï Àï(Àï:ÀïTÀïYÀïZÀïeÀïÅÀïèÀðÀðÀð,ÀðDÀðaÀðsÀðŠÀðŸÀð¸Àð½Àð¾ÀñÀñ.ÀñNÀñ¦Àñ®Àñ»ÀñëÀòGÀòOÀòUÀòYÀò[Àò\ÀòšÀòÂÀòèÀòîÀó*ÀóyÀó¿ÀóñÀó÷ÀôGÀô–Àô¤ÀôªÀôñÀõ7ÀõdÀõjÀõ°ÀöÀöMÀöjÀö†Àö•Àö¦Àö¸ÀöÊÀöåÀ÷À÷,À÷?À÷_À÷�À÷£À÷·À÷áÀ÷õÀøÀøÀø9ÀøHÀøOÀøhÀø†ÀøŒÀø�Àø‘Àø�Àø°ÀøÅÀøÕÀøÙÀøÚÀùÀù:Àù;Àù’Àù¼ÀùÀÀùãÀùõÀúÀúÀú+ÀúDÀúIÀúJÀú•ÀúºÀûÀûÀû Àû!ÀûkÀû€Àû„Àû®ÀûþÀü<ÀüXÀüˆÀüœÀüÐÀüíÀý ÀýÀý"Àý?ÀýRÀý\Àý`ÀýaÀýwÀýxÀý½ÀýÃÀþ ÀþQÀþžÀþ´ÀþòÀÿ7Àÿ€ÀÿÊÀÿ÷À?À�ÀœÀÑÀ×À ÀWÀ„ÀšÀ¢À¦À§ÀàÀ3À€ÀÎÀÀ4À�À�ÀÅÀÀ^ÀŠÀÊÀåÀóÀùÀúÀ6ÀSÀ„ÀŠÀŽÀ�À«ÀÊÀËÀçÀÀÀFÀfÀgÀÃÀöÀ÷À+ÀÀ�À‚ÀµÀ¹ÀîÀ6À†ÀÔÀúÀþÀ KÀ ˜À æÀ /À hÀ “À ÔÀ òÀ À \À `À aÀ }À ~À ¾À êÀ ëÀ À %À sÀ ÁÀ À ZÀ ªÀ ÔÀ ÚÀ!À'À5ÀQÀsÀ’À­À·À½À ÀÀÀ)ÀzÀ¥ÀÖÀÀ À@À‹ÀÖÀ!ÀlÀrÀ™ÀÃÀËÀÕÀÛÀ(À}ÀŽÀ”ÀÞÀ À^ÀzÀ~ÀÀµÀ»ÀÀVÀ\À©ÀÊÀûÀOÀŒÀ·À»À¼ÀþÀÀSÀŸÀÚÀæÀùÀÀ0À@ÀDÀEÀªÀÏÀìÀÀÀ!À"À[À’À–ÀÓÀÔÀ0ÀUÀVÀµÀÝÀÞÀ1ÀMÀOÀPÀ¡À¥ÀÈÀÀÀ_ÀlÀmÀ»ÀÌÀÍÀÀ3À9À„ÀÂÀÀÀÀÀMÀQÀ ÀæÀ1À}ÀÍÀóÀ÷ÀDÀ’ÀáÀñÀõÀ AÀ �À ßÀ!,À!yÀ!ÉÀ"À"eÀ"€À"„À"ÑÀ#À#hÀ#ŠÀ#ŽÀ#ÝÀ$"À$oÀ$ÀÀ%À%aÀ%„À%»À&À&À&VÀ&£À&ñÀ'<À'kÀ'qÀ'¾À'çÀ'íÀ(>À(ŒÀ(ÛÀ)À)6À)<À)‹À)ÚÀ)àÀ*2À*[À*aÀ*±À+À+SÀ+ŸÀ+íÀ,8À,ƒÀ,“À,™À,çÀ-À-À-UÀ-[À-§À-øÀ.IÀ.•À.¼À.ÈÀ.ÝÀ.ûÀ/À/:À/RÀ/YÀ/˜À/ãÀ/éÀ0@À0—À0�À0­À0ÊÀ1 À1@À1aÀ1¯À1øÀ2EÀ2TÀ2`À2jÀ2rÀ2…À2�À2ÕÀ3%À3TÀ3dÀ3»À4À4À4*À46À4HÀ4`À4�À4–À4¬À4µÀ4÷À4ýÀ5À5À5SÀ5‚À5ˆÀ5ÖÀ6#À6qÀ6¼À6ëÀ6ñÀ7>À7ˆÀ7ÔÀ8#À86À8<À8�À8ÜÀ9#À9tÀ9ÅÀ:À:KÀ:QÀ: À:ïÀ;@À;‰À;ÂÀ;ÈÀ<ÀÀ>$À>rÀ>ÂÀ?À??À?EÀ?ƒÀ?“À?¨À?ÅÀ?ÜÀ@À@À@!À@FÀ@aÀ@¾À@ÇÀ@ÍÀAÀA[ÀAaÀA¸ÀBÀBÀB%ÀBBÀB„ÀB¼ÀBÝÀC+ÀCyÀCÆÀCÕÀCáÀCëÀCóÀDÀDÀDdÀD¦ÀD¬ÀD°ÀD±ÀEÀE1ÀEKÀEYÀEtÀE™ÀE°ÀEÉÀEÎÀEÏÀFÀFBÀFUÀFmÀF}ÀF•ÀF¨ÀF²ÀFÂÀFÆÀFÇÀGÀG7ÀG|ÀG˜ÀG™ÀG³ÀG´ÀGþÀHÀHRÀHhÀHƒÀH—ÀH§ÀHÃÀHÖÀHàÀH÷ÀIYÀI]ÀI_ÀI`ÀI®ÀI²ÀIîÀJ*ÀJ;ÀJ]ÀJcÀJ±ÀJûÀK4ÀK:ÀK‡ÀKÖÀKìÀKöÀK÷ÀL1ÀL7ÀL}ÀLƒÀLÅÀLÛÀLäÀLåÀMÀM!ÀMcÀMyÀM„ÀM†ÀM‡ÀMÑÀMÝÀMáÀNÀNÀNFÀNTÀNUÀNŽÀN›ÀN�ÀNžÀNÓÀN×ÀOÀObÀO£ÀO§ÀOðÀP@ÀP‰ÀP¦ÀPªÀPúÀQCÀQxÀQ|ÀQÉÀRÀR ÀR2ÀR6ÀR�ÀRÑÀSÀSnÀS¸ÀSëÀSïÀT:ÀT�ÀT™ÀTÜÀTúÀUÀUIÀU‘ÀUáÀV0ÀV}ÀVÀÀVÆÀW ÀW#ÀWqÀWrÀWºÀWÀÀWìÀWòÀXÀXÀXYÀXŽÀX�ÀXžÀXïÀY@ÀY�ÀYØÀYçÀYíÀZ9ÀZŠÀZØÀ[ À[nÀ[¸À[¾À\ À\À\5À\;À\‰À\ÕÀ]%À]uÀ]šÀ] À]îÀ^7À^ˆÀ^ÖÀ_$À_tÀ_¼À_éÀ_ïÀ`9À`RÀ`XÀ`fÀ`“À`»À`ÒÀaÀa;ÀarÀa«ÀaÅÀaßÀaçÀañÀa÷ÀbFÀb”ÀbâÀcÀcÀcÀcAÀc„Àc¬ÀcÃÀdÀd:ÀdsÀd�Àd•ÀdŸÀd¥ÀdöÀe<Àe†ÀeŒÀešÀeÇÀeÞÀf2ÀfkÀf…ÀfœÀfýÀg6ÀgPÀgXÀgbÀghÀg³ÀgüÀhMÀh…Àh‹Àh¯ÀhµÀhôÀhúÀiHÀi–ÀiçÀj2Àj�ÀjÏÀkÀkeÀk¶ÀlÀl"Àl(Àl8Àl>ÀlŽÀl°ÀløÀmÀm;Àm<Àm|Àm›Àm¡ÀmàÀmæÀn/ÀnsÀn…Àn†ÀnâÀo/Ào�Ào‡ÀoÆÀoÌÀpÀpjÀpŒÀp®Àp¯ÀpòÀq7Àq~Àq³Àq¹ÀqÞÀqôÀqõÀrEÀr•Àr½Àr¾Às ÀsWÀshÀsnÀs´ÀsÆÀsíÀsîÀtCÀtbÀtcÀt´ÀuÀuOÀuxÀu›ÀuœÀuìÀv'ÀvNÀvOÀv¢ÀvøÀwÀwÀwlÀwºÀx Àx7ÀxUÀxVÀx¤Àx»ÀxÁÀyÀyÀyaÀygÀy¹ÀzÀz*Àz0ÀzzÀzŽÀzçÀzèÀ{6À{UÀ{[À{²À{¸À{üÀ|À|TÀ|œÀ|ìÀ}&À}'À}uÀ}—À}�À}üÀ~À~FÀ~LÀ~žÀ~æÀ>À�À‘ÀßÀóÀùÀ€OÀ€UÀ€™À€ŸÀ€ñÀ�9À�bÀ�™À�šÀ�ëÀ‚=À‚�À‚¡À‚§À‚ûÀƒNÀƒ ÀƒïÀ„>À„‘À„äÀ…3À…„À… À…¦À…ÞÀ†0À†„À†ÓÀ‡À‡À‡iÀ‡�À‡–À‡¤À‡ÅÀ‡äÀˆÀˆZÀˆyÀˆ³ÀˆïÀˆþÀ‰À‰À‰À‰gÀ‰³ÀŠÀŠbÀŠrÀŠxÀоÀ‹ À‹?À‹EÀ‹•À‹äÀŒ0ÀŒHÀŒ]ÀŒzÀŒ{ÀŒÌÀ�À�qÀ�wÀ�ÇÀŽÀŽiÀ޹À� À�_À�²À�¿À�ÅÀ�úÀ�À�À�aÀ�­À�ÊÀ�þÀ�ÿÀ‘NÀ‘–À‘œÀ‘êÀ‘ðÀ’[À’ÊÀ’þÀ’ÿÀ“.À“4À“yÀ“”À“³À“´À”À”?À”EÀ”°À•À•HÀ•IÀ•šÀ•ÜÀ•âÀ–NÀ–¾À–êÀ–ëÀ—;À—‹À—±À—·À—üÀ˜6À˜7À˜‡À˜ÊÀ˜ÐÀ™DÀ™·À™ûÀ™üÀšIÀššÀš½ÀšÃÀ›.À›�À›ÆÀ›ÇÀœÀœdÀœ³ÀœÖÀœÜÀ�IÀ�ºÀ�óÀ�ôÀž0Àž6ÀžvÀžÃÀŸ ÀŸaÀŸ²À À .À 4À £À¡À¡À¡tÀ¡ÒÀ¡ÓÀ¢À¢À¢WÀ¢ À¢ÌÀ¢õÀ¢öÀ£DÀ£›À£ÖÀ£×À¤&À¤rÀ¤xÀ¤ÇÀ¤àÀ¤æÀ¥2À¥{À¥ŽÀ¥ÒÀ¥ÓÀ¦À¦ À¦nÀ¦¼À§ À§VÀ§™À§ŸÀ§íÀ¨:À¨ˆÀ¨ÏÀ¨àÀ©'À©(À©oÀ©ˆÀ©­À©®À©úÀª ÀªÀª[ÀªhÀªnÀªºÀ«À«EÀ«KÀ«šÀ«æÀ«ìÀ¬=À¬ŠÀ¬×À¬ÝÀ­'À­sÀ­ÀÀ­úÀ­ûÀ®@À®FÀ®�À®“À®ÙÀ¯#À¯)À¯9À¯?À¯�À¯¨À¯òÀ¯óÀ°8À°>À°ŽÀ°ÛÀ°áÀ±'À±qÀ±wÀ±‡À±�À±ÛÀ±ùÀ²EÀ²FÀ²�À²–À²âÀ²óÀ²ùÀ³BÀ³“À³ªÀ³°À³ùÀ´GÀ´“À´ÛÀµ+ÀµvÀµÁÀ¶À¶]À¶§À¶áÀ¶çÀ·À·À·$À·uÀ·ÁÀ·èÀ¸:À¸„À¸…À¸ÉÀ¸ÏÀ¹ À¹yÀ¹ÌÀº ÀºXÀº^Àº®ÀºÿÀ»NÀ» À»ðÀ¼DÀ¼�À¼–À¼çÀ½7À½ŒÀ½ãÀ¾À¾gÀ¾µÀ¾ùÀ¾ÿÀ¿RÀ¿¡À¿ìÀÀ:ÀÀ�ÀÀ•ÀÀéÀÁ:ÀÁƒÀÁ‰ÀÁÚÀÁõÀÁûÀ ÀÂÀÂGÀÂZÀÂqÀÂyÀÂÀ­ÀÂãÀÂéÀÃBÀÃ`ÀÃ�ÀÇÀÙÀÃÈÀÃéÀÄ ÀÄTÀÄ~ÀÄ�ÀĹÀÄöÀÅÀÅ2ÀÅxÀŦÀÅÔÀÅåÀÅúÀÆ.ÀÆqÀƘÀÆ¢ÀƨÀÆ·ÀÆ¿ÀÆÉÀÆÏÀÇ(ÀÇ.ÀÇ<ÀÇQÀÇ•ÀǨÀÇ¿ÀÇÒÀÇëÀÇóÀÇùÀÈ'ÀÈ]ÀÈcÀȼÀÈÚÀÈûÀÉÀÉÀÉBÀÉcÀÉšÀÉÎÀÉøÀÊ#ÀÊ?ÀÊ|ÀÊšÀʸÀÊþÀË,ÀËZÀËkÀË€ÀË´ÀË÷ÀÌ ÀÌAÀÌuÀÌ¡ÀÌ«À̱ÀÌÀÀÌÈÀÌÒÀÌØÀÍ!ÀÍlÀÍŸÀÍ¥À͵ÀÍ»ÀÎ ÀÎ ÀÎ2ÀÎCÀÎeÀÎ{ÀΔÀήÀÎÂÀÎÓÀÎØÀÎÙÀÏÀÏ#ÀÏtÀÏÍÀÐ ÀÐtÀÐÆÀÑÀÑOÀÑUÀÑ¥ÀÑíÀÑóÀÒDÀÒ„ÀÒ¯ÀÒµÀÓÀÓMÀÓSÀÓŸÀÓìÀÔ<ÀÔBÀÔ�ÀÔ®ÀÔ´ÀÔÂÀÔ×ÀÕÀÕÀÕ*ÀÕ2ÀÕ8ÀÕfÀÕœÀÕ¢ÀÕûÀÖÀÖ:ÀÖ@ÀÖRÀÖ�ÀÖÑÀ× À×qÀ×�À×ÒÀØÀØTÀØÀصÀØÞÀÙÀÙ5ÀÙ]ÀÙcÀÙ¼ÀÚÀÚqÀÚ³ÀÚßÀÛ ÀÛJÀÛ‰ÀÛ•ÀÛ¶ÀÜÀÜÀÜ$ÀÜ3ÀÜ;ÀÜEÀÜKÀܤÀܪÀܸÀÜÍÀÝÀÝ$ÀÝ;ÀÝNÀÝgÀÝoÀÝuÀÝ£ÀÝÙÀÝßÀÞ8ÀÞVÀÞwÀÞ}ÀÞ�ÀÞ¾ÀßÀß]Àß®ÀßÊÀàÀàYÀà—ÀàÏÀàúÀá0ÀáYÀá€Àá°ÀáØÀáÞÀâ9Àâ�ÀâëÀãHÀã“ÀãÙÀäÀäÀäWÀäsÀä�ÀäÓÀäÿÀå+Àå:ÀåqÀå¨ÀåÝÀæÀæÀærÀæÌÀç$ÀçkÀçšÀç¦ÀçÇÀè5Àè?ÀèEÀèTÀè\ÀèfÀèlÀè|Àè‚ÀèÏÀèäÀèùÀé Àé)Àé@ÀéWÀéqÀé…Àé–Àé›ÀéœÀééÀéïÀê?ÀêTÀêZÀê€Àê×ÀêÙÀêÚÀë(ÀëfÀë†ÀëãÀëéÀìÀì<Àì[Àì·Àì»Àì¼Àí Àí+Àí/ÀíMÀírÀíƒÀí“Àí¥Àí¸Àí½Àí¾ÀîÀîvÀî»ÀîàÀîáÀîíÀï;ÀïSÀïTÀïwÀï�Àï«ÀïÔÀïýÀð&ÀðOÀðXÀð^ÀðoÀðsÀðtÀð€Àð®ÀðÈÀñÀñÀñ5ÀñšÀñ Àñ¤Àñ¥ÀòÀòaÀòbÀò»ÀòÜÀòàÀòüÀó ÀóÀó/ÀóBÀócÀó{Àó€Àó�Àó�ÀóÞÀóùÀóúÀôÀôeÀô�Àô‘Àô�ÀôôÀõÀõÀõ ÀõƒÀõ´ÀõµÀõÁÀöÀöÀö`ÀöŽÀö�Àö›ÀöóÀ÷À÷À÷(À÷†À÷²À÷³À÷¿À÷çÀøÀøEÀøKÀødÀøhÀøiÀø¶ÀøçÀøèÀøôÀùÀùDÀù`ÀùtÀùxÀùyÀùÉÀùýÀùþÀú ÀúdÀú„ÀúžÀúëÀû9Àû{ÀûÓÀû×ÀûØÀü.ÀüNÀü`ÀüdÀüÀü�Àü Àü²ÀüÅÀüÕÀüëÀüðÀüñÀüýÀý8ÀýZÀýŒÀý�Àý‘ÀýäÀþ%Àþ&Àþ2Àþ…Àþ·ÀþõÀþùÀþúÀÿ\Àÿ¶Àÿ·ÀÿÃÀÿûÀ,À0À1ÀŠÀÉÀÊÀÖÀôÀ#ÀDÀŠÀŽÀ�ÀåÀÀÀ+ÀOÀ~À¥ÀëÀïÀðÀLÀ‹ÀŒÀ˜ÀÍÀûÀÿÀÀbÀ˜À™À¥ÀÚÀúÀÀbÀfÀgÀÀÀàÀäÀÿÀÀÀ,À;À\ÀtÀyÀzÀ†À¦ÀÓÀ×ÀØÀ-ÀzÀ{À‡À±ÀÑÀëÀ)À…À‹À�À�ÀéÀ À À (À 9À IÀ [À nÀ �À §À ¬À ­À ¹À æÀ À JÀ NÀ OÀ ¬À À À À TÀ vÀ ˜À ðÀ ôÀ õÀ >À `À dÀ �À ˜À ¯À ÐÀ èÀ íÀ îÀ úÀ ?À qÀ ¿À ÃÀ ÄÀ À5À9À]À…À¦À¾ÀÃÀÄÀÐÀúÀÀ4ÀrÀÎÀÔÀØÀÙÀ2ÀRÀVÀqÀ‚À’À¤À·ÀØÀðÀõÀöÀÀ<À[À�À¡À¢ÀóÀÀÀ6ÀDÀRÀeÀ†ÀžÀ£À¤À°ÀÀ/À=ÀNÀ^ÀpÀƒÀ•À§À¸ÀÎÀáÀèÀìÀíÀøÀ À À.À<ÀJÀXÀfÀtÀ€ÀŽÀœÀ¢ÀÁÀÛÀìÀüÀÀ!À8ÀOÀcÀ„ÀœÀ¡À¢À®ÀØÀÀÀÀ�ÀßÀàÀìÀ(ÀJÀnÀ”À¨À¹ÀÊÀàÀóÀÀÀ4À‚ÀˆÀŒÀ�ÀîÀÀÀ2ÀDÀRÀ`À�À™ÀµÀºÀ»ÀÇÀ À.ÀMÀlÀ–ÀªÀºÀÉÀÚÀìÀüÀ ÀÀ.ÀDÀWÀxÀÀ˜ÀæÀìÀðÀñÀüÀÀ&À;ÀIÀWÀeÀsÀ�À�À�À«À¹ÀÇÀÔÀÚÀÿÀ"À4ÀHÀ[ÀpÀ†ÀšÀ­ÀÂÀØÀùÀÀ-À2À3À?À‡À©ÀËÀêÀÀ(À;ÀMÀaÀvÀ†À•À¦À¸ÀÎÀáÀ À À "À pÀ vÀ zÀ {À †À ›À °À ÅÀ ÓÀ áÀ ïÀ ýÀ! À!À!'À!5À!CÀ!QÀ!^À!dÀ!‰À!¬À!¾À!ÕÀ!ëÀ"À"À"0À"CÀ"XÀ"nÀ"�À"§À"ÃÀ"ÈÀ"ÉÀ"ÕÀ"ûÀ#À#LÀ#PÀ#QÀ#§À#ÝÀ#ÞÀ#êÀ$%À$qÀ$�À$ÁÀ$ìÀ%$À%(À%)À%5À%€À%ÙÀ%ÝÀ%ÞÀ%êÀ&7À&YÀ&¤À&ªÀ&ñÀ&õÀ&öÀ'[À'xÀ'™À'±À'ÄÀ'ÜÀ'áÀ'âÀ'îÀ(9À(^À(©À(­À(®À(ýÀ)!À)%À)DÀ)[À)nÀ)�À)§À)¬À)­À)¹À)ËÀ)ÜÀ)þÀ*À*-À*GÀ*[À*lÀ*rÀ*”À*×À*ØÀ+À+*À+uÀ+{À+ÈÀ+ãÀ,8À,AÀ,GÀ,HÀ,�À,ÎÀ,ÏÀ,ùÀ-À->À-cÀ-ˆÀ-¾À-àÀ.À.8À.nÀ.¢À.ÖÀ.üÀ/!À/HÀ/pÀ/vÀ/wÀ/½À/ÌÀ/ðÀ01À0iÀ0jÀ0�À0¦À0¹À0ÍÀ0áÀ0ûÀ1 À1 À1JÀ1`À1gÀ1hÀ1�À1ÏÀ1ÕÀ1ÙÀ1ÚÀ1æÀ1ûÀ2 À2+À2BÀ2YÀ2sÀ2‡À2˜À2žÀ2ÏÀ2ÐÀ2øÀ3%À3sÀ3yÀ3—À3õÀ3ûÀ47À4RÀ4¸À4ÁÀ4ÇÀ4ÿÀ5À5&À5<À5OÀ5cÀ5wÀ5ŒÀ5™À5§À5ÑÀ5ðÀ5÷À5øÀ6À6_À6eÀ6iÀ6jÀ6uÀ6ŠÀ6ŸÀ6­À6»À6ÈÀ6ÝÀ6ëÀ6ùÀ7À7À7"À7(À7IÀ7hÀ7‰À7¡À7½À7ÏÀ7îÀ8À8À8/À8JÀ8OÀ8PÀ8\À8´À9À9 À9 À9ZÀ9|À9€À9�À9³À9ÂÀ9ØÀ9öÀ9ûÀ9üÀ:À:JÀ:LÀ:MÀ:{À:ºÀ:»À;À;À;;À;?À;†À;ÈÀ< À<#ÀÀ>6À>`À>aÀ>‹À>‘À>àÀ?/À?xÀ?¨À?©À?ëÀ?ñÀ@(À@wÀ@ÆÀAÀAÀAeÀA³ÀAàÀAæÀB6ÀBÀB˜ÀBžÀBíÀCÀC.ÀC/ÀCÀC¢ÀC´ÀCµÀCûÀDÀDOÀDeÀDÀD€ÀDÉÀDÏÀE ÀERÀErÀEtÀEuÀEÅÀFÀF+ÀF1ÀFgÀF}ÀF~ÀFŠÀF»ÀFÓÀFøÀG,ÀG2ÀGHÀG˜ÀGµÀGÏÀGàÀHÀH)ÀH3ÀH:ÀH>ÀH?ÀH�ÀHòÀHóÀHÿÀI,ÀIDÀIiÀI�ÀI£ÀI¤ÀIÉÀIñÀJ'ÀJ+ÀJ,ÀJŒÀJÒÀJÓÀJßÀJòÀK ÀKÀK2ÀKEÀKOÀKrÀK‚ÀK†ÀK‡ÀKÒÀK÷ÀL;ÀLWÀLXÀLrÀLsÀLÀLšÀL®ÀL¾ÀLÚÀLíÀL÷ÀMÀMoÀMsÀMtÀM€ÀMÞÀNÀNÀNÀN6ÀN8ÀN9ÀN€ÀN„ÀNÉÀOÀOÀO8ÀO<ÀO‡ÀOÔÀPÀPjÀP´ÀPÿÀQ/ÀQ3ÀQ~ÀQÅÀQæÀR'ÀRnÀRŠÀRÀÀRÁÀRüÀSÀSFÀS�ÀSÄÀT ÀTEÀT]ÀT^ÀT�ÀT“ÀTÞÀU.ÀUsÀU�ÀU�ÀU�ÀUðÀV ÀV!ÀV%ÀV&ÀVjÀVŠÀV‹ÀV—ÀVÂÀVÃÀVÏÀVêÀWÀWIÀWOÀW†ÀW¢ÀWÁÀWÕÀX(ÀXoÀX”ÀX¨ÀX¬ÀX­ÀYÀY@ÀYAÀY[ÀY\ÀYhÀY«ÀY­ÀY®ÀYÃÀYÇÀZÀZÀZ,ÀZ2ÀZ}ÀZÈÀZâÀZèÀ[)À[/À[~À[—À[¨À[ÖÀ[õÀ\À\eÀ\fÀ\–À\ºÀ\äÀ]À]6À]]À]‡À]ˆÀ]¸À]¾À^À^3À^HÀ^IÀ^ˆÀ^ŽÀ^ÜÀ_(À_jÀ_�À_‚À_ÔÀ_ïÀ_ðÀ`"À`(À`[À`aÀ`ŽÀaÀa7ÀakÀaoÀapÀa¬Àa²ÀaåÀb!Àb"ÀboÀbuÀb²ÀcÀc(Àc.ÀcrÀc»Àd Àd,Àd@ÀdSÀdiÀd¬Àd°Àd±ÀeÀeÀe1ÀeŒÀe�Àe‘ÀeÁÀeÇÀfÀfUÀfyÀfÀf¥ÀfòÀg<Àg‡ÀgÓÀh!ÀhqÀh¾ÀiÀiÀiWÀiwÀiŒÀiÄÀiÙÀiðÀjÀjÀj5Àj=ÀjJÀjaÀj|Àj‹Àj¢ÀjÕÀk ÀkNÀkYÀkaÀkgÀkkÀklÀk¥Àk«ÀkóÀkùÀlÀljÀlŒÀlŸÀl¥Àl»ÀlÑÀlýÀm8ÀmhÀm—Àm�ÀmÔÀmûÀnÀn8ÀnYÀn_ÀnrÀnvÀnwÀnƒÀn¦ÀnÈÀnÛÀnáÀnÿÀoÀoAÀoiÀomÀonÀozÀo¸Ào¹ÀpÀpWÀpsÀp­ÀpÈÀpâÀpèÀpéÀq&Àq\Àq]ÀqwÀqÄÀqöÀr+Àr,ÀrHÀrnÀr¢Àr¼ÀrÅÀrÆÀs"Às#ÀsÀs€ÀsÏÀt'Àt-Àt.ÀtFÀtJÀtKÀtWÀtšÀtœÀt�ÀtäÀtèÀu7ÀuMÀu‹Àu®Àu¯ÀuýÀvÀvSÀv˜ÀvÊÀv÷ÀwÀwÀwÀwTÀwZÀw“ÀwÑÀxÀx_Àx©ÀxÖÀyÀyYÀyŠÀyÆÀyáÀyûÀz'Àz/ÀzXÀz`ÀzdÀzeÀz–ÀzœÀzÕÀ{À{MÀ{~À{³À{ÎÀ{èÀ|"À|*À|SÀ|[À|_À|`À|´À|øÀ|ùÀ}VÀ}£À}¤À~À~LÀ~MÀ~�À~žÀ~­À~®À~ÍÀ~ÎÀ~÷À~ýÀNÀiÀ�À‘À²ÀÅÀÏÀäÀèÀéÀ€9À€\À€bÀ€¯À€ùÀ�FÀ�“À�áÀ�ÿÀ‚À‚"À‚AÀ‚^À‚qÀ‚{À‚‹À‚�À‚�À‚ÛÀƒÀƒLÀƒhÀƒjÀƒkÀƒ¶ÀƒºÀ„ À„!À„BÀ„{À„�À„ÑÀ…#À…=À…CÀ…‘À…äÀ†%À†bÀ†�À†ŸÀ†·À†ÐÀ†ãÀ‡ À‡,À‡-À‡xÀ‡»ÀˆÀˆ7ÀˆoÀˆ�Àˆ“Àˆ”Àˆ¾ÀˆÄÀˆÿÀ‰À‰À‰<À‰BÀ‰}À‰�À‰�À‰ÂÀ‰ÈÀ‰ÿÀŠÀŠÀŠiÀŠŒÀŠ’ÀŠÝÀ‹À‹À‹À‹cÀ‹À‹…À‹ÐÀŒÀŒ.ÀŒ4ÀŒ‚ÀŒªÀŒóÀŒõÀŒöÀ�VÀ�tÀ�uÀ�®À�´ÀŽÀŽVÀŽpÀŽvÀŽÄÀ�À�XÀ�•À�³À�ÑÀ�éÀ�À�À�;À�BÀ�VÀ�lÀ�±À�ÉÀ‘À‘À‘À‘~À‘ÑÀ‘ÒÀ’À’@À’DÀ’eÀ’ˆÀ’¤À’³À’ÃÀ’ÕÀ’êÀ’ïÀ’ðÀ’ÿÀ“À“YÀ“uÀ“vÀ“‚À“­À“®À“¾À“¿À”À”6À”7À”CÀ”qÀ”rÀ”‰À”ŠÀ”ëÀ•À•À•À•_À•`À•lÀ•¸À•ÓÀ•ÔÀ•àÀ–0À–cÀ–}À–ƒÀ–¸À–ÓÀ–ÙÀ–ÚÀ—À—,À—IÀ—‡À—ÆÀ˜À˜:À˜@À˜aÀ˜ƒÀ˜„À˜®À˜éÀ˜ûÀ˜ÿÀ™À™?À™pÀ™tÀ™ÊÀ™ËÀ™×À™îÀšfÀšhÀšiÀšžÀšÎÀšÏÀ› À›UÀ›VÀ›ŽÀ›’À›ÜÀ›éÀœ,Àœ-ÀœnÀœŠÀœßÀœàÀ�/À�DÀ�GÀ�”À�±À�´ÀžÀžÀžÀžÀž#ÀžWÀžZÀž•ÀžÒÀž×ÀžÚÀžùÀŸ)ÀŸ.ÀŸ5ÀŸ8ÀŸ�ÀŸãÀ À À hÀ œÀ ÒÀ¡À¡]À¡šÀ¡°À¡ÜÀ¡ñÀ¢À¢2À¢AÀ¢�À¢‰À¢–À¢³À¢¹À¢¿À¢ÑÀ¢èÀ£À£À£#À£%À£&À£iÀ£¯À£åÀ¤,À¤pÀ¤­À¤ÃÀ¤þÀ¥À¥0À¥=À¥QÀ¥‡À¥–À¥ßÀ¥çÀ¥íÀ¥óÀ¦À¦À¦8À¦<À¦WÀ¦YÀ¦ZÀ¦©À¦÷À¦ûÀ§KÀ§›À§ÐÀ¨ À¨PÀ¨QÀ¨†À¨žÀ¨ŸÀ¨ñÀ© À© À©À©/À©‰À©¢À©ºÀªÀª*Àª0ÀªNÀªRÀªT1ˆyÀCë�á�áˆa/// An immutable color value in ARGB format. /// /// Consider the light teal of the [Flutter logo](https://flutter.dev/brand). It /// is fully opaque, with a red [r] channel value of `0.2588` (or `0x42` or `66` /// as an 8-bit value), a green [g] channel value of `0.6471` (or `0xA5` or /// `165` as an 8-bit value), and a blue [b] channel value of `0.9608` (or /// `0xF5` or `245` as an 8-bit value). In a common [CSS hex color syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color) /// for RGB color values, it would be described as `#42A5F5`. /// /// Here are some ways it could be constructed: /// /// ```dart /// const Color c1 = Color.from(alpha: 1.0, red: 0.2588, green: 0.6471, blue: 0.9608); /// const Color c2 = Color(0xFF42A5F5); /// const Color c3 = Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5); /// const Color c4 = Color.fromARGB(255, 66, 165, 245); /// const Color c5 = Color.fromRGBO(66, 165, 245, 1.0); /// ``` /// /// If you are having a problem with [Color.new] wherein it seems your color is /// just not painting, check to make sure you are specifying the full 8 /// hexadecimal digits. If you only specify six, then the leading two digits are /// assumed to be zero, which means fully-transparent: /// /// ```dart /// const Color c1 = Color(0xFFFFFF); // fully transparent white (invisible) /// const Color c2 = Color(0xFFFFFFFF); // fully opaque white (visible) /// /// // Or use double-based channel values: /// const Color c3 = Color.from(alpha: 1.0, red: 1.0, green: 1.0, blue: 1.0); /// ``` /// /// [Color]'s color components are stored as floating-point values. Care should /// be taken if one does not want the literal equality provided by `operator==`. /// To test equality inside of Flutter tests consider using [`isSameColorAs`][]. /// /// See also: /// /// * [Colors](https://api.flutter.dev/flutter/material/Colors-class.html), /// which defines the colors found in the Material Design specification. /// * [`isSameColorAs`][], /// a Matcher to handle floating-point deltas when checking [Color] equality. /// /// [`isSameColorAs`]: https://api.flutter.dev/flutter/flutter_test/isSameColorAs.html�ë„`”æ”æ”ëƒÆ/// Construct an [ColorSpace.sRGB] color from the lower 32 bits of an [int]. /// /// The bits are interpreted as follows: /// /// * Bits 24-31 are the alpha value. /// * Bits 16-23 are the red value. /// * Bits 8-15 are the green value. /// * Bits 0-7 are the blue value. /// /// In other words, if AA is the alpha value in hex, RR the red value in hex, /// GG the green value in hex, and BB the blue value in hex, a color can be /// expressed as `Color(0xAARRGGBB)`. /// /// For example, to get a fully opaque orange, you would use `const /// Color(0xFFFF9000)` (`FF` for the alpha, `FF` for the red, `90` for the /// green, and `00` for the blue). /// /// {@template dart.ui.Color.componentsStoredAsFloatingPoint} /// > [!NOTE] /// > Each color is stored as floating-point color components, where the final /// > value of each component is approximated by storing `c / 255`, where `c` /// is one of the four components (alpha, red, green, blue). /// {@endtemplate}”ì ”ñ”ð”ý••• •I•• •• ••#•-•'•0•3•:•D•E•OƒŽ—ü˜˜˜˜‚‚/// Construct a color with floating-point color components. /// /// Color components allows arbitrary bit depths for color components to be be /// supported. The values are interpreted relative to the [ColorSpace] /// argument. /// /// ## Example /// /// ```dart /// // Fully opaque maximum red color /// const Color c1 = Color.from(alpha: 1.0, red: 1.0, green: 0.0, blue: 0.0); /// /// // Partially transparent moderately blue and green color /// const Color c2 = Color.from(alpha: 0.5, red: 0.0, green: 0.5, blue: 0.5); /// /// // Fully transparent color /// const Color c3 = Color.from(alpha: 0.0, red: 0.0, green: 0.0, blue: 0.0); /// ```˜ ˜˜˜(˜9˜8˜A˜R˜Q˜\˜m˜l˜v!˜|˜{˜ˆ˜’˜“˜¢˜ ˜¤˜´˜²˜¶˜Ä˜Â˜Æ˜Ö˜Ô˜Ø˜á‚ešìšñšòšúšò�è/// Construct an sRGB color from the lower 8 bits of four integers. /// /// * `a` is the alpha value, with 0 being transparent and 255 being fully /// opaque. /// * `r` is [red], from 0 to 255. /// * `g` is [green], from 0 to 255. /// * `b` is [blue], from 0 to 255. /// /// Out of range values are brought into range using modulo 255. /// /// See also [fromRGBO], which takes the alpha value as a floating point /// value. /// /// {@macro dart.ui.Color.componentsStoredAsFloatingPoint}šû›šÿ›››› ›› ››› ››››(›D›)›,›/›2›5›?›@›J€¡›P›U›V›`›V›a ›f›e›l›q›p›u ›z›y›€›…›„›Š›–›•›§›«›¬›¶›é›·›¼›Ã›Ø›É›Ö›Ð›Ê›Ò›Ú›ß›ï‚£ž%ž*ž+ž3ž+‚/// Create an sRGB color from red, green, blue, and opacity, similar to /// `rgba()` in CSS. /// /// * `r` is [red], from 0 to 255. /// * `g` is [green], from 0 to 255. /// * `b` is [blue], from 0 to 255. /// * `opacity` is alpha channel of this color as a double, with 0.0 being /// transparent and 1.0 being fully opaque. /// /// Out of range values are brought into range using modulo 255. /// /// See also [fromARGB], which takes the opacity as an integer value. /// /// {@macro dart.ui.Color.componentsStoredAsFloatingPoint}ž4ž9ž8ž;ž@ž?žBžGžFžIžQžP ž_žcždžnž�žožržužxž�ž‹žŒž–€³žœž¡ž¢ž¬ž¢ž­ž²ž±ž´ž¹ž¸ž»žÀž¿žÂžÊžÉžÒžØž×žëžéžížþžüŸ ŸŸ ŸŸŸŸ ŸŸŸ'ŸŸ%ŸŸŸ!Ÿ)Ÿ6Ÿ4ŸCŸ8ŸAŸ;Ÿ9Ÿ=ŸEŸM5Ÿ�Ÿ�$/// The alpha channel of this color.Ÿ‡3Ÿ¹Ÿ¹"/// The red channel of this color.Ÿ¿5ŸóŸó$/// The green channel of this color.Ÿù4 , ,#/// The blue channel of this color. 2@ h h"/// The color space of this color. Ð�¡Ñ¡Ñ€‘/// A 32 bit value representing this color. /// /// This getter is a _stub_. It is recommended instead to use the explicit /// [toARGB32] method.¡j¡k¡u¡Å¡v¨&�©©€§/// The alpha channel of this color in an 8 bit value. /// /// A value of 0 means this color is fully transparent. A value of 255 means /// this color is fully opaque.¨Ö¨×¨á© ¨â©?€èªª€£/// The alpha channel of this color as a double. /// /// A value of 0.0 means this color is fully transparent. A value of 1.0 means /// this color is fully opaque.©ë©ì©öª©÷ª+€šª£ª£4/// The red channel of this color in an 8 bit value.ªbªcªmª—ªnªÉ€�«C«C6/// The green channel of this color in an 8 bit value.««« «7««j€›«ã«ã5/// The blue channel of this color in an 8 bit value.«¢«£«­«×«®ÀKUDÀKiÀKiÀKUÀKV wU ‚ ‚ � — –¡é†9§’§’…n/// Returns a 32-bit value representing this color. /// /// The returned value is compatible with the default constructor /// ([Color.new]) but does _not_ guarantee to result in the same color due to /// [imprecisions in numeric conversions](https://en.wikipedia.org/wiki/Floating-point_error_mitigation). /// /// Unlike accessing the floating point equivalent channels individually /// ([a], [r], [g], [b]), this method is intentionally _lossy_, and scales /// each channel using `(channel * 255.0).round().clamp(0, 255)`. /// /// While useful for storing a 32-bit integer value, prefer accessing the /// individual channels (and storing the double equivalent) where higher /// precision is required. /// /// The bits are assigned as follows: /// /// * Bits 24-31 represents the [a] channel as an 8-bit unsigned integer. /// * Bits 16-23 represents the [r] channel as an 8-bit unsigned integer. /// * Bits 8-15 represents the [g] channel as an 8-bit unsigned integer. /// * Bits 0-7 represents the [b] channel as an 8-bit unsigned integer. /// /// > [!WARNING] /// > The value returned by this getter implicitly converts floating-point /// > component values (such as `0.5`) into their 8-bit equivalent by using /// > the [toARGB32] method; the returned value is not guaranteed to be stable /// > across different platforms or executions due to the complexity of /// > floating-point math.¬ … ®V®V‚(/// Returns a new color with the provided components updated. /// /// Each component ([alpha], [red], [green], [blue]) represents a /// floating-point value; see [Color.from] for details and examples. /// /// If [colorSpace] is provided, and is different than the current color /// space, the component values are updated before transforming them to the /// provided [ColorSpace]. /// /// Example: /// ```dart /// import 'dart:ui'; /// /// Create a color with 50% opacity. /// Color makeTransparent(Color color) => color.withValues(alpha: 0.5); /// ```®g ®p®o®z ®ƒ®‚®‹ ®”®“®ž ®§®¦®°®½®¼±� ±Ü±Ü€´/// Returns a new color that matches this color with the alpha channel /// replaced with `a` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.±æ±ë±ê²&�‘³7³7€Æ/// Returns a new color that matches this color with the alpha channel /// replaced with the given `opacity` (which ranges from 0.0 to 1.0). /// /// Out of range values will have unexpected effects.³C³K³J²õ²ö³³-³³»�´|´|€²/// Returns a new color that matches this color with the red channel replaced /// with `r` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.´„´‰´ˆ´Æ� µ‰µ‰€´/// Returns a new color that matches this color with the green channel /// replaced with `g` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.µ“µ˜µ—µÓ�¶•¶•€³/// Returns a new color that matches this color with the blue channel replaced /// with `b` (which ranges from 0 to 255). /// /// Out of range values will have unexpected effects.¶ž¶£¶¢·€Å·+·+·D·L·K·æ‚`¸ô¸ô€ú/// Returns a brightness value between 0 for darkest and 1 for lightest. /// /// Represents the relative luminance of the color. This value is computationally /// expensive to calculate. /// /// See .ºJ‡æ¿L¿L„Ç/// Linearly interpolate between two colors. /// /// This is intended to be fast but as a result may be ugly. Consider /// [HSVColor] or writing custom logic for interpolating colors. /// /// If either color is null, this function linearly interpolates from a /// transparent instance of the other color. This is usually preferable to /// interpolating from [material.Colors.transparent] (`const /// Color(0x00000000)`), which is specifically transparent _black_. /// /// The `t` argument represents position on the timeline, with 0.0 meaning /// that the interpolation has not started, returning `a` (or something /// equivalent to `a`), 1.0 meaning that the interpolation has finished, /// returning `b` (or something equivalent to `b`), and values in between /// meaning that the interpolation is at the relevant point on the timeline /// between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and /// 1.0, so negative values and values greater than 1.0 are valid (and can /// easily be generated by curves such as [Curves.elasticInOut]). Each channel /// will be clamped to the range 0 to 255. /// /// Values for `t` are usually obtained from an [Animation], such as /// an [AnimationController].¿Q¿Y¿X¿[¿c¿b¿e¿m¿lÀB4†ÒÀDHÀDH�ö/// Combine the foreground color as a transparent color over top /// of a background color, and return the resulting combined color. /// /// This uses standard alpha blending ("SRC over DST") rules to produce a /// blended color from two colors. This can be used as a performance /// enhancement when trying to avoid needless alpha blending compositing /// operations for two things that are solid colors with the same shape, but /// overlay each other: instead, just paint one with the combined color.ÀDSÀDZÀDYÀDeÀDlÀDkÀI €íÀI“ÀI“w/// Returns an alpha value representative of the provided [opacity] value. /// /// The [opacity] value may not be null.ÀI§ÀI¯ÀI®ÀIû�VÀJÀJÀJ ÀJ ÀJÀIûÀIüÀK�€ÅÀK°ÀK°ÀK�ÀKžÀÇ�ÀJ„ÀÈDÀÈD€ª/// A description of the style to use when drawing on a [Canvas]. /// /// Most APIs on [Canvas] take a [Paint] object to describe the style /// to use for that operation.ÀÈNfÀȬÀȬÀȱY/// Constructs an empty [Paint] object with all fields initialized to /// their defaults.ÀȸƒÀÊzÀÊÀÊ€ÀÊ„ÀÊ€�±/// Constructs a new [Paint] object with the same fields as [other]. /// /// Any changes made to the object returned will not affect [other], and /// changes to [other] will not affect the object returned. /// /// Backends (for example web versus native) may have different performance /// characteristics. If the code is performance-sensitive, consider profiling /// and falling back to reusing a single [Paint] object if necessary.ÀÊ… ÀÊŒÀÊ‹,ÀβLÀÎÝÀÎÝ ÀβÀγÀιÀÎÊÀκÀÎåÀÎíÀÎýÀÎîÀÏ/'ÀÏ@ÀÏ@ÀÏUÀÏZ$ÀÏkÀÏkÀÏ}ÀÏ‚&ÀÏ“ÀÏ“ÀϧÀϬ%ÀϽÀϽÀÏÐÀÏÕ&ÀÏæÀÏæÀÏúÀÏÿ&ÀÐÀÐÀÐ$ÀÐ)%ÀÐ:ÀÐ:ÀÐMÀÐR!ÀÐcÀÐcÀÐrÀÐw'ÀЈÀЈÀÐ�ÀТ%ÀгÀгÀÐÆÀÐË'ÀÐÜÀÐÜÀÐðÀÐö-ÀÑÀÑÀÑ!ÀÑ'*ÀÑ8ÀÑ8ÀÑOÀÑU'ÀÑfÀÑfÀÑzÀÑ€0ÀÑ‘ÀÑ‘ÀÑ®ÀÑ´,ÀÑÅÀÑÅÀÑÞÀÑä(ÀÑõÀÑõÀÒ ÀÒ>ÀÒ"ÀÒ"ÀÒKÀÒ8ÀÒNÀÒS8ÀÒdÀÒdÀÒ‡ÀÒwÀÒŠÀÒ�<ÀÒ ÀÒ ÀÒÇÀÒµÀÒÊÀÒÏ:ÀÒàÀÒàÀÓÀÒôÀÓÀÓ <ÀÓÀÓÀÓEÀÓ3ÀÓHÀÓM<ÀÓ^ÀÓ^ÀÓ…ÀÓsÀÓˆÀÓ�:ÀÓžÀÓžÀÓÃÀÓ²ÀÓÆÀÓË2ÀÓÜÀÓÜÀÓùÀÓìÀÓüÀÔ>ÀÔÀÔÀÔ;ÀÔ(ÀÔ>ÀÔC:ÀÔTÀÔTÀÔyÀÔhÀÔ|ÀÔ�<ÀÔ’ÀÔ’ÀÔ¹ÀÔ§ÀÔ¼ÀÔÁHÀÔÒÀÔÒÀÕÀÔíÀÕÀÕ BÀÕÀÕÀÕKÀÕ6ÀÕNÀÕS<ÀÕdÀÕdÀÕ‹ÀÕyÀÕŽÀÕ“NÀÕ¤ÀÕ¤ÀÕÝÀÕÂÀÕàÀÕåFÀÕöÀÕöÀÖ'ÀÖÀÖ*ÀÖ/>ÀÖ@ÀÖ@ÀÖiÀÖVÀÖlÀÖ³%ÀÖÄÀÖÄÀÖÖÀ×[3À׆À׆À×[À×\À×bÀ×sÀ×cÀØ "ÀØÀØÀØ*ÀØ/'ÀØ@ÀØ@ÀØUÀØZ'ÀØkÀØkÀØ€ÀØ…"ÀØ–ÀØ–ÀئÀÚó,ÀÛÀÛÀÛÀàÇ=ÀàØÀàØÀàíÀàöÀà÷ÀàþÀàÿÀð3ÀðÀðÀð3ÀØÚ€ÓÀÙUÀÙUi/// Whether to apply anti-aliasing to lines and images drawn on the /// canvas. /// /// Defaults to true.ÀÛ$ƒÐÀÜËÀÜË�„/// The color to use when stroking or filling a shape. /// /// Defaults to opaque black. /// /// See also: /// /// * [style], which controls whether to stroke or fill (or both). /// * [colorFilter], which overrides [color]. /// * [shader], which overrides [color] with more elaborate effects. /// /// This color is not used when compositing. To colorize a layer, use /// [colorFilter].Àá ƒœÀäÀä‚Ò/// A blend mode to apply when a shape is drawn or a layer is composited. /// /// The source colors are from the shape being drawn (e.g. from /// [Canvas.drawPath]) or layer being composited (the graphics that were drawn /// between the [Canvas.saveLayer] and [Canvas.restore] calls), after applying /// the [colorFilter], if any. /// /// The destination colors are from the background onto which the shape or /// layer is being composited. /// /// Defaults to [BlendMode.srcOver]. /// /// See also: /// /// * [Canvas.saveLayer], which uses its [Paint]'s [blendMode] to composite /// the layer when [Canvas.restore] is called. /// * [BlendMode], which discusses the user of [Canvas.saveLayer] with /// [blendMode].ÀåM€áÀåÑÀåÑk/// Whether to paint inside shapes, the edges of shapes, or both. /// /// Defaults to [PaintingStyle.fill].Àæ½�iÀçÑÀçÑ€þ/// How wide to make edges drawn when [style] is set to /// [PaintingStyle.stroke]. The width is given in logical pixels measured in /// the direction orthogonal to the direction of the path. /// /// Defaults to 0.0, which correspond to a hairline width.Àè¹�ÀépÀép€ /// The kind of finish to place on the end of lines drawn when /// [style] is set to [PaintingStyle.stroke]. /// /// Defaults to [StrokeCap.butt], i.e. no caps.Àêd„ÑÀîÑÀîÑ„+/// The kind of finish to place on the joins between segments. /// /// This applies to paths drawn when [style] is set to [PaintingStyle.stroke], /// It does not apply to points drawn as lines with [Canvas.drawPoints]. /// /// Defaults to [StrokeJoin.miter], i.e. sharp corners. /// /// Some examples of joins: /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} /// /// The centers of the line segments are colored in the diagrams above to /// highlight the joins, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [strokeMiterLimit] to control when miters are replaced by bevels when /// this is set to [StrokeJoin.miter]. /// * [strokeCap] to control what is drawn at the ends of the stroke. /// * [StrokeJoin] for the definitive list of stroke joins.Àð;…rÀõNÀõN„Ó/// The limit for miters to be drawn on segments when the join is set to /// [StrokeJoin.miter] and the [style] is set to [PaintingStyle.stroke]. If /// this limit is exceeded, then a [StrokeJoin.bevel] join will be drawn /// instead. This may cause some 'popping' of the corners of a path if the /// angle between line segments is animated, as seen in the diagrams below. /// /// This limit is expressed as a limit on the length of the miter. /// /// Defaults to 4.0. Using zero as a limit will cause a [StrokeJoin.bevel] /// join to be used all the time. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_0_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_6_join.mp4} /// /// The centers of the line segments are colored in the diagrams above to /// highlight the joins, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [strokeJoin] to control the kind of finish to place on the joins /// between segments. /// * [strokeCap] to control what is drawn at the ends of the stroke.Àöf‚WÀ÷.À÷.€¯/// A mask filter (for example, a blur) to apply to a shape after it has been /// drawn but before it has been composited into the image. /// /// See [MaskFilter] for details.Àûu�ìÀüôÀüô�/// Controls the performance vs quality trade-off to use when sampling bitmaps, /// as with an [ImageShader], or when drawing images, as with [Canvas.drawImage], /// [Canvas.drawImageRect], [Canvas.drawImageNine] or [Canvas.drawAtlas]. /// /// Defaults to [FilterQuality.none].Àþ�ÈÀÿŒÀÿŒ�k/// The shader to use when stroking or filling a shape. /// /// When this is null, the [color] is used instead. /// /// See also: /// /// * [Gradient], a shader that paints a color gradient. /// * [ImageShader], a shader that tiles an [Image]. /// * [colorFilter], which overrides [shader]. /// * [color], which is used if [shader] and [colorFilter] are null.À¦�vÀ’À’€Î/// A color filter to apply when a shape is drawn or when a layer is /// composited. /// /// See [ColorFilter] for details. /// /// When a shape is being drawn, [colorFilter] overrides [color] and [shader].À`‚ˆÀ^À^�È/// The [ImageFilter] to use when drawing raster images. /// /// For example, to blur an image using [Canvas.drawImage], apply an /// [ImageFilter.blur]: /// /// ```dart /// void paint(Canvas canvas, Size size) { /// canvas.drawImage( /// _image, /// ui.Offset.zero, /// Paint()..imageFilter = ui.ImageFilter.blur(sigmaX: 0.5, sigmaY: 0.5), /// ); /// } /// ``` /// /// See also: /// /// * [MaskFilter], which is used for drawing geometry.À§�nÀ ¼À ¼�/// Whether the colors of the image are inverted when drawn. /// /// Inverting the colors of an image applies a new color filter that will /// be composed with any user provided color filters. This is primarily /// used for implementing smart invert on iOS.ÀÙ±�ÀÙµÀÙµÀÙÁ ÀÙÇÀÙÆÀÞø�“ÀÞüÀÞüÀß Àß ÀßÀä©€ Àä­Àä­Àä·ÀäÂÀäÁÀæ2€‡Àæ6Àæ6Àæ<ÀæKÀæJÀè*€‹Àè.Àè.Àè: ÀèBÀèAÀéÕ€‹ÀéÙÀéÙÀéãÀéîÀéíÀï9€ŽÀï=Àï=ÀïHÀïTÀïSÀõ±€±ÀõµÀõµÀõÆ ÀõÎÀõÍÀøÁ‚°ÀøÅÀøÅÀøÐÀøÝÀøÜÀýe€—ÀýiÀýiÀýwÀý†Àý…ÀÿÌ�ÖÀÿÐÀÿÐÀÿ× ÀÿàÀÿßÀ �<À$À$À0À>À=Àì�·ÀðÀðÀüÀ À À lÀ À À * À 0À /ÀדrÀסÀסÀ ‰‡†À œÀ œÀ ‰À ŠÀ%ë¦rÀ*�À*�„ž/// Opaque handle to raw decoded image data (pixels). /// /// To obtain an [Image] object, use the [ImageDescriptor] API. /// /// To draw an [Image], use one of the methods on the [Canvas] class, such as /// [Canvas.drawImage]. /// /// A class or method that receives an image object must call [dispose] on the /// handle when it is no longer needed. To create a shareable reference to the /// underlying image, call [clone]. The method or object that receives /// the new instance will then be responsible for disposing it, and the /// underlying image itself will be disposed when all outstanding handles are /// disposed. /// /// If `dart:ui` passes an `Image` object and the recipient wishes to share /// that handle with other callers, [clone] must be called _before_ [dispose]. /// A handle that has been disposed cannot create new handles anymore. /// /// See also: /// /// * [Image](https://api.flutter.dev/flutter/widgets/Image-class.html), the class in the [widgets] library. /// * [ImageDescriptor], which allows reading information about the image and /// creating a codec to decode it. /// * [instantiateImageCodec], a utility method that wraps [ImageDescriptor].À*š€ÁÀ*šÀ*ŸÀ* À*¡À* À*¢ À*¨À*§À*¯ À*µÀ*´À*» À*ÁÀ*ÀÀ+€/À+©À+©À+€À+�À+‡À+˜À+ˆÀ+´�À,ÁÀ,Á€ç/// A callback that is invoked to report an image creation. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onCreate] directly because [MemoryAllocations] /// allows multiple callbacks.À,Î�À-ÝÀ-Ý€é/// A callback that is invoked to report the image disposal. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onDispose] directly because [MemoryAllocations] /// allows multiple callbacks.À-ëÀ-÷À-÷À.SÀ.UÀ.UA/// The number of image pixels along the image's horizontal axis.À._RÀ.«À.«?/// The number of image pixels along the image's vertical axis.À.¶À.»À.»À.ÇÀ1û��À2²À2²€¥/// Whether this reference to the underlying image is [dispose]d. /// /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise.À7jƒ�À9ÑÀ9Ñ�Ì/// The color space that is used by the [Image]'s colors. /// /// This value is a consequence of how the [Image] has been created. For /// example, loading a PNG that is in the Display P3 color space will result /// in a [ColorSpace.extendedSRGB] image. /// /// On rendering backends that don't support wide gamut colors (anything but /// iOS impeller), wide gamut images will still report [ColorSpace.sRGB] if /// rendering wide gamut colors isn't supported.À.у&À0ÑÀ0Ñ�æ/// Release this handle's claim on the underlying Image. This handle is no /// longer usable after this method is called. /// /// Once all outstanding handles have been disposed, the underlying image will /// be disposed as well. /// /// In debug mode, [debugGetOpenHandleStackTraces] will return a list of /// [StackTrace] objects from all open handles' creation points. This is /// useful when trying to determine what parts of the program are keeping an /// image resident in memory.À3œƒÊÀ6ÇÀ6Ç�Í/// Converts the [Image] object into a byte array. /// /// The [format] argument specifies the format in which the bytes will be /// returned. /// /// Using [ImageByteFormat.rawRgba] on an image in the color space /// [ColorSpace.extendedSRGB] will result in the gamut being squished to fit /// into the sRGB gamut, resulting in the loss of wide-gamut colors. /// /// Returns a future that completes with the binary image data or an error /// if encoding fails.À6Ó0À6äÀ6ãÀ6ìÀ6ûÀ6üÀ:þ�¢À;ÉÀ;É€°/// If asserts are enabled, returns the [StackTrace]s of each open handle from /// [clone], in creation order. /// /// If asserts are disabled, this method always returns null.À<¤ŒáÀGåÀG劢/// Creates a disposable handle to this image. /// /// Holders of an [Image] must dispose of the image when they no longer need /// to access it or draw it. However, once the underlying image is disposed, /// it is no longer possible to use it. If a holder of an image needs to share /// access to that image with another object or method, [clone] creates a /// duplicate handle. The underlying image will only be disposed once all /// outstanding handles are disposed. This allows for safe sharing of image /// references while still disposing of the underlying resources when all /// consumers are finished. /// /// It is safe to pass an [Image] handle to another object or method if the /// current holder no longer needs it. /// /// To check whether two [Image] references are referring to the same /// underlying image memory, use [isCloneOf] rather than the equality operator /// or [identical]. /// /// The following example demonstrates valid usage. /// /// ```dart /// import 'dart:async'; /// import 'dart:typed_data'; /// import 'dart:ui'; /// /// Future _loadImage(int width, int height) { /// final Completer completer = Completer(); /// decodeImageFromPixels( /// Uint8List.fromList(List.filled(width * height * 4, 0xFF)), /// width, /// height, /// PixelFormat.rgba8888, /// // Don't worry about disposing or cloning this image - responsibility /// // is transferred to the caller, and that is safe since this method /// // will not touch it again. /// (Image image) => completer.complete(image), /// ); /// return completer.future; /// } /// /// Future main() async { /// final Image image = await _loadImage(5, 5); /// // Make sure to clone the image, because MyHolder might dispose it /// // and we need to access it again. /// final MyImageHolder holder = MyImageHolder(image.clone()); /// final MyImageHolder holder2 = MyImageHolder(image.clone()); /// // Now we dispose it because we won't need it again. /// image.dispose(); /// /// final PictureRecorder recorder = PictureRecorder(); /// final Canvas canvas = Canvas(recorder); /// /// holder.draw(canvas); /// holder.dispose(); /// /// canvas.translate(50, 50); /// holder2.draw(canvas); /// holder2.dispose(); /// } /// /// class MyImageHolder { /// MyImageHolder(this.image); /// /// final Image image; /// /// void draw(Canvas canvas) { /// canvas.drawImage(image, Offset.zero, Paint()); /// } /// /// void dispose() => image.dispose(); /// } /// ``` /// /// The returned object behaves identically to this image. Calling /// [dispose] on it will only dispose the underlying native resources if it /// is the last remaining handle.ÀI‰‚›ÀKóÀKó‚R/// Returns true if `other` is a [clone] of this and thus shares the same /// underlying image memory, even if this or `other` is [dispose]d. /// /// This method may return false for two images that were decoded from the /// same underlying asset, if they are not sharing the same memory. For /// example, if the same file is decoded using [instantiateImageCodec] twice, /// or the same bytes are decoded using [decodeImageFromPixels] twice, there /// will be two distinct [Image]s that render the same but do not share /// underlying memory, and so will not be treated as clones of each other.ÀKý ÀLÀLÀL(3ÀL;ÀL;ÀL(ÀL)ÀL_‡ØÀL„ÀL„ÀM‰'ÀM¥ÀM«ÀM¬ÀM­ÀM¬ÀM‰ÀMŠÀM�ÀM¡ÀM‘ÀQÀQ ÀQ ÀQ,ÀSl%ÀS}ÀS}ÀS�ÀS�ÀSˆÀSŽÀS‰ÀM´fÀNÀNÀM´ÀMµÀM»ÀMÙÀMÂÀM¼ÀMÊÀMØÀMËÀMÒÀM×ÀMÓÀMÚÀMÿÀMáÀMÛÀMãÀMùÀMóÀMûÀNhÀNÀNÀNÀNÀN%ÀNCÀN,ÀN&ÀN4ÀNBÀN5ÀN<ÀNAÀN=ÀNDÀNjÀNKÀNEÀNMÀNdÀN^ÀNfÀS–bÀSíÀSíÀS–ÀS—ÀS�ÀS»ÀS¤ÀSžÀS¬ÀSºÀS­ÀS´ÀS¹ÀSµÀS¼ÀSØÀSÃÀS½ÀSÅÀNŠ�¡ÀNœÀNœÀN¨0ÀN¹ÀN¸ÀNÁÀNÐÀNÑÀP/€èÀPÒÀPÒ9/// Returns an error message on failure, null on success.ÀPÞ ÀPãÀPâÀPê+ÀQÀQ ÀPkÀPlÀPrÀP ÀPzÀPsÀP‚ÀPŸÀPƒÀPŠÀP�ÀP‹ÀP’ÀP™ÀP¡ÀP½ÀP¨ÀP¢ÀPªÀQ5�dÀQ:ÀQ:ÀR�€ËÀS]ÀS]k/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀS ÀSÀSÀS1ÀSÀSÀS"ÀS0ÀS#ÀS*ÀS/ÀS+ÀS2ÀSKÀS9ÀS3ÀS;ÀSü9ÀTÀTÀSüÀSýÀL_ÀL`ÀLfÀLwÀLgÀU‰_À[ëÀ[ë†Ê/// Information for a single frame of an animation. /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. /// /// The recipient of an instance of this class is responsible for calling /// [Image.dispose] on [image]. To share the image with other interested /// parties, use [Image.clone]. If the [FrameInfo] object itself is passed to /// another method or object, that method or object must assume it is /// responsible for disposing the image when done, and the passer must not /// access the [image] after that point. /// /// For example, the following code sample is incorrect: /// /// ```dart /// /// BAD /// Future nextFrameRoutine(ui.Codec codec) async { /// final ui.FrameInfo frameInfo = await codec.getNextFrame(); /// _cacheImage(frameInfo); /// // ERROR - _cacheImage is now responsible for disposing the image, and /// // the image may not be available any more for this drawing routine. /// _drawImage(frameInfo); /// // ERROR again - the previous methods might or might not have created /// // handles to the image. /// frameInfo.image.dispose(); /// } /// ``` /// /// Correct usage is: /// /// ```dart /// /// GOOD /// Future nextFrameRoutine(ui.Codec codec) async { /// final ui.FrameInfo frameInfo = await codec.getNextFrame(); /// _cacheImage(frameInfo.image.clone(), frameInfo.duration); /// _drawImage(frameInfo.image.clone(), frameInfo.duration); /// // This method is done with its handle, and has passed handles to its /// // clients already. /// // The image will live until those clients dispose of their handles, and /// // this one must not be disposed since it will not be used again. /// frameInfo.image.dispose(); /// } /// ```À[ù�À\¿À\ÈÀ\ÉÀ\ÊÀ\É€»/// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame].À\ÌÀ\ÛÀ\ÚÀ\äÀ\óÀ\òÀ\þ€™À]�À]�{/// The duration this frame should be shown. /// /// A zero duration indicates that the frame should be shown indefinitely.À]œ€ÚÀ^qÀ^q€¾/// The [Image] object for this frame. /// /// This object must be disposed by the recipient of this frame info. /// /// To share this image with other interested parties, use [Image.clone].À^{„>À_iÀ_i€Þ/// A handle to an image codec. /// /// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To obtain an instance of the [Codec] interface, see /// [instantiateImageCodec].À_s9À_¡À_¡#/// Number of frames in this image.À_°€¦À`FÀ`F€…/// Number of times to repeat the animation. /// /// * 0 when the animation should be played once. /// * -1 for infinity repetitions.À`Z�aÀa¬Àa¬�//// Fetches the next animation frame. /// /// Wraps back to the first frame after returning the last frame. /// /// The returned future can complete with an error if the decoding has failed. /// /// The caller of this method is responsible for disposing the /// [FrameInfo.image] on the returned object.Àa¿€øÀb­Àb­€Þ/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).Àb»‡×ÀbÆÀbÆÀcÎÀcÎÀcÚÀcÛÀcÜÀcÛÀcãÀcèÀcèÀd»ÀdÀÀdÀÀcþDÀdÀdÀcþÀcÿÀdFqÀd«Àd«ÀdFÀdGÀdMÀdkÀdTÀdNÀd\ÀdjÀd]ÀddÀdiÀdeÀdlÀd–ÀdsÀdmÀduÀd�ÀdŠÀd’ÀdÛSÀdïÀdïÀdÛÀdÜÀe2{ÀeœÀeœÀe2Àe3Àe9ÀeWÀe@Àe:ÀeHÀeVÀeIÀePÀeUÀeQÀeXÀe‡Àe_ÀeYÀeaÀe�Àe{ÀeƒÀe±ƒ)ÀeÏÀeÏÀe±Àe²ÀhÞ€ÚÀi|Ài|9/// Returns an error message on failure, null on success.ÀiŠ,Ài¯Ài®ÀiÀiÀi!ÀiHÀi)Ài"Ài1ÀiGÀi2Ài9Ài>Ài:ÀiAÀiIÀigÀiPÀiJÀiRÀi¼fÀjÀjÀi¼Ài½ÀiÈÀiÉÀiÏÀiìÀiÕÀiÐÀiÝÀiëÀiÞÀiåÀiêÀiæÀiíÀjÀiôÀiîÀiöÀj&jÀj9Àj9Àj&Àj'À‰Ò†fÀŠåÀŠå� /// A specification of the size to which an image should be decoded. /// /// See also: /// /// * [TargetImageSizeCallback], a callback that returns instances of this /// class when consulted by image decoding methods such as /// [instantiateImageCodecWithSize].ÀŠù�À‹˜À‹˜À‹§€�/// Creates a new instance of this class. /// /// The `width` and `height` may both be null, but if they're non-null, they /// must be positive.À‹© À‹¯À‹®À‹µ À‹»À‹ºÀ‹ÉÀ‹ÏÀ‹êÀ‹ÞÀ‹ÖÀ‹ÐÀ‹ÙÀ‹çÀ‹áÀ‹éÀ‹óÀ‹ùÀŒÀŒ ÀŒÀ‹úÀŒÀŒÀŒ ÀŒÀŒ�åÀ�üÀ�ü�Â/// The width into which to load the image. /// /// If this is non-null, the image will be decoded into the specified width. /// If this is null and [height] is also null, the image will be decoded into /// its intrinsic size. If this is null and [height] is non-null, the image /// will be decoded into a width that maintains its intrinsic aspect ratio /// while respecting the [height] value. /// /// If this value is non-null, it must be positive.ÀŽ�æÀ�æÀ�æ�Â/// The height into which to load the image. /// /// If this is non-null, the image will be decoded into the specified height. /// If this is null and [width] is also null, the image will be decoded into /// its intrinsic size. If this is null and [width] is non-null, the image /// will be decoded into a height that maintains its intrinsic aspect ratio /// while respecting the [width] value. /// /// If this value is non-null, it must be positive.À�ñEÀ�À�À�ñÀ�òÀ©Ùƒ˜Àª9Àª9P/// A handle for the framework to hold and retain an engine layer across frames.ÀªIƒ&À­eÀ­e‚ø/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// EngineLayers indirectly retain platform specific graphics resources. Some /// of these resources, such as images, may be memory intensive. It is /// important to dispose of EngineLayer objects that will no longer be used as /// soon as possible to avoid retaining these resources until the next /// garbage collection. /// /// Once this EngineLayer is disposed, it is no longer eligible for use as a /// retained layer, and must not be passed as an `oldLayer` to any of the /// [SceneBuilder] methods which accept that parameter. /// /// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).À­s�IÀ­~À­~À­Í}À®3À®EÀ®FÀ®GÀ®Fa/// This class is created by the engine, and should not be instantiated /// or extended directly.À®NlÀ®°À®°À®NÀ®OÀ®ZÀ®[À®aÀ®~À®gÀ®bÀ®oÀ®}À®pÀ®wÀ®|À®xÀ®À®žÀ®†À®€À®ˆÀ®¾¹­À±†À±†‚¸/// A complex, one-dimensional subset of a plane. /// /// A path consists of a number of sub-paths, and a _current point_. /// /// Sub-paths consist of segments of various types, such as lines, /// arcs, or beziers. Sub-paths can be open or closed, and can /// self-intersect. /// /// Closed sub-paths enclose a (possibly discontiguous) region of the /// plane based on the current [fillType]. /// /// The _current point_ is initially at the origin. After each /// operation adding a segment to a sub-path, the current point is /// updated to the end of that segment. /// /// Paths can be drawn on canvases using [Canvas.drawPath], and can /// used to create clip regions using [Canvas.clipPath].À² À²(À²(À²,À²A�iÀ³À³À³À³À³€Á/// Creates a copy of another [Path]. /// /// This copy is fast and does not require additional memory unless either /// the `source` path or the path returned by this constructor are modified.À³ À³#À³"À³®€£À´HÀ´H€‚/// Determines how the interior of this path is calculated. /// /// Defaults to the non-zero winding rule, [PathFillType.nonZero].À´T!À´XÀ´XÀ´aÀ´oÀ´nÀ´yUÀ´³À´³2/// Starts a new sub-path at the given coordinate.À´ºÀ´ÂÀ´ÁÀ´ÄÀ´ÌÀ´ËÀ´ÒrÀµÀµE/// Starts a new sub-path at the given offset from the current point.Àµ. Àµ6Àµ5Àµ9 ÀµAÀµ@ÀµHtÀµ¡Àµ¡O/// Adds a straight line segment from the current point to the given /// point.Àµ¨Àµ°Àµ¯Àµ²ÀµºÀµ¹ÀµÀ€£À¶>À¶>t/// Adds a straight line segment from the current point to the point /// at the given offset from the current point.À¶M À¶UÀ¶TÀ¶X À¶`À¶_À¶g�ÁÀ·êÀ·ê�q/// Adds a quadratic bezier segment that curves from the current /// point to the given point (x2,y2), using the control point /// (x1,y1). /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_quadratic_to.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_quadratic_to_dark.png#gh-dark-mode-only)À·ü À¸À¸À¸ À¸À¸À¸ À¸À¸À¸ À¸%À¸$À¸,�'À¹ À¹ €Ó/// Adds a quadratic bezier segment that curves from the current /// point to the point at the offset (x2,y2) from the current point, /// using the control point at the offset (x1,y1) from the current /// point.À¹' À¹/À¹.À¹2 À¹:À¹9À¹= À¹EÀ¹DÀ¹H À¹PÀ¹OÀ¹W�ÎÀºÛÀºÛ�r/// Adds a cubic bezier segment that curves from the current point /// to the given point (x3,y3), using the control points (x1,y1) and /// (x2,y2). /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_cubic_to.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_cubic_to_dark.png#gh-dark-mode-only)Àºã ÀºëÀºêÀºî ÀºöÀºõÀºù À»À»À» À» À» À» À»À»À» À»"À»!À»)�=À¼À¼€Ý/// Adds a cubic bezier segment that curves from the current point /// to the point at the offset (x3,y3) from the current point, using /// the control points at the offsets (x1,y1) and (x2,y2) from the /// current point.À¼$ À¼,À¼+À¼/ À¼7À¼6À¼: À¼BÀ¼AÀ¼E À¼MÀ¼LÀ¼P À¼XÀ¼WÀ¼[ À¼cÀ¼bÀ¼j‚bÀ¾ŽÀ¾Ž‚/// Adds a bezier segment that curves from the current point to the /// given point (x2,y2), using the control points (x1,y1) and the /// weight w. If the weight is greater than 1, then the curve is a /// hyperbola; if the weight equals 1, it's a parabola; and if it is /// less than 1, it is an ellipse. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_conic_to.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_conic_to_dark.png#gh-dark-mode-only)À¾– À¾žÀ¾�À¾¡ À¾©À¾¨À¾¬ À¾´À¾³À¾· À¾¿À¾¾À¾ÂÀ¾ÊÀ¾ÉÀ¾Ð�ÏÀÀYÀÀY�w/// Adds a bezier segment that curves from the current point to the /// point at the offset (x2,y2) from the current point, using the /// control point at the offset (x1,y1) from the current point and /// the weight w. If the weight is greater than 1, then the curve is /// a hyperbola; if the weight equals 1, it's a parabola; and if it /// is less than 1, it is an ellipse.ÀÀi ÀÀqÀÀpÀÀt ÀÀ|ÀÀ{ÀÀ ÀÀ‡ÀÀ†ÀÀŠ ÀÀ’ÀÀ‘ÀÀ•ÀÀ�ÀÀœÀÀ£ƒrÀÃÌÀÃ̃/// If the `forceMoveTo` argument is false, adds a straight line /// segment and an arc segment. /// /// If the `forceMoveTo` argument is true, starts a new sub-path /// consisting of an arc segment. /// /// In either case, the arc segment consists of the arc that follows /// the edge of the oval bounded by the given rectangle, from /// startAngle radians around the oval up to startAngle + sweepAngle /// radians around the oval, with zero radians being the point on /// the right hand side of the oval that crosses the horizontal line /// that intersects the center of the rectangle and with positive /// angles going clockwise around the oval. /// /// The line segment added if `forceMoveTo` is false starts at the /// current point and ends at the start of the arc.ÀÃÒ ÀÃØÀÃ×ÀÃÝÀÃåÀÃäÀÃðÀÃøÀÃ÷ÀÄÀÄ ÀÄÀă&ÀƧÀƧ‚p/// Appends up to four conic curves weighted to describe an oval of `radius` /// and rotated by `rotation` (measured in degrees and clockwise). /// /// The first curve begins from the last point in the path and the last ends /// at `arcEnd`. The curves follow a path in a direction determined by /// `clockwise` and `largeArc` in such a way that the sweep angle /// is always less than 360 degrees. /// /// A simple line is appended if either radii are zero or the last /// point in the path is `arcEnd`. The radii are scaled to fit the last path /// point if both are greater than zero but too small to describe an arc. ///ÀÆ· ÀÆ¿ÀƾÀÆÌÀÆÔÀÆÓÀÆíÀÆõÀÆôÀÇÀÇÀÇ ÀÇ#ÀÇ)ÀÇ(ÀÆÜÀÆâÀÆãÀÆÿÀÇÀÇ4ÀÇCƒ£ÀÊAÀÊA‚Ü/// Appends up to four conic curves weighted to describe an oval of `radius` /// and rotated by `rotation` (measured in degrees and clockwise). /// /// The last path point is described by (px, py). /// /// The first curve begins from the last point in the path and the last ends /// at `arcEndDelta.dx + px` and `arcEndDelta.dy + py`. The curves follow a /// path in a direction determined by `clockwise` and `largeArc` /// in such a way that the sweep angle is always less than 360 degrees. /// /// A simple line is appended if either radii are zero, or, both /// `arcEndDelta.dx` and `arcEndDelta.dy` are zero. The radii are scaled to /// fit the last path point if both are greater than zero but too small to /// describe an arc.ÀÊYÀÊaÀÊ`ÀÊsÀÊ{ÀÊzÀÊ”ÀÊœÀÊ›ÀʯÀʵÀÊ´ÀÊÊÀÊÐÀÊÏÀʃÀʉÀÊŠÀʦÀÊ¿ÀÊÛÀÊêvÀËMÀËMY/// Adds a new sub-path that consists of four lines that outline the /// given rectangle.ÀËU ÀË[ÀËZÀËd�.ÀÌÀÌ� /// Adds a new sub-path that consists of a curve that forms the /// ellipse that fills the given rectangle. /// /// To add a circle, pass an appropriate rectangle as `oval`. [Rect.fromCircle] /// can be used to easily describe the circle's center [Offset] and radius.À̇ ÀÌ�ÀÌŒÀÌ–ƒèÀÐFÀÐFƒŽ/// Adds a new sub-path with one arc segment that consists of the arc /// that follows the edge of the oval bounded by the given /// rectangle, from startAngle radians around the oval up to /// startAngle + sweepAngle radians around the oval, with zero /// radians being the point on the right hand side of the oval that /// crosses the horizontal line that intersects the center of the /// rectangle and with positive angles going clockwise around the /// oval. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc_dark.png#gh-dark-mode-only) /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc_ccw.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/path_add_arc_ccw_dark.png#gh-dark-mode-only)ÀÐM ÀÐSÀÐRÀÐXÀÐ`ÀÐ_ÀÐkÀÐsÀÐrÀЂ�XÀÑ®ÀÑ®�/// Adds a new sub-path with a sequence of line segments that connect the given /// points. /// /// If `close` is true, a final line segment will be added that connects the /// last point to the first point. /// /// The `points` argument is interpreted as offsets from the origin.ÀѹÀÑÇÀÑÆÀÑÎ ÀÑÔÀÑÓÀÑÞ€°ÀÒxÀÒx€Ž/// Adds a new sub-path that consists of the straight lines and /// curves needed to form the rounded rectangle described by the /// argument.ÀÒ� ÀÒˆÀÒ‡ÀÒ’€®ÀÓÀÓv/// Adds a new sub-path that consists of curves needed to form the rounded /// superellipse described by the argument.ÀÓ#ÀÓ2ÀÓ1ÀÓD�QÀÔ[ÀÔ[�/// Adds the sub-paths of `path`, offset by `offset`, to this path. /// /// If `matrix4` is specified, the path will be transformed by this matrix /// after the matrix is translated by the given offset. The matrix is a 4x4 /// matrix stored in column major order.ÀÔc ÀÔiÀÔhÀÔn ÀÔvÀÔuÀÔ~ÀÔŒÀÔ‹ÀÔ™�×ÀÖ/ÀÖ/�‚/// Adds the sub-paths of `path`, offset by `offset`, to this path. /// The current sub-path is extended with the first sub-path /// of `path`, connecting them with a lineTo if necessary. /// /// If `matrix4` is specified, the path will be transformed by this matrix /// after the matrix is translated by the given `offset`. The matrix is a 4x4 /// matrix stored in column major order.ÀÖ> ÀÖDÀÖCÀÖI ÀÖQÀÖPÀÖYÀÖgÀÖfÀÖt€“ÀÖÿÀÖÿ€�/// Closes the last sub-path, as if a straight line had been drawn /// from the current point to the first point of the sub-path.À× €±À×´À×´€�/// Clears the [Path] object of all sub-paths, returning it to the /// same state it had when it was created. The _current point_ is /// reset to the origin.À×À�qÀÙÀÙ�F/// Tests to see if the given point is within the path. (That is, whether the /// point would be in the visible portion of the path if the path was used /// with [Canvas.clipPath].) /// /// The `point` argument is interpreted as an offset from the origin. /// /// Returns true if the point is in the path, and false otherwise.ÀÙ# ÀÙ+ÀÙ*ÀÙ5€‰ÀÙ©ÀÙ©j/// Returns a copy of the path with all the segments of every /// sub-path translated by the given offset.ÀÙ¯ ÀÙ·ÀÙ¶ÀÙ€”ÀÚ7ÀÚ7k/// Returns a copy of the path with all the segments of every /// sub-path transformed by the given matrix.ÀÚAÀÚNÀÚMÀÚZƒ£ÀÝñÀÝñƒ0/// Computes the bounding rectangle for this path. /// /// A path containing only axis-aligned points on the same straight line will /// have no area, and therefore `Rect.isEmpty` will return true for such a /// path. Consider checking `rect.width + rect.height > 0.0` instead, or /// using the [computeMetrics] API to check the path length. /// /// For many more elaborate paths, the bounds may be inaccurate. For example, /// when a path contains a circle, the points used to compute the bounds are /// the circle's implied control points, which form a square around the circle; /// if the circle has a transformation applied using [transform] then that /// square is rotated, and the (axis-aligned, non-rotated) bounding box /// therefore ends up grossly overestimating the actual area covered by the /// circle.ÀÞ‚¡ÀßJÀßJ�0/// Combines the two paths according to the manner specified by the given /// `operation`. /// /// The resulting path will be constructed from non-overlapping contours. The /// curve order is reduced where possible so that cubics may be turned into /// quadratics, and quadratics maybe turned into lines.ÀßRÀßaÀß`Àßk ÀßqÀßpÀßw Àß}Àß|ÀইÃÀè>Àè>‡M/// Creates a [PathMetrics] object for this path, which can describe various /// properties about the contours of the path. /// /// A [Path] is made up of zero or more contours. A contour is made up of /// connected curves and segments, created via methods like [lineTo], /// [cubicTo], [arcTo], [quadraticBezierTo], their relative counterparts, as /// well as the add* methods such as [addRect]. Creating a new [Path] starts /// a new contour once it has any drawing instructions, and another new /// contour is started for each [moveTo] instruction. /// /// A [PathMetric] object describes properties of an individual contour, /// such as its length, whether it is closed, what the tangent vector of a /// particular offset along the path is. It also provides a method for /// creating sub-paths: [PathMetric.extractPath]. /// /// Calculating [PathMetric] objects is not trivial. The [PathMetrics] object /// returned by this method is a lazy [Iterable], meaning it only performs /// calculations when the iterator is moved to the next [PathMetric]. Callers /// that wish to memoize this iterable can easily do so by using /// [Iterable.toList] on the result of this method. In particular, callers /// looking for information about how many contours are in the path should /// either store the result of `path.computeMetrics().length`, or should use /// `path.computeMetrics().toList()` so they can repeatedly check the length, /// since calling `Iterable.length` causes traversal of the entire iterable. /// /// In particular, callers should be aware that [PathMetrics.length] is the /// number of contours, **not the length of the path**. To get the length of /// a contour in a path, use [PathMetric.length]. /// /// If `forceClosed` is set to true, the contours of the path will be measured /// as if they had been closed, even if they were not explicitly closed.ÀèNÀèTÀèSÀèaÀèm¨,ÀèxÀèxÀè¹OÀèáÀèáÀèì%/// Create a new empty [Path] object.Àé €£ÀéŸÀéªÀé«Àé¬Àé«€Ž/// Avoids creating a new native backing for the path for methods that will /// create it later, such as [Path.from], [shift] and [transform].Àê{MÀê˜Àê˜Àê{Àê|ÀêËJÀêÛÀêÛÀêäÀêòÀêñÀêËÀêÌ3Àé³VÀéúÀéúÀé³Àé´ÀéºÀéÐÀéÀÀé»ÀéÈÀéÏÀéÉÀéÑÀéèÀéØÀéÒÀéÚÀê jÀêbÀêbÀêi ÀêoÀênÀê ÀêÀêÀê9ÀêÀêÀê"Àê8Àê#Àê*Àê/Àê+Àê2Àê:ÀêPÀêAÀê;ÀêCÀëpÀëzÀëzÀëÀëÀë Àë>Àë'Àë!Àë/Àë=Àë0Àë7Àë<Àë8Àë?ÀëiÀëFÀë@ÀëHÀëcÀë]ÀëeÀë�€ƒÀëõÀëõÀì ÀìÀìÀë�ÀëŽÀë”Àë¸ÀëšÀë•Àë¢Àë·Àë£ÀëªÀë¯Àë«Àë²Àë¹ÀëãÀëÀÀëºÀëÂÀëÝÀë×ÀëßÀ쀓ÀìŒÀìŒÀì“Àì›ÀìšÀì�Àì¥Àì¤ÀìÀìÀì Àì!Àì'ÀìTÀì-Àì(Àì5ÀìSÀì6Àì=ÀìBÀì>ÀìEÀìMÀìUÀìzÀì\ÀìVÀì^ÀìtÀìnÀìvÀì«€²Àí8Àí8ÀíG ÀíOÀíNÀíR ÀíZÀíYÀì«Àì¬Àì·Àì¸Àì¾ÀìëÀìÄÀì¿ÀìÌÀìêÀìÍÀìÔÀìÙÀìÕÀìÜÀìäÀììÀí&ÀìøÀìòÀìúÀíÀíÀíÀía€“ÀíÙÀíÙÀíàÀíèÀíçÀíêÀíòÀíñÀíaÀíbÀímÀínÀítÀí¡ÀízÀíuÀí‚Àí ÀíƒÀíŠÀí�Àí‹Àí’ÀíšÀí¢ÀíÇÀí©Àí£Àí«ÀíÁÀí»ÀíÃÀíø€²Àî…Àî…Àî” ÀîœÀî›ÀîŸ Àî§Àî¦ÀíøÀíùÀîÀîÀî Àî8ÀîÀî ÀîÀî7ÀîÀî!Àî&Àî"Àî)Àî1Àî9ÀîsÀîEÀî?ÀîGÀîiÀîcÀîkÀÞÀïNÀïNÀï` ÀïhÀïgÀïk ÀïsÀïrÀïv Àï~Àï}Àï� Àï‰ÀïˆÀî®Àî¯ÀîºÀî»ÀîÁÀîþÀîÇÀîÂÀîÏÀîýÀîÐÀî×ÀîÜÀîØÀîßÀîçÀîïÀî÷ÀîÿÀï<Àï ÀïÀï Àï2Àï,Àï4Àï�€îÀð8Àð8ÀðR ÀðZÀðYÀð] ÀðeÀðdÀðh ÀðpÀðoÀðs Àð{ÀðzÀï�Àï‘ÀïœÀï�Àï£ÀïàÀï©Àï¤Àï±ÀïßÀï²Àï¹Àï¾ÀïºÀïÁÀïÉÀïÑÀïÙÀïáÀð&ÀïíÀïçÀïïÀðÀðÀðÀð‚€ðÀñ(Àñ(Àñ0 Àñ8Àñ7Àñ; ÀñCÀñBÀñF ÀñNÀñMÀñQ ÀñYÀñXÀñ\ ÀñdÀñcÀñg ÀñoÀñnÀð‚ÀðƒÀðŽÀð�Àð•ÀðâÀð›Àð–Àð£ÀðáÀð¤Àð«Àð°Àð¬Àð³Àð»ÀðÃÀðËÀðÓÀðÛÀðãÀñÀðïÀðéÀðñÀñ ÀñÀñÀñv�Àò$Àò$Àò4 Àò<Àò;Àò? ÀòGÀòFÀòJ ÀòRÀòQÀòU Àò]Àò\Àò` ÀòhÀògÀòk ÀòsÀòrÀñvÀñwÀñ‚ÀñƒÀñ‰ÀñÖÀñ�ÀñŠÀñ—ÀñÕÀñ˜ÀñŸÀñ¤Àñ Àñ§Àñ¯Àñ·Àñ¿ÀñÇÀñÏÀñ×ÀòÀñãÀñÝÀñåÀòÀòÀò Àòz€ÜÀóÀóÀó Àó(Àó'Àó+ Àó3Àó2Àó6 Àó>Àó=ÀóA ÀóIÀóHÀóLÀóTÀóSÀòzÀò{Àò†Àò‡Àò�ÀòÒÀò“ÀòŽÀò›ÀòÑÀòœÀò£Àò¨Àò¤Àò«Àò³Àò»ÀòÃÀòËÀòÓÀóÀòßÀòÙÀòáÀòüÀòöÀòþÀóZ€ìÀôÀôÀô ÀôÀôÀô Àô#Àô"Àô& Àô.Àô-Àô1 Àô9Àô8Àô<ÀôDÀôCÀóZÀó[ÀófÀógÀómÀó²ÀósÀónÀó{Àó±Àó|ÀóƒÀóˆÀó„Àó‹Àó“Àó›Àó£Àó«Àó³ÀóîÀó¿Àó¹ÀóÁÀóäÀóÞÀóæÀôJ€ÞÀô[Àô[Àôa ÀôgÀôfÀôlÀôtÀôsÀôÀô‡Àô†Àô’Àô˜Àô—ÀôJÀôKÀõ,�4ÀõÊÀõÊÀõÖ ÀõÞÀõÝÀõç ÀõïÀõîÀõ÷ ÀõÿÀõþÀö ÀöÀöÀöÀö$Àö#Àö3Àö;Àö:ÀöJÀöPÀöOÀõ,Àõ-Àõ3Àõ†Àõ9Àõ4ÀõAÀõ…ÀõBÀõIÀõNÀõJÀõQÀõYÀõaÀõiÀõqÀõyÀõ�Àõ‡Àõ¸Àõ“Àõ�Àõ•Àõ®Àõ¨Àõ°Àöd�PÀöuÀöuÀö… Àö�ÀöŒÀöšÀö¢Àö¡Àö»ÀöÃÀöÂÀöÖÀöÜÀöÛÀöñÀö÷ÀööÀödÀöeÀöªÀö°Àö±ÀöÍÀöæÀ÷À÷¸�>ÀøYÀøYÀøjÀørÀøqÀø~Àø†Àø…Àø’ÀøšÀø™Àø¦Àø®Àø­ÀøºÀøÂÀøÁÀøÏ ÀøÕÀøÔÀøâÀøèÀøçÀ÷¸À÷¹À÷¿ÀøÀ÷ÅÀ÷ÀÀ÷ÍÀøÀ÷ÎÀ÷ÕÀ÷ÚÀ÷ÖÀ÷ÝÀ÷åÀ÷íÀ÷õÀ÷ýÀøÀø ÀøÀøGÀøÀøÀøÀø=Àø7Àø?Àøú�¥Àù Àù Àù#Àù+Àù*Àù=ÀùEÀùDÀù^ÀùfÀùeÀùyÀùÀù~Àù”ÀùšÀù™ÀøúÀøûÀùMÀùSÀùTÀùpÀù‰Àù¥Àú£�NÀûLÀûLÀûeÀûmÀûlÀûyÀû�Àû€Àû�Àû•Àû”Àû¡Àû©Àû¨ÀûµÀû½Àû¼ÀûÊ ÀûÐÀûÏÀûÝÀûãÀûâÀú£Àú¤ÀúªÀúûÀú°Àú«Àú¸ÀúúÀú¹ÀúÀÀúÅÀúÁÀúÈÀúÐÀúØÀúàÀúèÀúðÀúöÀúüÀû:ÀûÀûÀû Àû0Àû*Àû2Àûõ€…ÀüÀüÀü ÀüÀüÀûõÀûöÀü~€ÉÀýÀýÀý ÀýÀýÀý Àý&Àý%Àý* Àý2Àý1Àý8 Àý@Àý?Àü~ÀüÀü…ÀüÂÀü‹Àü†Àü“ÀüÁÀü”Àü›Àü ÀüœÀü£Àü«Àü³Àü»ÀüÃÀüöÀüÏÀüÉÀüÑÀüìÀüæÀüîÀýK€…Àý\Àý\Àýd ÀýjÀýiÀýKÀýLÀýÔ€ÉÀþ^Àþ^Àþg ÀþoÀþnÀþt Àþ|Àþ{Àþ€ ÀþˆÀþ‡ÀþŽ Àþ–Àþ•ÀýÔÀýÕÀýÛÀþÀýáÀýÜÀýéÀþÀýêÀýñÀýöÀýòÀýùÀþÀþ ÀþÀþÀþLÀþ%ÀþÀþ'ÀþBÀþ<ÀþDÀþ¡€ÁÀþ²Àþ²Àþ¹ Àþ¿Àþ¾ÀþÄÀþÌÀþËÀþ×ÀþßÀþÞÀþ¡Àþ¢Àÿf�ÀÿÿÀÿÿÀ ÀÀÀ À%À$À- À5À4À? ÀGÀFÀRÀZÀYÀiÀqÀpÀÿfÀÿgÀÿmÀÿºÀÿsÀÿnÀÿ{Àÿ¹Àÿ|ÀÿƒÀÿˆÀÿ„Àÿ‹Àÿ“Àÿ›Àÿ£Àÿ«Àÿ³Àÿ»ÀÿíÀÿÇÀÿÁÀÿÉÀÿãÀÿÝÀÿåÀ„tÀ•À•À À®À­Àµ À»ÀºÀ„À…Àü€ŒÀ\À\ÀhÀuÀtÀ| À‚À�ÀüÀýÀÀ.À ÀÀÀ-ÀÀÀÀÀ!À)À/ÀJÀ6À0À8ÀŒrÀ�À�À¦ À­À¬ÀŒÀ�ÀuÀZÀZÀdÀqÀpÀÀÀ À.ÀÀ ÀÀ-ÀÀÀ$À À'À/ÀHÀ6À0À8À{€¦ÀŒÀŒÀ�À¬À«À{À|À%€�ÀŒÀŒÀž"À´À³À%À&À,ÀXÀ2À-À:ÀWÀ;ÀBÀGÀCÀJÀQÀVÀRÀYÀzÀ`ÀZÀbÀÆ�SÀ×À×Àß ÀåÀäÀê ÀòÀñÀúÀÀÀÆÀÇÀ€ŸÀ‹À‹À”À¡À À¦ À®À­À± À¹À¸ÀÀÀ$À`À*À%À2À_À3À:À?À;ÀBÀIÀNÀJÀQÀYÀaÀyÀhÀbÀjÀÀ€ØÀIÀIÀ\ÀiÀhÀn ÀvÀuÀy À�À€À„À‘À�ÀÀÀÁÀÇÀ ÀÍÀÈÀÕÀ ÀÖÀÝÀâÀÞÀåÀìÀñÀíÀôÀüÀÀ À7ÀÀÀÀœ�gÀ­À­À¼ ÀÂÀÁÀÇ ÀÏÀÎÀ×ÀåÀäÀœÀ�À€¶À…À…À•À¢À¡À§ À¯À®À² ÀºÀ¹ÀÀÀÀJÀÀÀÀIÀÀ$À)À%À,À3À8À4À;ÀCÀKÀsÀWÀQÀYÀÁ€ùÀ PÀ PÀ nÀ {À zÀ „ À ŒÀ ‹À “ À ›À šÀ ¢À ¯À ®ÀÁÀÂÀÈÀ ÀÎÀÉÀÖÀ À×ÀÞÀãÀßÀæÀíÀòÀîÀõÀýÀ À À >À À À À ¾oÀ %À %À ¾À ¿À ÊÀ ËÀ ÑÀ îÀ ×À ÒÀ ßÀ íÀ àÀ çÀ ìÀ èÀ ïÀ À öÀ ðÀ øÀ À À À 1oÀ ˜À ˜À 1À 2À =À >À DÀ aÀ JÀ EÀ RÀ `À SÀ ZÀ _À [À bÀ †À iÀ cÀ kÀ €À zÀ ‚À ¤zÀ µÀ µÀ ¾ À ÆÀ ÅÀ ¤À ¥À "€ŒÀ �À �À šÀ ¢À ¡À ¤À ¬À «À "À #À )À VÀ /À *À 7À UÀ 8À ?À DÀ @À GÀ OÀ WÀ ~À ^À XÀ `À xÀ rÀ zÀ ²€¶À ÃÀ ÃÀ É À ÑÀ ÐÀ ²À ³À l€�À ÑÀ ÑÀ Ø À ÞÀ ÝÀ æ À îÀ íÀ ñ À ùÀ øÀ lÀ mÀ sÀ ¨À yÀ tÀ �À §À ‚À ‰À ŽÀ ŠÀ ‘À ™À ¡À ©À ¿À °À ªÀ ²À €¹À À À À (À 'À À À ½€�ÀÀÀ) À/À.À7ÀDÀCÀ ½À ¾À ÄÀ ñÀ ÊÀ ÅÀ ÒÀ ðÀ ÓÀ ÚÀ ßÀ ÛÀ âÀ êÀ òÀ À ùÀ óÀ ûÀP€‹ÀaÀaÀPÀQÀßgÀ9À9ÀßÀàÀæÀÀîÀçÀöÀÀ÷ÀþÀÀÿÀÀ À ÀÀÀJ€¨À¹À¹À½ÀÊÀÉÀÐÀÝÀÜÀã ÀèÀçÀJÀKÀQÀ“ÀWÀRÀ_À’À`ÀgÀlÀhÀoÀvÀ{ÀwÀ~À…ÀŠÀ†À�À”À§À›À•À�ÀöuÀÀÀÀ$À#ÀöÀ÷À1Ào(À‚À‚ÀoÀpÀ›‡DÀSÀS€±/// The geometric description of a tangent: the angle at a point. /// /// See also: /// * [PathMetric.getTangentForOffset], which returns the tangent of an offset along a path.À_€‡ÀÂÀÂÀÉV/// Creates a [Tangent] with the given values. /// /// The arguments must not be null.ÀÊ ÀÐÀÏÀÙ ÀßÀÞÀê�RÀ¾ÀÅÀÆÀÏÀÆ€Ã/// Creates a [Tangent] based on the angle rather than the vector. /// /// The [vector] is computed to be the unit vector at the given angle, interpreted /// as clockwise radians from the x axis.ÀÐÀØÀ×Àá ÀéÀèÀ@€ÑÀ À €³/// Position of the tangent. /// /// When used with [PathMetric.getTangentForOffset], this represents the precise /// position that the given offset along the path corresponds to.À�ÀÀ€ç/// The vector of the curve at [position]. /// /// When used with [PathMetric.getTangentForOffset], this is the vector of the /// curve that is at the given offset along the path (i.e. the direction of the /// curve at [position]).À ‚½À²À²‚+/// The direction of the curve at [position]. /// /// When used with [PathMetric.getTangentForOffset], this is the angle of the /// curve that is the given offset along the path (i.e. the direction of the /// curve at [position]). /// /// This value is in radians, with 0.0 meaning pointing along the x axis in /// the positive x-axis direction, positive numbers pointing downward toward /// the negative y-axis, i.e. in a clockwise direction, and negative numbers /// pointing upward toward the positive y-axis, i.e. in a counter-clockwise /// direction.Àá„#ÀÜÀÜ‚ô/// An iterable collection of [PathMetric] objects describing a [Path]. /// /// A [PathMetrics] object is created by using the [Path.computeMetrics] method, /// and represents the path as it stood at the time of the call. Subsequent /// modifications of the path do not affect the [PathMetrics] object. /// /// Each path metric corresponds to a segment, or contour, of a path. /// /// For example, a path consisting of a [Path.lineTo], a [Path.moveTo], and /// another [Path.lineTo] will contain two contours and thus be represented by /// two [PathMetric] objects. /// /// This iterable does not memoize. Callers who need to traverse the list /// multiple times, or who need to randomly access elements of the list, should /// use [toList] on this object.À€‚ÀÀ#À$À%À$À& À,À+À1À7À6ÀSÀIÀUÀgÀhÀiÀ˜ÀjÀvÀ—À|ÀwÀÀŒÀž$À¹À¹ÀÇ;ÀìÀìÀÇÀÈÀƒÃÀuÀuh/// Used by [PathMetrics] to track iteration from one segment of a path to the /// next for measurement.À¬(À¬À¾À¿ÀÀÀ¿ÀÁÀÇÀÆÀØÀäÀäÀóÀÀÀ�ñÀ2À2ÀÀÀ €»ÀÀÀ À ÀË�qÀ"²À"²‚à/// Utilities for measuring a [Path] and extracting sub-paths. /// /// Iterate over the object returned by [Path.computeMetrics] to obtain /// [PathMetric] objects. Callers that want to randomly access elements or /// iterate multiple times should use `path.computeMetrics().toList()`, since /// [PathMetrics] does not memoize. /// /// Once created, the metrics are only valid for the path as it was specified /// when [Path.computeMetrics] was called. If additional contours are added or /// any contours are updated, the metrics need to be recomputed. Previously /// created metrics will still refer to a snapshot of the path at the time they /// were computed, rather than to the actual metrics for the new mutations to /// the path.À"Á€ÎÀ"ÁÀ"ËÀ"ÌÀ"ÍÀ"ÌÀ"Î À"ÔÀ"ÓÀ"êÀ"ãÀ"ìÀ"ôÀ"õÀ"ûÀ#À"üÀ#À#À#*À#!À#,À#4À#5À#=À#ZÀ#>À#FÀ#GÀ#pÀ#cÀ#rÀ#zÀ#{À#“�+À$¸À$¸� /// Return the total length of the current contour. /// /// The length may be calculated from an approximation of the geometry /// originally added. For this reason, it is not recommended to rely on /// this property for mathematically correct lengths of common shapes.À$Ã�AÀ%üÀ%ü�!/// Whether the contour is closed. /// /// Returns true if the contour ends with a call to [Path.close] (which may /// have been implied when using methods like [Path.addRect]) or if /// `forceClosed` was specified as true in the call to [Path.computeMetrics]. /// Returns false otherwise.À& ‚àÀ(ÝÀ(Ý‚±/// The zero-based index of the contour. /// /// [Path] objects are made up of zero or more contours. The first contour is /// created once a drawing command (e.g. [Path.lineTo]) is issued. A /// [Path.moveTo] command after a drawing command may create a new contour, /// although it may not if optimizations are applied that determine the move /// command did not actually result in moving the pen. /// /// This property is only valid with reference to its original iterator and /// the contours of the path at the time the path's metrics were computed. If /// additional contours were added or existing contours updated, this metric /// will be invalid for the current state of the path.À(îÀ)À)À)‚,À*ÏÀ*Ï�£/// Computes the position of the current contour at the given offset, and the /// angle of the path at that point. /// /// For example, calling this method with a distance of 1.41 for a line from /// 0.0,0.0 to 2.0,2.0 would give a point 1.0,1.0 and the angle 45 degrees /// (but in radians). /// /// Returns null if the contour has zero [length]. /// /// The distance is clamped to the [length] of the current contour.À*ãÀ*ëÀ*êÀ+>��À,À,€Ì/// Given a start and end distance, return the intervening segment(s). /// /// `start` and `end` are clamped to legal values (0..[length]) /// Begin the segment with a moveTo if `startWithMoveTo` is true.À,$ À,,À,+À,2 À,:À,9À,?À,EÀ,DÀ,VÀ,ÃwÀ,ÖÀ,ÖÀ,ÃÀ,ÄÀ->‹_À-IÀ-IÀ-{[À-{À-{À-‡À-ˆÀ-•À-”À-šÀ- À-ŸÀ7뀯À8‚À8‚€Œ/// The index of the current contour in the list of contours in the path. /// /// [nextContour] will increment this to the zero based index.À8˜À8™ À-Ú€”À.=À.=À.JÀ.WÀ.VÀ.\À.bÀ.aÀ-ÚÀ-ÛÀ-áÀ. À-çÀ-âÀ-ïÀ. À-ðÀ-øÀ-ÿÀ.À.À.À. À.+À.À.À.À.r€ÐÀ.yÀ.yÀ.€À.…À.„À/F€‹À/·À/·À/¿À/ÄÀ/ÃÀ/FÀ/GÀ/MÀ/sÀ/UÀ/NÀ/]À/rÀ/^À/eÀ/jÀ/fÀ/mÀ/tÀ/£À/{À/uÀ/}À/�À/—À/ŸÀ/Õ�àÀ/ÞÀ/ÞÀ/òÀ/÷À/öÀ0À0 À0 À1¹€žÀ2)À2)À24À29À28À2FÀ2NÀ2MÀ1¹À1ºÀ1ÀÀ1îÀ1ÈÀ1ÁÀ1ÐÀ1íÀ1ÑÀ1ØÀ1ÝÀ1ÙÀ1àÀ1çÀ1ïÀ2À1öÀ1ðÀ1øÀ2[�lÀ2`À2`À2lÀ2qÀ2pÀ2~ À2†À2…À2Œ À2”À2“À2™À2ŸÀ2žÀ2°À3Ë€ýÀ4RÀ4RÀ4d À4jÀ4iÀ4vÀ4{À4zÀ4Œ À4”À4“À4ž À4¦À4¥À4®À4´À4³À3ËÀ3ÌÀ3ÒÀ4À3ØÀ3ÓÀ3àÀ4À3áÀ3èÀ3íÀ3éÀ3ðÀ3øÀ3ÿÀ4À4À4À4@À4!À4À4#À4Ì€ÒÀ4ÑÀ4ÑÀ4ÚÀ4ßÀ4ÞÀ5¢€ˆÀ6À6À6À6À6À5¢À5£À5©À5ÍÀ5¯À5ªÀ5·À5ÌÀ5¸À5¿À5ÄÀ5ÀÀ5ÇÀ5ÎÀ5üÀ5ÕÀ5ÏÀ5×À5öÀ5ðÀ5øÀ6Ý€‰À6âÀ6âÀ7j}À7ÒÀ7ÒÀ7jÀ7kÀ7qÀ7ŽÀ7wÀ7rÀ7À7�À7€À7‡À7ŒÀ7ˆÀ7�À7ÀÀ7–À7�À7˜À7ºÀ7´À7¼À<†_À=&À=&�/// A mask filter to apply to shapes as they are painted. A mask filter is a /// function that takes a bitmap of color pixels, and returns another bitmap of /// color pixels. /// /// Instances of this class are used with [Paint.maskFilter] on [Paint] objects.À=5‚úÀ@À@À@À@À@‚¥/// Creates a mask filter that takes the shape being drawn and blurs it. /// /// This is commonly used to approximate shadows. /// /// The `style` argument controls the kind of effect to draw; see [BlurStyle]. /// /// The `sigma` argument controls the size of the effect. It is the standard /// deviation of the Gaussian blur to apply. The value must be greater than /// zero. The sigma corresponds to very roughly half the radius of the effect /// in pixels. /// /// A blur is an expensive operation and should therefore be used sparingly. /// /// The arguments must not be null. /// /// See also: /// /// * [Canvas.drawShadow], which is a more efficient way to draw shadows.À@ À@À@À@" À@(À@'À@3À@CÀ@CÀ@MÀ@ZÀ@ZÀ@öÀAÀAÀAÀA ÀA1ÀA1ÀA=ÀAß<ÀAóÀAóÀAßÀAàÀAW€„ÀAqÀAqÀAt ÀA|ÀA{ÀAWÀAXÀBZÀB2ÀB2ÀBÀB ÀB}_ÀBŒÀBŒÀB :ÀB¦ÀB¦ÀB° ÀB·ÀB¶ÀB½ÀBÉÀBÈÀBÞ€±ÀBäÀBäÀC ÀC!ÀC!ÀC8ÀC>OÀCPÀCPÀCZ ÀCaÀC`ÀCgÀCsÀCrÀC>ÀC?ÀC‘�©ÀC—ÀC—ÀCÆ"ÀCÌÀCÌÀCÛÀCÜ ÀCâÀCáÀCëÀDÀDÀD �.ÀDÀDÀD& ÀD-ÀD,ÀD3ÀD?ÀD>ÀD ÀD ÀE<‚IÀEBÀEBÀEw:ÀEŽÀEŽÀE£/// Row-major.ÀE¤ ÀEªÀE©ÀEµÀEÈÀEÈÀEÓ�°ÀEåÀEåÀEï ÀEöÀEõÀEüÀFÀFÀEÓÀEÔÀPú™KÀRÅÀRÅ�Ä/// A description of a color filter to apply when drawing a shape or compositing /// a layer with a particular [Paint]. A color filter is a function that takes /// two colors, and outputs one color. When applied during compositing, it is /// independently applied to each pixel of the layer being drawn before the /// entire layer is merged with the destination. /// /// Instances of this class are used with [Paint.colorFilter] on [Paint] /// objects.ÀRì‚PÀT¦ÀT±ÀT²ÀT¶ÀT²�¥/// Creates a color filter that applies the blend mode given as the second /// argument. The source color is the one given as the first argument, and the /// destination color is the one from the layer being composited. /// /// The output of this filter is then composited into the background according /// to the [Paint.blendMode], using the output of this filter as the source /// and the background as the destination.ÀT· ÀT¾ÀT½ÀTÄÀTÏÀTÎ ÀTæÀTßÀTèÀUÀTõÀUÀUÀUÀUÀU/ÀU)ÀU1ÀU@ˆ=À\ôÀ\ÿÀ]À]À]‡7/// Construct a color filter from a 4x5 row-major matrix. The matrix is /// interpreted as a 5x5 matrix, where the fifth row is the identity /// configuration. /// /// Every pixel's color value, represented as an `[R, G, B, A]`, is matrix /// multiplied to create a new color: /// /// | R' | | a00 a01 a02 a03 a04 | | R | /// | G' | | a10 a11 a12 a13 a14 | | G | /// | B' | = | a20 a21 a22 a23 a24 | * | B | /// | A' | | a30 a31 a32 a33 a34 | | A | /// | 1 | | 0 0 0 0 1 | | 1 | /// /// The matrix is in row-major order and the translation column is specified /// in unnormalized, 0...255, space. For example, the identity matrix is: /// /// ```dart /// const ColorFilter identity = ColorFilter.matrix([ /// 1, 0, 0, 0, 0, /// 0, 1, 0, 0, 0, /// 0, 0, 1, 0, 0, /// 0, 0, 0, 1, 0, /// ]); /// ``` /// /// ## Examples /// /// An inversion color matrix: /// /// ```dart /// const ColorFilter invert = ColorFilter.matrix([ /// -1, 0, 0, 0, 255, /// 0, -1, 0, 0, 255, /// 0, 0, -1, 0, 255, /// 0, 0, 0, 1, 0, /// ]); /// ``` /// /// A sepia-toned color matrix (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#sepiaEquivalent)): /// /// ```dart /// const ColorFilter sepia = ColorFilter.matrix([ /// 0.393, 0.769, 0.189, 0, 0, /// 0.349, 0.686, 0.168, 0, 0, /// 0.272, 0.534, 0.131, 0, 0, /// 0, 0, 0, 1, 0, /// ]); /// ``` /// /// A greyscale color filter (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#grayscaleEquivalent)): /// /// ```dart /// const ColorFilter greyscale = ColorFilter.matrix([ /// 0.2126, 0.7152, 0.0722, 0, 0, /// 0.2126, 0.7152, 0.0722, 0, 0, /// 0.2126, 0.7152, 0.0722, 0, 0, /// 0, 0, 0, 1, 0, /// ]); /// ```À]À]À] À])À]"À]+À]BÀ]7À]DÀ]XÀ]PÀ]ZÀ]nÀ]hÀ]pÀ]�€ìÀ]ãÀ]îÀ]ïÀ^À]ïW/// Construct a color filter that applies the sRGB gamma curve to the RGB /// channels. À^À^ À^À^)À^À^+À^?À^7À^AÀ^SÀ^MÀ^UÀ^q€ùÀ^àÀ^ëÀ^ìÀ^ýÀ^ìd/// Creates a color filter that applies the inverse of the sRGB gamma curve /// to the RGB channels. À_ À_À_À_&À_À_(À_<À_4À_>À_PÀ_JÀ_RÀ_nÀ_{À_{À_…À_–À_–À_¤À_¸À_¸À_ÃÀ_ÍÀ_ÍÀ`À`À`À`%À`Àp�€‹ÀpÿÀpÿÀp�ÀpŽÀp”Àp±ÀpšÀp•Àp¢Àp°Àp£ÀpªÀp¯Àp«Àp²ÀpíÀp¹Àp³Àp»ÀpçÀpáÀpéÀq€‹ÀqŽÀqŽÀqÀqÀq#Àq@Àq)Àq$Àq1Àq?Àq2Àq9Àq>Àq:ÀqAÀq|ÀqHÀqBÀqJÀqvÀqpÀqxÀq«”‡Às�Às��Ò/// A filter operation to apply to a raster image. /// /// See also: /// /// * [BackdropFilter], a widget that applies [ImageFilter] to its rendering. /// * [ImageFiltered], a widget that applies [ImageFilter] to its children. /// * [SceneBuilder.pushBackdropFilter], which is the low-level API for using /// this class as a backdrop filter. /// * [SceneBuilder.pushImageFilter], which is the low-level API for using /// this class as a child layer filter.ÀsïÀsïÀsúÀsûÀsüÀsûÀt€óÀtaÀtlÀtmÀtqÀtm9/// Creates an image filter that applies a Gaussian blur.ÀtsÀt{ÀtzÀtˆÀt�Àt�Àt�Àt¨Àt§ÀtƒÀt˜Àu�$Àu¯ÀuºÀu»ÀuÁÀu»€Ž/// Creates an image filter that dilates each input pixel's channel values /// to the max value within the given radii along the x and y axes.ÀuÃÀuËÀuÊÀuÙÀuáÀuàÀuÔÀuêÀv<�%ÀvÚÀvåÀvæÀvëÀv怑/// Create a filter that erodes each input pixel's channel values /// to the minimum channel value within the given radii along the x and y axes.ÀvíÀvõÀvôÀwÀw Àw ÀvþÀwÀwe‚!ÀxOÀxZÀx[ÀxaÀx[€Ù/// Creates an image filter that applies a matrix transformation. /// /// For example, applying a positive scale matrix (see [Matrix4.diagonal3]) /// when used with [BackdropFilter] would magnify the background image.ÀxgÀxtÀxsÀx‚2Àx‘Àx�Àx Àx­Àx®ÀyŠ�žÀz�Àz˜Àz™Àz Àz™€ð/// Composes the `inner` filter with `outer`, to combine their effects. /// /// Creates a single [ImageFilter] that when applied, has the same effect as /// subsequently applying `inner` and `outer`, i.e., /// result = outer(inner(source)).Àz¢Àz¸Àz·Àz¾ÀzÔÀzÓÀ{,‰À�"À�-À�.À�4À�.…›/// Creates an image filter from a [FragmentShader]. /// /// The fragment shader provided here has additional requirements to be used /// by the engine for filtering. The first uniform value must be a vec2, this /// will be set by the engine to the size of the bound texture. There must /// also be at least one sampler2D uniform, the first of which will be set by /// the engine to contain the filter input. /// /// When Impeller uses the OpenGL(ES) backend, the y-axis direction is /// reversed. Custom fragment shaders must invert the y-axis on /// GLES or they will render upside-down. /// /// For example, the following is a valid fragment shader that can be used /// with this API. Note that the uniform names are not required to have any /// particular value. /// /// ```glsl /// #include /// /// uniform vec2 u_size; /// uniform float u_time; /// /// uniform sampler2D u_texture_input; /// /// out vec4 frag_color; /// /// void main() { /// vec2 uv = FlutterFragCoord().xy / u_size; /// // Reverse y axis for OpenGL backend. /// #ifdef IMPELLER_TARGET_OPENGLES /// uv.y = 1.0 - uv.y /// #endif /// frag_color = texture(u_texture_input, uv) * u_time; /// /// } /// /// ``` /// /// This API is only supported when using the Impeller rendering engine. On /// other backends a [UnsupportedError] will be thrown. To check at runtime /// whether this API is suppored use [isShaderFilterSupported].À�5À�EÀ�DÀ„D€„À„œÀ„œE/// Whether [ImageFilter.shader] is supported on the current backend.À†À†À†À…j$À…wÀ…wÀ†4ƒ^À†:À†:À†hFÀ†hÀ†hÀ†zÀ†|À†‹À†ŠÀ†�À†ŸÀ†žÀ†²À†ÄÀ†ÄÀ†Ì!À†àÀ†àÀ‡@À‡+À‡+À‡:À‡FÀ‡GÀ‡MÀ‡RÀ‡NÀ‡›LÀ‡²À‡²À‡›À‡œÀ‰?QÀ‰SÀ‰SÀ‰?À‰@À‡W@À‡pÀ‡pÀ‡WÀ‡XÀ‡ëMÀ‡þÀ‡þÀ‡ëÀ‡ìÀˆ<€ÿÀˆVÀˆVÀˆY ÀˆaÀˆ`Àˆ<Àˆ=À‰”„ÂÀ‰šÀ‰šÀ‰Î_À‰ÎÀ‰ÎÀ‰æÀ‰èÀ‰÷À‰öÀ‰þÀŠ ÀŠ ÀŠÀŠ#ÀŠ"ÀŠ1ÀŠ>ÀŠ>ÀŠHÀŠUÀŠUÀŠ_ÀŠoÀŠoÀŠ�>ÀЍÀЍÀŠ·ÀŠÃÀŠÄÀŠÈÀŠÍÀŠÉÀ‹�=À‹!À‹!ÀŒWSÀŒnÀŒnÀŒWÀŒXÀŽ<ÀŽ,ÀŽ,ÀŽÀŽÀŠÒ@ÀŠëÀŠëÀŠÒÀŠÓÀŒ®TÀŒÁÀŒÁÀŒ®ÀŒ¯À��À� À� À�# À�+À�*À�À�ÀŽX‚éÀŽ^ÀŽ^ÀŽŒCÀŽŒÀŽŒÀŽžÀŽ ÀޝÀŽ®ÀŽ·ÀŽÆÀŽÅÀŽÓÀŽàÀŽàÀŽëÀŽøÀŽøÀ�@À�À�À�+À�7À�8À�>À�CÀ�?À�ŒIÀ�£À�£À�ŒÀ��À‘>À‘À‘À‘À‘À�H@À�aÀ�aÀ�HÀ�IÀ�ÙJÀ�ìÀ�ìÀ�ÙÀ�ÚÀ�'€ÖÀ�AÀ�AÀ�D À�LÀ�KÀ�'À�(À‘C‚ãÀ‘IÀ‘IÀ‘vBÀ‘vÀ‘vÀ‘‡À‘‰À‘˜À‘—À‘ À‘¯À‘®À‘¼À‘ÉÀ‘ÉÀ‘ÔÀ‘áÀ‘áÀ‘í?À’À’À’À’ À’!À’&À’+À’'À’tHÀ’‹À’‹À’tÀ’uÀ“æ>À“úÀ“úÀ“æÀ“çÀ’0@À’IÀ’IÀ’0À’1À’ÀIÀ’ÓÀ’ÓÀ’ÀÀ’ÁÀ“ €ÕÀ“'À“'À“* À“2À“1À“ À“À”(ƒ�À”.À”.À”]LÀ”]À”]À”pÀ”rÀ”�À”€À”�À”œÀ”›À”­À”¿À”¿À”ÎÀ”àÀ”àÀ• BÀ•"À•"À•1À•=À•>À•FÀ•KÀ•GÀ•”yÀ•«À•«À•”À••À—oFÀ—ƒÀ—ƒÀ—oÀ—pÀ•P@À•iÀ•iÀ•PÀ•QÀ–_À–$À–$À–À–À–t€÷À–ŽÀ–ŽÀ–‘ À–™À–˜À–tÀ–uÀ—¹ƒ[À—¿À—¿À—õ(À—õÀ—õÀ˜À˜ À˜À˜À˜!À˜6À˜6À˜A@À˜YÀ˜YÀ˜hÀ˜tÀ˜uÀ˜{À˜€À˜|À˜Ê5À˜áÀ˜áÀ˜ÊÀ˜ËÀšâ0ÀšöÀšöÀšâÀšãÀ˜†@À˜ŸÀ˜ŸÀ˜†À˜‡À™QÀ™À™À™À™À™X€ýÀ™rÀ™rÀ™u À™}À™|À™XÀ™YÀšY€…Àš¶Àš¶Àš¾ÀšÌÀšËÀšÎÀšÜÀšÛÀšYÀšZÀš`Àš~ÀšfÀšaÀšnÀš}ÀšoÀšwÀšÀš�Àš†Àš€ÀšˆÀ›�+ÀœKÀœK�)/// An [ImageFilter] that is backed by a native DlImageFilter. /// /// This is a private class, rather than being the implementation of the public /// ImageFilter, because we want ImageFilter to be efficiently comparable, so that /// widgets can check for ImageFilter equality to avoid repainting.Àœ}€æÀœ¹ÀœÅÀœÆÀœÊÀœÆ9/// Creates an image filter that applies a Gaussian blur.ÀœËÀœåÀœäÀœöÀœîÀœøÀ�g�À�úÀžÀžÀž Àž€Ž/// Creates an image filter that dilates each input pixel's channel values /// to the max value within the given radii along the x and y axes.ÀžÀž"Àž!Àž3Àž+Àž5ÀžŠ�ÀŸ ÀŸ,ÀŸ-ÀŸ2ÀŸ-€‘/// Create a filter that erodes each input pixel's channel values /// to the minimum channel value within the given radii along the x and y axes.ÀŸ3ÀŸFÀŸEÀŸWÀŸOÀŸYÀŸ­�ßÀ �À ›À œÀ ¢À œ€Ù/// Creates an image filter that applies a matrix transformation. /// /// For example, applying a positive scale matrix (see [Matrix4.diagonal3]) /// when used with [BackdropFilter] would magnify the background image.À £À ·À ¶À ÈÀ ÀÀ ÊÀ¡�€ùÀ¡ÂÀ¡ÎÀ¡ÏÀ¡ÞÀ¡Ï//// Converts a color filter to an image filter.À¡ßÀ¡ìÀ¡ëÀ¡ýÀ¡õÀ¡ÿÀ¢��vÀ¢ÀÀ¢ÌÀ¢ÍÀ¢ÕÀ¢Í0/// Composes `_innerFilter` with `_outerFilter`.À¢ÖÀ¢ëÀ¢êÀ¢üÀ¢ôÀ¢þÀ¤€ƒÀ¤À¤À¤À¤À¤À¤!À¤7À¤6À¤HÀ¤@À¤JÀ©±€�Àª7Àª7o/// The original Dart object that created the native wrapper, which retains /// the values used for the filter.À¤Ž]À¤ÜÀ¤ÜÀ¤ŽÀ¤�À¤•À¤«À¤›À¤–À¤£À¤ªÀ¤¤À¤¬À¤ÊÀ¤³À¤­À¤µÀ¤ï€¿À¥xÀ¥xÀ¥‚ À¥ŠÀ¥‰À¥‘ À¥™À¥˜À¥  À¥¥À¥¤À¤ïÀ¤ðÀ¤öÀ¥*À¤üÀ¤÷À¥À¥)À¥À¥ À¥À¥ À¥À¥À¥$À¥+À¥fÀ¥7À¥1À¥9À¥\À¥VÀ¥^À¥²€°À¦6À¦6À¦BÀ¦JÀ¦IÀ¦RÀ¦ZÀ¦YÀ¥²À¥³À¥¹À¥æÀ¥¿À¥ºÀ¥ÇÀ¥åÀ¥ÈÀ¥ÏÀ¥ÔÀ¥ÐÀ¥×À¥ßÀ¥çÀ¦$À¥óÀ¥íÀ¥õÀ¦À¦À¦À¦f€®À¦éÀ¦éÀ¦ôÀ¦üÀ¦ûÀ§À§ À§ À¦fÀ¦gÀ¦mÀ¦šÀ¦sÀ¦nÀ¦{À¦™À¦|À¦ƒÀ¦ˆÀ¦„À¦‹À¦“À¦›À¦×À¦§À¦¡À¦©À¦ÍÀ¦ÇÀ¦ÏÀ§€œÀ§€À§€À§ŒÀ§™À§˜À§¡À§¦À§¥À§À§À§À§KÀ§%À§ À§-À§JÀ§.À§5À§:À§6À§=À§EÀ§LÀ§nÀ§SÀ§MÀ§UÀ§¸€™À¨%À¨%À¨6À¨EÀ¨DÀ§¸À§¹À§¿À§ëÀ§ÅÀ§ÀÀ§ÍÀ§êÀ§ÎÀ§ÕÀ§ÚÀ§ÖÀ§ÝÀ§äÀ§éÀ§åÀ§ìÀ¨À§óÀ§íÀ§õÀ¨U€ÉÀ¨ÜÀ¨ÜÀ¨êÀ¨øÀ¨÷À©À©À©À¨UÀ¨VÀ¨\À¨—À¨bÀ¨]À¨jÀ¨–À¨kÀ¨rÀ¨wÀ¨sÀ¨zÀ¨�À¨†À¨‚À¨‰À¨�À¨•À¨‘À¨˜À¨ÊÀ¨¤À¨žÀ¨¦À©"€‹À©ŠÀ©ŠÀ©–À©¦À©¥À©"À©#À©)À©UÀ©/À©*À©7À©TÀ©8À©?À©DÀ©@À©GÀ©NÀ©SÀ©OÀ©VÀ©xÀ©]À©WÀ©_ÀªC…ÀªÉÀªÉz/// Base class for objects such as [Gradient] and [ImageShader] which /// correspond to shaders as used by [Paint.shader].Àªõ€�À«wÀ«}À«~À«À«~a/// This class is created by the engine, and should not be instantiated /// or extended directly.À«[À«\À«bÀ«sÀ«cÀ«†À«‹À«‹À«œÀ«¦�À¬/À¬/y/// Whether [dispose] has been called. /// /// This must only be used when asserts are enabled. Otherwise, it will throw.À¬Á‚šÀ®´À®´�Û/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// The underlying memory allocated by this object will be retained beyond /// this call if it is still needed by another object that has not been /// disposed. For example, a [Picture] that has not been disposed that /// refers to an [ImageShader] may keep its underlying resources alive. /// /// Classes that override this method must call `super.dispose()`.ÀÇϪ‹ÀÉÀÉ�@/// A shader (as used by [Paint.shader]) that renders a color gradient. /// /// There are several types of gradients, represented by the various constructors /// on this class. /// /// See also: /// /// * [Gradient](https://api.flutter.dev/flutter/painting/Gradient-class.html), the class in the [painting] library. ///ÀÉ7‰!ÀÏxÀÏ€ÀÏ�ÀχÀÏ�† /// Creates a linear gradient from `from` to `to`. /// /// If `colorStops` is provided, `colorStops[i]` is a number from 0.0 to 1.0 /// that specifies where `color[i]` begins in the gradient. If `colorStops` is /// not provided, then only two stops, at 0.0 and 1.0, are implied (and /// `color` must therefore only have two entries). Stop values less than 0.0 /// will be rounded up to 0.0 and stop values greater than 1.0 will be rounded /// down to 1.0. Each stop value must be greater than or equal to the previous /// stop value. Stop values that do not meet this criteria will be rounded up /// to the previous stop value. /// /// The behavior before `from` and after `to` is described by the `tileMode` /// argument. For details, see the [TileMode] enum. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_linear.png) /// /// If `from`, `to`, `colors`, or `tileMode` are null, or if `colors` or /// `colorStops` contain null values, this constructor will throw a /// [NoSuchMethodError]. /// /// If `matrix4` is provided, the gradient fill will be transformed by the /// specified 4x4 matrix relative to the local coordinate system. `matrix4` must /// be a column-major matrix packed into a list of 16 values.ÀÏ� ÀÏ•ÀÏ”ÀÏž ÀϦÀÏ¥ÀÏ­ÀϺÀϹÀÏÇÀÏÖÀÏÕÀÏå"ÀÏïÀÏîÀÐ ÀÐÀÐ!ÀÏùÀÐÀÐÀÐ*ÀÐ0ÀÐEÀÐ1ÀÐ?ÀÐDÀÐ@ÀÐOÀÐUÀÐhÀÐVÀÐdÀÐgÀÐeÀÐrÀÐxÀФÀЉÀÐ�ÀÐyÀЄÀÐŒÀЛÀУÀМÀЮÀгÀдÀеÀжÀÒ\�ºÀÚ„ÀÚŒÀÚ�ÀÚ“ÀÚ�‡ã/// Creates a radial gradient centered at `center` that ends at `radius` /// distance from the center. /// /// If `colorStops` is provided, `colorStops[i]` is a number from 0.0 to 1.0 /// that specifies where `color[i]` begins in the gradient. If `colorStops` is /// not provided, then only two stops, at 0.0 and 1.0, are implied (and /// `color` must therefore only have two entries). Stop values less than 0.0 /// will be rounded up to 0.0 and stop values greater than 1.0 will be rounded /// down to 1.0. Each stop value must be greater than or equal to the previous /// stop value. Stop values that do not meet this criteria will be rounded up /// to the previous stop value. /// /// The behavior before and after the radius is described by the `tileMode` /// argument. For details, see the [TileMode] enum. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_radial.png) /// /// If `center`, `radius`, `colors`, or `tileMode` are null, or if `colors` or /// `colorStops` contain null values, this constructor will throw a /// [NoSuchMethodError]. /// /// If `matrix4` is provided, the gradient fill will be transformed by the /// specified 4x4 matrix relative to the local coordinate system. `matrix4` must /// be a column-major matrix packed into a list of 16 values. /// /// If `focal` is provided and not equal to `center` and `focalRadius` is /// provided and not equal to 0.0, the generated shader will be a two point /// conical radial gradient, with `focal` being the center of the focal /// circle and `focalRadius` being the radius of that circle. If `focal` is /// provided and not equal to `center`, at least one of the two offsets must /// not be equal to [Offset.zero].ÀÚ™ ÀÚ¡ÀÚ ÀÚ¬ ÀÚ´ÀÚ³ÀÚ¿ÀÚÌÀÚËÀÚÙÀÚèÀÚçÀÚ÷"ÀÛÀÛÀÛÀÛ-ÀÛ,ÀÛ9 ÀÛBÀÛAÀÛLÀÛTÀÛSÀÛ ÀÛÀÛÀÛaÀÛmÀÛsÀÛŠÀÛtÀÛ‚ÀÛ‰ÀÛƒÀÛ”ÀÛšÀÛÆÀÛ«ÀÛ£ÀÛ›ÀÛ¦ÀÛ®ÀÛ½ÀÛÅÀÛ¾ÀÛÐÀÛÕÀÛÖÀÛ×ÀÛØÀàŠ–ÀçŒÀç”Àç•ÀçšÀ畇3/// Creates a sweep gradient centered at `center` that starts at `startAngle` /// and ends at `endAngle`. /// /// `startAngle` and `endAngle` should be provided in radians, with zero /// radians being the horizontal line to the right of the `center` and with /// positive angles going clockwise around the `center`. /// /// If `colorStops` is provided, `colorStops[i]` is a number from 0.0 to 1.0 /// that specifies where `color[i]` begins in the gradient. If `colorStops` is /// not provided, then only two stops, at 0.0 and 1.0, are implied (and /// `color` must therefore only have two entries). Stop values less than 0.0 /// will be rounded up to 0.0 and stop values greater than 1.0 will be rounded /// down to 1.0. Each stop value must be greater than or equal to the previous /// stop value. Stop values that do not meet this criteria will be rounded up /// to the previous stop value. /// /// The behavior before `startAngle` and after `endAngle` is described by the /// `tileMode` argument. For details, see the [TileMode] enum. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_sweep.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_sweep.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_sweep.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_sweep.png) /// /// If `center`, `colors`, `tileMode`, `startAngle`, or `endAngle` are null, /// or if `colors` or `colorStops` contain null values, this constructor will /// throw a [NoSuchMethodError]. /// /// If `matrix4` is provided, the gradient fill will be transformed by the /// specified 4x4 matrix relative to the local coordinate system. `matrix4` must /// be a column-major matrix packed into a list of 16 values.Àç  Àç¨Àç§Àç³ÀçÀÀç¿ÀçÍÀçÜÀçÛÀçë"ÀçõÀçôÀèÀèÀèÀè0Àè8Àè7ÀèSÀèaÀè`&ÀçÿÀèÀèÀè'ÀèJÀèBÀèFÀèGÀèLÀèpÀèvÀè�ÀèwÀè…ÀèŒÀè†Àè—Àè�Àè³Àè©ÀèžÀè«Àè½ÀèÃÀèïÀèÔÀèÌÀèÄÀèÏÀè×ÀèæÀèîÀèçÀèùÀèþÀèÿÀéÀéÀê´ZÀêÿÀêÿÀê´ÀêµÀê»ÀêÑÀêÁÀê¼ÀêÉÀêÐÀêÊÀêÒÀêíÀêÙÀêÓÀêÛÀë�Àë˜Àë˜Àë©Àë¶ÀëµÀëÄÀëÑÀëÐÀëÜÀëêÀëéÀëù ÀëþÀëýÀì ÀìÀìÀëÀëÀëÀë]ÀëÀëÀë'Àë\Àë(Àë/Àë4Àë0Àë7Àë?ÀëGÀëOÀëVÀë^Àë†ÀëjÀëdÀëlÀì)�CÀì¿Àì¿ÀìÐÀìØÀì×ÀìäÀììÀìëÀìø ÀíÀìÿÀí ÀíÀíÀí#Àí1Àí0Àí@ ÀíEÀíDÀíRÀí`Àí_Àì)Àì*Àì0Àì„Àì6Àì1Àì>ÀìƒÀì?ÀìFÀìKÀìGÀìNÀìVÀì^ÀìfÀìnÀìvÀì}Àì…Àì­Àì‘Àì‹Àì“Àíp�èÀîoÀîo Àî� Àî‰ÀîˆÀî” ÀîœÀî›Àî§Àî¯Àî®Àî¿ ÀîÇÀîÆÀîÐ ÀîØÀî×ÀîáÀîéÀîèÀî÷ÀïÀïÀïÀïÀïÀï, Àï1Àï0Àï>ÀïLÀïKÀípÀíqÀíwÀî4Àí‚Àí}ÀíŠÀî0Àí’Àí™ÀížÀíšÀí§ÀíµÀíÃÀíÑÀíßÀííÀíûÀî ÀîÀî$Àî5Àî]Àî<Àî6Àî>Àï\�`ÀïøÀïøÀðÀðÀðÀðÀð$Àð#Àð0Àð=Àð<ÀðHÀðVÀðUÀðe ÀðjÀðiÀðwÀðÀð~ÀðŽÀð–Àð•Àð£Àð±Àð°Àï\Àï]ÀïcÀïÇÀïnÀïiÀïvÀïÃÀïwÀï~ÀïƒÀïÀï†ÀïŽÀï–ÀïžÀï¦Àï­ÀïµÀï½ÀïÈÀïæÀïÏÀïÉÀïÑÀðÀ�˜ÀðÌÀðÌÀðàÀðíÀðìÀðôÀñÀñÀò\ˆÃÀò¥Àò¥=/// A shader (as used by [Paint.shader]) that tiles an image.ÀòÄ…ËÀöˆÀöˆÀö“ƒ�/// Creates an image-tiling shader. /// /// The first argument specifies the image to render. The /// [decodeImageFromList] function can be used to decode an image from bytes /// into the form expected here. (In production code, starting from /// [instantiateImageCodec] may be preferable.) /// /// The second and third arguments specify the [TileMode] for the x direction /// and y direction respectively. [TileMode.repeated] can be used for tiling /// images. /// /// The fourth argument gives the matrix to apply to the effect. The /// expression `Matrix4.identity().storage` creates a [Float64List] /// prepopulated with the identity matrix. /// /// All the arguments are required and must not be null, except for /// [filterQuality]. If [filterQuality] is not specified at construction time /// it will be deduced from the environment where it is used, such as from /// [Paint.filterQuality].Àö™ Àö ÀöŸÀöª Àö´Àö³Àö¼ ÀöÆÀöÅÀöÎÀöÛÀöÚÀöéÀöùÀöøÀölÀömÀösÀö„ÀötÀ÷À÷À÷)À÷À÷À÷À÷À÷3À÷8À÷9À÷:À÷;Àø“EÀø¤Àø¤Àø“Àø”ÀøÜ]Àù*Àù*ÀøÜÀøÝÀøãÀøùÀøéÀøäÀøñÀøøÀøòÀøúÀùÀùÀøûÀùÀù=� ÀùÓÀùÓÀùç ÀùïÀùîÀùùÀùþÀùýÀúÀú Àú ÀúÀúÀúÀú/Àú<Àú;Àù=Àù>ÀùDÀù�ÀùLÀùEÀùTÀùŽÀùUÀù\ÀùaÀù]ÀùdÀùkÀùpÀùlÀùsÀùzÀù�ÀùˆÀù�Àù¾ÀùœÀù–ÀùžÀúL€ÑÀûÀûk/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).Àú¼Àú½ÀúÃÀúàÀúÉÀúÄÀúÑÀúßÀúÒÀúÙÀúÞÀúÚÀúáÀûÀúèÀúâÀúêÀû!Œ_Àü Àü €Ü/// An instance of [FragmentProgram] creates [Shader] objects (as used by /// [Paint.shader]). /// /// For more information, see the website /// [documentation]( https://docs.flutter.dev/development/ui/advanced/shaders).Àü>�!ÀüZÀüiÀüjÀütÀüjÀüuÀü}Àü|Àü>Àü?ÀüEÀüVÀüFÀýcÀýkÀýkÀ6WÀ`À`À‹ÀŒÀrÀŠÀsÀ{À‘7À¶À¶À‘À’À˜À©À™ÀÍ2ÀòÀòÀÍÀÎÀÔÀåÀÕÀýz„+ÀþÕÀþÕ�//// Creates a fragment program from the asset with key [assetKey]. /// /// The asset must be a file produced as the output of the `impellerc` /// compiler. The constructed object should then be reused via the /// [fragmentShader] method to create [Shader] objects that can be used by /// [Paint.shader].ÀþßÀþçÀþæÀ’�ûÀžÀžÀ²ÀºÀ¹ÀaÀVÀVÀÀÀ À!ÀÀ ÀÀ ÀÀ"ÀDÀ)À#À+Ài€ŒÀÕÀÕÀäÀìÀëÀiÀjÀpÀ—ÀxÀqÀ€À–À�ÀˆÀ�À‰À�À˜ÀÁÀŸÀ™À¡Àù€…À<À<1/// Returns a fresh instance of [FragmentShader].À‚’ÌÀ sÀ s‚å/// A [Shader] generated from a [FragmentProgram]. /// /// Instances of this class can be obtained from the /// [FragmentProgram.fragmentShader] method. The float uniforms list is /// initialized to the size expected by the shader and is zero-filled. Uniforms /// of float type can then be set by calling [setFloat]. Sampler uniforms are /// set by calling [setImageSampler]. /// /// A [FragmentShader] can be re-used, and this is an efficient way to avoid /// allocating and re-initializing the uniform buffer and samplers. However, /// if two [FragmentShader] objects with different float uniforms or samplers /// are required to exist simultaneously, they must be obtained from two /// different calls to [FragmentProgram.fragmentShader].À •€ÊÀ •À £À ¤À ¥À ¤À ¦À ·À ¶À ÀÀ ÉÀ ÈÀ åÀ ÚÀ çÀ øÀ ýÀ þÀ ÿÀ À cÀ qÀ qÀ €<À ™À ™À ®À ¹À »À ºÀ À(À ÌÀ ÌÀ ÖÀ í‡�ÀåÀ农/// Sets the float uniform at [index] to [value]. /// /// All uniforms defined in a fragment shader that are not samplers must be /// set through this method. This includes floats and vec2, vec3, and vec4. /// The correct index for each uniform is determined by the order of the /// uniforms as defined in the fragment program, ignoring any samplers. For /// data types that are composed of multiple floats such as a vec4, more than /// one call to [setFloat] is required. /// /// For example, given the following uniforms in a fragment program: /// /// ```glsl /// uniform float uScale; /// uniform sampler2D uTexture; /// uniform vec2 uMagnitude; /// uniform vec4 uColor; /// ``` /// /// Then the corresponding Dart code to correctly initialize these uniforms /// is: /// /// ```dart /// void updateShader(ui.FragmentShader shader, Color color, ui.Image image) { /// shader.setFloat(0, 23); // uScale /// shader.setFloat(1, 114); // uMagnitude x /// shader.setFloat(2, 83); // uMagnitude y /// /// // Convert color to premultiplied opacity. /// shader.setFloat(3, color.red / 255 * color.opacity); // uColor r /// shader.setFloat(4, color.green / 255 * color.opacity); // uColor g /// shader.setFloat(5, color.blue / 255 * color.opacity); // uColor b /// shader.setFloat(6, color.opacity); // uColor a /// /// // initialize sampler uniform. /// shader.setImageSampler(0, image); /// } /// ``` /// /// Note how the indexes used does not count the `sampler2D` uniform. This /// uniform will be set separately with [setImageSampler], with the index starting /// over at 0. /// /// Any float uniforms that are left uninitialized will default to `0`.Àî ÀóÀòÀù ÀÀÀ�‚9ÀÑÀÑ�À/JÀ/IÀ5�«À?…À?�À?ŽÀ?‘À?ŽŠ(/// Creates a set of vertex data for use with [Canvas.drawVertices], using the /// encoding expected by the Flutter engine. /// /// The `mode` parameter describes how the points should be interpreted: as /// independent triangles ([VertexMode.triangles]), as a sliding window of /// points forming a chain of triangles each sharing one side with the next /// ([VertexMode.triangleStrip]), or as a fan of triangles with a single /// shared point ([VertexMode.triangleFan]). /// /// The `positions` parameter provides the points in the canvas space that /// will be use to draw the triangles. Each point is represented as two /// numbers in the list, the first giving the x coordinate and the second /// giving the y coordinate. (As a result, the list must have an even number /// of entries.) /// /// The `colors` parameter, if specified, provides the color for each point in /// `positions`. Each color is represented as ARGB with 8 bit color channels /// (like [Color.value]'s internal representation), and the list, if /// specified, must therefore be half the length of `positions`. Each triangle /// is painted as a gradient that blends between the three colors at the three /// points of that triangle. (These colors are then blended with the [Paint] /// specified in the call to [Canvas.drawVertices].) /// /// The `textureCoordinates` parameter, if specified, provides the points in /// the [Paint] image to sample for the corresponding points in `positions`. /// Each point is represented as two numbers in the list, the first giving the /// x coordinate and the second giving the y coordinate. This list, if /// specified, must be the same length as `positions`. /// /// The `indices` parameter specifies the order in which the points should be /// painted. If it is omitted (or present but empty), the points are processed /// in the order they are given in `positions`, as if the `indices` was a list /// from 0 to n-2, where _n_ is the number of pairs in `positions` (i.e. half /// the length of `positions`). The `indices` parameter, if present and /// non-empty, must have at least three entries, but may be of any length /// beyond this. Indicies may refer to offsets in the positions array multiple /// times, or may skip positions entirely. /// /// If the `indices` parameter is specified, all values in the list must be /// valid index values for pairs in `positions`. For example, if there are 12 /// numbers in `positions` (representing 6 coordinates), the `indicies` must /// be numbers in the range 0..5 inclusive. /// /// The `mode` and `positions` parameters must not be null.À?—À?£À?¢À?¬À?¹À?¸À?ÉÀ?ÕÀ?ÔÀ?àÀ?îÀ?íÀ@À@À@ÀG›ÀG ÀG ÀG¬ÀG¶�¦ÀHsÀHs€«/// Whether this reference to the underlying vertex data is [dispose]d. /// /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise.ÀD³�ÀE*ÀE*ÀE5ÀE?ÀE>ÀEOÀETÀESÀE]ÀEjÀEiÀExÀE†ÀE…ÀE�ÀE©ÀE¨ÀE´ÀEÁÀEÀÀD³ÀD´ÀDºÀD÷ÀDÀÀD»ÀDÈÀDöÀDÉÀDÑÀDØÀDàÀDèÀDðÀDøÀEÀDÿÀDùÀEÀEÑ€ôÀFIÀFIn/// Release the resources used by this object. The object is no longer usable /// after this method is called.ÀFÉ€ÎÀGŒÀGŒk/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀG9ÀG:ÀG@ÀG]ÀGFÀGAÀGNÀG\ÀGOÀGVÀG[ÀGWÀG^ÀGzÀGeÀG_ÀGgÀNžÀœ:ÀT�ÀT�…â/// An interface for recording graphical operations. /// /// [Canvas] objects are used in creating [Picture] objects, which can /// themselves be used with a [SceneBuilder] to build a [Scene]. In /// normal usage, however, this is all handled by the framework. /// /// A canvas has a current transformation matrix which is applied to all /// operations. Initially, the transformation matrix is the identity transform. /// It can be modified using the [translate], [scale], [rotate], [skew], /// and [transform] methods. /// /// A canvas also has a current clip region which is applied to all operations. /// Initially, the clip region is infinite. It can be modified using the /// [clipRect], [clipRRect], and [clipPath] methods. /// /// The current transform and clip can be saved and restored using the stack /// managed by the [save], [saveLayer], and [restore] methods. /// /// ## Use with the Flutter framework /// /// The Flutter framework's [RendererBinding] provides a hook for creating /// [Canvas] objects ([RendererBinding.createCanvas]) that allows tests to hook /// into the scene creation logic. When creating a [Canvas] that will be used /// with a [PictureLayer] as part of the [Scene] in the context of the Flutter /// framework, consider calling [RendererBinding.createCanvas] instead of /// calling the [Canvas.new] constructor directly. /// /// This does not apply when using a canvas to generate a bitmap for other /// purposes, e.g. for generating a PNG image using [Picture.toImage].ÀT›‚ÕÀW-ÀW-ÀW3‚q/// Creates a canvas for recording graphical operations into the /// given picture recorder. /// /// Graphical operations that affect pixels entirely outside the given /// `cullRect` might be discarded by the implementation. However, the /// implementation might draw outside these bounds if, for example, a command /// draws partially inside and outside the `cullRect`. To ensure that pixels /// outside a given region are discarded, consider using a [clipRect]. The /// `cullRect` is optional; by default, all operations are kept. /// /// To end the recording, call [PictureRecorder.endRecording] on the /// given recorder.ÀW4ÀWEÀWDÀWOÀWVÀWU'ÀWt�(ÀX•ÀX•� /// Saves a copy of the current transform and clip on the save stack. /// /// Call [restore] to pop the save stack. /// /// See also: /// /// * [saveLayer], which does the same thing but additionally also groups the /// commands done until the matching [restore].ÀX ”šÀmÀm“•/// Saves a copy of the current transform and clip on the save stack, and then /// creates a new group which subsequent calls will become a part of. When the /// save stack is later popped, the group will be flattened into a layer and /// have the given `paint`'s [Paint.colorFilter] and [Paint.blendMode] /// applied. /// /// This lets you create composite effects, for example making a group of /// drawing commands semi-transparent. Without using [saveLayer], each part of /// the group would be painted individually, so where they overlap would be /// darker than where they do not. By using [saveLayer] to group them /// together, they can be drawn with an opaque color at first, and then the /// entire group can be made transparent using the [saveLayer]'s paint. /// /// Call [restore] to pop the save stack and apply the paint to the group. /// /// ## Using saveLayer with clips /// /// When a rectangular clip operation (from [clipRect]) is not axis-aligned /// with the raster buffer, or when the clip operation is not rectilinear /// (e.g. because it is a rounded rectangle clip created by [clipRRect] or an /// arbitrarily complicated path clip created by [clipPath]), the edge of the /// clip needs to be anti-aliased. /// /// If two draw calls overlap at the edge of such a clipped region, without /// using [saveLayer], the first drawing will be anti-aliased with the /// background first, and then the second will be anti-aliased with the result /// of blending the first drawing and the background. On the other hand, if /// [saveLayer] is used immediately after establishing the clip, the second /// drawing will cover the first in the layer, and thus the second alone will /// be anti-aliased with the background when the layer is clipped and /// composited (when [restore] is called). /// /// For example, this [CustomPainter.paint] method paints a clean white /// rounded rectangle: /// /// ```dart /// void paint(Canvas canvas, Size size) { /// Rect rect = Offset.zero & size; /// canvas.save(); /// canvas.clipRRect(RRect.fromRectXY(rect, 100.0, 100.0)); /// canvas.saveLayer(rect, Paint()); /// canvas.drawPaint(Paint()..color = Colors.red); /// canvas.drawPaint(Paint()..color = Colors.white); /// canvas.restore(); /// canvas.restore(); /// } /// ``` /// /// On the other hand, this one renders a red outline, the result of the red /// paint being anti-aliased with the background at the clip edge, then the /// white paint being similarly anti-aliased with the background _including /// the clipped red paint_: /// /// ```dart /// void paint(Canvas canvas, Size size) { /// // (this example renders poorly, prefer the example above) /// Rect rect = Offset.zero & size; /// canvas.save(); /// canvas.clipRRect(RRect.fromRectXY(rect, 100.0, 100.0)); /// canvas.drawPaint(Paint()..color = Colors.red); /// canvas.drawPaint(Paint()..color = Colors.white); /// canvas.restore(); /// } /// ``` /// /// This point is moot if the clip only clips one draw operation. For example, /// the following paint method paints a pair of clean white rounded /// rectangles, even though the clips are not done on a separate layer: /// /// ```dart /// void paint(Canvas canvas, Size size) { /// canvas.save(); /// canvas.clipRRect(RRect.fromRectXY(Offset.zero & (size / 2.0), 50.0, 50.0)); /// canvas.drawPaint(Paint()..color = Colors.white); /// canvas.restore(); /// canvas.save(); /// canvas.clipRRect(RRect.fromRectXY(size.center(Offset.zero) & (size / 2.0), 50.0, 50.0)); /// canvas.drawPaint(Paint()..color = Colors.white); /// canvas.restore(); /// } /// ``` /// /// (Incidentally, rather than using [clipRRect] and [drawPaint] to draw /// rounded rectangles like this, prefer the [drawRRect] method. These /// examples are using [drawPaint] as a proxy for "complicated draw operations /// that will get clipped", to illustrate the point.) /// /// ## Performance considerations /// /// Generally speaking, [saveLayer] is relatively expensive. /// /// There are a several different hardware architectures for GPUs (graphics /// processing units, the hardware that handles graphics), but most of them /// involve batching commands and reordering them for performance. When layers /// are used, they cause the rendering pipeline to have to switch render /// target (from one layer to another). Render target switches can flush the /// GPU's command buffer, which typically means that optimizations that one /// could get with larger batching are lost. Render target switches also /// generate a lot of memory churn because the GPU needs to copy out the /// current frame buffer contents from the part of memory that's optimized for /// writing, and then needs to copy it back in once the previous render target /// (layer) is restored. /// /// See also: /// /// * [save], which saves the current state, but does not create a new layer /// for subsequent commands. /// * [BlendMode], which discusses the use of [Paint.blendMode] with /// [saveLayer].Àm Àm&Àm%Àm- Àm4Àm3Àm>�FÀnzÀnz�(/// Pops the current save stack, if there is anything to pop. /// Otherwise, does nothing. /// /// Use [save] and [saveLayer] to push state onto the stack. /// /// If the state was pushed with [saveLayer], then this call will also /// cause the new layer to be composited into the previous layer.Ànˆ‚%Àp“Àp“�ó/// Restores the save stack to a previous level as might be obtained from [getSaveCount]. /// If [count] is less than 1, the stack is restored to its initial state. /// If [count] is greater than the current [getSaveCount] then nothing happens. /// /// Use [save] and [saveLayer] to push state onto the stack. /// /// If any of the state stack levels restored by this call were pushed with /// [saveLayer], then this call will also cause those layers to be composited /// into their previous layers.Àp¢ Àp§Àp¦Àp±�BÀqäÀqä�"/// Returns the number of items on the save stack, including the /// initial state. This means it returns 1 for a clean canvas, and /// that each call to [save] and [saveLayer] increments it, and that /// each matching call to [restore] decrements it. /// /// This number cannot go below 1.Àq÷€ÅÀrœÀrœ€›/// Add a translation to the current transform, shifting the coordinate space /// horizontally by the first argument and vertically by the second argument.Àr¦ Àr®Àr­Àr± Àr¹Àr¸ÀrÀ�,ÀsÍÀsÍ€û/// Add an axis-aligned scale to the current transform, scaling by the first /// argument in the horizontal direction and the second in the vertical /// direction. /// /// If [sy] is unspecified, [sx] will be used for the scale in both /// directions.ÀsÓ ÀsÛÀsÚÀsß ÀsèÀsçÀsðqÀtJÀtJR/// Add a rotation to the current transform. The argument is in radians clockwise.ÀtQÀtYÀtXÀte�5ÀuÀu� /// Add an axis-aligned skew to the current transform, with the first argument /// being the horizontal skew in rise over run units clockwise around the /// origin, and the second argument being the vertical skew in rise over run /// units clockwise around the origin.Àu„ ÀuŒÀu‹Àu� Àu—Àu–Àuž€¯Àv.Àv.€ˆ/// Multiply the current transform by the specified 4⨉4 transformation matrix /// specified as a list of values in column-major order.Àv8ÀvEÀvDÀvQ‚ÀxEÀxE�×/// Returns the current transform including the combined result of all transform /// methods executed since the creation of this [Canvas] object, and respecting the /// save/restore history. /// /// Methods that can change the current transform include [translate], [scale], /// [rotate], [skew], and [transform]. The [restore] method can also modify /// the current transform by restoring it to the same value it had before its /// associated [save] or [saveLayer] call.ÀxX‚ŽÀz•Àz•‚/// Reduces the clip region to the intersection of the current clip and the /// given rectangle. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/clip_rect.png) /// /// If [doAntiAlias] is true, then the clip will be anti-aliased. /// /// If multiple draw commands intersect with the clip boundary, this can result /// in incorrect blending at the clip boundary. See [saveLayer] for a /// discussion of how to address that. /// /// Use [ClipOp.difference] to subtract the provided rectangle from the /// current clip.Àzž Àz¤Àz£Àzª Àz²Àz±ÀzÌÀzÒÀzÑÀzºÀzÀÀzÁÀzßÀzê‚;À|óÀ|ó�ï/// Reduces the clip region to the intersection of the current clip and the /// given rounded rectangle. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/clip_rrect.png) /// /// If [doAntiAlias] is true, then the clip will be anti-aliased. /// /// If multiple draw commands intersect with the clip boundary, this can result /// in incorrect blending at the clip boundary. See [saveLayer] for a /// discussion of how to address that and some examples of using [clipRRect].À|ý À}À}À} À}À}À}À})‚fÀEÀE‚/// Reduces the clip region to the intersection of the current clip and the /// given rounded superellipse. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/clip_rsuperellipse.png) /// /// If [doAntiAlias] is true, then the clip will be anti-aliased. /// /// If multiple draw commands intersect with the clip boundary, this can result /// in incorrect blending at the clip boundary. See [saveLayer] for a /// discussion of how to address that and some examples of using [clipRSuperellipse].ÀWÀfÀeÀuÀ{ÀzÀˆÀ“‚À�iÀ�i�¼/// Reduces the clip region to the intersection of the current clip and the /// given [Path]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/clip_path.png) /// /// If [doAntiAlias] is true, then the clip will be anti-aliased. /// /// If multiple draw commands intersect with the clip boundary, this can result /// in incorrect blending at the clip boundary. See [saveLayer] for a /// discussion of how to address that.À�r À�xÀ�wÀ�~À�„À�ƒÀ�‘À�œŠÝÀŒdÀŒdŠZ/// Returns the conservative bounds of the combined result of all clip methods /// executed within the current save stack of this [Canvas] object, as measured /// in the local coordinate space under which rendering operations are currently /// performed. /// /// The combined clip results are rounded out to an integer pixel boundary before /// they are transformed back into the local coordinate space which accounts for /// the pixel roundoff in rendering operations, particularly when antialiasing. /// Because the [Picture] may eventually be rendered into a scene within the /// context of transforming widgets or layers, the result may thus be overly /// conservative due to premature rounding. Using the [getDestinationClipBounds] /// method combined with the external transforms and rounding in the true device /// coordinate system will produce more accurate results, but this value may /// provide a more convenient approximation to compare rendering operations to /// the established clip. /// /// {@template dart.ui.canvas.conservativeClipBounds} /// The conservative estimate of the bounds is based on intersecting the bounds /// of each clip method that was executed with [ClipOp.intersect] and potentially /// ignoring any clip method that was executed with [ClipOp.difference]. The /// [ClipOp] argument is only present on the [clipRect] method. /// /// To understand how the bounds estimate can be conservative, consider the /// following two clip method calls: /// /// ```dart /// void draw(Canvas canvas) { /// canvas.clipPath(Path() /// ..addRect(const Rect.fromLTRB(10, 10, 20, 20)) /// ..addRect(const Rect.fromLTRB(80, 80, 100, 100))); /// canvas.clipPath(Path() /// ..addRect(const Rect.fromLTRB(80, 10, 100, 20)) /// ..addRect(const Rect.fromLTRB(10, 80, 20, 100))); /// // ... /// } /// ``` /// /// After executing both of those calls there is no area left in which to draw /// because the two paths have no overlapping regions. But, in this case, /// [getLocalClipBounds] would return a rectangle from `10, 10` to `100, 100` because it /// only intersects the bounds of the two path objects to obtain its conservative /// estimate. /// /// The clip bounds are not affected by the bounds of any enclosing /// [saveLayer] call as the engine does not currently guarantee the strict /// enforcement of those bounds during rendering. /// /// Methods that can change the current clip include [clipRect], [clipRRect], /// and [clipPath]. The [restore] method can also modify the current clip by /// restoring it to the same value it had before its associated [save] or /// [saveLayer] call. /// {@endtemplate}ÀŒ}ƒŸÀ�À�ƒb/// Returns the conservative bounds of the combined result of all clip methods /// executed within the current save stack of this [Canvas] object, as measured /// in the destination coordinate space in which the [Picture] will be rendered. /// /// Unlike [getLocalClipBounds], the bounds are not rounded out to an integer /// pixel boundary as the Destination coordinate space may not represent pixels /// if the [Picture] being constructed will be further transformed when it is /// rendered or added to a scene. In order to determine the true pixels being /// affected, those external transforms should be applied first before rounding /// out the result to integer pixel boundaries. Most typically, [Picture] objects /// are rendered in a scene with a scale transform representing the Device Pixel /// Ratio. /// /// {@macro dart.ui.canvas.conservativeClipBounds}À� €ÝÀ�ÑÀ�Ñ€¥/// Paints the given [Color] onto the canvas, applying the given /// [BlendMode], with the given color being the source and the background /// being the destination.À�Û À�âÀ�áÀ�èÀ�óÀ�òÀ‘�üÀ’ÑÀ’Ñ�¼/// Draws a line between the given points using the given paint. The line is /// stroked, the value of the [Paint.style] is ignored for this call. /// /// The `p1` and `p2` arguments are interpreted as offsets from the origin. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_line.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_line_dark.png#gh-dark-mode-only)À’Ú À’âÀ’áÀ’å À’íÀ’ìÀ’ð À’÷À’öÀ“€±À“›À“›€Œ/// Fills the canvas with the given [Paint]. /// /// To fill the canvas with a solid color and blend mode, consider /// [drawColor] instead.À“¥ À“¬À“«À“¶�‘À•&À•&�`/// Draws a rectangle with the given [Paint]. Whether the rectangle is filled /// or stroked (or both) is controlled by [Paint.style]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_rect.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_rect_dark.png#gh-dark-mode-only)À•/ À•5À•4À•: À•AÀ•@À•K�žÀ–ÅÀ–Å�j/// Draws a rounded rectangle with the given [Paint]. Whether the rectangle is /// filled or stroked (or both) is controlled by [Paint.style]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_rrect.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_rrect_dark.png#gh-dark-mode-only)À–Ï À–ÖÀ–ÕÀ–Ü À–ãÀ–âÀ–í�HÀ˜À˜�/// Draws a shape consisting of the difference between two rounded rectangles /// with the given [Paint]. Whether this shape is filled or stroked (or both) /// is controlled by [Paint.style]. /// /// This shape is almost but not quite entirely unlike an annulus.À˜ À˜À˜À˜ À˜"À˜!À˜( À˜/À˜.À˜9�ÁÀ™¾À™¾�u/// Draws a rounded superellipse with the given [Paint]. The shape is filled, /// and the value of the [Paint.style] is ignored for this call. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_rsuperellipse.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_rsuperellipse.png#gh-dark-mode-only)À™ÐÀ™ßÀ™ÞÀ™í À™ôÀ™óÀ™þ�ÇÀ›¤À›¤�”/// Draws an axis-aligned oval that fills the given axis-aligned rectangle /// with the given [Paint]. Whether the oval is filled or stroked (or both) is /// controlled by [Paint.style]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_oval.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_oval_dark.png#gh-dark-mode-only)À›­ À›³À›²À›¸ À›¿À›¾À›É‚)À�ÁÀ�Á�ä/// Draws a circle centered at the point given by the first argument and /// that has the radius given by the second argument, with the [Paint] given in /// the third argument. Whether the circle is filled or stroked (or both) is /// controlled by [Paint.style]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_circle.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_circle_dark.png#gh-dark-mode-only)À�ÌÀ�ÔÀ�ÓÀ�Ö À�ÞÀ�ÝÀ�å À�ìÀ�ëÀ�öƒÛÀ¡{À¡{ƒc/// Draw an arc scaled to fit inside the given rectangle. /// /// It starts from `startAngle` radians around the oval up to /// `startAngle` + `sweepAngle` radians around the oval, with zero radians /// being the point on the right hand side of the oval that crosses the /// horizontal line that intersects the center of the rectangle and with positive /// angles going clockwise around the oval. If `useCenter` is true, the arc is /// closed back to the center, forming a circle sector. Otherwise, the arc is /// not closed, forming a circle segment. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_draw_arc.png#gh-light-mode-only) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/canvas_draw_arc_dark.png#gh-dark-mode-only) /// /// This method is optimized for drawing arcs and should be faster than [Path.arcTo].À¡ƒ À¡‰À¡ˆÀ¡ŽÀ¡–À¡•À¡¡À¡©À¡¨À¡´À¡ºÀ¡¹À¡Ä À¡ËÀ¡ÊÀ¡Õ�À¢ÓÀ¢Ó€î/// Draws the given [Path] with the given [Paint]. /// /// Whether this shape is filled or stroked (or both) is controlled by /// [Paint.style]. If the path is filled, then sub-paths within it are /// implicitly closed (see [Path.close]).À¢Ü À¢âÀ¢áÀ¢ç À¢îÀ¢íÀ¢ø€ÝÀ£¢À£¢€ /// Draws the given [Image] into the canvas with its top-left corner at the /// given [Offset]. The image is composited into the canvas using the given [Paint].À£¬ À£³À£²À£¹ À£ÁÀ£ÀÀ£È À£ÏÀ£ÎÀ£Ù�øÀ¥•À¥•�¤/// Draws the subset of the given image described by the `src` argument into /// the canvas in the axis-aligned rectangle given by the `dst` argument. /// /// This might sample from outside the `src` rect by up to half the width of /// an applied filter. /// /// Multiple calls to this method with different arguments (from the same /// image) can be batched into a single call to [drawAtlas] to improve /// performance.À¥£ À¥ªÀ¥©À¥°À¥¶À¥µÀ¥ºÀ¥ÀÀ¥¿À¥Ä À¥ËÀ¥ÊÀ¥ÕƒQÀ¨çÀ¨ç‚ò/// Draws the given [Image] into the canvas using the given [Paint]. /// /// The image is drawn in nine portions described by splitting the image by /// drawing two horizontal lines and two vertical lines, where the `center` /// argument describes the rectangle formed by the four points where these /// four lines intersect each other. (This forms a 3-by-3 grid of regions, /// the center region being described by the `center` argument.) /// /// The four regions in the corners are drawn, without scaling, in the four /// corners of the destination rectangle described by `dst`. The remaining /// five regions are drawn by stretching them to fit such that they exactly /// cover the destination rectangle while maintaining their relative /// positions.À¨õ À¨üÀ¨ûÀ© À©À©À©À©À©À© À© À©À©*€‚À©�À©�[/// Draw the given picture onto the canvas. To create a picture, see /// [PictureRecorder].À©›À©¤À©£À©°„IÀ­ÇÀ­Çƒé/// Draws the text in the given [Paragraph] into this canvas at the given /// [Offset]. /// /// The [Paragraph] object must have had [Paragraph.layout] called on it /// first. /// /// To align the text, set the `textAlign` on the [ParagraphStyle] object /// passed to the [ParagraphBuilder.new] constructor. For more details see /// [TextAlign] and the discussion at [ParagraphStyle.new]. /// /// If the text is left aligned or justified, the left margin will be at the /// position specified by the `offset` argument's [Offset.dx] coordinate. /// /// If the text is right aligned or justified, the right margin will be at the /// position described by adding the [ParagraphConstraints.width] given to /// [Paragraph.layout], to the `offset` argument's [Offset.dx] coordinate. /// /// If the text is centered, the centering axis will be at the position /// described by adding half of the [ParagraphConstraints.width] given to /// [Paragraph.layout], to the `offset` argument's [Offset.dx] coordinate.À­ÕÀ­àÀ­ßÀ­ê À­òÀ­ñÀ­ý�ôÀ¯¯À¯¯�–/// Draws a sequence of points according to the given [PointMode]. /// /// The `points` argument is interpreted as offsets from the origin. /// /// The `paint` is used for each point ([PointMode.points]) or line /// ([PointMode.lines] or [PointMode.polygon]), ignoring [Paint.style]. /// /// See also: /// /// * [drawRawPoints], which takes `points` as a [Float32List] rather than a /// [List].À¯ºÀ¯ÅÀ¯ÄÀ¯ÏÀ¯ÝÀ¯ÜÀ¯ä À¯ëÀ¯êÀ¯õ‚OÀ²À²�í/// Draws a sequence of points according to the given [PointMode]. /// /// The `points` argument is interpreted as a list of pairs of floating point /// numbers, where each pair represents an x and y offset from the origin. /// /// The `paint` is used for each point ([PointMode.points]) or line /// ([PointMode.lines] or [PointMode.polygon]), ignoring [Paint.style]. /// /// See also: /// /// * [drawPoints], which takes `points` as a [List] rather than a /// [List].À²À²À²À²#À²0À²/À²7 À²>À²=À²H†;À¸AÀ¸A…»/// Draws a set of [Vertices] onto the canvas as one or more triangles. /// /// The [Paint.color] property specifies the default color to use for the /// triangles. /// /// The [Paint.shader] property, if set, overrides the color entirely, /// replacing it with the colors from the specified [ImageShader], [Gradient], /// or other shader. /// /// The `blendMode` parameter is used to control how the colors in the /// `vertices` are combined with the colors in the `paint`. If there are no /// colors specified in `vertices` then the `blendMode` has no effect. If /// there are colors in the `vertices`, then the color taken from the /// [Paint.shader] or [Paint.color] in the `paint` is blended with the colors /// specified in the `vertices` using the `blendMode` parameter. For the /// purposes of this blending, the colors from the `paint` parameter are /// considered the source, and the colors from the `vertices` are considered /// the destination. [BlendMode.dst] ignores the `paint` and uses only the /// colors of the `vertices`; [BlendMode.src] ignores the colors of the /// `vertices` and uses only the colors in the `paint`. /// /// All parameters must not be null. /// /// See also: /// * [Vertices.new], which creates a set of vertices to draw on the canvas. /// * [Vertices.raw], which creates the vertices using typed data lists /// rather than unencoded lists. /// * [paint], Image shaders can be used to draw images on a triangular mesh.À¸NÀ¸XÀ¸WÀ¸aÀ¸lÀ¸kÀ¸v À¸}À¸|À¸‡–PÀÎ'ÀÎ'””/// Draws many parts of an image - the [atlas] - onto the canvas. /// /// This method allows for optimization when you want to draw many parts of an /// image onto the canvas, such as when using sprites or zooming. It is more efficient /// than using multiple calls to [drawImageRect] and provides more functionality /// to individually transform each image part by a separate rotation or scale and /// blend or modulate those parts with a solid color. /// /// The method takes a list of [Rect] objects that each define a piece of the /// [atlas] image to be drawn independently. Each [Rect] is associated with an /// [RSTransform] entry in the [transforms] list which defines the location, /// rotation, and (uniform) scale with which to draw that portion of the image. /// Each [Rect] can also be associated with an optional [Color] which will be /// composed with the associated image part using the [blendMode] before blending /// the result onto the canvas. The full operation can be broken down as: /// /// - Blend each rectangular portion of the image specified by an entry in the /// [rects] argument with its associated entry in the [colors] list using the /// [blendMode] argument (if a color is specified). In this part of the operation, /// the image part will be considered the source of the operation and the associated /// color will be considered the destination. /// - Blend the result from the first step onto the canvas using the translation, /// rotation, and scale properties expressed in the associated entry in the /// [transforms] list using the properties of the [Paint] object. /// /// If the first stage of the operation which blends each part of the image with /// a color is needed, then both the [colors] and [blendMode] arguments must /// not be null and there must be an entry in the [colors] list for each /// image part. If that stage is not needed, then the [colors] argument can /// be either null or an empty list and the [blendMode] argument may also be null. /// /// The optional [cullRect] argument can provide an estimate of the bounds of the /// coordinates rendered by all components of the atlas to be compared against /// the clip to quickly reject the operation if it does not intersect. /// /// An example usage to render many sprites from a single sprite atlas with no /// rotations or scales: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center); /// int index; /// Offset center; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// Paint paint = Paint(); /// canvas.drawAtlas(spriteAtlas, [ /// for (final Sprite sprite in allSprites) /// RSTransform.fromComponents( /// rotation: 0.0, /// scale: 1.0, /// // Center of the sprite relative to its rect /// anchorX: 5.0, /// anchorY: 5.0, /// // Location at which to draw the center of the sprite /// translateX: sprite.center.dx, /// translateY: sprite.center.dy, /// ), /// ], [ /// for (final Sprite sprite in allSprites) /// Rect.fromLTWH(sprite.index * 10.0, 0.0, 10.0, 10.0), /// ], null, null, null, paint); /// } /// /// // ... /// } /// ``` /// /// Another example usage which renders sprites with an optional opacity and rotation: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center, this.alpha, this.rotation); /// int index; /// Offset center; /// int alpha; /// double rotation; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// Paint paint = Paint(); /// canvas.drawAtlas(spriteAtlas, [ /// for (final Sprite sprite in allSprites) /// RSTransform.fromComponents( /// rotation: sprite.rotation, /// scale: 1.0, /// // Center of the sprite relative to its rect /// anchorX: 5.0, /// anchorY: 5.0, /// // Location at which to draw the center of the sprite /// translateX: sprite.center.dx, /// translateY: sprite.center.dy, /// ), /// ], [ /// for (final Sprite sprite in allSprites) /// Rect.fromLTWH(sprite.index * 10.0, 0.0, 10.0, 10.0), /// ], [ /// for (final Sprite sprite in allSprites) /// Colors.white.withAlpha(sprite.alpha), /// ], BlendMode.srcIn, null, paint); /// } /// /// // ... /// } /// ``` /// /// The length of the [transforms] and [rects] lists must be equal and /// if the [colors] argument is not null then it must either be empty or /// have the same length as the other two lists. /// /// See also: /// /// * [drawRawAtlas], which takes its arguments as typed data lists rather /// than objects.ÀÎ6 ÀÎ=ÀÎ<ÀÎGÀÎZÀÎYÀÎiÀÎuÀÎtÀÎÀÎ�ÀÎŒÀΘÀΤÀΣÀβÀιÀθÀÎÆ ÀÎÍÀÎÌÀÎÛš¿ÀèëÀèë˜ä/// Draws many parts of an image - the [atlas] - onto the canvas. /// /// This method allows for optimization when you want to draw many parts of an /// image onto the canvas, such as when using sprites or zooming. It is more efficient /// than using multiple calls to [drawImageRect] and provides more functionality /// to individually transform each image part by a separate rotation or scale and /// blend or modulate those parts with a solid color. It is also more efficient /// than [drawAtlas] as the data in the arguments is already packed in a format /// that can be directly used by the rendering code. /// /// A full description of how this method uses its arguments to draw onto the /// canvas can be found in the description of the [drawAtlas] method. /// /// The [rstTransforms] argument is interpreted as a list of four-tuples, with /// each tuple being ([RSTransform.scos], [RSTransform.ssin], /// [RSTransform.tx], [RSTransform.ty]). /// /// The [rects] argument is interpreted as a list of four-tuples, with each /// tuple being ([Rect.left], [Rect.top], [Rect.right], [Rect.bottom]). /// /// The [colors] argument, which can be null, is interpreted as a list of /// 32-bit colors, with the same packing as [Color.value]. If the [colors] /// argument is not null then the [blendMode] argument must also not be null. /// /// An example usage to render many sprites from a single sprite atlas with no rotations /// or scales: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center); /// int index; /// Offset center; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// // For best advantage, these lists should be cached and only specific /// // entries updated when the sprite information changes. This code is /// // illustrative of how to set up the data and not a recommendation for /// // optimal usage. /// Float32List rectList = Float32List(allSprites.length * 4); /// Float32List transformList = Float32List(allSprites.length * 4); /// for (int i = 0; i < allSprites.length; i++) { /// Sprite sprite = allSprites[i]; /// final double rectX = sprite.index * 10.0; /// rectList[i * 4 + 0] = rectX; /// rectList[i * 4 + 1] = 0.0; /// rectList[i * 4 + 2] = rectX + 10.0; /// rectList[i * 4 + 3] = 10.0; /// /// // This example sets the RSTransform values directly for a common case of no /// // rotations or scales and just a translation to position the atlas entry. For /// // more complicated transforms one could use the RSTransform class to compute /// // the necessary values or do the same math directly. /// transformList[i * 4 + 0] = 1.0; /// transformList[i * 4 + 1] = 0.0; /// transformList[i * 4 + 2] = sprite.center.dx - 5.0; /// transformList[i * 4 + 3] = sprite.center.dy - 5.0; /// } /// Paint paint = Paint(); /// canvas.drawRawAtlas(spriteAtlas, transformList, rectList, null, null, null, paint); /// } /// /// // ... /// } /// ``` /// /// Another example usage which renders sprites with an optional opacity and rotation: /// /// ```dart /// class Sprite { /// Sprite(this.index, this.center, this.alpha, this.rotation); /// int index; /// Offset center; /// int alpha; /// double rotation; /// } /// /// class MyPainter extends CustomPainter { /// MyPainter(this.spriteAtlas, this.allSprites); /// /// // assume spriteAtlas contains N 10x10 sprites side by side in a (N*10)x10 image /// ui.Image spriteAtlas; /// List allSprites; /// /// @override /// void paint(Canvas canvas, Size size) { /// // For best advantage, these lists should be cached and only specific /// // entries updated when the sprite information changes. This code is /// // illustrative of how to set up the data and not a recommendation for /// // optimal usage. /// Float32List rectList = Float32List(allSprites.length * 4); /// Float32List transformList = Float32List(allSprites.length * 4); /// Int32List colorList = Int32List(allSprites.length); /// for (int i = 0; i < allSprites.length; i++) { /// Sprite sprite = allSprites[i]; /// final double rectX = sprite.index * 10.0; /// rectList[i * 4 + 0] = rectX; /// rectList[i * 4 + 1] = 0.0; /// rectList[i * 4 + 2] = rectX + 10.0; /// rectList[i * 4 + 3] = 10.0; /// /// // This example uses an RSTransform object to compute the necessary values for /// // the transform using a factory helper method because the sprites contain /// // rotation values which are not trivial to work with. But if the math for the /// // values falls out from other calculations on the sprites then the values could /// // possibly be generated directly from the sprite update code. /// final RSTransform transform = RSTransform.fromComponents( /// rotation: sprite.rotation, /// scale: 1.0, /// // Center of the sprite relative to its rect /// anchorX: 5.0, /// anchorY: 5.0, /// // Location at which to draw the center of the sprite /// translateX: sprite.center.dx, /// translateY: sprite.center.dy, /// ); /// transformList[i * 4 + 0] = transform.scos; /// transformList[i * 4 + 1] = transform.ssin; /// transformList[i * 4 + 2] = transform.tx; /// transformList[i * 4 + 3] = transform.ty; /// /// // This example computes the color value directly, but one could also compute /// // an actual Color object and use its Color.value getter for the same result. /// // Since we are using BlendMode.srcIn, only the alpha component matters for /// // these colors which makes this a simple shift operation. /// colorList[i] = sprite.alpha << 24; /// } /// Paint paint = Paint(); /// canvas.drawRawAtlas(spriteAtlas, transformList, rectList, colorList, BlendMode.srcIn, null, paint); /// } /// /// // ... /// } /// ``` /// /// See also: /// /// * [drawAtlas], which takes its arguments as objects rather than typed /// data lists.Àèý ÀéÀéÀéÀéÀéÀé-Àé:Àé9ÀéDÀéPÀéOÀé[ÀégÀéfÀéuÀé|Àé{Àé‰ Àé�Àé�Àéž�8Àê‡Àꇀ×/// Draws a shadow for a [Path] representing the given material elevation. /// /// The `transparentOccluder` argument should be true if the occluding object /// is not opaque. /// /// The arguments must not be null.Àê’ Àê˜Àê—Àê� Àê¤Àê£ÀêªÀê²Àê±Àê¼ÀêÂÀêÁÀêÚÀOqÀêåÀêåÀë*��Àë*Àë*Àë7Àë8ÀëIÀëHÀëSÀëZÀëYÀî½!ÀîÕÀîÕHÀì¾€þÀí?Àí?ÀíQÀíiÀíhÀív Àí~Àí}Àí‡ Àí�ÀíŽÀí— ÀíŸÀížÀí© Àí±Àí°Àì¾Àì¿ÀìÅÀí ÀìËÀìÆÀìÓÀí ÀìÔÀìÜÀìãÀìèÀìäÀìëÀìóÀìûÀíÀí Àí-ÀíÀíÀíÀîãoÀïKÀïKÀîãÀîäÀîïÀîðÀîöÀïÀîüÀî÷ÀïÀïÀïÀï ÀïÀï ÀïÀï9ÀïÀïÀïÀï3Àï-Àï5ÀïV�ÀïbÀïbÀïj ÀïpÀïoÀðv�-Àð‡Àð‡Àð‘ Àð˜Àð—ÀðŸ Àð¦Àð¥ÀðvÀðwÀñ§€¹ÀòÀòÀò/Àò?Àò>ÀòLÀòVÀòUÀñ§Àñ¨Àñ®ÀñÛÀñ´Àñ¯Àñ¼ÀñÚÀñ½ÀñÄÀñÉÀñÅÀñÌÀñÔÀñÜÀòÀñãÀñÝÀñåÀòd�ÀòðÀòðÀó ÀóÀóÀó ÀóÀóÀó! Àó)Àó(Àó3 Àó;Àó:ÀóFÀóVÀóUÀógÀóqÀópÀòdÀòeÀòkÀò¸ÀòqÀòlÀòyÀò·ÀòzÀò�Àò†Àò‚Àò‰Àò‘Àò™Àò¡Àò©Àò±Àò¹ÀòÞÀòÅÀò¿ÀòÇÀóƒuÀóîÀóîÀóƒÀó„Àó�Àó�Àó–Àó³ÀóœÀó—Àó¤Àó²Àó¥Àó¬Àó±Àó­Àó´ÀóÜÀó»ÀóµÀó½ÀóÖÀóÐÀóØÀóü€“ÀôuÀôuÀô„ Àô‰ÀôˆÀóüÀóýÀôÀô ÀôÀô3ÀôÀôÀôÀô2ÀôÀô%Àô*Àô&Àô-Àô4ÀôcÀô;Àô5Àô=Àô]ÀôWÀô_Àô“ÀõÀõÀô“Àô”ÀôŸÀô Àô¦ÀôÄÀô­Àô§ÀôµÀôÃÀô¶Àô½ÀôÂÀô¾ÀôÅÀôòÀôÌÀôÆÀôÎÀôìÀôæÀôîÀõ€�Àõ“Àõ“Àõ� Àõ¥Àõ¤Àõ¨ Àõ°Àõ¯ÀõÀõÀõ"Àõ#Àõ)ÀõVÀõ/Àõ*Àõ7ÀõUÀõ8Àõ?ÀõDÀõ@ÀõGÀõOÀõWÀõ�Àõ^ÀõXÀõ`Àõ{ÀõuÀõ}Àõ·HÀõÈÀõÈÀõÎ ÀõÖÀõÕÀõÚ ÀõãÀõâÀõ·Àõ¸Àö€ŠÀöpÀöpÀöw ÀöÀö~Àö‚ ÀöŠÀö‰ÀöÀöÀö Àö7ÀöÀö ÀöÀö6ÀöÀö Àö%Àö!Àö(Àö0Àö8Àö^Àö?Àö9ÀöAÀöXÀöRÀöZÀö‘€‰À÷À÷À÷ À÷À÷Àö‘Àö’Àö�ÀöžÀö¤ÀöÉÀöªÀö¥Àö²ÀöÈÀö³ÀöºÀö¿Àö»ÀöÂÀöÊÀöñÀöÑÀöËÀöÓÀöëÀöåÀöíÀ÷€“À÷–À÷–À÷› À÷£À÷¢À÷¦ À÷®À÷­À÷À÷À÷*À÷+À÷1À÷^À÷7À÷2À÷?À÷]À÷@À÷GÀ÷LÀ÷HÀ÷OÀ÷WÀ÷_À÷„À÷fÀ÷`À÷hÀ÷~À÷xÀ÷€À÷µ€²À÷ÆÀ÷ÆÀ÷ÐÀ÷ÝÀ÷ÜÀ÷µÀ÷¶Àøk{ÀøÆÀøÆÀøÑÀøÞÀøÝÀøkÀølÀørÀø—ÀøxÀøsÀø€Àø–Àø�ÀøˆÀø�Àø‰Àø�Àø˜Àø´ÀøŸÀø™Àø¡Àøê€�ÀùÀùÀøêÀøëÀù{€�ÀùÙÀùÙÀùçÀùôÀùóÀù{Àù|Àù‚Àù§ÀùˆÀùƒÀù�Àù¦Àù‘Àù˜Àù�Àù™Àù Àù¨ÀùÇÀù¯Àù©Àù±Àú�ÖÀúÀúÀú Àú ÀúÀú& Àú.Àú-ÀúHÀúNÀúMÀúÀúÀú6Àú<Àú=Àú[ÀûÚ�ÀütÀütÀüƒ Àü‹ÀüŠÀü” ÀüœÀü›Àü¤ Àü¬Àü«Àü¶ Àü¾Àü½ÀüÉ ÀüÎÀüÍÀüÙÀüßÀüÞÀûÚÀûÛÀûáÀü+ÀûçÀûâÀûïÀü*ÀûðÀû÷ÀûüÀûøÀûÿÀüÀüÀüÀüÀü&Àü,ÀübÀü8Àü2Àü:ÀüXÀüRÀüZÀüó€œÀýÀýÀý ÀýÀýÀýÀý"Àý!ÀüóÀüôÀý/Àý“€‘ÀýôÀýôÀýÿÀþ Àþ ÀþÀþÀþÀý“Àý”ÀýšÀýÅÀý Àý›Àý¨ÀýÄÀý©Àý°ÀýµÀý±Àý¸ÀýÀÀýÆÀýâÀýÍÀýÇÀýÏÀþ(€ÐÀþ9Àþ9ÀþKÀþZÀþYÀþiÀþoÀþnÀþ(Àþ)Àþ|Àþü€¹ÀÿlÀÿlÀÿ"Àÿ•Àÿ”Àÿ£Àÿ©Àÿ¨ÀþüÀþýÀÿÀÿ5Àÿ ÀÿÀÿÀÿ4ÀÿÀÿÀÿÀÿÀÿ!Àÿ(Àÿ-Àÿ)Àÿ0Àÿ6ÀÿZÀÿ=Àÿ7Àÿ?Àÿ¹vÀÿÊÀÿÊÀÿÓ ÀÿÙÀÿØÀÿßÀÿåÀÿäÀÿ¹ÀÿºÀÿòÀ3€•ÀšÀšÀ¤À±À°À¶À¼À»À3À4À:ÀlÀ@À;ÀHÀkÀIÀPÀUÀQÀXÀ_ÀdÀ`ÀgÀmÀˆÀtÀnÀvÀÌ€ÁÀÝÀÝÀÌÀÍÀ‘€ŒÀõÀõÀ ÀÀÀ‘À’À˜À½ÀžÀ™À¦À¼À§À®À³À¯À¶À¾ÀãÀÅÀ¿ÀÇÀ!€ÍÀ2À2À!À"Àò€˜À\À\ÀvÀƒÀ‚ÀòÀóÀùÀÀÿÀúÀÀÀÀÀÀÀÀÀJÀ&À À(ÀŽpÀŸÀŸÀ© À°À¯À¶ÀÁÀÀÀŽÀ�À€•ÀrÀrÀ} À‚À�Àˆ À�ÀŒÀÀÀ À5ÀÀ ÀÀ4ÀÀÀ$À À'À/À6À`À=À7À?ÀZÀTÀ\À›€ÊÀ¬À¬Àµ À½À¼ÀÀ ÀÈÀÇÀË ÀÒÀÑÀ›ÀœÀi�ÀôÀôÀ À À À ÀÀÀ! À)À(À0 À8À7À?ÀOÀNÀ`ÀjÀiÀiÀjÀpÀ½ÀvÀqÀ~À¼ÀÀ†À‹À‡ÀŽÀ–ÀžÀ¦À®À¶À¾ÀâÀÊÀÄÀÌÀ|ZÀ�À�À— ÀžÀ�À|À}ÀÚ€ŸÀ=À=ÀHÀXÀWÀeÀoÀnÀÚÀÛÀáÀÀçÀâÀïÀ ÀðÀ÷ÀüÀøÀÿÀÀÀ+ÀÀÀÀ}�ÀŽÀŽÀ— À�ÀœÀ¢ À©À¨À}À~À’�À À À , À 4À 3À = À EÀ DÀ M À UÀ TÀ _ À gÀ fÀ rÀ ‚À �À “À �À œÀ’À“À™ÀæÀŸÀšÀ§ÀåÀ¨À¯À´À°À·À¿ÀÇÀÏÀ×ÀßÀçÀ ÀóÀíÀõÀ ¯€žÀ ÀÀ ÀÀ Ê À ÑÀ ÐÀ × À ÞÀ ÝÀ ¯À °À Q€ºÀ ¼À ¼À ÇÀ ÔÀ ÓÀ ÚÀ êÀ éÀ ÷À À À QÀ RÀ XÀ �À ^À YÀ fÀ ŒÀ gÀ nÀ sÀ oÀ vÀ ~À †À ŽÀ ªÀ •À �À —À €äÀ À À + À 2À 1À 8 À ?À >À E À LÀ KÀ À À ÷€õÀ tÀ tÀ …À ’À ‘À œÀ ©À ¨À ³À ÃÀ ÂÀ ÔÀ ÞÀ ÝÀ ÷À øÀ þÀ ;À À ÿÀ À :À À À À À À $À ,À 4À <À bÀ HÀ BÀ JÀ ð€ÒÀ À À À "À !À 0 À 7À 6À ðÀ ñÀ Æ€üÀIÀIÀa"ÀwÀvÀ‰À™À˜ÀªÀ´À³À ÆÀ ÇÀ ÍÀ À ÓÀ ÎÀ ÛÀÀ ÜÀ ãÀ èÀ äÀ ëÀ òÀ ÷À óÀ úÀÀ À7ÀÀÀÀÆ�À×À×Àà ÀæÀåÀë ÀòÀñÀÆÀÇÀÛ�ÀfÀfÀu À}À|À† ÀŽÀ�À– ÀžÀ�À¨ À°À¯À»ÀËÀÊÀÜÀæÀåÀÛÀÜÀâÀ/ÀèÀãÀðÀ.ÀñÀøÀýÀùÀÀÀÀÀ À(À0ÀTÀ<À6À>Àø€¨À À ÀÀÀÀ À&À%À- À4À3ÀøÀùÀ¤€þÀ)À)À:ÀBÀAÀHÀPÀOÀV À^À]ÀiÀyÀxÀŠÀ”À“À¤À¥À«ÀðÀ±À¬À¹ÀïÀºÀÁÀÆÀÂÀÉÀÑÀÙÀáÀéÀñÀÀýÀ÷ÀÿÀ¦�EÀ·À·À¿ ÀÅÀÄÀÊÀÒÀÑÀÝÀåÀäÀðÀöÀõÀ ÀÀÀ¦À§Àï�±ÀÑÀÑ Àß ÀçÀæÀð ÀøÀ÷À ÀÀÀ ÀÀÀ%À-À,À<ÀDÀCÀSÀYÀXÀgÀwÀvÀˆÀ’À‘ÀïÀðÀöÀ¤ÀÀüÀ À ÀÀÀÀÀ&À4ÀBÀPÀ^ÀlÀzÀ†À”À¥À¿À¬À¦À®À¤xÀµÀµÀ¾ ÀÄÀÃÀÉ ÀÐÀÏÀ¤À¥À €¾À‘À‘À›À¨À§À­À½À¼ÀÊÀÔÀÓÀ À!À'ÀcÀ-À(À5ÀbÀ6À=ÀBÀ>ÀEÀLÀQÀMÀTÀ\ÀdÀÀkÀeÀmÀâ�©ÀóÀóÀý ÀÀÀ ÀÀÀ À ÀÀâÀãÀ��*À&À&À6 À>À=ÀHÀPÀOÀVÀ^À]ÀdÀtÀsÀ…À�ÀŽÀ�À¢À¡À�À�À–ÀëÀžÀ—À¦ÀêÀ§À®À³À¯À¶À½ÀÂÀ¾ÀÅÀÍÀÕÀÝÀåÀìÀÀøÀòÀúÀ½‚2ÀÎÀÎÀÜ ÀãÀâÀéÀïÀîÀóÀùÀøÀý ÀÀÀ½À¾Àó‚>ÀÀ À& À.À-À8À@À?ÀL ÀTÀSÀ_ÀgÀfÀtÀ|À{ÀŠÀ’À‘Àž À¦À¥À±À¹À¸ÀÆÀÎÀÍÀÜÀìÀëÀýÀÀÀÀÀ ÀóÀôÀúÀÜÀÀÀÀØÀÀÀ#ÀÀ,À3À8À4ÀAÀOÀ]ÀkÀyÀ‡À•À£À±À¿ÀÍÀÝÀýÀäÀÞÀæÀ5‚DÀFÀFÀT À[ÀZÀa ÀgÀfÀnÀtÀsÀx ÀÀ~À5À6À }‚JÀ!œÀ!œ À!° À!¸À!·À!ÂÀ!ÊÀ!ÉÀ!ÙÀ!áÀ!àÀ!ïÀ!÷À!öÀ"À"À"À" À"(À"'À"4 À"<À";À"GÀ"OÀ"NÀ"\À"dÀ"cÀ"rÀ"‚À"�À"“À"�À"œÀ"«À"°À"¯ À }À ~À „À!fÀ ‘À ŠÀ ™À!bÀ ¡À ¨À ­À ©À ¶À ½À ÂÀ ¾À ËÀ ÙÀ çÀ õÀ!À!À!À!-À!;À!IÀ!WÀ!gÀ!‡À!nÀ!hÀ!pÀ"Ë€„À"ÜÀ"ÜÀ"èÀ"ñÀ"ðÀ"ËÀ"ÌÀ#S€‰À#·À#·À#ÄÀ#ÔÀ#ÓÀ#SÀ#TÀ#ZÀ#†À#`À#[À#hÀ#…À#iÀ#pÀ#uÀ#qÀ#xÀ#À#„À#€À#‡À#¥À#ŽÀ#ˆÀ#�À#à�GÀ#ñÀ#ñÀ#ÿÀ$ À$ À$ À$À$À#àÀ#áÀ%+€±À%<À%<À%GÀ%RÀ%QÀ%\À%jÀ%iÀ%q À%xÀ%wÀ%+À%,À%à�À%ñÀ%ñÀ%ÿÀ& À& À&À&!À& À&( À&/À&.À%àÀ%áÀ&ø€èÀ'kÀ'kÀ'|À'ŒÀ'‹À'�À'§À'¦À'µ À'ºÀ'¹À'ÈÀ'ÕÀ'ÔÀ&øÀ&ùÀ&ÿÀ';À'À'À' À':À'À'À'À'À'À'%À'-À'4À'<À'YÀ'CÀ'=À'EÀ'ä€ÈÀ'õÀ'õÀ(À( À( À(À( À(À(* À(1À(0À'äÀ'åÀ(°€ûÀ)5À)5À)HÀ)RÀ)QÀ)_ À)dÀ)cÀ)rÀ)‚À)�À)“À)�À)œÀ(°À(±À(·À(úÀ(½À(¸À(ÅÀ(ùÀ(ÆÀ(ÍÀ(ÒÀ(ÎÀ(ÕÀ(ÜÀ(áÀ(ÝÀ(äÀ(ëÀ(óÀ(ûÀ)#À)À)À) À)¯ˆ)À)ÀÀ)ÀÀ)Ï À)ÖÀ)ÕÀ)àÀ)óÀ)òÀ*À*À* À*À*&À*%À*1À*=À*<À*KÀ*RÀ*QÀ*_ À*fÀ*eÀ)¯À)°À1Ü„ŒÀ1íÀ1íÀ1ÿ À2À2À2À2À2À2/À2<À2;À2FÀ2RÀ2QÀ2]À2iÀ2hÀ2wÀ2~À2}À2‹ À2’À2‘À1ÜÀ1ÝÀ6l�âÀ7\À7\ À7lÀ7|À7{À7�À7—À7–À7¥À7ªÀ7©À7Á À7ÉÀ7ÈÀ7ÓÀ7àÀ7ßÀ7òÀ7ÿÀ7þÀ8 À8À8À8 À8%À8$À83À8AÀ8@À6lÀ6mÀ6sÀ7*À6€À6yÀ6ˆÀ7&À6�À6—À6œÀ6˜À6¥À6³À6ÁÀ6ÎÀ6ÕÀ6ÚÀ6ÖÀ6ãÀ6ñÀ6ÿÀ7 À7À7+À7GÀ72À7,À74À8R€¸À8cÀ8cÀ8n À8tÀ8sÀ8y À8€À8À8†À8ŽÀ8�À8˜À8žÀ8�À8RÀ8SÀ9€ìÀ9�À9�À9¡À9®À9­À9· À9¼À9»À9ÆÀ9ÎÀ9ÍÀ9ÜÀ9âÀ9áÀ9À9À9À9WÀ9À9À9#À9VÀ9$À9+À90À9,À93À9:À9?À9;À9BÀ9JÀ9RÀ9XÀ9~À9dÀ9^À9fÀ9þKÀ:À:À9þÀ9ÿÀ:»Š¸À<À<�N/// An object representing a sequence of recorded graphical operations. /// /// To create a [Picture], use a [PictureRecorder]. /// /// A [Picture] can be placed in a [Scene] using a [SceneBuilder], via /// the [SceneBuilder.addPicture] method. A [Picture] can also be /// drawn into a [Canvas], using the [Canvas.drawPicture] method.À<%�À=5À=5€è/// A callback that is invoked to report a picture creation. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onCreate] directly because [MemoryAllocations] /// allows multiple callbacks.À=B�À>UÀ>U€ë/// A callback that is invoked to report the picture disposal. /// /// It's preferred to use [MemoryAllocations] in flutter/foundation.dart /// than to use [onDispose] directly because [MemoryAllocations] /// allows multiple callbacks.ÀC·€ÇÀDpÀDp€§/// Whether this reference to the underlying picture is [dispose]d. /// /// This only returns a valid value if asserts are enabled, and must not be /// used otherwise.ÀD‚€ïÀE\ÀE\€É/// Returns the approximate number of bytes allocated for this object. /// /// The actual size of this picture may be larger, particularly if it contains /// references to image or other large objects.À>c�DÀ?ˆÀ?ˆ� /// Creates an image from this picture. /// /// The returned image will be `width` pixels wide and `height` pixels high. /// The picture is rasterized within the 0 (left), 0 (top), `width` (right), /// `height` (bottom) bounds. Content outside these bounds is clipped.À?� À?•À?”À?› À? À?ŸÀ?«ƒ‚ÀC ÀC ƒ6/// Synchronously creates a handle to an image of this picture. /// /// {@template dart.ui.painting.Picture.toImageSync} /// The returned image will be `width` pixels wide and `height` pixels high. /// The picture is rasterized within the 0 (left), 0 (top), `width` (right), /// `height` (bottom) bounds. Content outside these bounds is clipped. /// /// The image object is created and returned synchronously, but is rasterized /// asynchronously. If the rasterization fails, an exception will be thrown /// when the image is drawn to a [Canvas]. /// /// If a GPU context is available, this image will be created as GPU resident /// and not copied back to the host. This means the image will be more /// efficient to draw. /// /// If no GPU context is available, the image will be rasterized on the CPU. /// {@endtemplate}ÀC ÀCÀCÀC! ÀC&ÀC%ÀC1€‚ÀC©ÀC©n/// Release the resources used by this object. The object is no longer usable /// after this method is called.ÀEuˆÂÀE€ÀE€ÀEÇ€µÀFiÀFwÀFxÀFyÀFx€™/// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To create a [Picture], use a [PictureRecorder].ÀLZÀL_ÀL_ÀLkÀLu€ýÀLŠÀLŠÀLuÀLvÀMv€�ÀMñÀMñÀMvÀMwÀM‚ÀMƒÀM‰ÀM¨ÀM‘ÀMŠÀM™ÀM§ÀMšÀM¡ÀM¦ÀM¢ÀM©ÀMÜÀM°ÀMªÀM²ÀMÖÀMÐÀMØÀF€�½ÀFšÀFšÀF¢ ÀF§ÀF¦ÀF­ ÀF²ÀF±ÀF€ÀF�ÀHA€°ÀH°ÀH°ÀH¹ ÀH¾ÀH½ÀHÄ ÀHÉÀHÈÀHÐÀHèÀHçÀHAÀHBÀHHÀHÀHPÀHIÀHXÀH~ÀHYÀH`ÀHeÀHaÀHhÀHpÀHxÀH€ÀH›ÀH‡ÀH�ÀH‰ÀHõ�5ÀIÀIÀI ÀIÀIÀI ÀI#ÀI"ÀHõÀHöÀJ.€£ÀJœÀJœÀJ© ÀJ®ÀJ­ÀJ´ ÀJ¹ÀJ¸ÀJÀÀJÈÀJÇÀJ.ÀJ/ÀJ5ÀJjÀJ;ÀJ6ÀJCÀJiÀJDÀJKÀJPÀJLÀJSÀJ[ÀJcÀJkÀJŠÀJrÀJlÀJtÀJÕ€°ÀJæÀJæÀJÕÀJÖÀK‰€ÍÀLKÀLKk/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀKùÀKúÀLÀLÀLÀLÀLÀLÀLÀLÀLÀLÀLÀL9ÀL%ÀLÀL'ÀN +ÀNÀNÀN ÀN ÀN9‡UÀQÔÀQÔƒ‹/// Records a [Picture] containing a sequence of graphical operations. /// /// To begin recording, construct a [Canvas] to record the commands. /// To end recording, use the [PictureRecorder.endRecording] method. /// /// ## Use with the Flutter framework /// /// The Flutter framework's [RendererBinding] provides a hook for creating /// [PictureRecorder] objects ([RendererBinding.createPictureRecorder]) that /// allows tests to hook into the scene creation logic. When creating a /// [PictureRecorder] and [Canvas] that will be used with a [PictureLayer] as /// part of the [Scene] in the context of the Flutter framework, consider /// calling [RendererBinding.createPictureRecorder] instead of calling the /// [PictureRecorder.new] constructor directly. /// /// This does not apply when using a canvas to generate a bitmap for other /// purposes, e.g. for generating a PNG image using [Picture.toImage].ÀQè€×ÀR”ÀR”ÀR£€�/// Creates a new idle PictureRecorder. To associate it with a /// [Canvas] and begin recording, pass this [PictureRecorder] to the /// [Canvas] constructor.ÀRÃ�™ÀTPÀTP�u/// Whether this object is currently recording commands. /// /// Specifically, this returns true if a [Canvas] object has been /// created to record commands and recording has not yet ended via a /// call to [endRecording], and false if either this /// [PictureRecorder] has not yet been associated with a [Canvas], /// or the [endRecording] method has already been called.ÀT`�,ÀU}ÀU}� /// Finishes recording graphical operations. /// /// Returns a picture containing the graphical operations that have been /// recorded thus far. After calling this function, both the picture recorder /// and the canvas objects are invalid and cannot be used further.ÀU�„ÀU›ÀU›ÀUò2ÀUòÀUòÀVÀYCÀYRÀYRÀV�4ÀV¢ÀV¢ÀV�ÀVŽÀV(aÀVzÀVzÀV(ÀV)ÀV/ÀVEÀV5ÀV0ÀV=ÀVDÀV>ÀVFÀVhÀVMÀVGÀVOÀVÅ�æÀVÙÀVÙÀVÅÀVÆÀX¯€�ÀYÀYÀY$ÀY4ÀY3ÀX¯ÀX°ÀX¶ÀXÛÀX¼ÀX·ÀXÄÀXÚÀXÅÀXÌÀXÑÀXÍÀXÔÀXÜÀYÀXãÀXÝÀXåÀY^LÀYqÀYqÀY^ÀY_ÀY®šíÀZ ÀZ T/// A single shadow. /// /// Multiple shadows are stacked together in a [TextStyle].ÀZ‚PÀ[ŸÀ[ŸÀ[¥�p/// Construct a shadow. /// /// The default shadow is a black shadow with zero offset and zero blur. /// Default shadows should be completely covered by the casting element, /// and not be visible. /// /// Transparency should be adjusted through the [color] alpha. /// /// Shadow order matters due to compositing multiple translucent objects not /// being commutative.À[¬(À[²À[±À[ÚÀ[àÀ[ßÀ[ùÀ[ÿÀ[þÀ[¹À[¿À[ÄÀ[ÓÀ[ÅÀ[èÀ[îÀ[ïÀ\ À\À\À\/À\bÀ\)À\À\,À\1 À\h,À\yÀ\yÀ\ŠÀ\¼&À\ÍÀ\ÍÀ\àÀ\æ'À\÷À\÷À] À]À] À]#À]"À]"À]0À].À]3À]8#À]IÀ]IÀ]WÀ]UÀ]ZÀ]_&À]pÀ]pÀ]�À]À]„À]Š€¼À^AÀ^A€¢/// Color that the shadow will be drawn with. /// /// The shadows are shapes composited directly over the base canvas, and do not /// represent optical occlusion.À^K�4À_yÀ_y�/// The displacement of the shadow from the casting element. /// /// Positive x/y offsets will shift the shadow to the right and down, while /// negative offsets shift the shadow to the left and up. The offsets are /// relative to the position of the element that is casting it.À_„iÀ_ãÀ_ãO/// The standard deviation of the Gaussian to convolve with the shadow's shape.Àar€®ÀaòÀaòn/// The [blurRadius] in sigmas instead of logical pixels. /// /// See the sigma argument to [MaskFilter.blur].ÀopGÀo„Ào„ÀopÀoqÀ_ò�|ÀaÀah/// Converts a blur radius in pixels to sigmas. /// /// See the sigma argument to [MaskFilter.blur]. ///Àa& Àa.Àa-Àb$‚‹Àd4Àd4�õ/// Create the [Paint] object that corresponds to this shadow description. /// /// The [offset] is not represented in the [Paint] object. /// To honor this as well, the shape should be translated by [offset] before /// being filled using this [Paint]. /// /// This class does not provide a way to disable shadows to avoid /// inconsistencies in shadow blur rendering, primarily as a method of /// reducing test flakiness. [toPaint] should be overridden in subclasses to /// provide this functionality.Àd³€ÜÀeÀe[/// Returns a new shadow with its [offset] and [blurRadius] scaled by the given /// factor.Àe Àe(Àe'Àe“…×Ài�Ài�ƒÔ/// Linearly interpolate between two shadows. /// /// If either shadow is null, this function linearly interpolates from /// a shadow that matches the other shadow in color but has a zero /// offset and a zero blurRadius. /// /// {@template dart.ui.shadow.lerp} /// The `t` argument represents position on the timeline, with 0.0 meaning /// that the interpolation has not started, returning `a` (or something /// equivalent to `a`), 1.0 meaning that the interpolation has finished, /// returning `b` (or something equivalent to `b`), and values in between /// meaning that the interpolation is at the relevant point on the timeline /// between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and /// 1.0, so negative values and values greater than 1.0 are valid (and can /// easily be generated by curves such as [Curves.elasticInOut]). /// /// Values for `t` are usually obtained from an [Animation], such as /// an [AnimationController]. /// {@endtemplate}Ài¢ Ài«ÀiªÀi­ Ài¶ÀiµÀi¸ÀiÀÀi¿ÀknƒÀl3Àl3€¥/// Linearly interpolate between two lists of shadows. /// /// If the lists differ in length, excess items are lerped with null. /// /// {@macro dart.ui.shadow.lerp}Àl<ÀlKÀlJÀlMÀl\Àl[Àl^ÀlfÀleÀny€óÀn“Àn“Àn– ÀnžÀn�ÀnyÀnzÀpuƒÔÀp…Àp…Àp”Àp£Àp¢ÀtMLÀt`Àt`ÀtMÀtNÀt�ŽÌÀuXÀuX€¯/// A handle to a read-only byte buffer that is managed by the engine. /// /// The creator of this object is responsible for calling [dispose] when it is /// no longer needed.Àu� Àu�ÀuœÀu�ÀužÀu�ÀuŸ Àu¥Àu¤À~  À~¤À~¤À~°À~µÀ~µÀ~ÆÀ~ONÀ~‹À~‹1/// The length, in bytes, of the underlying data.À~Ð�ÀYÀYy/// Whether [dispose] has been called. /// /// This must only be used when asserts are enabled. Otherwise, it will throw.Àu±�gÀv3Àv3^/// Creates a copy of the data from a [Uint8List] suitable for internal use /// in the engine.ÀvAÀvLÀvKÀwƒGÀw´Àw´r/// Create a buffer from the asset with key [assetKey]. /// /// Throws an [Exception] if the asset does not exist.Àw¾ÀwÆÀwÅÀzg�÷ÀzöÀzöi/// Create a buffer from the file with [path]. /// /// Throws an [Exception] if the asset does not exist.À{ À{ À{ À|b€•À|ÇÀ|ÇÀ|ÍÀ|ØÀ|×À|ÝÀ|îÀ|íÀ|bÀ|cÀ|iÀ|‘À|qÀ|jÀ|yÀ|�À|zÀ|‚À|ŠÀ|’À|²À|™À|“À|›À|û€§À}iÀ}iÀ}xÀ}€À}À}‰À}™À}˜À|ûÀ|üÀ}À}*À} À}À}À})À}À}À}#À}+À}TÀ}2À},À}4À}¦€¥À~À~À~!À~)À~(À~2À~BÀ~AÀ}¦À}§À}­À}ÕÀ}µÀ}®À}½À}ÔÀ}¾À}ÆÀ}ÎÀ}ÖÀ}þÀ}ÝÀ}×À}ßÀë‚£À‚À‚‚/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// The underlying memory allocated by this object will be retained beyond /// this call if it is still needed by another object that has not been /// disposed. For example, an [ImageDescriptor] that has not been disposed /// may still retain a reference to the memory from this buffer even if it /// has been disposed. Freeing that memory requires disposing all resources /// that may still hold it.À‚’€ÕÀƒ\Àƒ\k/// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).ÀƒÀƒÀƒ Àƒ&ÀƒÀƒ ÀƒÀƒ%ÀƒÀƒÀƒ$Àƒ Àƒ'ÀƒJÀƒ.Àƒ(Àƒ0Àƒk‰‰À„0À„0€µ/// A descriptor of data that can be turned into an [Image] via a [Codec]. /// /// Use this class to determine the height, width, and byte size of image data /// before decoding it.À„D‚çÀ†lÀ†{À†|À†À†|�Ð/// Creates an image descriptor from raw image pixels. /// /// The `pixels` parameter is the pixel data. They are packed in bytes in the /// order described by `pixelFormat`, then grouped in rows, from left to right, /// then top to bottom. /// /// The `rowBytes` parameter is the number of bytes consumed by each row of /// pixels in the data buffer. If unspecified, it defaults to `width` multiplied /// by the number of bytes per pixel in the provided `format`.À†…À†–À†•À†£À†±À†°À†»À†ÉÀ†ÈÀ†Ô À†ÚÀ†ÙÀ†ç À†ýÀ†üÀˆ–yÀ‰ À‰ d/// The width, in pixels, of the image. /// /// On the Web, this is only supported for [raw] images.À‰{À‰‡À‰‡e/// The height, in pixels, of the image. /// /// On the Web, this is only supported for [raw] images.À‰’€…ÀŠ ÀŠ h/// The number of bytes per pixel in the image. /// /// On web, this is only supported for [raw] images.À‡/�cÀ‡™À‡™H/// Creates an image descriptor from encoded data in a supported format.À‡¡À‡²À‡±ÀŠ€øÀ‹ À‹ €Þ/// Release the resources used by this object. The object is no longer usable /// after this method is called. /// /// This can't be a leaf call because the native function calls Dart API /// (Dart_SetNativeInstanceField).À‹�ÛÀŒºÀŒº�‚/// Creates a [Codec] object which is suitable for decoding the data in the /// buffer to an [Image]. /// /// If only one of targetWidth or targetHeight are specified, the other /// dimension will be scaled according to the aspect ratio of the supplied /// dimension. /// /// If either targetWidth or targetHeight is less than or equal to zero, it /// will be treated as if it is null.ÀŒÌÀŒÒÀŒÑÀŒÞÀŒäÀŒãÀŒö�qÀ�À�À�XÀ�XÀ�nÀ�oÀ�pÀ�oÀ�wƒ£À�—À�­À�®À�±À�®�Ð/// Creates an image descriptor from raw image pixels. /// /// The `pixels` parameter is the pixel data. They are packed in bytes in the /// order described by `pixelFormat`, then grouped in rows, from left to right, /// then top to bottom. /// /// The `rowBytes` parameter is the number of bytes consumed by each row of /// pixels in the data buffer. If unspecified, it defaults to `width` multiplied /// by the number of bytes per pixel in the provided `format`.À�·À�ÈÀ�ÇÀ�ÕÀ�ãÀ�âÀ�íÀ�ûÀ�úÀ� À� À� À� À�/À�.À’ò À’÷À’÷À“° À“µÀ“µÀ”tÀ”yÀ”yÀ“x4À“ŒÀ“ŒÀ“xÀ“yÀ”97À”MÀ”MÀ”9À”:À•LÀ•&À•&À•À• À‘€²À‘‘À‘‘À‘žÀ‘¯À‘®À‘¶À‘ÇÀ‘ÆÀ‘À‘À‘%À‘TÀ‘-À‘&À‘5À‘SÀ‘6À‘>À‘EÀ‘JÀ‘FÀ‘MÀ‘UÀ‘|À‘\À‘VÀ‘^À‘Ô�À’[À’[À’iÀ’zÀ’yÀ’ŒÀ’�À’œÀ’¨ À’­À’¬À’· À’¼À’»À’Ç À’ÌÀ’ËÀ’ÙÀ’ÞÀ’ÝÀ‘ÔÀ‘ÕÀ‘ÛÀ’À‘áÀ‘ÜÀ‘éÀ’À‘êÀ‘òÀ‘úÀ’À’À’À’À’BÀ’"À’À’$À“rÀ“hÀ“hÀ“À“À“ À“'À“À“ À“À“&À“À“ À“%À“!À“(À“WÀ“/À“)À“1À“QÀ“KÀ“SÀ“ÁtÀ”(À”(À“ÁÀ“ÂÀ“ÈÀ“æÀ“ÏÀ“ÉÀ“×À“åÀ“ØÀ“ßÀ“äÀ“àÀ“çÀ”À“îÀ“èÀ“ðÀ”À” À”À”Œ€‚À”úÀ”úÀ”ŒÀ”�À”“À”±À”šÀ””À”¢À”°À”£À”ªÀ”¯À”«À”²À”éÀ”¹À”³À”»À”ãÀ”ÝÀ”åÀ•bpÀ•ÈÀ•ÈÀ•bÀ•cÀ•nÀ•oÀ•uÀ•’À•{À•vÀ•ƒÀ•‘À•„À•‹À•�À•ŒÀ•“À•¶À•šÀ•”À•œÀ•Öƒ(À•ðÀ•ðÀ–À–À–À–À–À–À•ÖÀ•×À™€ÇÀ™„À™„À™–À™�À™œÀ™¦À™«À™ªÀ™·À™¼À™»À™À™À™ À™<À™À™ À™À™;À™À™À™$À™ À™'À™/À™6À™=À™rÀ™IÀ™CÀ™KÀ™Í€˜À™àÀ™àÀ™ÍÀ™ÎÀ¦ZƒùÀ§ÖÀ§Ö�u/// An exception thrown by [Canvas.drawImage] and related methods when drawing /// an [Image] created via [Picture.toImageSync] that is in an invalid state. /// /// This exception may be thrown if the requested image dimensions exceeded the /// maximum 2D texture size allowed by the GPU, or if no GPU surface or context /// was available for rasterization at request time.À¨ BÀ¨À¨0À¨1À¨2À¨1À¨3 À¨9À¨8À¨B À¨HÀ¨GÀ¨SIÀ¨•À¨•2/// A string containing details about the failure.À¨¡iÀ©À©O/// If available, the stack trace at the time [Picture.toImageSync] was called.À©�BÀ©"À©"À©À©ÀLfÀOõÀW�ÀW�‹/// Algorithms to use when painting on the canvas. /// /// When drawing a shape or image onto a canvas, different algorithms can be /// used to blend the pixels. The different values of [BlendMode] specify /// different such algorithms. /// /// Each algorithm has two inputs, the _source_, which is the image being drawn, /// and the _destination_, which is the image into which the source image is /// being composited. The destination is often thought of as the _background_. /// The source and destination both have four color channels, the red, green, /// blue, and alpha channels. These are typically represented as numbers in the /// range 0.0 to 1.0. The output of the algorithm also has these same four /// channels, with values computed from the source and destination. /// /// The documentation of each value below describes how the algorithm works. In /// each case, an image shows the output of blending a source image with a /// destination image. In the images below, the destination is represented by an /// image with horizontal lines and an opaque landscape photograph, and the /// source is represented by an image with vertical lines (the same lines but /// rotated) and a bird clip-art image. The [src] mode shows only the source /// image, and the [dst] mode shows only the destination image. In the /// documentation below, the transparency is illustrated by a checkerboard /// pattern. The [clear] mode drops both the source and destination, resulting /// in an output that is entirely transparent (illustrated by a solid /// checkerboard pattern). /// /// The horizontal and vertical bars in these images show the red, green, and /// blue channels with varying opacity levels, then all three color channels /// together with those same varying opacity levels, then all three color /// channels set to zero with those varying opacity levels, then two bars showing /// a red/green/blue repeating gradient, the first with full opacity and the /// second with partial opacity, and finally a bar with the three color channels /// set to zero but the opacity varying in a repeating gradient. /// /// ## Application to the [Canvas] API /// /// When using [Canvas.saveLayer] and [Canvas.restore], the blend mode of the /// [Paint] given to the [Canvas.saveLayer] will be applied when /// [Canvas.restore] is called. Each call to [Canvas.saveLayer] introduces a new /// layer onto which shapes and images are painted; when [Canvas.restore] is /// called, that layer is then composited onto the parent layer, with the source /// being the most-recently-drawn shapes and images, and the destination being /// the parent layer. (For the first [Canvas.saveLayer] call, the parent layer /// is the canvas itself.) /// /// See also: /// /// * [Paint.blendMode], which uses [BlendMode] to define the compositing /// strategy.ÀX8€îÀY!ÀY!€Þ/// Drop both the source and destination images, leaving nothing. /// /// This corresponds to the "clear" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_clear.png)ÀY+�HÀZpÀZp�4/// Drop the destination image, only paint the source image. /// /// Conceptually, the destination is first cleared, then the source image is /// painted. /// /// This corresponds to the "Copy" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_src.png)ÀZx�MÀ[ÂÀ[Â�9/// Drop the source image, only paint the destination image. /// /// Conceptually, the source image is discarded, leaving the destination /// untouched. /// /// This corresponds to the "Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dst.png)À[Ê�ìÀ]¯À]¯�Ð/// Composite the source image over the destination image. /// /// This is the default value. It represents the most intuitive case, where /// shapes are painted on top of what is below, with transparent areas showing /// the destination layer. /// /// This corresponds to the "Source over Destination" Porter-Duff operator, /// also known as the Painter's Algorithm. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcOver.png)À]»�­À_aÀ_a�‘/// Composite the source image under the destination image. /// /// This is the opposite of [srcOver]. /// /// This corresponds to the "Destination over Source" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstOver.png) /// /// This is useful when the source image should have been painted before the /// destination image, but could not be.À_m‚šÀbÀb‚x/// Show the source image, but only where the two images overlap. The /// destination image is not rendered, it is treated merely as a mask. The /// color channels of the destination are ignored, only the opacity has an /// effect. /// /// To show the destination image instead, consider [dstIn]. /// /// To reverse the semantic of the mask (only showing the source where the /// destination is absent, rather than where it is present), consider /// [srcOut]. /// /// This corresponds to the "Source in Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcIn.png)Àb ‚„Àd‹Àd‹‚f/// Show the destination image, but only where the two images overlap. The /// source image is not rendered, it is treated merely as a mask. The color /// channels of the source are ignored, only the opacity has an effect. /// /// To show the source image instead, consider [srcIn]. /// /// To reverse the semantic of the mask (only showing the source where the /// destination is present, rather than where it is absent), consider [dstOut]. /// /// This corresponds to the "Destination in Source" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstIn.png)Àd•‚˜Àg'Àg'‚y/// Show the source image, but only where the two images do not overlap. The /// destination image is not rendered, it is treated merely as a mask. The color /// channels of the destination are ignored, only the opacity has an effect. /// /// To show the destination image instead, consider [dstOut]. /// /// To reverse the semantic of the mask (only showing the source where the /// destination is present, rather than where it is absent), consider [srcIn]. /// /// This corresponds to the "Source out Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcOut.png)Àg2‚ŽÀiºÀiº‚o/// Show the destination image, but only where the two images do not overlap. The /// source image is not rendered, it is treated merely as a mask. The color /// channels of the source are ignored, only the opacity has an effect. /// /// To show the source image instead, consider [srcOut]. /// /// To reverse the semantic of the mask (only showing the destination where the /// source is present, rather than where it is absent), consider [dstIn]. /// /// This corresponds to the "Destination out Source" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstOut.png)ÀiÅ‚gÀl%Àl%‚E/// Composite the source image over the destination image, but only where it /// overlaps the destination. /// /// This corresponds to the "Source atop Destination" Porter-Duff operator. /// /// This is essentially the [srcOver] operator, but with the output's opacity /// channel being set to that of the destination image instead of being a /// combination of both image's opacity channels. /// /// For a variant with the destination on top instead of the source, see /// [dstATop]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_srcATop.png)Àl1‚]Àn‡Àn‡‚;/// Composite the destination image over the source image, but only where it /// overlaps the source. /// /// This corresponds to the "Destination atop Source" Porter-Duff operator. /// /// This is essentially the [dstOver] operator, but with the output's opacity /// channel being set to that of the source image instead of being a /// combination of both image's opacity channels. /// /// For a variant with the source on top instead of the destination, see /// [srcATop]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_dstATop.png)Àn“�;ÀoËÀoË�+/// Apply a bitwise `xor` operator to the source and destination images. This /// leaves transparency where they would overlap. /// /// This corresponds to the "Source xor Destination" Porter-Duff operator. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_xor.png)ÀoÓƒOÀsÀsƒ,/// Sum the components of the source and destination images. /// /// Transparency in a pixel of one of the images reduces the contribution of /// that image to the corresponding output pixel, as if the color of that /// pixel in that image was darker. /// /// This corresponds to the "Source plus Destination" Porter-Duff operator. /// /// This is the right blend mode for cross-fading between two images. Consider /// two images A and B, and an interpolation time variable _t_ (from 0.0 to /// 1.0). To cross fade between them, A should be drawn with opacity 1.0 - _t_ /// into a new layer using [BlendMode.srcOver], and B should be drawn on top /// of it, at opacity _t_, into the same layer, using [BlendMode.plus]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_plus.png)Às'ƒVÀvuÀvuƒ'/// Multiply the color components of the source and destination images. /// /// This can only result in the same or darker colors (multiplying by white, /// 1.0, results in no change; multiplying by black, 0.0, results in black). /// /// When compositing two opaque images, this has similar effect to overlapping /// two transparencies on a projector. /// /// For a variant that also multiplies the alpha channel, consider [multiply]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_modulate.png) /// /// See also: /// /// * [screen], which does a similar computation but inverted. /// * [overlay], which combines [modulate] and [screen] to favor the /// destination image. /// * [hardLight], which combines [modulate] and [screen] to favor the /// source image.ÀvË…!À{æÀ{æ„â/// Multiply the inverse of the components of the source and destination /// images, and inverse the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// This is essentially the same as [modulate] blend mode, but with the values /// of the colors inverted before the multiplication and the result being /// inverted back before rendering. /// /// This can only result in the same or lighter colors (multiplying by black, /// 1.0, results in no change; multiplying by white, 0.0, results in white). /// Similarly, in the alpha channel, it can only result in more opaque colors. /// /// This has similar effect to two projectors displaying their images on the /// same screen simultaneously. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_screen.png) /// /// See also: /// /// * [modulate], which does a similar computation but without inverting the /// values. /// * [overlay], which combines [modulate] and [screen] to favor the /// destination image. /// * [hardLight], which combines [modulate] and [screen] to favor the /// source image.À|ƒÞÀßÀ߃®/// Multiply the components of the source and destination images after /// adjusting them to favor the destination. /// /// Specifically, if the destination value is smaller, this multiplies it with /// the source value, whereas is the source value is smaller, it multiplies /// the inverse of the source value with the inverse of the destination value, /// then inverts the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_overlay.png) /// /// See also: /// /// * [modulate], which always multiplies the values. /// * [screen], which always multiplies the inverses of the values. /// * [hardLight], which is similar to [overlay] but favors the source image /// instead of the destination image.Àë�7À�À��"/// Composite the source and destination image by choosing the lowest value /// from each color channel. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_darken.png)À�'�:À‚ZÀ‚Z�$/// Composite the source and destination image by choosing the highest value /// from each color channel. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_lighten.png)À‚f�{Àƒ×Àƒ×�b/// Divide the destination by the inverse of the source. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_colorDodge.png)Àƒæ�‘À…nÀ…n�y/// Divide the inverse of the destination by the source, and inverse the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_colorBurn.png)À…|ƒâÀ‰UÀ‰Uƒ°/// Multiply the components of the source and destination images after /// adjusting them to favor the source. /// /// Specifically, if the source value is smaller, this multiplies it with the /// destination value, whereas is the destination value is smaller, it /// multiplies the inverse of the destination value with the inverse of the /// source value, then inverts the result. /// /// Inverting the components means that a fully saturated channel (opaque /// white) is treated as the value 0.0, and values normally treated as 0.0 /// (black, transparent) are treated as 1.0. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_hardLight.png) /// /// See also: /// /// * [modulate], which always multiplies the values. /// * [screen], which always multiplies the inverses of the values. /// * [overlay], which is similar to [hardLight] but favors the destination /// image instead of the source image.À‰c�sÀŠÍÀŠÍ�U/// Use [colorDodge] for source values below 0.5 and [colorBurn] for source /// values above 0.5. /// /// This results in a similar but softer effect than [overlay]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_softLight.png) /// /// See also: /// /// * [color], which is a more subtle tinting effect.ÀŠÛ�ÅÀŒ–ÀŒ–�¤/// Subtract the smaller value from the bigger value for each channel. /// /// Compositing black has no effect; compositing white inverts the colors of /// the other image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// The effect is similar to [exclusion] but harsher. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_difference.png)ÀŒ¥�ÔÀŽpÀŽp�²/// Subtract double the product of the two images from the sum of the two /// images. /// /// Compositing black has no effect; compositing white inverts the colors of /// the other image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. /// /// The effect is similar to [difference] but softer. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_exclusion.png)ÀŽ~‚ÙÀ‘OÀ‘O‚´/// Multiply the components of the source and destination images, including /// the alpha channel. /// /// This can only result in the same or darker colors (multiplying by white, /// 1.0, results in no change; multiplying by black, 0.0, results in black). /// /// Since the alpha channel is also multiplied, a fully-transparent pixel /// (opacity 0.0) in one image results in a fully transparent pixel in the /// output. This is similar to [dstIn], but with the colors combined. /// /// For a variant that multiplies the colors but does not multiply the alpha /// channel, consider [modulate]. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_multiply.png)À‘w‚÷À”kÀ”k‚Ñ/// Take the hue of the source image, and the saturation and luminosity of the /// destination image. /// /// The effect is to tint the destination image with the source image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their hue from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_hue.png) /// /// See also: /// /// * [color], which is a similar but stronger effect as it also applies the /// saturation of the source image. /// * [HSVColor], which allows colors to be expressed using Hue rather than /// the red/green/blue channels of [Color].À”s‚kÀ–ÔÀ–Ô‚D/// Take the saturation of the source image, and the hue and luminosity of the /// destination image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their saturation from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_saturation.png) /// /// See also: /// /// * [color], which also applies the hue of the source image. /// * [luminosity], which applies the luminosity of the source image to the /// destination.À–ã‚ãÀ™ÁÀ™Á‚½/// Take the hue and saturation of the source image, and the luminosity of the /// destination image. /// /// The effect is to tint the destination image with the source image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their hue and saturation from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_color.png) /// /// See also: /// /// * [hue], which is a similar but weaker effect. /// * [softLight], which is a similar tinting effect but also tints white. /// * [saturation], which only applies the saturation of the source image.À™Ë‚�ÀœNÀœN‚d/// Take the luminosity of the source image, and the hue and saturation of the /// destination image. /// /// The opacity of the output image is computed in the same way as for /// [srcOver]. Regions that are entirely transparent in the source image take /// their luminosity from the destination. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/blend_mode_luminosity.png) /// /// See also: /// /// * [saturation], which applies the saturation of the source image to the /// destination. /// * [ImageFilter.blur], which can be used with [BackdropFilter] for a /// related effect.Àœ]Œ{À¡×À¡×…t/// Quality levels for image sampling in [ImageFilter] and [Shader] objects that sample /// images and for [Canvas] operations that render images. /// /// When scaling up typically the quality is lowest at [none], higher at [low] and [medium], /// and for very large scale factors (over 10x) the highest at [high]. /// /// When scaling down, [medium] provides the best quality especially when scaling an /// image to less than half its size or for animating the scale factor between such /// reductions. Otherwise, [low] and [high] provide similar effects for reductions of /// between 50% and 100% but the image may lose detail and have dropouts below 50%. /// /// To get high quality when scaling images up and down, or when the scale is /// unknown, [medium] is typically a good balanced choice. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/filter_quality.png) /// /// When building for the web using the `--web-renderer=html` option, filter /// quality has no effect. All images are rendered using the respective /// browser's default setting. /// /// See also: /// /// * [Paint.filterQuality], which is used to pass [FilterQuality] to the /// engine while using drawImage calls on a [Canvas]. /// * [ImageShader]. /// * [ImageFilter.matrix]. /// * [Canvas.drawImage]. /// * [Canvas.drawImageRect]. /// * [Canvas.drawImageNine]. /// * [Canvas.drawAtlas].À¢h€ÙÀ£=À£=€Ì/// The fastest filtering method, albeit also the lowest quality. /// /// This value results in a "Nearest Neighbor" algorithm which just /// repeats or eliminates pixels as an image is scaled up or down.À£F€²À£õÀ£õ€¦/// Better quality than [none], faster than [medium]. /// /// This value results in a "Bilinear" algorithm which smoothly /// interpolates between pixels in an image.À£ý‚ŽÀ¦…À¦…‚k/// The best all around filtering method that is only worse than [high] /// at extremely large scale factors. /// /// This value improves upon the "Bilinear" algorithm specified by [low] /// by utilizing a Mipmap that pre-computes high quality lower resolutions /// of the image at half (and quarter and eighth, etc.) sizes and then /// blends between those to prevent loss of detail at small scale sizes. /// /// {@template dart.ui.filterQuality.seeAlso} /// See also: /// /// * [FilterQuality] class-level documentation that goes into detail about /// relative qualities of the constant values. /// {@endtemplate}À¦�‚EÀ¨ÑÀ¨Ñ‚&/// Best possible quality when scaling up images by scale factors larger than /// 5-10x. /// /// When images are scaled down, this can be worse than [medium] for scales /// smaller than 0.5x, or when animating the scale factor. /// /// This option is also the slowest. /// /// This value results in a standard "Bicubic" algorithm which uses a 3rd order /// equation to smooth the abrupt transitions between pixels while preserving /// some of the sense of an edge and avoiding sharp peaks in the result. /// /// {@macro dart.ui.filterQuality.seeAlso}À¨Ú†ÆÀ©ÍÀ©Í€±/// Styles to use for line endings. /// /// See also: /// /// * [Paint.strokeCap] for how this value is used. /// * [StrokeJoin] for the different kinds of line segment joins.À©Û�…À«\À«\�r/// Begin and end contours with a flat edge and no extension. /// /// ![A butt cap ends line segments with a square end that stops at the end of /// the line segment.](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/butt_cap.png) /// /// Compare to the [square] cap, which has the same shape, but extends past /// the end of the line by half a stroke width.À«e�ËÀ­+À­+�µ/// Begin and end contours with a semi-circle extension. /// /// ![A round cap adds a rounded end to the line segment that protrudes /// by one half of the thickness of the line (which is the radius of the cap) /// past the end of the segment.](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_cap.png) /// /// The cap is colored in the diagram above to highlight it: in normal use it /// is the same color as the line.À­5‚hÀ¯—À¯—‚I/// Begin and end contours with a half square extension. This is /// similar to extending each contour by half the stroke width (as /// given by [Paint.strokeWidth]). /// /// ![A square cap has a square end that effectively extends the line length /// by half of the stroke width.](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/square_cap.png) /// /// The cap is colored in the diagram above to highlight it: in normal use it /// is the same color as the line. /// /// Compare to the [butt] cap, which has the same shape, but doesn't extend /// past the end of the line.À¯¢ˆÀ±LÀ±L�g/// Styles to use for line segment joins. /// /// This only affects line joins for polygons drawn by [Canvas.drawPath] and /// rectangles, not points drawn as lines with [Canvas.drawPoints]. /// /// See also: /// /// * [Paint.strokeJoin] and [Paint.strokeMiterLimit] for how this value is /// used. /// * [StrokeCap] for the different kinds of line endings.À±[‚YÀ³¯À³¯‚7/// Joins between line segments form sharp corners. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/miter_4_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [Paint.strokeJoin], used to set the line segment join style to this /// value. /// * [Paint.strokeMiterLimit], used to define when a miter is drawn instead /// of a bevel when the join is set to this value.À³¹�ÌÀµ€Àµ€�®/// Joins between line segments are semi-circular. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/round_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [Paint.strokeJoin], used to set the line segment join style to this /// value.ÀµŠ‚À·œÀ·œ�÷/// Joins between line segments connect the corners of the butt ends of the /// line segments to give a beveled appearance. /// /// {@animation 300 300 https://flutter.github.io/assets-for-api-docs/assets/dart-ui/bevel_join.mp4} /// /// The center of the line segment is colored in the diagram above to /// highlight the join, but in normal usage the join is the same color as the /// line. /// /// See also: /// /// * [Paint.strokeJoin], used to set the line segment join style to this /// value.À·¦‚ÖÀ¸<À¸> getFirstPixel(ui.Image image) async { /// final ByteData data = /// (await image.toByteData(format: ui.ImageByteFormat.rawExtendedRgba128))!; /// final Float32List floats = Float32List.view(data.buffer); /// return { /// 'r': floats[0], /// 'g': floats[1], /// 'b': floats[2], /// 'a': floats[3], /// }; /// } /// ```À�‚¾À"<À"<‚œ/// PNG format. /// /// A loss-less compression format for images. This format is well suited for /// images with hard edges, such as screenshots or sprites, and images with /// text. Transparency is supported. The PNG format supports images up to /// 2,147,483,647 pixels in either dimension, though in practice available /// memory provides a more immediate limitation on maximum image size. /// /// PNG images normally use the `.png` file extension and the `image/png` MIME /// type. /// /// See also: /// /// * , the Wikipedia page on PNG. /// * , the PNG standard.À"Dƒ?À"ˆÀ"ˆ>/// The format of pixel data given to [decodeImageFromPixels].À"˜€ÙÀ#iÀ#i€Ê/// Each pixel is 32 bits, with the highest 8 bits encoding red, the next 8 /// bits encoding green, the next 8 bits encoding blue, and the lowest 8 bits /// encoding alpha. Premultiplied alpha is used.À#v€ÙÀ$GÀ$G€Ê/// Each pixel is 32 bits, with the highest 8 bits encoding blue, the next 8 /// bits encoding green, the next 8 bits encoding red, and the lowest 8 bits /// encoding alpha. Premultiplied alpha is used.À$T�,À%uÀ%u�/// Each pixel is 128 bits, where each color component is a 32 bit float that /// is normalized across the sRGB gamut. The first float is the red /// component, followed by: green, blue and alpha. Premultiplied alpha isn't /// used, matching [ImageByteFormat.rawExtendedRgba128].À�ðƒ•Àž�Àž�€—/// Determines the winding rule that decides how the interior of a [Path] is /// calculated. /// /// This enum is used by the [Path.fillType] property.Àžž�¯À FÀ F�—/// The interior is defined by a non-zero sum of signed edge crossings. /// /// For a given point, the point is considered to be on the inside of the path /// if a line drawn from the point to infinity crosses lines going clockwise /// around the point a different number of times than it crosses lines going /// counter-clockwise around that point. /// /// See: À R�0À¡{À¡{�/// The interior is defined by an odd number of edge crossings. /// /// For a given point, the point is considered to be on the inside of the path /// if a line drawn from the point to infinity crosses an odd number of lines. /// /// See: À¡‡ˆPÀ¢;À¢;€ˆ/// Strategies for combining paths. /// /// See also: /// /// * [Path.combine], which uses this enum to decide how to combine two paths.À¢M�£À£æÀ£æ�„/// Subtract the second path from the first path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be a crescent portion of the /// first circle that was not overlapped by the second circle. /// /// See also: /// /// * [reverseDifference], which is the same but subtracting the first path /// from the second.À£õ�‡À¥sÀ¥s�k/// Create a new path that is the intersection of the two paths, leaving the /// overlapping pieces of the path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be only the overlapping portion /// of the two circles. /// /// See also: /// * [xor], which is the inverse of this operationÀ¥��$À¦ À¦ �/// Create a new path that is the union (inclusive-or) of the two paths. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be a figure-eight like shape /// matching the outer boundaries of both circles.À¦ª�‚À¨)À¨)�n/// Create a new path that is the exclusive-or of the two paths, leaving /// everything but the overlapping pieces of the path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the figure-eight like shape less the overlapping parts /// /// See also: /// * [intersect], which is the inverse of this operationÀ¨1�£À©ÃÀ©Ã�}/// Subtract the first path from the second path. /// /// For example, if the two paths are overlapping circles of equal diameter /// but differing centers, the result would be a crescent portion of the /// second circle that was not overlapped by the first circle. /// /// See also: /// /// * [difference], which is the same but subtracting the second path /// from the first.À8Ÿƒ{À9À94/// Styles to use for blurs in [MaskFilter] objects.À9\€–À9ìÀ9쀋/// Fuzzy inside and outside. This is useful for painting shadows that are /// offset from the shape that ostensibly is casting the shadow.À9÷€ÍÀ:¿À:¿€Á/// Solid inside, fuzzy outside. This corresponds to drawing the shape, and /// additionally drawing the blur. This can make objects appear brighter, /// maybe even as if they were fluorescent.À:É€æÀ;ªÀ;ª€Ú/// Nothing inside, fuzzy outside. This is useful for painting shadows for /// partially transparent shapes, when they are painted separately but without /// an offset, so that the shadow doesn't paint below the shape.À;´cÀ<À<Y/// Fuzzy inside, nothing outside. This can make shapes appear to be lit from /// within.À¯_“À¶2À¶2†’/// Defines what happens at the edge of a gradient or the sampling of a source image /// in an [ImageFilter]. /// /// A gradient is defined along a finite inner area. In the case of a linear /// gradient, it's between the parallel lines that are orthogonal to the line /// drawn between two points. In the case of radial gradients, it's the disc /// that covers the circle centered on a particular point up to a given radius. /// /// An image filter reads source samples from a source image and performs operations /// on those samples to produce a result image. An image defines color samples only /// for pixels within the bounds of the image but some filter operations, such as a blur /// filter, read samples over a wide area to compute the output for a given pixel. Such /// a filter would need to combine samples from inside the image with hypothetical /// color values from outside the image. /// /// This enum is used to define how the gradient or image filter should treat the regions /// outside that defined inner area. /// /// See also: /// /// * [painting.Gradient], the superclass for [LinearGradient] and /// [RadialGradient], as used by [BoxDecoration] et al, which works in /// relative coordinates and can create a [Shader] representing the gradient /// for a particular [Rect] on demand. /// * [dart:ui.Gradient], the low-level class used when dealing with the /// [Paint.shader] property directly, with its [Gradient.linear] and /// [Gradient.radial] constructors. /// * [dart:ui.ImageFilter.blur], an ImageFilter that may sometimes need to /// read samples from outside an image to combine with the pixels near the /// edge of the image.À¶?‚£À¸ÝÀ¸Ý‚‡/// Samples beyond the edge are clamped to the nearest color in the defined inner area. /// /// A gradient will paint all the regions outside the inner area with the /// color at the end of the color stop list closest to that region. /// /// An image filter will substitute the nearest edge pixel for any samples taken from /// outside its source image. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_clamp_sweep.png)À¸çƒ5À¼À¼ƒ/// Samples beyond the edge are repeated from the far end of the defined area. /// /// For a gradient, this technique is as if the stop points from 0.0 to 1.0 were then /// repeated from 1.0 to 2.0, 2.0 to 3.0, and so forth (and for linear gradients, similarly /// from -1.0 to 0.0, -2.0 to -1.0, etc). /// /// An image filter will treat its source image as if it were tiled across the enlarged /// sample space from which it reads, each tile in the same orientation as the base image. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_repeated_sweep.png)À¼!ƒ|À¿—À¿—ƒY/// Samples beyond the edge are mirrored back and forth across the defined area. /// /// For a gradient, this technique is as if the stop points from 0.0 to 1.0 were then /// repeated backwards from 2.0 to 1.0, then forwards from 2.0 to 3.0, then backwards /// again from 4.0 to 3.0, and so forth (and for linear gradients, similarly in the /// negative direction). /// /// An image filter will treat its source image as tiled in an alternating forwards and /// backwards or upwards and downwards direction across the sample space from which /// it is reading. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_mirror_sweep.png)À¿¢‚½ÀÂZÀÂZ‚Ÿ/// Samples beyond the edge are treated as transparent black. /// /// A gradient will render transparency over any region that is outside the circle of a /// radial gradient or outside the parallel lines that define the inner area of a linear /// gradient. /// /// An image filter will substitute transparent black for any sample it must read from /// outside its source image. /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_linear.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_radial.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/dart-ui/tile_mode_decal_sweep.png)ÀP‚ÃÀ À w/// Defines how a list of points is interpreted when drawing a set of triangles. /// /// Used by [Canvas.drawVertices].ÀQÀaÀaE/// Draw each sequence of three points as the vertices of a triangle.Ào[À½À½K/// Draw each sliding window of three points as the vertices of a triangle.ÀÏ�AÀÀ�)/// Draw the first point and each sliding window of two points as the vertices /// of a triangle. /// /// This mode is not natively supported by most backends, and is instead /// implemented by unrolling the points into the equivalent /// [VertexMode.triangles], which is generally more efficient.ÀI`„%ÀJ/ÀJ/€�/// Defines how a list of points is interpreted when drawing a set of points. /// /// Used by [Canvas.drawPoints] and [Canvas.drawRawPoints].ÀJ=�·ÀKîÀKî�ž/// Draw each point separately. /// /// If the [Paint.strokeCap] is [StrokeCap.round], then each point is drawn /// as a circle with the diameter of the [Paint.strokeWidth], filled as /// described by the [Paint] (ignoring [Paint.style]). /// /// Otherwise, each point is drawn as an axis-aligned square with sides of /// length [Paint.strokeWidth], filled as described by the [Paint] (ignoring /// [Paint.style]).ÀKù€éÀLÝÀLÝ€×/// Draw each sequence of two points as a line segment. /// /// If the number of points is odd, then the last point is ignored. /// /// The lines are stroked as described by the [Paint] (ignoring /// [Paint.style]).ÀL瀛ÀM{ÀM{€‹/// Draw the entire sequence of points as one line. /// /// The lines are stroked as described by the [Paint] (ignoring /// [Paint.style]).ÀM‡�ÀNÀNx/// Defines how a new clip region should be merged with the existing clip /// region. /// /// Used by [Canvas.clipRect].ÀNBÀNHÀNH5/// Subtract the new region from the existing region.ÀNWBÀN�ÀN�6/// Intersect the new region from the existing region.„‰o„ބބ› „¡„ „út„ÿ„ÿ… ………p€œ…u…u…‹…š…™†€�†††" †*†)†Ÿ€Û†¤†¤†´†Á†À‡|€�‡�‡�‡� ‡˜‡—ˆ lˆˆˆˆ$ˆ#ˆ& ˆ.ˆ-ÀC€ØÀGÀGÀZÀfÀeÀ�À(À(À; À@À?ÀT9pÀTYÀTYÀTd ÀTlÀTkÀT9ÀT:ÀT@ÀTQÀTAÀj”‰?ÀrlÀrl‡‰/// Instantiates an image [Codec]. /// /// This method is a convenience wrapper around the [ImageDescriptor] API, and /// using [ImageDescriptor] directly is preferred since it allows the caller to /// make better determinations about how and whether to use the `targetWidth` /// and `targetHeight` parameters. /// /// The `list` parameter is the binary image data (e.g a PNG or GIF binary data). /// The data can be for either static or animated images. The following image /// formats are supported: /// {@template dart.ui.imageFormats} /// JPEG, PNG, GIF, Animated GIF, WebP, Animated WebP, BMP, and WBMP. Additional /// formats may be supported by the underlying platform. Flutter will /// attempt to call platform API to decode unrecognized formats, and if the /// platform API supports decoding the image Flutter will be able to render it. /// {@endtemplate} /// /// The `targetWidth` and `targetHeight` arguments specify the size of the /// output image, in image pixels. If they are not equal to the intrinsic /// dimensions of the image, then the image will be scaled after being decoded. /// If the `allowUpscaling` parameter is not set to true, both dimensions will /// be capped at the intrinsic dimensions of the image, even if only one of /// them would have exceeded those intrinsic dimensions. If exactly one of these /// two arguments is specified, then the aspect ratio will be maintained while /// forcing the image to match the other given dimension. If neither is /// specified, then the image maintains its intrinsic size. /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. If the image must be scaled /// up, the `allowUpscaling` parameter must be set to true. /// /// The returned future can complete with an error if the image decoding has /// failed.Àr…Àr�Àr�Àr™ÀrŸÀržÀr­Àr³Àr²ÀrÂÀrÈÀrÇÀrØÀsÕŠ¡À|À|ˆ+/// Instantiates an image [Codec]. /// /// This method is a convenience wrapper around the [ImageDescriptor] API, and /// using [ImageDescriptor] directly is preferred since it allows the caller to /// make better determinations about how and whether to use the `targetWidth` /// and `targetHeight` parameters. /// /// The [buffer] parameter is the binary image data (e.g a PNG or GIF binary data). /// The data can be for either static or animated images. The following image /// formats are supported: {@macro dart.ui.imageFormats} /// /// The [buffer] will be disposed by this method once the codec has been created, /// so the caller must relinquish ownership of the [buffer] when they call this /// method. /// /// The [targetWidth] and [targetHeight] arguments specify the size of the /// output image, in image pixels. If they are not equal to the intrinsic /// dimensions of the image, then the image will be scaled after being decoded. /// If the `allowUpscaling` parameter is not set to true, both dimensions will /// be capped at the intrinsic dimensions of the image, even if only one of /// them would have exceeded those intrinsic dimensions. If exactly one of these /// two arguments is specified, then the aspect ratio will be maintained while /// forcing the image to match the other given dimension. If neither is /// specified, then the image maintains its intrinsic size. /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. If the image must be scaled /// up, the `allowUpscaling` parameter must be set to true. /// /// The returned future can complete with an error if the image decoding has /// failed. /// /// ## Compatibility note on the web /// /// When running Flutter on the web, only the CanvasKit renderer supports image /// resizing capabilities (not the HTML renderer). So if image resizing is /// critical to your use case, and you're deploying to the web, you should /// build using the CanvasKit renderer.À|2À|CÀ|BÀ|NÀ|TÀ|SÀ|bÀ|hÀ|gÀ|wÀ|}À||À|�À~x‰„À…�À…�‡/// Instantiates an image [Codec]. /// /// This method is a convenience wrapper around the [ImageDescriptor] API. /// /// The [buffer] parameter is the binary image data (e.g a PNG or GIF binary /// data). The data can be for either static or animated images. The following /// image formats are supported: {@macro dart.ui.imageFormats} /// /// The [buffer] will be disposed by this method once the codec has been /// created, so the caller must relinquish ownership of the [buffer] when they /// call this method. /// /// The [getTargetSize] parameter, when specified, will be invoked and passed /// the image's intrinsic size to determine the size to decode the image to. /// The width and the height of the size it returns must be positive values /// greater than or equal to 1, or null. It is valid to return a /// [TargetImageSize] that specifies only one of `width` and `height` with the /// other remaining null, in which case the omitted dimension will be scaled to /// maintain the aspect ratio of the original dimensions. When both are null or /// omitted, the image will be decoded at its native resolution (as will be the /// case if the [getTargetSize] parameter is omitted). /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. /// /// The returned future can complete with an error if the image decoding has /// failed. /// /// ## Compatibility note on the web /// /// When running Flutter on the web, only the CanvasKit renderer supports image /// resizing capabilities (not the HTML renderer). So if image resizing is /// critical to your use case, and you're deploying to the web, you should /// build using the CanvasKit renderer.À…°À…ÁÀ…ÀÀ…Ì&À…æÀ…åÀ‡þsÀˆÀˆÀˆ#Àˆ(Àˆ'Àˆ7Àˆ<Àˆ;À�:�©À‘pÀ‘p�0/// Loads a single image frame from a byte array into an [Image] object. /// /// This is a convenience wrapper around [instantiateImageCodec]. Prefer using /// [instantiateImageCodec] which also supports multi frame images and offers /// better error handling. This function swallows asynchronous errors.À‘„À‘�À‘ŽÀ‘”À‘ªÀ‘©À‘å�-À‘òÀ‘òÀ’ À’À’À’À’2À’1À“ŠÚÀ˜·À˜·…�/// Convert an array of pixel values into an [Image] object. /// /// The `pixels` parameter is the pixel data. They are packed in bytes in the /// order described by `format`, then grouped in rows, from left to right, /// then top to bottom. /// /// The `rowBytes` parameter is the number of bytes consumed by each row of /// pixels in the data buffer. If unspecified, it defaults to `width` multiplied /// by the number of bytes per pixel in the provided `format`. /// /// The `targetWidth` and `targetHeight` arguments specify the size of the /// output image, in image pixels. If they are not equal to the intrinsic /// dimensions of the image, then the image will be scaled after being decoded. /// If the `allowUpscaling` parameter is not set to true, both dimensions will /// be capped at the intrinsic dimensions of the image, even if only one of /// them would have exceeded those intrinsic dimensions. If exactly one of these /// two arguments is specified, then the aspect ratio will be maintained while /// forcing the image to match the other given dimension. If neither is /// specified, then the image maintains its intrinsic size. /// /// Scaling the image to larger than its intrinsic size should usually be /// avoided, since it causes the image to use more memory than necessary. /// Instead, prefer scaling the [Canvas] transform. If the image must be scaled /// up, the `allowUpscaling` parameter must be set to true. À˜ÐÀ˜ÛÀ˜ÚÀ˜ä À˜éÀ˜èÀ˜ñ À˜öÀ˜õÀ˜ÿÀ™ À™ À™À™+À™*À™8 À™>À™=À™IÀ™OÀ™NÀ™]À™cÀ™bÀ™rÀ™xÀ™wÀ™ˆÀG‡‰qÀG—ÀG—ÀGªÀG¶ÀGµÀG½ÀGÉÀGÈÀÂd�¹ÀÂpÀÂpÀÂ…ÀÂ’À‘ÀÄ€ëÀÄ)ÀÄ)ÀÄ:ÀÄGÀÄFÀÅ �›ÀÅÀÅÀÅ)ÀÅ7ÀÅ6ÀÆ©�$ÀƵÀƵÀÆÆ ÀÆÎÀÆÍÀÆÕ ÀÆÝÀÆÜÀ h‚¼À rÀ rÀ |À |À |À À �À ŽÀ£&ƒ2À£sÀ£sB/// A variant of `_futurize` that can communicate specific errors.À£†À£†À£†À£‰"À£¢À£¡À%…dÀ%¹À%¹+/// Signature for [Image] lifecycle events.À%Ü À%ãÀ%âÀT«mÀTåÀTå1/// Callback signature for [decodeImageFromList].ÀU ÀUÀUÀˆs�]À‰tÀ‰t€ø/// Signature for a callback that determines the size to which an image should /// be decoded given its intrinsic size. /// /// See also: /// /// * [instantiateImageCodecWithSize], which used this signature for its /// `getTargetSize` argument.À‰§À‰¬À‰«À‰»À‰ÀÀ‰¿À:MlÀ:ƒÀ:ƒ-/// Signature for [Picture] lifecycle events.À:¨À:±À:°ÀšidÀš¦Àš¦4/// Generic callback signature, used by [_futurize].Àš°Àš°Àš°ÀšÃÀšÆÀšÅÀšÏ€…À›À›=/// Generic callback signature, used by [_futurizeWithError].À›(À›(À›(À›;À›>À›=À›E À›NÀ›MÀ›V€ÕÀ›ñÀ›ñ€’/// Signature for a method that receives a [_Callback]. /// /// Return value should be null on success, and a string error message on /// failure.À›ýÀ›ýÀ›ýÀœÀœ"Àœ!Àœ-€±Àœ’Àœ’\/// Signature for a method that receives a [_CallbackWithError]. /// See also: [_Callbacker]Àœ§Àœ§Àœ§Àœ½ÀœÕÀœÔŸo<€†€¤€µ€¶€Î€ï�-�F�y�«�¬�ù‚C‚“‚äƒ4ƒ‚ƒÓ„„„b„ˆ„‰„¨„è„÷„ù„ú……^…m…o…p…ª…ü† † ††3†�†œ†ž†Ÿ†Ë‡ ‡j‡y‡{‡|‡¡‡ùˆˆ ˆ ˆ7ˆvˆxˆyˆ¦ˆªˆû‰L‰˜‰ãŠjЍЬŠÜŠàŠì‹C‹k‹¨‹àŒŒ Œ$ŒtŒ¼� �D�H�T�¡�é�펎fŽnŽrŽÂ��d�h�v�z�Ç��/�€�„�Û�é‘8‘>‘i‘o‘—‘½‘ä’ ’’_’­’Õ’Û“!“n“““™“Ù“é”:”Š”É”Þ”÷•L•M•‹•‘•â–+–;–A–R–X–f–Ž–Þ–ä—#—s—y—š—ê—ô˜ ˜$˜=˜X˜r˜™˜«˜»˜Í˜Þ˜ß™%™+™x™ˆ™­™Ô™úššCšIš”š¡š§šä›G›H›¡›ì›íœ7œNœTœyœ œÆ��C�I�Œ�’�Ú�àžžYž“ž”žãžöŸŸ.ŸJŸKŸrŸ„Ÿ…ŸªŸ¼Ÿ½ŸäŸöŸ÷  / 0 U t u › É Í Î ü¡¡O¡h¡Ç¡æ¡ç¢¢#¢g¢·£#£)£t£Á¤¤ ¤W¤¢¤¿¤Å¤í¤ó¥?¥‹¥Ö¦ ¦&¦9¦†¦Ô§%§o§Œ§Ÿ§Â§â¨¨¨#¨$¨]¨c¨²¨Ô© ©<©=©p©v©Ç©éªª(ª)ª`ª™ªÆªÇ««9«g«h« «Ù¬¬¬G¬M¬‘¬Ø¬Þ­)­w­”­š­©­·­Ï­ú®D®N®c®v®‡®š®¬®È®Ï®í¯6¯\¯w¯Ž¯©¯Â¯ç¯ð¯ö°5°Ž°×°ä± ±±±±`±–±œ±Ô±ï²²#²$²m²µ²»²ó³/³U³ƒ³´³¸³¹´ ´6´<´t´�´¿´Ã´Äµ µCµIµ�µœµÌµÐµÑ¶"¶O¶U¶�¶§¶Ø¶Ü¶Ý··X·x·˜·ž·ß·ã·ä¸/¸5¸‰¸§¸­¸ë¹ ¹<¹|¹®¹àººCºGºHºwº}ºÅ»»»X»¥»ä¼*¼0¼}¼Ç½½^½¬½ü¾I¾š¾Ç¾Í¿¿<¿q¿§¿Ý¿òÀ@ À@À@-À@UÀ@]À@jÀ@�À@£À@²À@àÀ@ûÀA9ÀAuÀA³ÀAðÀBÀBÀB'ÀB-ÀB1ÀB2ÀBuÀB»ÀBÁÀC ÀCTÀCŸÀCîÀD9ÀDyÀDµÀDóÀEÀE0ÀE\ÀEuÀE{ÀE¢ÀEÇÀEáÀFÀFÀF,ÀFiÀF¨ÀFæÀGÀGÀG'ÀG=ÀGeÀG–ÀG³ÀGÌÀGåÀH0ÀH}ÀHÉÀHôÀHýÀIÀIÀIÀIUÀI[ÀI†ÀI¹ÀIôÀIøÀIùÀJÀJ(ÀJJÀJ]ÀJcÀJ�ÀJ£ÀJ©ÀJÆÀJÞÀJöÀKÀK&ÀKNÀKRÀKSÀK_ÀKšÀK›ÀK§ÀK¾ÀLcÀLeÀLfÀL™ÀL�ÀLêÀM4ÀMSÀMWÀM¨ÀMõÀNDÀN’ÀNâÀO-ÀOqÀOuÀOÅÀPÀPaÀP­ÀPûÀQHÀQ�ÀQÚÀR)ÀRoÀRŠÀRŽÀRÜÀS)ÀSsÀSÅÀTÀTcÀT¤ÀT¨ÀTÏÀTÓÀU!ÀUbÀU³ÀVÀVQÀV ÀVïÀW ÀWÀWÀW ÀWkÀW|ÀW�ÀWÜÀWïÀX5ÀX6ÀXzÀX€ÀX¼ÀXÂÀYÀY(ÀY)ÀYhÀYnÀY½ÀYÌÀYÒÀZ ÀZÀZnÀZuÀZvÀZµÀZ»À[À[À[À[_À[eÀ[ÀÀ[ÇÀ[ÈÀ\À\ À\YÀ\ªÀ\ÇÀ\ÍÀ]À]HÀ]NÀ]­À]¸À]¹À]÷À]ýÀ^&À^,À^zÀ^€À^ßÀ^åÀ_4À__À_jÀ_kÀ_³À`À`MÀ`[À`aÀ` À`¦À`óÀa;ÀaKÀaQÀa�Àa£ÀbÀb Àb ÀbWÀb¥ÀbïÀbõÀc/Àc5Àc‚ÀcÔÀcÚÀd&Àd,Àd‰Àd’Àd“ÀdâÀe5Àe„ÀeŠÀeÊÀeÐÀfÀfnÀftÀfÁÀfÇÀg%Àg/Àg0Àg„ÀgÒÀhÀh"Àh]ÀhcÀhµÀiÀiÀiTÀiZÀi¸ÀiÂÀiÃÀjÀj2Àj8Àj†ÀjŒÀjÜÀk(Àk\ÀkbÀk­Àk¾ÀkÄÀl#Àl.Àl/Àl~Àl™ÀlŸÀlíÀlóÀmCÀmŠÀm¾ÀmÄÀnÀn Àn&Àn…Àn�Àn‘ÀnáÀoÀoÀohÀonÀoÉÀoÐÀoÑÀpÀpÀpeÀp±Àp×ÀpÝÀq+Àq1Àq‚ÀqÐÀr!ÀrpÀrºÀrÀÀsÀs$Às%ÀsoÀsuÀsÄÀtÀtÀtjÀt“Àt™ÀtêÀtðÀuPÀuVÀufÀulÀu®ÀuöÀvÀv\ÀvsÀvÀv€ÀvÈÀvÉÀwÀw:Àw@ÀwŒÀwÙÀxÀxÀx_Àx«ÀxÑÀx×Ày'ÀyvÀyÇÀyÍÀzÀz>ÀzDÀz¢Àz¨Àz¸Àz¾À{À{À{gÀ{ƒÀ{ÍÀ{äÀ|À|OÀ|~À|„À|ÕÀ}#À}tÀ}“À}™À}åÀ~2À~aÀ~gÀ~ÆÀ~ÌÀ~ÜÀ~âÀÀbÀ²ÀÝÀèÀéÀ€7À€VÀ€\À€¥À€¶À€¼À�À�$À�%À�tÀ�“À�™À�âÀ�óÀ�ùÀ‚XÀ‚cÀ‚dÀ‚ŸÀ‚¥À‚ñÀƒ>ÀƒmÀƒsÀƒÕÀƒãÀƒäÀ„7À„=À„‰À„ÖÀ…À… À…lÀ…yÀ…zÀ…ÃÀ…íÀ…óÀ†CÀ†ŒÀ†ÚÀ‡À‡ À‡YÀ‡¦À‡ÕÀ‡ÛÀˆ<ÀˆBÀˆRÀˆXÀˆ‘ÀˆØÀ‰'À‰SÀ‰`À‰aÀ‰¯À‰ÇÀ‰ÍÀŠÀŠÀŠvÀŠ|ÀŠŒÀŠ’ÀŠËÀŠØÀŠÙÀ‹"À‹(À‹wÀ‹ŽÀ‹”À‹ÝÀ‹îÀ‹ôÀŒ,ÀŒ2ÀŒ”ÀŒ¢ÀŒ£ÀŒïÀŒýÀ�À�RÀ�iÀ�oÀ�¸À�ÉÀ�ÏÀŽÀŽ ÀŽnÀŽ{ÀŽ|ÀŽÊÀŽãÀŽéÀ�8À�‡À��À�ÙÀ�&À�nÀ�tÀ�ÃÀ�çÀ�íÀ‘MÀ‘uÀ‘ÆÀ‘ßÀ‘åÀ’.À’4À’}À’ÍÀ’óÀ’ùÀ“TÀ“ZÀ“jÀ“pÀ“ÀÀ“éÀ”8À”iÀ”pÀ”qÀ”ÂÀ”ÛÀ”áÀ•*À•zÀ•§À•­À–À–À–%À–+À–mÀ–¼À–ÒÀ–àÀ–áÀ—2À—KÀ—QÀ—šÀ— À—éÀ˜9À˜nÀ˜tÀ˜ÑÀ˜×À˜çÀ˜íÀ™#À™qÀ™¿À™ÈÀ™ÉÀšÀš3Àš9Àš‚ÀšÒÀšÿÀ›À›gÀ›mÀ›}À›ƒÀ›ÒÀ›èÀœ3ÀœLÀœZÀœ\Àœ]ÀœµÀœðÀœôÀ�QÀ�˜À�œÀ�ñÀžEÀž›ÀžïÀžóÀŸAÀŸ|ÀŸ€ÀŸÙÀŸÝÀ *À rÀ ‘À •À £À §À òÀ¡+À¡AÀ¡^À¡yÀ¡˜À¡·À¡ÒÀ¡çÀ¢=À¢eÀ¢fÀ¢ªÀ¢°À¢öÀ£;À£CÀ£DÀ£|À£‚À£ÄÀ£óÀ£úÀ£ûÀ¤EÀ¤mÀ¤sÀ¤¾À¥ À¥TÀ¥ŸÀ¥¥À¥ÕÀ¥åÀ¥ëÀ¦:À¦nÀ¦ƒÀ¦�À¦ŽÀ¦ÞÀ¦ëÀ¦ñÀ§?À§|À§‚À§©À§¯À¨À¨QÀ¨œÀ¨¢À¨ÏÀ¨×À¨ÙÀ¨ÚÀ¨þÀ©À©À©À©IÀ©ŒÀ©ÈÀ©ÙÀªÀªÀªpÀªÔÀªÚÀ«(À«ZÀ«bÀ«cÀ«žÀ«¤À«îÀ¬>À¬®À¬´À­À­)À­2À­3À­vÀ­»À­àÀ­æÀ®5À®¦À®¬À®üÀ¯!À¯'À¯uÀ¯•À¯ŸÀ¯¡À¯¢À¯ÌÀ¯ÐÀ°À°aÀ°eÀ°sÀ°wÀ°ÃÀ°ÏÀ± À±GÀ±YÀ±�À±•À±þÀ²À²LÀ²œÀ²¨À²®À²¾À²ÄÀ³À³#À³tÀ³­À³¶À³·À³ìÀ³òÀ´YÀ´_À´§À´÷ÀµÀµ ÀµÀµÀµmÀµ~Àµ‡ÀµˆÀµÖÀ¶À¶À¶uÀ¶{À¶ÃÀ·À·À·%À·5À·;À·‰À·šÀ·£À·¥À·¦À·àÀ·äÀ·ûÀ¸7À¸LÀ¸—À¸¥À¸¦À¸ìÀ¹2À¹YÀ¹aÀ¹bÀ¹¦À¹ìÀº3ÀºqÀº{Àº}Àº~Àº¢Àº¦Àº´Àº¸À» À»À»,À»2À»}À»ÎÀ»ÔÀ¼À¼%À¼rÀ¼ËÀ½ À½9À½AÀ½BÀ½nÀ½tÀ½ÍÀ½þÀ¾À¾DÀ¾JÀ¾¢À¾ýÀ¿À¿À¿À¿hÀ¿ŒÀ¿˜À¿™À¿¸À¿¾ÀÀÀÀ]ÀÀuÀÀ{ÀÀÐÀÀÖÀÁ#ÀÁAÀÁœÀÁ¢ÀÁ²ÀÁ¸ÀÁ÷ÀÂDÀÂ]ÀºÀÂÇÀÂÈÀÃÀÃÀÃoÀÃÁÀÃêÀÃðÀÄ@ÀĉÀÄ¥ÀÅ ÀÅÀÅzÀÅ€ÀÅÃÀÆÀÆPÀƤÀÆéÀÆïÀÆÿÀÇÀÇSÀÇpÀÇŠÀÇŒÀÇ�ÀÇÏÀÇÓÀÈÀÈ8ÀÈLÀÈ”ÀȪÀȵÀȶÀÈýÀÉÀÉNÀÉŒÀÉ’ÀÉàÀÊ0ÀÊxÀÊ”ÀÊäÀË5ÀËXÀ˦ÀËÏÀËÓÀËÔÀÌÀÌÀÌSÀÌžÀÌíÀÍ;ÀÍŠÀÍ�ÀÍßÀÎ0ÀÎAÀÎFÀÎŽÀÎ�ÀΰÀÎÌÀÏÀÏÀÏ-ÀÏXÀÏ€ÀϪÀÏÓÀÏýÀÐ'ÀÐPÀÐuÀРÀÐÉÀÐôÀÑ%ÀÑSÀÑ~ÀѲÀÑâÀÒÀÒÀÒQÀÒ�ÀÒÍÀÓ ÀÓKÀÓ‹ÀÓÉÀÓÿÀÔAÀÔÀÔ¿ÀÕ ÀÕQÀÕ‘ÀÕãÀÖ-ÀÖoÀÖpÀÖ±ÀÖóÀÖôÀ×8À×YÀ×uÀ×�ÀבÀ׿ÀØÀØÀØÀØ-ÀØXÀ؃ÀØ×ÀØØÀÙÀÙ,ÀÙ2ÀÙJÀÙcÀÙªÀÙ®ÀÙ¯ÀÙÏÀÚÀÚIÀÚpÀÚ´ÀÚ¸ÀÚ¹ÀÚñÀÛ!ÀÛ"ÀÛ[ÀÛaÀÛ�ÀÛ‡ÀÛ—ÀÛ�ÀÛãÀÜÀÜ\ÀÜbÀܪÀÜ¿ÀÜÓÀÝ ÀÝqÀÝÀÀÞÀÞMÀÞ‰ÀÞ�ÀÞñÀÞõÀÞöÀßÀßTÀß™ÀßÝÀà(ÀàˆÀàŒÀà�ÀàÅÀáÀáÀáSÀáYÀá›ÀáìÀâ=Àâ^ÀâdÀâ±ÀâÒÀâØÀâÿÀãÀãÀãÀãjÀãžÀãèÀãþÀäÀägÀä¢Àä¦Àä§ÀäÊÀåÀåFÀåJÀåKÀå�Àå•Àå½ÀåÙÀæ+Àæ/Àæ0ÀæSÀæxÀæ¶ÀæºÀæ»ÀæõÀçDÀç�Àç‡ÀçÄÀçßÀè#Àè'Àè(ÀèJÀèlÀè²Àè¶Àè·ÀèøÀé(Àé.Àé`Àé|ÀéÎÀéÒÀéÓÀéöÀêÀê]ÀêaÀêbÀê£Àê©ÀêúÀëEÀëKÀë…Àë‹Àë©Àë¯ÀìÀìÀì…Àì‹ÀìòÀìøÀíDÀí•Àí¡Àí§Àí·Àí½Àî Àî8Àî�ÀîÀÀîÞÀï2Àï6Àï7Àï\Àï�ÀïÄÀïÈÀïÉÀðÀð8Àð9Àð„ÀðÒÀñÀñjÀñ¸Àñ¾ÀòÀò ÀòWÀò{Àò�ÀòêÀòðÀóYÀó_ÀóÈÀóÎÀôÀôkÀôwÀô}Àô�Àô“ÀôÝÀôøÀõAÀõaÀõªÀõ®Àõ¯ÀõÖÀöÀö_ÀöcÀödÀö´ÀöòÀöøÀ÷À÷;À÷À÷ À÷µÀ÷ÖÀ÷öÀøQÀø˜Àø£Àø©ÀøºÀø¾Àø¿ÀøåÀøþÀùPÀù˜ÀùàÀùíÀú:ÀúlÀú¾ÀûÀûhÀûnÀûrÀûsÀûÅÀüÀüeÀükÀü“ÀüàÀýÀý^ÀýbÀýcÀýŽÀý³ÀýùÀýýÀýþÀþ8Àþ>ÀþtÀþzÀþŠÀþ�ÀþÌÀÿÀÿ6Àÿ~Àÿ•ÀÿÅÀÿÉÀÿÊÀÿèÀÿøÀ\ÀoÀyÀ‰À®ÀØÀ8ÀBÀJÀ]ÀgÀŸÀ£À¤ÀëÀýÀÀ(À.ÀÀ À÷ÀÀÀÀFÀŒÀ¬ÀÊÀøÀÀ ÀSÀYÀ]À^À™ÀŸÀæÀÀÀÀAÀ[ÀmÀ‡À×ÀâÀêÀôÀúÀ ÀÀKÀlÀÃÀåÀéÀêÀÀ+ÀIÀwÀÀŒÀÍÀ#ÀNÀ’ÀšÀ À¤À¥ÀäÀêÀ 6À €À ±À ËÀ À À À 8À ‚À †À ‡À “À ©À âÀ À À 7À RÀ nÀ —À µÀ ÕÀ À À CÀ KÀ tÀ ™À ¡À ÍÀ À _À iÀ xÀ žÀ ¦À ¾À ÄÀ ÜÀ À%À+À[ÀƒÀ›À¡ÀÒÀþÀÀÀ;ÀxÀ�À–À´ÀïÀÀ À<À}À•À›ÀµÀèÀÀÀ%ÀbÀzÀ€À˜ÀÑÀ×ÀîÀ ÀÀÀÀ^ÀbÀ¥ÀïÀ:ÀlÀpÀ£À§ÀßÀñÀ ÀÀ`ÀŒÀ’ÀÅÀÍÀÎÀÀiÀ¡ÀÚÀêÀëÀ ÀÀ`À­ÀøÀþÀ3À@ÀBÀCÀsÀ‹À¥ÀµÀ×ÀçÀÀÀÀÀÀHÀ[ÀgÀ…À‘À·ÀÃÀæÀóÀ-À1À3À4ÀvÀŽÀÜÀ)ÀqÀ»ÀÒÀéÀïÀMÀXÀYÀyÀÀØÀëÀìÀ ÀÀ_ÀšÀ«À¬ÀÒÀØÀ$ÀQÀWÀlÀrÀ€ÀžÀ¾ÀÄÀ À*À€ÀÂÀãÀýÀÀ1ÀKÀVÀ^ÀhÀ~ÀÀ‘À—ÀçÀ 5À �À ÎÀ!À!À!nÀ!zÀ!€À!�À!–À!õÀ":À"AÀ"CÀ"DÀ"ƒÀ"–À"äÀ#4À#gÀ#sÀ#tÀ#ÃÀ$À$EÀ$QÀ$RÀ$¢À$éÀ%8À%sÀ%‚À%„À%…À%±À%êÀ%ëÀ&!À&%À&eÀ&iÀ&·À&ÏÀ&ÓÀ'"À'qÀ'¸À(À(NÀ(\À(`À(¬À(ûÀ)BÀ)FÀ)TÀ)XÀ)ÆÀ*À*;À*ŠÀ*˜À*ÊÀ*ÚÀ+À+À+À+>À+XÀ+\À+]À+~À+šÀ+±À+²À+ðÀ+öÀ,AÀ,ƒÀ,¤À,ËÀ,ÌÀ- À-À-\À-ŸÀ-ÀÀ-èÀ-éÀ.À.À.IÀ.\À.]À.ŸÀ.³À.´À.ÎÀ.ÏÀ/À/MÀ/SÀ/¤À/¿À/ÅÀ0À0[À0ªÀ0ÊÀ0ÝÀ0øÀ1%À1QÀ1gÀ1žÀ1³À1ÖÀ1îÀ1ôÀ1øÀ1ùÀ2=À2CÀ2‘À2§À2ÂÀ2ÖÀ2æÀ3À3À3À36À3•À3™À3šÀ3ÏÀ3ÕÀ4!À41À47À4|À4ËÀ5À5À5eÀ5~À5ÎÀ6À6gÀ6³À7À75À7cÀ7gÀ7hÀ7¤À7ªÀ7öÀ8EÀ8qÀ8wÀ8ÆÀ9À9GÀ9“À9ÀÀ9ÞÀ:À:0À:>À:^À:lÀ:”À:£À:ñÀ:÷À:ûÀ:üÀ;MÀ;oÀ;uÀ;µÀ;ëÀ< À<ÀÀ>`À>®À>úÀ?À?À?lÀ?•À?›À?ãÀ@4À@JÀ@PÀ@†À@ŒÀ@šÀ@µÀ@ÕÀ@íÀ@óÀA+ÀAjÀA‰ÀAÓÀAäÀAöÀBÀBfÀB´ÀBÚÀCÀCÀC<ÀCDÀCJÀClÀC ÀCëÀDÀDYÀD�ÀDÚÀDóÀDùÀE5ÀEeÀEkÀEˆÀE¢ÀE¨ÀEÊÀEèÀFÀF ÀFÀF-ÀFPÀFVÀFqÀFwÀFšÀFÓÀFÝÀFãÀGÀGÀG ÀG&ÀGkÀG¹ÀGÝÀGïÀHÀHÀHGÀH˜ÀHæÀI)ÀI2ÀI8ÀIWÀI‚ÀI†ÀI‡ÀIÓÀJÀJÀJlÀJ¶ÀKÀKUÀKŸÀKìÀL%ÀL&ÀL2ÀL\ÀL^ÀL_ÀLyÀL®ÀL÷ÀMÀMÀMeÀM‡ÀM£ÀM±ÀM²ÀNÀNÀNÀNlÀN‡ÀNˆÀNÝÀO&ÀOsÀO£ÀOÚÀOëÀP ÀPÀP ÀP(ÀP,ÀP-ÀPiÀP¿ÀQÀQÀQ3ÀQFÀQ^ÀQjÀQ‚ÀQÏÀQçÀR1ÀRiÀRpÀR†ÀR–ÀRšÀR›ÀRæÀS ÀSMÀSiÀSjÀS“ÀS”ÀSÚÀSùÀSúÀTÀT6ÀT8ÀT9ÀTSÀTtÀT¨ÀTªÀT«ÀTÝÀUÀUÀUNÀURÀUŽÀU¨ÀU¬ÀUöÀV?ÀV�ÀVÓÀWÀWGÀWKÀW„ÀWˆÀW”ÀW ÀWÚÀXÀX9ÀX†ÀXÑÀXîÀY:ÀYYÀYzÀY€ÀYˆÀYŒÀY¢ÀY¦ÀY²ÀY¿ÀYùÀZ:ÀZzÀZ¹À[À[À[nÀ[¶À[×À[ÝÀ[åÀ[÷À\AÀ\]À\cÀ\¡À\½À\ûÀ\üÀ]+À]1À]~À]™À]šÀ]ÃÀ]ÉÀ^À^À^cÀ^xÀ^zÀ^{À^›À^ŸÀ^çÀ_À_À_=À_ZÀ_qÀ_—À_­À_®À_ÝÀ_ãÀ`À`<À`WÀ`XÀ`€À`†À`ÊÀ`ÐÀa!Àa'ÀahÀa˜Àa¼Àa½Àb Àb0Àb6Àb�Àb¦Àb¸ÀbºÀb»ÀcÀc ÀcUÀcpÀcuÀc®ÀcÌÀcàÀcáÀcûÀcüÀdÀdCÀdDÀd˜Àd¸Àd¹ÀdØÀdÙÀdåÀe/Àe0Àe‰Àe®Àe¯Àe»ÀeæÀf.ÀfXÀfmÀf�Àf§Àf¯ÀfÊÀfíÀgNÀgXÀg‘Àg Àg¼ÀgÓÀhÀhUÀhbÀhmÀhuÀh}Àh–Àh´ÀhºÀh×ÀhÛÀhÜÀiÀiiÀi¹ÀiºÀiÆÀjÀj#Àj$Àj0Àj‘Àj“Àj”Àj·Àj»Àk ÀkZÀk¨ÀkËÀkÏÀl!ÀloÀlŠÀlÊÀlïÀm@Àm†ÀmÒÀn"Àn5Àn9Àn„ÀnÎÀoÀomÀo¹Àp ÀpYÀp¡ÀpÝÀpáÀq+ÀquÀqÅÀrÀrÀrRÀr^ÀrƒÀr—Àr«ÀrÀÀrÞÀréÀs5Às_ÀskÀs‰Às©ÀsÍÀsÒÀsÔÀsÕÀsøÀsüÀtKÀt›ÀtéÀu ÀuÀudÀu²ÀuëÀuïÀvAÀv‘Àv�Àv¡ÀvìÀw6Àw†ÀwÕÀx!ÀxrÀxÁÀy ÀyEÀyIÀy“ÀyÝÀz-ÀziÀzmÀzºÀzÆÀzÊÀzïÀzóÀ{CÀ{ŽÀ{ÙÀ|À|0À|LÀ|`À|uÀ|“À|˜À|ÀÀ|ÌÀ} À}(À}lÀ}”À}žÀ}åÀ~À~À~!À~iÀ~pÀ~uÀ~wÀ~xÀ~›À~ŸÀ~êÀ~îÀ;ÀŠÀÉÀÍÀ€À€eÀ€{À€À€ÍÀ�À�fÀ�§À�öÀ‚FÀ‚–À‚æÀƒÀƒ!ÀƒkÀƒµÀƒéÀƒíÀ„:À„FÀ„JÀ„oÀ„sÀ„ÃÀ…À…YÀ…�À…®À…ÊÀ…ôÀ…ÿÀ†)À†uÀ†}À†ØÀ‡À‡XÀ‡€À‡¥À‡ÌÀ‡ÓÀ‡áÀ‡÷À‡ûÀ‡ýÀ‡þÀˆNÀˆpÀˆrÀˆsÀˆÂÀˆëÀˆïÀˆýÀ‰À‰KÀ‰lÀ‰ÑÀ‰ÒÀŠÀŠÀŠ)ÀŠ-ÀŠyÀŠ·ÀŠßÀŠ÷À‹#À‹)À‹xÀ‹�À‹ÃÀ‹íÀŒÀŒÀŒHÀŒNÀŒ�ÀŒíÀ�;À�ˆÀ�³À�¹À�ïÀŽÀŽÀŽ3ÀŽ9ÀމÀŽØÀ�%À�sÀ��À�£À�ÙÀ�îÀ�ïÀ�ûÀ�7À�9À�:À�ƒÀ�‡À�ÖÀ‘$À‘kÀ‘µÀ‘âÀ‘äÀ‘åÀ’CÀ’|À’™À’¡À’ÍÀ’ÛÀ’ðÀ’ôÀ“À“À“À“QÀ“UÀ“£À“îÀ”À” À”VÀ”§À”æÀ”êÀ•5À•À•ÏÀ–À–jÀ–»À— À—RÀ—ŽÀ—’À—ÜÀ˜&À˜vÀ˜²À˜ÎÀ˜âÀ˜ïÀ˜ýÀ™À™6À™GÀ™[À™pÀ™ŽÀ™“À™°À™äÀ™èÀšÀš<Àš@ÀšAÀš‰ÀšÅÀšÓÀšçÀšýÀ›À›2À›9À›:À›UÀ›™À›ÁÀ›ÉÀœÀœ:ÀœBÀœHÀœIÀœXÀœ¨ÀœÆÀ� À�%À�AÀ�LÀ�rÀ�ŽÀ�®À�¯À�ÛÀ�çÀ�íÀ�ïÀ�ðÀž=ÀžMÀžQÀžˆÀžœÀžæÀžìÀŸ=ÀŸŒÀŸÛÀ À  À DÀ OÀ PÀ ’À ˜À éÀ¡:À¡@À¡yÀ¡„À¡†À¡‡À¡«À¡¯À¡½À¡ÁÀ¢À¢6À¢KÀ¢À¢…À¢ÓÀ£À£_À£eÀ£uÀ£{À£ÊÀ£äÀ£òÀ£óÀ¤BÀ¤hÀ¤nÀ¤¼À¥ À¥$À¥*À¥:À¥qÀ¥~À¥À¥ÊÀ¥ÐÀ¦À¦iÀ¦žÀ¦§À¦¨À¦óÀ§,À§2À§€À§ÔÀ§ÚÀ§êÀ¨'À¨.À¨/À¨cÀ¨iÀ¨·À©À©CÀ©IÀ©YÀ©_À©¨À©ÁÀ©ÖÀ©ØÀ©ÙÀª*ÀªGÀª—ÀªºÀªÀÀ«À«YÀ«ªÀ«óÀ¬ À¬À¬bÀ¬®À¬èÀ¬îÀ­9À­^À­pÀ­rÀ­sÀ­ËÀ®À®1À®KÀ®LÀ®XÀ® À®»À®½À®¾À®ðÀ®ôÀ¯9À¯=À¯€À¯¿À¯ÓÀ¯×À°À°HÀ°LÀ°‹À°ÎÀ°öÀ°úÀ±>À±wÀ±�À±úÀ²À²>À²?À²gÀ²mÀ²ºÀ³ À³,À³`À³�À³§À³«À³¬À³êÀ³ðÀ´5À´RÀ´vÀ´wÀ´¬À´ÏÀ´ÐÀµÀµEÀµFÀµ�ÀµšÀµ½Àµ¾À¶À¶7À¶dÀ¶eÀ¶¨À¶èÀ¶÷À¶ýÀ·nÀ·ãÀ¸)À¸*À¸mÀ¸´À¸ùÀ¹À¹TÀ¹UÀ¹šÀ¹áÀ¹ðÀ¹öÀºcÀºÔÀ»&À»'À»lÀ»³À»øÀ¼ À¼gÀ¼hÀ¼®À¼òÀ½7À½~À½£À½©À¾À¾‡À¾ÍÀ¾ÎÀ¿À¿XÀ¿�À¿äÀÀ*ÀÀRÀÀ ÀÀ¡ÀÀäÀÁÀÁ ÀÁOÀÁsÀÁyÀÁÀÀÂÀÂGÀ‹ÀÂÒÀÃÀÃDÀÃJÀÃ�ÀÃÅÀÄÀÄÀÄfÀÄ«ÀıÀÅÀÅIÀÅ�ÀÅ´ÀźÀÅÿÀÆNÀÆšÀÆ ÀƳÀÆÈÀÆéÀÇÀÇÀÇ:ÀÇ@ÀÇAÀÇ�ÀÇÕÀÇÛÀÈÀÈÀÈdÀȲÀÈõÀÉ?ÀÉEÀɈÀÉÖÀÊ#ÀÊ:ÀÊUÀÊoÀÊ�ÀÊ«ÀÊÆÀÊáÀÊçÀÊèÀË/ÀËFÀËaÀËbÀˤÀËÒÀËØÀÌ*ÀÌxÀÌ“ÀÌ”ÀÌÜÀÍÀÍXÀÍ™ÀÍßÀÎ#ÀÎgÀÎsÀÎyÀÎåÀÏUÀÏ[ÀÏËÀÐ?ÀÐÀЀÀÐÒÀÐàÀÐæÀÑ5ÀÑZÀÑ`ÀѧÀÑÛÀÑÜÀÒÀÒaÀÒqÀÒ�ÀÒ�ÀÒÝÀÓ ÀÓAÀÓBÀÓˆÀÓŽÀÓÛÀÔ)ÀÔTÀÔ–ÀÔ—ÀÔÝÀÕÀÕYÀÕ_ÀÕ¬ÀÕýÀÖ(ÀÖqÀÖrÀÖ·ÀÖøÀ×À× À×NÀ×’À×­À×½À×¾ÀØÀØ[ÀØzÀØ€ÀØÈÀØÎÀÙÀÙ2ÀÙ3ÀÙsÀÙ¢ÀÙ¿ÀÙÀÀÚÀÚ0ÀÚWÀÚXÀÚ�ÀÚ“ÀÚãÀÛ0ÀÛ{ÀÛºÀÛÀÀÜÀÜ`ÀܲÀÜÿÀÝIÀÝ—ÀÝ¥ÀÝêÀÝþÀÝÿÀÞKÀÞ^ÀÞdÀÞ´ÀßÀß<Àß…Àß±ÀàÀàÀàÀà1Àà˜ÀàŸÀà£Àà¤ÀàóÀá$Àá*ÀávÀá¾Àâ Àâ\Àâ¦ÀâÞÀâäÀã/Àã|ÀãÅÀãùÀãÿÀäOÀäœÀäìÀå/Àå|ÀåÉÀæÀæhÀæ·Àæ½Àç ÀçZÀçŽÀç”ÀçåÀè0ÀèjÀèlÀèmÀè·ÀèßÀèñÀéÀé Àé ÀéXÀé�Àé°Àé±ÀéêÀê Àê ÀêRÀêxÀêyÀê…ÀêÉÀêÕÀëÀëÀëkÀëŠÀë‹ÀëåÀìÀìÀìÀì|Àì¨Àì©ÀìµÀìîÀíÀí$Àí(Àí^Àí_ÀíkÀíÉÀíõÀíöÀîÀî;Àî_ÀîqÀîuÀî«Àî¬Àî¸ÀïÀï(Àï:Àï>Àï�ÀïŽÀïšÀïãÀðÀð$Àð(ÀðÀð€ÀðŒÀðåÀñÀñÀñÀñsÀñtÀñ€ÀñÙÀñþÀòÀòÀòwÀòxÀò„ÀòÕÀòòÀóÀóÀóWÀóXÀódÀóµÀóÚÀóìÀóðÀôGÀôHÀôTÀô¦ÀôÆÀõ%Àõ)Àõ*Àõ‰Àõ¤Àõ¶ÀõºÀõÒÀõãÀõóÀöÀöÀö/ÀöFÀö\ÀöaÀöbÀönÀö�Àö–Àö·ÀöÒÀöíÀ÷À÷À÷3À÷WÀ÷±À÷µÀ÷¶ÀøÀø3ÀøEÀøIÀøfÀøzÀøŽÀø¢Àø¶ÀøËÀøÞÀøòÀø÷ÀøøÀùÀùÀù9ÀùZÀùuÀù�Àù«Àù²ÀùÛÀùÿÀúÀú.ÀúDÀúTÀúdÀútÀú„Àú•ÀúœÀú Àú¡ÀúþÀû&Àû8Àû<ÀûaÀûuÀû‰Àû�Àû±ÀûÆÀûÙÀûíÀûòÀûóÀûÿÀüÀü;ÀüwÀü{Àü|ÀüÅÀüâÀüôÀüøÀýHÀýIÀýUÀýqÀý‘ÀýÍÀýÑÀýÒÀþÀþ8ÀþJÀþNÀþžÀþŸÀþ«ÀþìÀÿ Àÿ_ÀÿcÀÿdÀÿ½ÀÿÙÀÿëÀÿïÀÀÀ)À;ÀNÀeÀ|À�À‚ÀŽÀÃÀõÀùÀúÀLÀ‰ÀŠÀ–ÀµÀ×ÀûÀÿÀÀJÀxÀyÀ…À¼ÀîÀÀ"À#À|ÀÃÀÄÀÐÀÀ7ÀRÀzÀÈÀÕÀÀÀÀÀ{À½À¾ÀÀ5À9À™ÀšÀ¦ÀðÀÀ/ÀWÀ«À¸ÀúÀÀÀÀMÀqÀuÀ¾À¿À À <À @À jÀ €À �À žÀ ¶À »À ¼À ÈÀ À .À /À ;À ˆÀ ¡À ¢À ®À ÎÀ ñÀ À À À €À ¯À °À ¼À ÚÀ þÀ ,À TÀ eÀ iÀ jÀ ÁÀ ýÀ þÀ À 2À XÀ †À ¥À ¶À ºÀ »ÀÀMÀNÀZÀoÀšÀØÀÜÀÝÀ"ÀGÀHÀ©ÀóÀôÀÀ;ÀhÀlÀmÀyÀ˜ÀšÀ›ÀÝÀáÀïÀMÀ]ÀŽÀ”ÀºÀçÀèÀ-À3ÀˆÀ´ÀñÀ9À=À>À]ÀcÀ¶ÀúÀÀÀAÀGÀ˜ÀêÀÀÀÀNÀTÀ¤ÀóÀÀÀcÀ²ÀÀOÀ`À¥ÀÞÀàÀáÀ)À-À~ÀÊÀÀÀZÀ^ÀªÀùÀÀÀeÀµÀÖÀÀCÀ›ÀœÀÄÀÅÀÑÀÀÀÀUÀoÀªÀÕÀÖÀñÀÀÀ!À<ÀoÀ�À¨À ÀgÀÜÀåÀëÀÀ À ÀÀ*ÀQÀ�À”ÀšÀ²ÀÄÀÈÀÊÀËÀ À À VÀ ¡À ïÀ!À!À!eÀ!´À"À"PÀ"žÀ"¬À"¿À"ÝÀ#À#]À#�À#‘À#ÇÀ#ÍÀ$À$`À$©À$ÀÀ$ÁÀ$æÀ$ìÀ%:À%€À%ÐÀ%ïÀ&À&À&2À&8À&ˆÀ&ÏÀ'À'lÀ'¥À'«À'ùÀ(IÀ(˜À(ÑÀ(ëÀ(ìÀ) À) À)\À)ƒÀ)‰À)ØÀ*%À*=À*CÀ*xÀ*~À*ÄÀ*öÀ+7À+;À+<À+…À+‹À+ÍÀ,À,_À,¼À,ÀÀ,ÁÀ,ÍÀ,äÀ-;À-=À->À-yÀ-®À-ÓÀ-×À-ØÀ.-À.oÀ.pÀ.”À. À.ËÀ/À/À/?À/CÀ/DÀ/¥À/ÒÀ/ÓÀ0À0#À0NÀ0™À0 À0ãÀ1À1:À1MÀ1ZÀ1¬À1²À1¶À1·À2À2XÀ2YÀ2¹À2ÅÀ2ðÀ3;À3BÀ3pÀ3³À3ÄÀ3ÈÀ3ÉÀ4À4>À4BÀ4`À4rÀ4ˆÀ4šÀ4ªÀ4ÄÀ4ÉÀ4ÊÀ4îÀ4úÀ5%À5pÀ5wÀ5›À5ŸÀ5 À5þÀ6+À6,À6WÀ6\À6±À6ÛÀ6óÀ7À7/À7LÀ7RÀ7cÀ7gÀ7hÀ7ÂÀ7èÀ7éÀ85À8;À8|À8œÀ8žÀ8ŸÀ8ÔÀ9À9!À9YÀ9ZÀ9§À9êÀ9ôÀ9õÀ:CÀ:�À:½À:ÆÀ:ÇÀ;À;eÀ;¨À;±À;²À<À<À<À<À<ÀÀ>À>dÀ>²À?À?À?À?hÀ?nÀ?”À?šÀ?ªÀ?°À?ýÀ@0À@1À@KÀ@bÀ@cÀ@©À@ôÀAÀATÀAUÀAaÀA„ÀAØÀAÜÀAÝÀAéÀBÀBÀB)ÀBzÀB|ÀB}ÀBžÀBÛÀBÝÀBÞÀCÀC<ÀCHÀCŽÀC�ÀC‘ÀCÄÀCéÀDÀDÀDRÀDiÀD’ÀD¹ÀDâÀE ÀE.ÀE5ÀE9ÀE;ÀE<ÀEuÀE†ÀE²ÀE³ÀEÐÀEÑÀEÝÀFÀF2ÀFHÀF ÀFúÀGUÀGyÀG€ÀG„ÀG†ÀG‡ÀG×ÀH'ÀHsÀHxÀHŠÀH ÀHµÀHËÀHÞÀHæÀHúÀIXÀI·ÀJÀJ7ÀJ?ÀJDÀJUÀJ€ÀJžÀJçÀK%ÀK?ÀK}ÀK—ÀKéÀKïÀL2ÀLpÀL‹ÀLÉÀLäÀM5ÀM;ÀMOÀMiÀM†ÀM¤ÀMÖÀMüÀN.ÀNQÀNlÀNtÀN–ÀN³ÀNÑÀOÀO:ÀOlÀO�ÀOÁÀOÉÀOèÀPÀP#ÀPUÀP{ÀP–ÀP¹ÀPëÀPóÀP÷ÀPùÀPúÀQKÀQšÀQèÀR4ÀReÀRiÀR²ÀR¿ÀRêÀS7ÀSˆÀSÌÀSÒÀT#ÀTqÀTžÀTÙÀTïÀU ÀU#ÀU=ÀU>ÀUˆÀUÏÀUäÀUêÀV7ÀV_ÀVeÀV˜ÀVËÀVþÀW1ÀWdÀWjÀW¹ÀXÀX ÀXÀXYÀXpÀX‡ÀXžÀXµÀX¿ÀXÉÀXÏÀXáÀXçÀYÀYÀYÀYZÀYvÀY’ÀY®ÀYÊÀYÔÀYÞÀYäÀZkÀZqÀZÀZ¼ÀZßÀ[À[%À[HÀ[RÀ[\À[bÀ[ëÀ[ñÀ[ÿÀ\@À\fÀ\ŒÀ\²À\ØÀ\âÀ\ìÀ]À]1À]JÀ]bÀ]~À]À]ËÀ]ÛÀ^À^À^1À^GÀ^nÀ^oÀ^½À^ØÀ_À_À_.À_DÀ_kÀ_lÀ_ƒÀ_¢À_ÁÀ_ÔÀ_ÕÀ`À`:À`~À`ÇÀaÀaÀa)Àa5Àa‚ÀaƒÀa¬ÀaÁÀaØÀb Àb#Àb-ÀbUÀbnÀbœÀbºÀbÑÀbÛÀc&ÀcPÀctÀc©ÀcÍÀdÀdÀdSÀdYÀd]Àd^ÀdjÀd�Àd¹ÀdÍÀdÓÀdöÀeÀeMÀeoÀe—Àe›ÀeœÀe¨Àe½ÀeçÀfJÀfNÀfOÀf[Àf|Àf‘Àf¨ÀfáÀfúÀg)ÀgMÀgÀg£ÀgÕÀgäÀh ÀhÀhÀhÀh Àh6ÀhKÀhbÀh›Àh´ÀhãÀiÀi9Ài]Ài�ÀižÀj:Àj@ÀjDÀjFÀjGÀj…Àj‰ÀjÙÀk$ÀkvÀkŒÀkÇÀlÀl1ÀlrÀlvÀlwÀlÑÀlåÀmÀm"ÀmQÀm–ÀmªÀmÈÀmÌÀmÍÀmüÀnAÀnUÀnsÀnwÀnxÀnÆÀnìÀo Ào ÀoJÀojÀokÀoÐÀpÀpÀpYÀpŠÀp‹ÀpïÀqÀqÀq~Àq¨ÀqªÀq«ÀqÞÀqâÀqðÀqôÀrCÀr�ÀrßÀsÀsSÀs~Às›ÀsíÀtÀtÀtWÀt´Àu ÀuÀuÀu_Àu¥ÀuòÀv5Àv9Àv:Àv~ÀvÐÀwÀw^ÀwbÀwcÀw§Àw­ÀwûÀxEÀxcÀx~Àx¶Àx½ÀxÝÀyÀy!ÀyƒÀy‡ÀyˆÀyÒÀyØÀz'Àz^ÀzƒÀzÝÀ{%À{)À{*À{aÀ{gÀ{¶À|À|SÀ|£À|ÑÀ|×À} À}bÀ}ŽÀ}”À}áÀ~/À~GÀ~MÀ~[À~ˆÀ~ŽÀ~©À~ÅÀ~ËÀ~ôÀ~úÀÀÀ/ÀaÀ�À³ÀÍÀÚÀ€À€À€$À€*À€4À€:À€ˆÀ€ÖÀ�À�NÀ�kÀ�ÎÀ�ÔÀ‚À‚NÀ‚yÀ‚©À‚øÀƒ+Àƒ4ÀƒOÀƒ˜Àƒ Àƒ¼À„À„À„À„=À„AÀ„BÀ„ŠÀ„ÉÀ„ÊÀ…À…hÀ…�À…�À…ÙÀ†À†1À†3À†4À†fÀ†¯À†°À†ÊÀ†ïÀ†ðÀ‡À‡UÀ‡aÀ‡˜À‡™À‡¥À‡èÀ‡éÀ‡õÀˆ9Àˆ:ÀˆFÀˆiÀˆ•Àˆ©Àˆ¯ÀˆÙÀ‰ À‰8À‰<À‰=À‰IÀ‰‘À‰“À‰”À‰ÌÀŠ.ÀŠ/ÀŠFÀŠ]ÀŠyÀŠzÀŠŽÀŠÐÀŠÜÀ‹À‹À‹/À‹GÀ‹bÀ‹zÀ‹–À‹¯À‹ÍÀ‹èÀŒÀŒÀŒ,ÀŒJÀŒPÀŒTÀŒUÀŒaÀŒ«ÀŒ¬ÀŒ¸À�À�À�À�3À�_À�sÀ�yÀ�©À�ËÀ�íÀŽÀŽÀŽÀŽ"ÀŽUÀŽWÀŽXÀŽŠÀŽÐÀŽÑÀŽéÀ�À�À�FÀ�RÀ�‰À�ŠÀ�–À�ÖÀ�×À�ãÀ�$À�%À�1À�TÀ�€À�”À�šÀ�úÀ�þÀ�ÿÀ‘ À‘@À‘BÀ‘CÀ‘tÀ‘¹À‘ºÀ‘ÒÀ‘êÀ‘ëÀ’.À’:À’qÀ’rÀ’~À’½À’¾À’ÊÀ“ À“ À“À“:À“fÀ“zÀ“€À“ßÀ“ãÀ“äÀ“ðÀ”%À”'À”(À”[À”ªÀ”«À”ÌÀ”íÀ”îÀ•À•NÀ•ZÀ•‘À•’À•žÀ•ÀÀ–À–À–À–qÀ–rÀ–~À–¡À–ÍÀ–áÀ–çÀ—À—>À—hÀ—lÀ—mÀ—yÀ—¶À—¸À—¹À—óÀ˜À˜À˜>À˜?À˜ƒÀ˜„À˜�À˜ÇÀ˜ÈÀ˜ÔÀ™À™À™ À™UÀ™VÀ™bÀ™…À™±À™ÅÀ™ËÀ™ýÀšÀšRÀšVÀšWÀšŸÀšßÀšàÀšìÀ›À›À›À›UÀ›YÀ›©À›üÀœ@Àœ{Àœ·À�À�À�`À�dÀ�eÀ�²À�øÀž>ÀžRÀžƒÀž‡ÀžˆÀžÌÀŸÀŸbÀŸvÀŸ¦ÀŸªÀŸ«ÀŸïÀŸõÀ CÀ �À ÓÀ ÷À¡5À¡;À¡OÀ¡‰À¡�À¡ŽÀ¡ÀÀ¢À¢À¢bÀ¢†À¢ŠÀ¢‹À¢¾À£À£À£qÀ£ÇÀ¤À¤À¤À¤SÀ¤gÀ¤‡À¤‹À¤ŒÀ¤ÌÀ¤ìÀ¤íÀ¥-À¥RÀ¥dÀ¥hÀ¥¯À¥°À¥éÀ¦À¦"À¦&À¦cÀ¦dÀ¦�À¦ÃÀ¦ÕÀ¦ÙÀ§À§À§pÀ§µÀ§¶À¨À¨RÀ¨SÀ¨šÀ¨ÈÀ¨ÌÀ©À© À©zÀ©®À©¯À©ýÀª#Àª@ÀªBÀªCÀª‰Àª¾ÀªóÀ«=À«YÀ«uÀ«ƒÀ«„À«£À«¤À«ÍÀ«ÓÀ¬$À¬?À¬WÀ¬gÀ¬ˆÀ¬›À¬¥À¬ºÀ¬¾À¬¿À­À­2À­8À­…À­ÏÀ®À®bÀ®hÀ®­À®ÀÀ®ÐÀ¯À¯;À¯NÀ¯XÀ¯\À¯^À¯_À¯´À¯ÍÀ¯ÑÀ°À°lÀ°¹À± À± À±bÀ±¶À²À²gÀ²ºÀ²ãÀ²çÀ³AÀ³fÀ³jÀ³xÀ³|À³ÀÀ´ À´ZÀ´„À´ÎÀµÀµ=ÀµŠÀµØÀµòÀ¶-À¶=À¶—À¶�À¶éÀ·/À·5À·�À·­À·³À¸À¸yÀ¸ÛÀ¸äÀ¸åÀ¹6À¹<À¹”À¹òÀºÀº$Àº~ÀºÛÀºáÀ»GÀ»­À¼À¼À¼À¼rÀ¼xÀ¼ÐÀ½(À½~À½™À½ŸÀ½ùÀ¾OÀ¾dÀ¾jÀ¾ÎÀ¿2À¿•À¿ŸÀ¿ À¿àÀ¿æÀÀ@ÀÀ›ÀÀ«ÀÀ±ÀÁ ÀÁ*ÀÁ0ÀÁ“ÀÁöÀÂXÀÂaÀÂcÀÂdÀ›ÀÂÃÀÂýÀÃ&ÀÃ{ÀÞÀÃÁÀÃäÀÄÀÄ ÀÄÀÄÀÄÀÄPÀÄxÀĪÀÄÓÀÄôÀÄøÀÅ ÀÅ ÀÅ ÀÅ@ÀÅhÀÅ¢ÀÅËÀÅéÀÆ ÀÆ0ÀÆSÀÆrÀÆ‘ÀÆ•ÀƦÀƨÀÆ©ÀÆæÀÇÀÇ*ÀÇWÀÇpÀljÀÇ¢ÀÇ»ÀÇÌÀÇÎÀÇÏÀÈÀÈÀÈmÀÈ€ÀÈ„ÀÈ’ÀÈ–ÀÉ ÀÉÀÉ5ÀÉjÀÉpÀÉ¿ÀÊÀÊZÀÊ©ÀÊúÀËKÀË›À˽ÀËÃÀÌÀÌHÀÌNÀ̱ÀÍÀÍxÀÍÞÀÍäÀÎ/ÀÎuÀÎ�ÀΖÀÎãÀÏ6ÀÏvÀωÀÏšÀÏ©ÀÏÃÀÏáÀÐ ÀÐ#ÀÐHÀÐkÀЧÀкÀÐçÀÑ+ÀÑnÀÑ«ÀѺÀÑæÀÑúÀÒUÀÒYÀÒZÀÒ¥ÀÒÅÀÒËÀÓÀÓkÀÓµÀÔÀÔUÀÔ¦ÀÔöÀÕÀÕÀÕlÀÕ¢ÀÕ¨ÀÖ ÀÖnÀÖÒÀ×8À×>À×�À×ÕÀ×ðÀ×öÀØCÀØ–ÀØÖÀØÜÀÙ(ÀÙvÀÙÀÀÚÀÚ]ÀÚ‚ÀÚ•ÀÚ¨ÀÚ»ÀÚÕÀÚóÀÛÀÛ5ÀÛHÀÛfÀÛ�ÀÛÉÀÛÜÀÜ ÀÜFÀÜUÀÜ�ÀÜÄÀÜÅÀÝ*À݆ÀÝÊÀÝàÀÝóÀÞÀÞÀÞ)ÀÞ?ÀÞYÀÞqÀÞ‚ÀÞ‹ÀÞ˜ÀÞ¦ÀÞÝÀßÀß(Àß<ÀßNÀß`ÀßuÀ߈Àß›Àß«ÀßÁÀßÛÀßóÀàÀà ÀàÀàÀàÀàhÀà†ÀàŒÀà×Àá%Àá`ÀáfÀáµÀâÀâPÀâŸÀâðÀãAÀã‘Àã³Àã¹Àä ÀäJÀäPÀä²ÀåÀåwÀåÜÀåâÀæ1Àæ�Àæ¤ÀæªÀæ÷ÀçJÀçŠÀçœÀç¯ÀçÉÀççÀèÀè,ÀèOÀèiÀè�Àè¶ÀèòÀéÀé2ÀéuÀé²ÀéÁÀéíÀêÀêÀê"Àê3ÀêGÀê_ÀêuÀê‡Àê—Àê¦Àê­Àê±Àê²ÀêïÀëÀëÀë`Àë„ÀëˆÀë¥ÀëÀÀëØÀëõÀìÀì!Àì&Àì'Àì‡Àì«Àì¯ÀìÌÀìàÀìôÀíÀíÀí<ÀíNÀíhÀímÀínÀíyÀíŒÀí¡Àí¯Àí½ÀíËÀíÙÀíçÀíõÀîÀîÀîÀî,Àî2Àî_Àî}Àî�Àî£Àî»ÀîÌÀîÝÀîóÀï Àï(Àï:ÀïTÀïYÀïZÀïeÀïÅÀïèÀðÀðÀð,ÀðDÀðaÀðsÀðŠÀðŸÀð¸Àð½Àð¾ÀñÀñ.ÀñNÀñ¦Àñ®Àñ»ÀñëÀòGÀòOÀòUÀòYÀò[Àò\ÀòšÀòÂÀòèÀòîÀó*ÀóyÀó¿ÀóñÀó÷ÀôGÀô–Àô¤ÀôªÀôñÀõ7ÀõdÀõjÀõ°ÀöÀöMÀöjÀö†Àö•Àö¦Àö¸ÀöÊÀöåÀ÷À÷,À÷?À÷_À÷�À÷£À÷·À÷áÀ÷õÀøÀøÀø9ÀøHÀøOÀøhÀø†ÀøŒÀø�Àø‘Àø�Àø°ÀøÅÀøÕÀøÙÀøÚÀùÀù:Àù;Àù’Àù¼ÀùÀÀùãÀùõÀúÀúÀú+ÀúDÀúIÀúJÀú•ÀúºÀûÀûÀû Àû!ÀûkÀû€Àû„Àû®ÀûþÀü<ÀüXÀüˆÀüœÀüÐÀüíÀý ÀýÀý"Àý?ÀýRÀý\Àý`ÀýaÀýwÀýxÀý½ÀýÃÀþ ÀþQÀþžÀþ´ÀþòÀÿ7Àÿ€ÀÿÊÀÿ÷À?À�ÀœÀÑÀ×À ÀWÀ„ÀšÀ¢À¦À§ÀàÀ3À€ÀÎÀÀ4À�À�ÀÅÀÀ^ÀŠÀÊÀåÀóÀùÀúÀ6ÀSÀ„ÀŠÀŽÀ�À«ÀÊÀËÀçÀÀÀFÀfÀgÀÃÀöÀ÷À+ÀÀ�À‚ÀµÀ¹ÀîÀ6À†ÀÔÀúÀþÀ KÀ ˜À æÀ /À hÀ “À ÔÀ òÀ À \À `À aÀ }À ~À ¾À êÀ ëÀ À %À sÀ ÁÀ À ZÀ ªÀ ÔÀ ÚÀ!À'À5ÀQÀsÀ’À­À·À½À ÀÀÀ)ÀzÀ¥ÀÖÀÀ À@À‹ÀÖÀ!ÀlÀrÀ™ÀÃÀËÀÕÀÛÀ(À}ÀŽÀ”ÀÞÀ À^ÀzÀ~ÀÀµÀ»ÀÀVÀ\À©ÀÊÀûÀOÀŒÀ·À»À¼ÀþÀÀSÀŸÀÚÀæÀùÀÀ0À@ÀDÀEÀªÀÏÀìÀÀÀ!À"À[À’À–ÀÓÀÔÀ0ÀUÀVÀµÀÝÀÞÀ1ÀMÀOÀPÀ¡À¥ÀÈÀÀÀ_ÀlÀmÀ»ÀÌÀÍÀÀ3À9À„ÀÂÀÀÀÀÀMÀQÀ ÀæÀ1À}ÀÍÀóÀ÷ÀDÀ’ÀáÀñÀõÀ AÀ �À ßÀ!,À!yÀ!ÉÀ"À"eÀ"€À"„À"ÑÀ#À#hÀ#ŠÀ#ŽÀ#ÝÀ$"À$oÀ$ÀÀ%À%aÀ%„À%»À&À&À&VÀ&£À&ñÀ'<À'kÀ'qÀ'¾À'çÀ'íÀ(>À(ŒÀ(ÛÀ)À)6À)<À)‹À)ÚÀ)àÀ*2À*[À*aÀ*±À+À+SÀ+ŸÀ+íÀ,8À,ƒÀ,“À,™À,çÀ-À-À-UÀ-[À-§À-øÀ.IÀ.•À.¼À.ÈÀ.ÝÀ.ûÀ/À/:À/RÀ/YÀ/˜À/ãÀ/éÀ0@À0—À0�À0­À0ÊÀ1 À1@À1aÀ1¯À1øÀ2EÀ2TÀ2`À2jÀ2rÀ2…À2�À2ÕÀ3%À3TÀ3dÀ3»À4À4À4*À46À4HÀ4`À4�À4–À4¬À4µÀ4÷À4ýÀ5À5À5SÀ5‚À5ˆÀ5ÖÀ6#À6qÀ6¼À6ëÀ6ñÀ7>À7ˆÀ7ÔÀ8#À86À8<À8�À8ÜÀ9#À9tÀ9ÅÀ:À:KÀ:QÀ: À:ïÀ;@À;‰À;ÂÀ;ÈÀ<ÀÀ>$À>rÀ>ÂÀ?À??À?EÀ?ƒÀ?“À?¨À?ÅÀ?ÜÀ@À@À@!À@FÀ@aÀ@¾À@ÇÀ@ÍÀAÀA[ÀAaÀA¸ÀBÀBÀB%ÀBBÀB„ÀB¼ÀBÝÀC+ÀCyÀCÆÀCÕÀCáÀCëÀCóÀDÀDÀDdÀD¦ÀD¬ÀD°ÀD±ÀEÀE1ÀEKÀEYÀEtÀE™ÀE°ÀEÉÀEÎÀEÏÀFÀFBÀFUÀFmÀF}ÀF•ÀF¨ÀF²ÀFÂÀFÆÀFÇÀGÀG7ÀG|ÀG˜ÀG™ÀG³ÀG´ÀGþÀHÀHRÀHhÀHƒÀH—ÀH§ÀHÃÀHÖÀHàÀH÷ÀIYÀI]ÀI_ÀI`ÀI®ÀI²ÀIîÀJ*ÀJ;ÀJ]ÀJcÀJ±ÀJûÀK4ÀK:ÀK‡ÀKÖÀKìÀKöÀK÷ÀL1ÀL7ÀL}ÀLƒÀLÅÀLÛÀLäÀLåÀMÀM!ÀMcÀMyÀM„ÀM†ÀM‡ÀMÑÀMÝÀMáÀNÀNÀNFÀNTÀNUÀNŽÀN›ÀN�ÀNžÀNÓÀN×ÀOÀObÀO£ÀO§ÀOðÀP@ÀP‰ÀP¦ÀPªÀPúÀQCÀQxÀQ|ÀQÉÀRÀR ÀR2ÀR6ÀR�ÀRÑÀSÀSnÀS¸ÀSëÀSïÀT:ÀT�ÀT™ÀTÜÀTúÀUÀUIÀU‘ÀUáÀV0ÀV}ÀVÀÀVÆÀW ÀW#ÀWqÀWrÀWºÀWÀÀWìÀWòÀXÀXÀXYÀXŽÀX�ÀXžÀXïÀY@ÀY�ÀYØÀYçÀYíÀZ9ÀZŠÀZØÀ[ À[nÀ[¸À[¾À\ À\À\5À\;À\‰À\ÕÀ]%À]uÀ]šÀ] À]îÀ^7À^ˆÀ^ÖÀ_$À_tÀ_¼À_éÀ_ïÀ`9À`RÀ`XÀ`fÀ`“À`»À`ÒÀaÀa;ÀarÀa«ÀaÅÀaßÀaçÀañÀa÷ÀbFÀb”ÀbâÀcÀcÀcÀcAÀc„Àc¬ÀcÃÀdÀd:ÀdsÀd�Àd•ÀdŸÀd¥ÀdöÀe<Àe†ÀeŒÀešÀeÇÀeÞÀf2ÀfkÀf…ÀfœÀfýÀg6ÀgPÀgXÀgbÀghÀg³ÀgüÀhMÀh…Àh‹Àh¯ÀhµÀhôÀhúÀiHÀi–ÀiçÀj2Àj�ÀjÏÀkÀkeÀk¶ÀlÀl"Àl(Àl8Àl>ÀlŽÀl°ÀløÀmÀm;Àm<Àm|Àm›Àm¡ÀmàÀmæÀn/ÀnsÀn…Àn†ÀnâÀo/Ào�Ào‡ÀoÆÀoÌÀpÀpjÀpŒÀp®Àp¯ÀpòÀq7Àq~Àq³Àq¹ÀqÞÀqôÀqõÀrEÀr•Àr½Àr¾Às ÀsWÀshÀsnÀs´ÀsÆÀsíÀsîÀtCÀtbÀtcÀt´ÀuÀuOÀuxÀu›ÀuœÀuìÀv'ÀvNÀvOÀv¢ÀvøÀwÀwÀwlÀwºÀx Àx7ÀxUÀxVÀx¤Àx»ÀxÁÀyÀyÀyaÀygÀy¹ÀzÀz*Àz0ÀzzÀzŽÀzçÀzèÀ{6À{UÀ{[À{²À{¸À{üÀ|À|TÀ|œÀ|ìÀ}&À}'À}uÀ}—À}�À}üÀ~À~FÀ~LÀ~žÀ~æÀ>À�À‘ÀßÀóÀùÀ€OÀ€UÀ€™À€ŸÀ€ñÀ�9À�bÀ�™À�šÀ�ëÀ‚=À‚�À‚¡À‚§À‚ûÀƒNÀƒ ÀƒïÀ„>À„‘À„äÀ…3À…„À… À…¦À…ÞÀ†0À†„À†ÓÀ‡À‡À‡iÀ‡�À‡–À‡¤À‡ÅÀ‡äÀˆÀˆZÀˆyÀˆ³ÀˆïÀˆþÀ‰À‰À‰À‰gÀ‰³ÀŠÀŠbÀŠrÀŠxÀоÀ‹ À‹?À‹EÀ‹•À‹äÀŒ0ÀŒHÀŒ]ÀŒzÀŒ{ÀŒÌÀ�À�qÀ�wÀ�ÇÀŽÀŽiÀ޹À� À�_À�²À�¿À�ÅÀ�úÀ�À�À�aÀ�­À�ÊÀ�þÀ�ÿÀ‘NÀ‘–À‘œÀ‘êÀ‘ðÀ’[À’ÊÀ’þÀ’ÿÀ“.À“4À“yÀ“”À“³À“´À”À”?À”EÀ”°À•À•HÀ•IÀ•šÀ•ÜÀ•âÀ–NÀ–¾À–êÀ–ëÀ—;À—‹À—±À—·À—üÀ˜6À˜7À˜‡À˜ÊÀ˜ÐÀ™DÀ™·À™ûÀ™üÀšIÀššÀš½ÀšÃÀ›.À›�À›ÆÀ›ÇÀœÀœdÀœ³ÀœÖÀœÜÀ�IÀ�ºÀ�óÀ�ôÀž0Àž6ÀžvÀžÃÀŸ ÀŸaÀŸ²À À .À 4À £À¡À¡À¡tÀ¡ÒÀ¡ÓÀ¢À¢À¢WÀ¢ À¢ÌÀ¢õÀ¢öÀ£DÀ£›À£ÖÀ£×À¤&À¤rÀ¤xÀ¤ÇÀ¤àÀ¤æÀ¥2À¥{À¥ŽÀ¥ÒÀ¥ÓÀ¦À¦ À¦nÀ¦¼À§ À§VÀ§™À§ŸÀ§íÀ¨:À¨ˆÀ¨ÏÀ¨àÀ©'À©(À©oÀ©ˆÀ©­À©®À©úÀª ÀªÀª[ÀªhÀªnÀªºÀ«À«EÀ«KÀ«šÀ«æÀ«ìÀ¬=À¬ŠÀ¬×À¬ÝÀ­'À­sÀ­ÀÀ­úÀ­ûÀ®@À®FÀ®�À®“À®ÙÀ¯#À¯)À¯9À¯?À¯�À¯¨À¯òÀ¯óÀ°8À°>À°ŽÀ°ÛÀ°áÀ±'À±qÀ±wÀ±‡À±�À±ÛÀ±ùÀ²EÀ²FÀ²�À²–À²âÀ²óÀ²ùÀ³BÀ³“À³ªÀ³°À³ùÀ´GÀ´“À´ÛÀµ+ÀµvÀµÁÀ¶À¶]À¶§À¶áÀ¶çÀ·À·À·$À·uÀ·ÁÀ·èÀ¸:À¸„À¸…À¸ÉÀ¸ÏÀ¹ À¹yÀ¹ÌÀº ÀºXÀº^Àº®ÀºÿÀ»NÀ» À»ðÀ¼DÀ¼�À¼–À¼çÀ½7À½ŒÀ½ãÀ¾À¾gÀ¾µÀ¾ùÀ¾ÿÀ¿RÀ¿¡À¿ìÀÀ:ÀÀ�ÀÀ•ÀÀéÀÁ:ÀÁƒÀÁ‰ÀÁÚÀÁõÀÁûÀ ÀÂÀÂGÀÂZÀÂqÀÂyÀÂÀ­ÀÂãÀÂéÀÃBÀÃ`ÀÃ�ÀÇÀÙÀÃÈÀÃéÀÄ ÀÄTÀÄ~ÀÄ�ÀĹÀÄöÀÅÀÅ2ÀÅxÀŦÀÅÔÀÅåÀÅúÀÆ.ÀÆqÀƘÀÆ¢ÀƨÀÆ·ÀÆ¿ÀÆÉÀÆÏÀÇ(ÀÇ.ÀÇ<ÀÇQÀÇ•ÀǨÀÇ¿ÀÇÒÀÇëÀÇóÀÇùÀÈ'ÀÈ]ÀÈcÀȼÀÈÚÀÈûÀÉÀÉÀÉBÀÉcÀÉšÀÉÎÀÉøÀÊ#ÀÊ?ÀÊ|ÀÊšÀʸÀÊþÀË,ÀËZÀËkÀË€ÀË´ÀË÷ÀÌ ÀÌAÀÌuÀÌ¡ÀÌ«À̱ÀÌÀÀÌÈÀÌÒÀÌØÀÍ!ÀÍlÀÍŸÀÍ¥À͵ÀÍ»ÀÎ ÀÎ ÀÎ2ÀÎCÀÎeÀÎ{ÀΔÀήÀÎÂÀÎÓÀÎØÀÎÙÀÏÀÏ#ÀÏtÀÏÍÀÐ ÀÐtÀÐÆÀÑÀÑOÀÑUÀÑ¥ÀÑíÀÑóÀÒDÀÒ„ÀÒ¯ÀÒµÀÓÀÓMÀÓSÀÓŸÀÓìÀÔ<ÀÔBÀÔ�ÀÔ®ÀÔ´ÀÔÂÀÔ×ÀÕÀÕÀÕ*ÀÕ2ÀÕ8ÀÕfÀÕœÀÕ¢ÀÕûÀÖÀÖ:ÀÖ@ÀÖRÀÖ�ÀÖÑÀ× À×qÀ×�À×ÒÀØÀØTÀØÀصÀØÞÀÙÀÙ5ÀÙ]ÀÙcÀÙ¼ÀÚÀÚqÀÚ³ÀÚßÀÛ ÀÛJÀÛ‰ÀÛ•ÀÛ¶ÀÜÀÜÀÜ$ÀÜ3ÀÜ;ÀÜEÀÜKÀܤÀܪÀܸÀÜÍÀÝÀÝ$ÀÝ;ÀÝNÀÝgÀÝoÀÝuÀÝ£ÀÝÙÀÝßÀÞ8ÀÞVÀÞwÀÞ}ÀÞ�ÀÞ¾ÀßÀß]Àß®ÀßÊÀàÀàYÀà—ÀàÏÀàúÀá0ÀáYÀá€Àá°ÀáØÀáÞÀâ9Àâ�ÀâëÀãHÀã“ÀãÙÀäÀäÀäWÀäsÀä�ÀäÓÀäÿÀå+Àå:ÀåqÀå¨ÀåÝÀæÀæÀærÀæÌÀç$ÀçkÀçšÀç¦ÀçÇÀè5Àè?ÀèEÀèTÀè\ÀèfÀèlÀè|Àè‚ÀèÏÀèäÀèùÀé Àé)Àé@ÀéWÀéqÀé…Àé–Àé›ÀéœÀééÀéïÀê?ÀêTÀêZÀê€Àê×ÀêÙÀêÚÀë(ÀëfÀë†ÀëãÀëéÀìÀì<Àì[Àì·Àì»Àì¼Àí Àí+Àí/ÀíMÀírÀíƒÀí“Àí¥Àí¸Àí½Àí¾ÀîÀîvÀî»ÀîàÀîáÀîíÀï;ÀïSÀïTÀïwÀï�Àï«ÀïÔÀïýÀð&ÀðOÀðXÀð^ÀðoÀðsÀðtÀð€Àð®ÀðÈÀñÀñÀñ5ÀñšÀñ Àñ¤Àñ¥ÀòÀòaÀòbÀò»ÀòÜÀòàÀòüÀó ÀóÀó/ÀóBÀócÀó{Àó€Àó�Àó�ÀóÞÀóùÀóúÀôÀôeÀô�Àô‘Àô�ÀôôÀõÀõÀõ ÀõƒÀõ´ÀõµÀõÁÀöÀöÀö`ÀöŽÀö�Àö›ÀöóÀ÷À÷À÷(À÷†À÷²À÷³À÷¿À÷çÀøÀøEÀøKÀødÀøhÀøiÀø¶ÀøçÀøèÀøôÀùÀùDÀù`ÀùtÀùxÀùyÀùÉÀùýÀùþÀú ÀúdÀú„ÀúžÀúëÀû9Àû{ÀûÓÀû×ÀûØÀü.ÀüNÀü`ÀüdÀüÀü�Àü Àü²ÀüÅÀüÕÀüëÀüðÀüñÀüýÀý8ÀýZÀýŒÀý�Àý‘ÀýäÀþ%Àþ&Àþ2Àþ…Àþ·ÀþõÀþùÀþúÀÿ\Àÿ¶Àÿ·ÀÿÃÀÿûÀ,À0À1ÀŠÀÉÀÊÀÖÀôÀ#ÀDÀŠÀŽÀ�ÀåÀÀÀ+ÀOÀ~À¥ÀëÀïÀðÀLÀ‹ÀŒÀ˜ÀÍÀûÀÿÀÀbÀ˜À™À¥ÀÚÀúÀÀbÀfÀgÀÀÀàÀäÀÿÀÀÀ,À;À\ÀtÀyÀzÀ†À¦ÀÓÀ×ÀØÀ-ÀzÀ{À‡À±ÀÑÀëÀ)À…À‹À�À�ÀéÀ À À (À 9À IÀ [À nÀ �À §À ¬À ­À ¹À æÀ À JÀ NÀ OÀ ¬À À À À TÀ vÀ ˜À ðÀ ôÀ õÀ >À `À dÀ �À ˜À ¯À ÐÀ èÀ íÀ îÀ úÀ ?À qÀ ¿À ÃÀ ÄÀ À5À9À]À…À¦À¾ÀÃÀÄÀÐÀúÀÀ4ÀrÀÎÀÔÀØÀÙÀ2ÀRÀVÀqÀ‚À’À¤À·ÀØÀðÀõÀöÀÀ<À[À�À¡À¢ÀóÀÀÀ6ÀDÀRÀeÀ†ÀžÀ£À¤À°ÀÀ/À=ÀNÀ^ÀpÀƒÀ•À§À¸ÀÎÀáÀèÀìÀíÀøÀ À À.À<ÀJÀXÀfÀtÀ€ÀŽÀœÀ¢ÀÁÀÛÀìÀüÀÀ!À8ÀOÀcÀ„ÀœÀ¡À¢À®ÀØÀÀÀÀ�ÀßÀàÀìÀ(ÀJÀnÀ”À¨À¹ÀÊÀàÀóÀÀÀ4À‚ÀˆÀŒÀ�ÀîÀÀÀ2ÀDÀRÀ`À�À™ÀµÀºÀ»ÀÇÀ À.ÀMÀlÀ–ÀªÀºÀÉÀÚÀìÀüÀ ÀÀ.ÀDÀWÀxÀÀ˜ÀæÀìÀðÀñÀüÀÀ&À;ÀIÀWÀeÀsÀ�À�À�À«À¹ÀÇÀÔÀÚÀÿÀ"À4ÀHÀ[ÀpÀ†ÀšÀ­ÀÂÀØÀùÀÀ-À2À3À?À‡À©ÀËÀêÀÀ(À;ÀMÀaÀvÀ†À•À¦À¸ÀÎÀáÀ À À "À pÀ vÀ zÀ {À †À ›À °À ÅÀ ÓÀ áÀ ïÀ ýÀ! À!À!'À!5À!CÀ!QÀ!^À!dÀ!‰À!¬À!¾À!ÕÀ!ëÀ"À"À"0À"CÀ"XÀ"nÀ"�À"§À"ÃÀ"ÈÀ"ÉÀ"ÕÀ"ûÀ#À#LÀ#PÀ#QÀ#§À#ÝÀ#ÞÀ#êÀ$%À$qÀ$�À$ÁÀ$ìÀ%$À%(À%)À%5À%€À%ÙÀ%ÝÀ%ÞÀ%êÀ&7À&YÀ&¤À&ªÀ&ñÀ&õÀ&öÀ'[À'xÀ'™À'±À'ÄÀ'ÜÀ'áÀ'âÀ'îÀ(9À(^À(©À(­À(®À(ýÀ)!À)%À)DÀ)[À)nÀ)�À)§À)¬À)­À)¹À)ËÀ)ÜÀ)þÀ*À*-À*GÀ*[À*lÀ*rÀ*”À*×À*ØÀ+À+*À+uÀ+{À+ÈÀ+ãÀ,8À,AÀ,GÀ,HÀ,�À,ÎÀ,ÏÀ,ùÀ-À->À-cÀ-ˆÀ-¾À-àÀ.À.8À.nÀ.¢À.ÖÀ.üÀ/!À/HÀ/pÀ/vÀ/wÀ/½À/ÌÀ/ðÀ01À0iÀ0jÀ0�À0¦À0¹À0ÍÀ0áÀ0ûÀ1 À1 À1JÀ1`À1gÀ1hÀ1�À1ÏÀ1ÕÀ1ÙÀ1ÚÀ1æÀ1ûÀ2 À2+À2BÀ2YÀ2sÀ2‡À2˜À2žÀ2ÏÀ2ÐÀ2øÀ3%À3sÀ3yÀ3—À3õÀ3ûÀ47À4RÀ4¸À4ÁÀ4ÇÀ4ÿÀ5À5&À5<À5OÀ5cÀ5wÀ5ŒÀ5™À5§À5ÑÀ5ðÀ5÷À5øÀ6À6_À6eÀ6iÀ6jÀ6uÀ6ŠÀ6ŸÀ6­À6»À6ÈÀ6ÝÀ6ëÀ6ùÀ7À7À7"À7(À7IÀ7hÀ7‰À7¡À7½À7ÏÀ7îÀ8À8À8/À8JÀ8OÀ8PÀ8\À8´À9À9 À9 À9ZÀ9|À9€À9�À9³À9ÂÀ9ØÀ9öÀ9ûÀ9üÀ:À:JÀ:LÀ:MÀ:{À:ºÀ:»À;À;À;;À;?À;†À;ÈÀ< À<#ÀÀ>6À>`À>aÀ>‹À>‘À>àÀ?/À?xÀ?¨À?©À?ëÀ?ñÀ@(À@wÀ@ÆÀAÀAÀAeÀA³ÀAàÀAæÀB6ÀBÀB˜ÀBžÀBíÀCÀC.ÀC/ÀCÀC¢ÀC´ÀCµÀCûÀDÀDOÀDeÀDÀD€ÀDÉÀDÏÀE ÀERÀErÀEtÀEuÀEÅÀFÀF+ÀF1ÀFgÀF}ÀF~ÀFŠÀF»ÀFÓÀFøÀG,ÀG2ÀGHÀG˜ÀGµÀGÏÀGàÀHÀH)ÀH3ÀH:ÀH>ÀH?ÀH�ÀHòÀHóÀHÿÀI,ÀIDÀIiÀI�ÀI£ÀI¤ÀIÉÀIñÀJ'ÀJ+ÀJ,ÀJŒÀJÒÀJÓÀJßÀJòÀK ÀKÀK2ÀKEÀKOÀKrÀK‚ÀK†ÀK‡ÀKÒÀK÷ÀL;ÀLWÀLXÀLrÀLsÀLÀLšÀL®ÀL¾ÀLÚÀLíÀL÷ÀMÀMoÀMsÀMtÀM€ÀMÞÀNÀNÀNÀN6ÀN8ÀN9ÀN€ÀN„ÀNÉÀOÀOÀO8ÀO<ÀO‡ÀOÔÀPÀPjÀP´ÀPÿÀQ/ÀQ3ÀQ~ÀQÅÀQæÀR'ÀRnÀRŠÀRÀÀRÁÀRüÀSÀSFÀS�ÀSÄÀT ÀTEÀT]ÀT^ÀT�ÀT“ÀTÞÀU.ÀUsÀU�ÀU�ÀU�ÀUðÀV ÀV!ÀV%ÀV&ÀVjÀVŠÀV‹ÀV—ÀVÂÀVÃÀVÏÀVêÀWÀWIÀWOÀW†ÀW¢ÀWÁÀWÕÀX(ÀXoÀX”ÀX¨ÀX¬ÀX­ÀYÀY@ÀYAÀY[ÀY\ÀYhÀY«ÀY­ÀY®ÀYÃÀYÇÀZÀZÀZ,ÀZ2ÀZ}ÀZÈÀZâÀZèÀ[)À[/À[~À[—À[¨À[ÖÀ[õÀ\À\eÀ\fÀ\–À\ºÀ\äÀ]À]6À]]À]‡À]ˆÀ]¸À]¾À^À^3À^HÀ^IÀ^ˆÀ^ŽÀ^ÜÀ_(À_jÀ_�À_‚À_ÔÀ_ïÀ_ðÀ`"À`(À`[À`aÀ`ŽÀaÀa7ÀakÀaoÀapÀa¬Àa²ÀaåÀb!Àb"ÀboÀbuÀb²ÀcÀc(Àc.ÀcrÀc»Àd Àd,Àd@ÀdSÀdiÀd¬Àd°Àd±ÀeÀeÀe1ÀeŒÀe�Àe‘ÀeÁÀeÇÀfÀfUÀfyÀfÀf¥ÀfòÀg<Àg‡ÀgÓÀh!ÀhqÀh¾ÀiÀiÀiWÀiwÀiŒÀiÄÀiÙÀiðÀjÀjÀj5Àj=ÀjJÀjaÀj|Àj‹Àj¢ÀjÕÀk ÀkNÀkYÀkaÀkgÀkkÀklÀk¥Àk«ÀkóÀkùÀlÀljÀlŒÀlŸÀl¥Àl»ÀlÑÀlýÀm8ÀmhÀm—Àm�ÀmÔÀmûÀnÀn8ÀnYÀn_ÀnrÀnvÀnwÀnƒÀn¦ÀnÈÀnÛÀnáÀnÿÀoÀoAÀoiÀomÀonÀozÀo¸Ào¹ÀpÀpWÀpsÀp­ÀpÈÀpâÀpèÀpéÀq&Àq\Àq]ÀqwÀqÄÀqöÀr+Àr,ÀrHÀrnÀr¢Àr¼ÀrÅÀrÆÀs"Às#ÀsÀs€ÀsÏÀt'Àt-Àt.ÀtFÀtJÀtKÀtWÀtšÀtœÀt�ÀtäÀtèÀu7ÀuMÀu‹Àu®Àu¯ÀuýÀvÀvSÀv˜ÀvÊÀv÷ÀwÀwÀwÀwTÀwZÀw“ÀwÑÀxÀx_Àx©ÀxÖÀyÀyYÀyŠÀyÆÀyáÀyûÀz'Àz/ÀzXÀz`ÀzdÀzeÀz–ÀzœÀzÕÀ{À{MÀ{~À{³À{ÎÀ{èÀ|"À|*À|SÀ|[À|_À|`À|´À|øÀ|ùÀ}VÀ}£À}¤À~À~LÀ~MÀ~�À~žÀ~­À~®À~ÍÀ~ÎÀ~÷À~ýÀNÀiÀ�À‘À²ÀÅÀÏÀäÀèÀéÀ€9À€\À€bÀ€¯À€ùÀ�FÀ�“À�áÀ�ÿÀ‚À‚"À‚AÀ‚^À‚qÀ‚{À‚‹À‚�À‚�À‚ÛÀƒÀƒLÀƒhÀƒjÀƒkÀƒ¶ÀƒºÀ„ À„!À„BÀ„{À„�À„ÑÀ…#À…=À…CÀ…‘À…äÀ†%À†bÀ†�À†ŸÀ†·À†ÐÀ†ãÀ‡ À‡,À‡-À‡xÀ‡»ÀˆÀˆ7ÀˆoÀˆ�Àˆ“Àˆ”Àˆ¾ÀˆÄÀˆÿÀ‰À‰À‰<À‰BÀ‰}À‰�À‰�À‰ÂÀ‰ÈÀ‰ÿÀŠÀŠÀŠiÀŠŒÀŠ’ÀŠÝÀ‹À‹À‹À‹cÀ‹À‹…À‹ÐÀŒÀŒ.ÀŒ4ÀŒ‚ÀŒªÀŒóÀŒõÀŒöÀ�VÀ�tÀ�uÀ�®À�´ÀŽÀŽVÀŽpÀŽvÀŽÄÀ�À�XÀ�•À�³À�ÑÀ�éÀ�À�À�;À�BÀ�VÀ�lÀ�±À�ÉÀ‘À‘À‘À‘~À‘ÑÀ‘ÒÀ’À’@À’DÀ’eÀ’ˆÀ’¤À’³À’ÃÀ’ÕÀ’êÀ’ïÀ’ðÀ’ÿÀ“À“YÀ“uÀ“vÀ“‚À“­À“®À“¾À“¿À”À”6À”7À”CÀ”qÀ”rÀ”‰À”ŠÀ”ëÀ•À•À•À•_À•`À•lÀ•¸À•ÓÀ•ÔÀ•àÀ–0À–cÀ–}À–ƒÀ–¸À–ÓÀ–ÙÀ–ÚÀ—À—,À—IÀ—‡À—ÆÀ˜À˜:À˜@À˜aÀ˜ƒÀ˜„À˜®À˜éÀ˜ûÀ˜ÿÀ™À™?À™pÀ™tÀ™ÊÀ™ËÀ™×À™îÀšfÀšhÀšiÀšžÀšÎÀšÏÀ› À›UÀ›VÀ›ŽÀ›’À›ÜÀ›éÀœ,Àœ-ÀœnÀœŠÀœßÀœàÀ�/À�DÀ�GÀ�”À�±À�´ÀžÀžÀžÀžÀž#ÀžWÀžZÀž•ÀžÒÀž×ÀžÚÀžùÀŸ)ÀŸ.ÀŸ5ÀŸ8ÀŸ�ÀŸãÀ À À hÀ œÀ ÒÀ¡À¡]À¡šÀ¡°À¡ÜÀ¡ñÀ¢À¢2À¢AÀ¢�À¢‰À¢–À¢³À¢¹À¢¿À¢ÑÀ¢èÀ£À£À£#À£%À£&À£iÀ£¯À£åÀ¤,À¤pÀ¤­À¤ÃÀ¤þÀ¥À¥0À¥=À¥QÀ¥‡À¥–À¥ßÀ¥çÀ¥íÀ¥óÀ¦À¦À¦8À¦<À¦WÀ¦YÀ¦ZÀ¦©À¦÷À¦ûÀ§KÀ§›À§ÐÀ¨ À¨PÀ¨QÀ¨†À¨žÀ¨ŸÀ¨ñÀ© À© À©À©/À©‰À©¢À©ºÀªÀª*Àª0ÀªNÀªRÀªTdart.ui€¬Y _rectIsValid _rrectIsValid_rsuperellipseIsValid_offsetIsValid_matrix4IsValid_radiusIsValid _scaleAlphaColor BlendMode FilterQuality StrokeCap StrokeJoin PaintingStyleClipPaint ColorSpace_colorSpaceToIndex_indexToColorSpaceImageByteFormat PixelFormatImage_Image _wrapImage FrameInfoCodec _NativeCodecinstantiateImageCodecinstantiateImageCodecFromBufferinstantiateImageCodecWithSize_getDefaultImageSizeTargetImageSizedecodeImageFromList_decodeImageFromListAsyncdecodeImageFromPixels PathFillType PathOperation EngineLayer_NativeEngineLayerPath _NativePathTangent PathMetricsPathMetricIterator PathMetric _PathMeasure BlurStyle MaskFilter_ColorTransform_IdentityColorTransform_ClampTransform_MatrixColorTransform_getColorTransform ColorFilter _ColorFilter ImageFilter_MatrixImageFilter_GaussianBlurImageFilter_DilateImageFilter_ErodeImageFilter_ComposeImageFilter_FragmentShaderImageFilter _ImageFilterShaderTileMode_encodeWideColorList_encodeColorList_encodePointList_encodeTwoPointsGradient ImageShaderFragmentProgramFragmentShader VertexModeVertices PointModeClipOpCanvas _NativeCanvasPicture_NativePicturePictureRecorder_NativePictureRecorderShadowImmutableBufferImageDescriptor_NativeImageDescriptor _futurize_futurizeWithErrorPictureRasterizationException-dart.ui.Color.componentsStoredAsFloatingPoint€×> [!NOTE] > Each color is stored as floating-point color components, where the final > value of each component is approximated by storing `c / 255`, where `c` is one of the four components (alpha, red, green, blue).dart.ui.filterQuality.seeAlso€�See also: * [FilterQuality] class-level documentation that goes into detail about relative qualities of the constant values.dart.ui.imageFormats�"JPEG, PNG, GIF, Animated GIF, WebP, Animated WebP, BMP, and WBMP. Additional formats may be supported by the underlying platform. Flutter will attempt to call platform API to decode unrecognized formats, and if the platform API supports decoding the image Flutter will be able to render it.%dart.ui.canvas.conservativeClipBounds…¢The conservative estimate of the bounds is based on intersecting the bounds of each clip method that was executed with [ClipOp.intersect] and potentially ignoring any clip method that was executed with [ClipOp.difference]. The [ClipOp] argument is only present on the [clipRect] method. To understand how the bounds estimate can be conservative, consider the following two clip method calls: ```dart void draw(Canvas canvas) { canvas.clipPath(Path() ..addRect(const Rect.fromLTRB(10, 10, 20, 20)) ..addRect(const Rect.fromLTRB(80, 80, 100, 100))); canvas.clipPath(Path() ..addRect(const Rect.fromLTRB(80, 10, 100, 20)) ..addRect(const Rect.fromLTRB(10, 80, 20, 100))); // ... } ``` After executing both of those calls there is no area left in which to draw because the two paths have no overlapping regions. But, in this case, [getLocalClipBounds] would return a rectangle from `10, 10` to `100, 100` because it only intersects the bounds of the two path objects to obtain its conservative estimate. The clip bounds are not affected by the bounds of any enclosing [saveLayer] call as the engine does not currently guarantee the strict enforcement of those bounds during rendering. Methods that can change the current clip include [clipRect], [clipRRect], and [clipPath]. The [restore] method can also modify the current clip by restoring it to the same value it had before its associated [save] or [saveLayer] call.$dart.ui.painting.Picture.toImageSync‚yThe returned image will be `width` pixels wide and `height` pixels high. The picture is rasterized within the 0 (left), 0 (top), `width` (right), `height` (bottom) bounds. Content outside these bounds is clipped. The image object is created and returned synchronously, but is rasterized asynchronously. If the rasterization fails, an exception will be thrown when the image is drawn to a [Canvas]. If a GPU context is available, this image will be created as GPU resident and not copied back to the host. This means the image will be more efficient to draw. If no GPU context is available, the image will be rasterized on the CPU.dart.ui.shadow.lerp‚�The `t` argument represents position on the timeline, with 0.0 meaning that the interpolation has not started, returning `a` (or something equivalent to `a`), 1.0 meaning that the interpolation has finished, returning `b` (or something equivalent to `b`), and values in between meaning that the interpolation is at the relevant point on the timeline between `a` and `b`. The interpolation can be extrapolated beyond 0.0 and 1.0, so negative values and values greater than 1.0 are valid (and can easily be generated by curves such as [Curves.elasticInOut]). Values for `t` are usually obtained from an [Animation], such as an [AnimationController].V¶