ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ Yc@@sddlmZddlZddlZddlZddlmZddlmZm Z m Z m Z ddl m Z gZiZejdZdZdefd YZd efd YZed Zd ZddddddddZdZddZdZe dZddZdZ dZ!iZ"dZ#e#ddZ$e#ddZ%dZ&ddl'Z(dS(i(tabsolute_importN(t FunctionType(t iteritemstget_codet text_typet string_types(toncetravencC@sb|d|dkoa|d|dkoa|d|dkoa|d|dkoa|d|dkS(Nttypetleveltmessagetcategorytdata((tatb((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pytevent_payload_considered_equals tBreadcrumbBuffercB@sDeZddZddddddddZdZdZRS(idcC@sg|_||_dS(N(tbuffertlimit(tselfR((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pyt__init__s cC@s|p|p|s!tdn|dkr<tj}n|jji|pQdd6|d6|d6|d6|d6|d6|f|j|j 4dS( Ns6You must pass either `message`, `data`, or `processor`tdefaultRt timestampR R R R (t ValueErrortNonettimeRtappendR(RRR R R R Rt processor((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pytrecord#s    cC@s |j2dS(N(R(R((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pytclear4scC@sg}xt|jD]\}\}}|dk ry||Wn$tk rhtjdd}nX|df|j|           cC@stj}itjd6tjd6tjd6tjd6tjd6tjd6tjd6tjd6}xEt |D]7\}}t t |||}t tj||qlWt tjj tj_ dS( NtdebugtinfotwarningtwarnterrorR!tcriticaltfatal(R6tLoggertDEBUGtINFOtWARNINGtWARNtERRORtCRITICALtFATALRR^RGtsetattrtlog(tclstmethodst method_nameR R]((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pyt _patch_loggers          cC@s tdS(sXInstalls the logging hook if it was not installed yet. Otherwise does nothing. N(Rs(((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pytinstall_logging_hooksc@s fd}t||dS(sIgnores a logger for the regular breadcrumb code. This is useful for framework integration code where some log messages should be specially handled. c@s dk r|krtStS(N(RRHRW(R R R:R)R*(t allow_level(sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pyR>s  N(tregister_special_log_handler(tname_or_loggerRuR>((RusB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pyt ignore_loggerscC@s/t|tr|}n |j}|t|s    cC@se|dkrtj}nxC|D];}tj|}|dkrVtd|n|q"WdS(NsUnknown library %r for hooking(RR{tkeysR=t RuntimeError(t librariestlibRY((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pythook_librariesls   ()t __future__RRJRR6ttypesRtraven.utils.compatRRRRt raven.utilsRR;R<t getLoggerR RtobjectRR(RWR,R-RRR?R^RsRtRxRvRzR{R~RRRt raven.contextR(((sB/opt/alt/python27/lib/python2.7/site-packages/raven/breadcrumbs.pyts:   " *    & F    .